Title: javascript canvas overlay even possible on wordpress?
Last modified: August 31, 2016

---

# javascript canvas overlay even possible on wordpress?

 *  [theripoffartist](https://wordpress.org/support/users/theripoffartist/)
 * (@theripoffartist)
 * [9 years, 11 months ago](https://wordpress.org/support/topic/javascript-canvas-overlay-even-possible-on-wordpress/)
 * I was hoping you guys could help me too… I’m kind of at a total loss here and
   this forum is the closest thing I’ve been able to find.
 * I’m redesigning the website for a restaurant I art direct
 * [http://theripoffartist.net/blackbird/](http://theripoffartist.net/blackbird/)
 * Really trying to overlay this over the top of it.
 * [http://threejs.org/examples/canvas_geometry_birds.html](http://threejs.org/examples/canvas_geometry_birds.html)
 *  I found it [HERE ](https://github.com/mrdoob/three.js/blob/master/examples/canvas_geometry_birds.html)
   on github. And it’s beautiful. I am in Sacramento so things like this blow people
   away and I am attempting to elevate the social consciousness in the area
 *     ```
       <script src="../build/three.js"></script>
   
       		<script src="js/renderers/Projector.js"></script>
       		<script src="js/renderers/CanvasRenderer.js"></script>
   
       		<script src="js/libs/stats.min.js"></script>
   
       		<script src="obj/Bird.js"></script>
   
       		<script>
       			// Based on http://www.openprocessing.org/visuals/?visualID=6910
       			var Boid = function() {
       				var vector = new THREE.Vector3(),
       				_acceleration, _width = 500, _height = 500, _depth = 200, _goal, _neighborhoodRadius = 100,
       				_maxSpeed = 4, _maxSteerForce = 0.1, _avoidWalls = false;
       				this.position = new THREE.Vector3();
       				this.velocity = new THREE.Vector3();
       				_acceleration = new THREE.Vector3();
       				this.setGoal = function ( target ) {
       					_goal = target;
       				};
       				this.setAvoidWalls = function ( value ) {
       					_avoidWalls = value;
       				};
       				this.setWorldSize = function ( width, height, depth ) {
       					_width = width;
       					_height = height;
       					_depth = depth;
       				};
       				this.run = function ( boids ) {
       					if ( _avoidWalls ) {
       						vector.set( - _width, this.position.y, this.position.z );
       						vector = this.avoid( vector );
       						vector.multiplyScalar( 5 );
       						_acceleration.add( vector );
       						vector.set( _width, this.position.y, this.position.z );
       						vector = this.avoid( vector );
       						vector.multiplyScalar( 5 );
       						_acceleration.add( vector );
       						vector.set( this.position.x, - _height, this.position.z );
       						vector = this.avoid( vector );
       						vector.multiplyScalar( 5 );
       						_acceleration.add( vector );
       						vector.set( this.position.x, _height, this.position.z );
       						vector = this.avoid( vector );
       						vector.multiplyScalar( 5 );
       						_acceleration.add( vector );
       						vector.set( this.position.x, this.position.y, - _depth );
       						vector = this.avoid( vector );
       						vector.multiplyScalar( 5 );
       						_acceleration.add( vector );
       						vector.set( this.position.x, this.position.y, _depth );
       						vector = this.avoid( vector );
       						vector.multiplyScalar( 5 );
       						_acceleration.add( vector );
       					}/* else {
       						this.checkBounds();
       					}
       					*/
       					if ( Math.random() > 0.5 ) {
       						this.flock( boids );
       					}
       					this.move();
       				};
       				this.flock = function ( boids ) {
       					if ( _goal ) {
       						_acceleration.add( this.reach( _goal, 0.005 ) );
       					}
       					_acceleration.add( this.alignment( boids ) );
       					_acceleration.add( this.cohesion( boids ) );
       					_acceleration.add( this.separation( boids ) );
       				};
       				this.move = function () {
       					this.velocity.add( _acceleration );
       					var l = this.velocity.length();
       					if ( l > _maxSpeed ) {
       						this.velocity.divideScalar( l / _maxSpeed );
       					}
       					this.position.add( this.velocity );
       					_acceleration.set( 0, 0, 0 );
       				};
       				this.checkBounds = function () {
       					if ( this.position.x >   _width ) this.position.x = - _width;
       					if ( this.position.x < - _width ) this.position.x =   _width;
       					if ( this.position.y >   _height ) this.position.y = - _height;
       					if ( this.position.y < - _height ) this.position.y =  _height;
       					if ( this.position.z >  _depth ) this.position.z = - _depth;
       					if ( this.position.z < - _depth ) this.position.z =  _depth;
       				};
       				//
       				this.avoid = function ( target ) {
       					var steer = new THREE.Vector3();
       					steer.copy( this.position );
       					steer.sub( target );
       					steer.multiplyScalar( 1 / this.position.distanceToSquared( target ) );
       					return steer;
       				};
       				this.repulse = function ( target ) {
       					var distance = this.position.distanceTo( target );
       					if ( distance < 150 ) {
       						var steer = new THREE.Vector3();
       						steer.subVectors( this.position, target );
       						steer.multiplyScalar( 0.5 / distance );
       						_acceleration.add( steer );
       					}
       				};
       				this.reach = function ( target, amount ) {
       					var steer = new THREE.Vector3();
       					steer.subVectors( target, this.position );
       					steer.multiplyScalar( amount );
       					return steer;
       				};
       				this.alignment = function ( boids ) {
       					var boid, velSum = new THREE.Vector3(),
       					count = 0;
       					for ( var i = 0, il = boids.length; i < il; i++ ) {
       						if ( Math.random() > 0.6 ) continue;
       						boid = boids[ i ];
       						distance = boid.position.distanceTo( this.position );
       						if ( distance > 0 && distance <= _neighborhoodRadius ) {
       							velSum.add( boid.velocity );
       							count++;
       						}
       					}
       					if ( count > 0 ) {
       						velSum.divideScalar( count );
       						var l = velSum.length();
       						if ( l > _maxSteerForce ) {
       							velSum.divideScalar( l / _maxSteerForce );
       						}
       					}
       					return velSum;
       				};
       				this.cohesion = function ( boids ) {
       					var boid, distance,
       					posSum = new THREE.Vector3(),
       					steer = new THREE.Vector3(),
       					count = 0;
       					for ( var i = 0, il = boids.length; i < il; i ++ ) {
       						if ( Math.random() > 0.6 ) continue;
       						boid = boids[ i ];
       						distance = boid.position.distanceTo( this.position );
       						if ( distance > 0 && distance <= _neighborhoodRadius ) {
       							posSum.add( boid.position );
       							count++;
       						}
       					}
       					if ( count > 0 ) {
       						posSum.divideScalar( count );
       					}
       					steer.subVectors( posSum, this.position );
       					var l = steer.length();
       					if ( l > _maxSteerForce ) {
       						steer.divideScalar( l / _maxSteerForce );
       					}
       					return steer;
       				};
       				this.separation = function ( boids ) {
       					var boid, distance,
       					posSum = new THREE.Vector3(),
       					repulse = new THREE.Vector3();
       					for ( var i = 0, il = boids.length; i < il; i ++ ) {
       						if ( Math.random() > 0.6 ) continue;
       						boid = boids[ i ];
       						distance = boid.position.distanceTo( this.position );
       						if ( distance > 0 && distance <= _neighborhoodRadius ) {
       							repulse.subVectors( this.position, boid.position );
       							repulse.normalize();
       							repulse.divideScalar( distance );
       							posSum.add( repulse );
       						}
       					}
       					return posSum;
       				}
       			}
       		</script>
   
       		<script>
       			var SCREEN_WIDTH = window.innerWidth,
       			SCREEN_HEIGHT = window.innerHeight,
       			SCREEN_WIDTH_HALF = SCREEN_WIDTH  / 2,
       			SCREEN_HEIGHT_HALF = SCREEN_HEIGHT / 2;
       			var camera, scene, renderer,
       			birds, bird;
       			var boid, boids;
       			var stats;
       			init();
       			animate();
       			function init() {
       				camera = new THREE.PerspectiveCamera( 75, SCREEN_WIDTH / SCREEN_HEIGHT, 1, 10000 );
       				camera.position.z = 450;
       				scene = new THREE.Scene();
       				birds = [];
       				boids = [];
       				for ( var i = 0; i < 200; i ++ ) {
       					boid = boids[ i ] = new Boid();
       					boid.position.x = Math.random() * 400 - 200;
       					boid.position.y = Math.random() * 400 - 200;
       					boid.position.z = Math.random() * 400 - 200;
       					boid.velocity.x = Math.random() * 2 - 1;
       					boid.velocity.y = Math.random() * 2 - 1;
       					boid.velocity.z = Math.random() * 2 - 1;
       					boid.setAvoidWalls( true );
       					boid.setWorldSize( 500, 500, 400 );
       					bird = birds[ i ] = new THREE.Mesh( new Bird(), new THREE.MeshBasicMaterial( { color:Math.random() * 0xffffff, side: THREE.DoubleSide } ) );
       					bird.phase = Math.floor( Math.random() * 62.83 );
       					scene.add( bird );
       				}
       				renderer = new THREE.CanvasRenderer();
       				renderer.setClearColor( 0xffffff );
       				renderer.setPixelRatio( window.devicePixelRatio );
       				renderer.setSize( SCREEN_WIDTH, SCREEN_HEIGHT );
       				document.addEventListener( 'mousemove', onDocumentMouseMove, false );
       				document.body.appendChild( renderer.domElement );
       				stats = new Stats();
       				document.getElementById( 'container' ).appendChild(stats.dom);
       				//
       				window.addEventListener( 'resize', onWindowResize, false );
       			}
       			function onWindowResize() {
       				camera.aspect = window.innerWidth / window.innerHeight;
       				camera.updateProjectionMatrix();
       				renderer.setSize( window.innerWidth, window.innerHeight );
       			}
       			function onDocumentMouseMove( event ) {
       				var vector = new THREE.Vector3( event.clientX - SCREEN_WIDTH_HALF, - event.clientY + SCREEN_HEIGHT_HALF, 0 );
       				for ( var i = 0, il = boids.length; i < il; i++ ) {
       					boid = boids[ i ];
       					vector.z = boid.position.z;
       					boid.repulse( vector );
       				}
       			}
       			//
       			function animate() {
       				requestAnimationFrame( animate );
       				stats.begin();
       				render();
       				stats.end();
       			}
       			function render() {
       				for ( var i = 0, il = birds.length; i < il; i++ ) {
       					boid = boids[ i ];
       					boid.run( boids );
       					bird = birds[ i ];
       					bird.position.copy( boids[ i ].position );
       					color = bird.material.color;
       					color.r = color.g = color.b = ( 500 - bird.position.z ) / 1000;
       					bird.rotation.y = Math.atan2( - boid.velocity.z, boid.velocity.x );
       					bird.rotation.z = Math.asin( boid.velocity.y / boid.velocity.length() );
       					bird.phase = ( bird.phase + ( Math.max( 0, bird.rotation.z ) + 0.1 )  ) % 62.83;
       					bird.geometry.vertices[ 5 ].y = bird.geometry.vertices[ 4 ].y = Math.sin( bird.phase ) * 5;
       				}
       				renderer.render( scene, camera );
       			}
       		</script>
       ```
   
 * please help! I’ve tried pasting it everywhere. with no results what so ever. 
   in the header file and everything.
 *     ```
       <script type="text/javascript" <canvas>
       <script src="http://www.theripoffartist.net/blackbird/wp-content/themes/kalium/assets/js/build"></script>
   
       		<script src="http://www.theripoffartist.net/blackbird/wp-content/themes/kalium/assets/js/examples/js/renderers/Projector.js"></script>
       		<script src="http://www.theripoffartist.net/blackbird/wp-content/themes/kalium/assets/js/examples/js/renderers/CanvasRenderer.js"></script>
   
       		<script src="http://www.theripoffartist.net/blackbird/wp-content/themes/kalium/assets/js/examples/js/libs/stats.min.js"></script>
   
       		<script src="http://www.theripoffartist.net/blackbird/wp-content/themes/kalium/assets/js/examples/obj/Bird.js"></script>
   
       		<script>
   
       			// Based on http://www.openprocessing.org/visuals/?visualID=6910
   
       			var Boid = function() {
   
       				var vector = new THREE.Vector3(),
       				_acceleration, _width = 500, _height = 500, _depth = 200, _goal, _neighborhoodRadius = 100,
       				_maxSpeed = 4, _maxSteerForce = 0.1, _avoidWalls = false;
   
       				this.position = new THREE.Vector3();
       				this.velocity = new THREE.Vector3();
       				_acceleration = new THREE.Vector3();
   
       				this.setGoal = function ( target ) {
   
       					_goal = target;
   
       				};
   
       				this.setAvoidWalls = function ( value ) {
   
       					_avoidWalls = value;
   
       				};
   
       				this.setWorldSize = function ( width, height, depth ) {
   
       					_width = width;
       					_height = height;
       					_depth = depth;
   
       				};
   
       				this.run = function ( boids ) {
   
       					if ( _avoidWalls ) {
   
       						vector.set( - _width, this.position.y, this.position.z );
       						vector = this.avoid( vector );
       						vector.multiplyScalar( 5 );
       						_acceleration.add( vector );
   
       						vector.set( _width, this.position.y, this.position.z );
       						vector = this.avoid( vector );
       						vector.multiplyScalar( 5 );
       						_acceleration.add( vector );
   
       						vector.set( this.position.x, - _height, this.position.z );
       						vector = this.avoid( vector );
       						vector.multiplyScalar( 5 );
       						_acceleration.add( vector );
   
       						vector.set( this.position.x, _height, this.position.z );
       						vector = this.avoid( vector );
       						vector.multiplyScalar( 5 );
       						_acceleration.add( vector );
   
       						vector.set( this.position.x, this.position.y, - _depth );
       						vector = this.avoid( vector );
       						vector.multiplyScalar( 5 );
       						_acceleration.add( vector );
   
       						vector.set( this.position.x, this.position.y, _depth );
       						vector = this.avoid( vector );
       						vector.multiplyScalar( 5 );
       						_acceleration.add( vector );
   
       					}/* else {
   
       						this.checkBounds();
   
       					}
       					*/
   
       					if ( Math.random() > 0.5 ) {
   
       						this.flock( boids );
   
       					}
   
       					this.move();
   
       				};
   
       				this.flock = function ( boids ) {
   
       					if ( _goal ) {
   
       						_acceleration.add( this.reach( _goal, 0.005 ) );
   
       					}
   
       					_acceleration.add( this.alignment( boids ) );
       					_acceleration.add( this.cohesion( boids ) );
       					_acceleration.add( this.separation( boids ) );
   
       				};
   
       				this.move = function () {
   
       					this.velocity.add( _acceleration );
   
       					var l = this.velocity.length();
   
       					if ( l > _maxSpeed ) {
   
       						this.velocity.divideScalar( l / _maxSpeed );
   
       					}
   
       					this.position.add( this.velocity );
       					_acceleration.set( 0, 0, 0 );
   
       				};
   
       				this.checkBounds = function () {
   
       					if ( this.position.x >   _width ) this.position.x = - _width;
       					if ( this.position.x < - _width ) this.position.x =   _width;
       					if ( this.position.y >   _height ) this.position.y = - _height;
       					if ( this.position.y < - _height ) this.position.y =  _height;
       					if ( this.position.z >  _depth ) this.position.z = - _depth;
       					if ( this.position.z < - _depth ) this.position.z =  _depth;
   
       				};
   
       				//
   
       				this.avoid = function ( target ) {
   
       					var steer = new THREE.Vector3();
   
       					steer.copy( this.position );
       					steer.sub( target );
   
       					steer.multiplyScalar( 1 / this.position.distanceToSquared( target ) );
   
       					return steer;
   
       				};
   
       				this.repulse = function ( target ) {
   
       					var distance = this.position.distanceTo( target );
   
       					if ( distance < 150 ) {
   
       						var steer = new THREE.Vector3();
   
       						steer.subVectors( this.position, target );
       						steer.multiplyScalar( 0.5 / distance );
   
       						_acceleration.add( steer );
   
       					}
   
       				};
   
       				this.reach = function ( target, amount ) {
   
       					var steer = new THREE.Vector3();
   
       					steer.subVectors( target, this.position );
       					steer.multiplyScalar( amount );
   
       					return steer;
   
       				};
   
       				this.alignment = function ( boids ) {
   
       					var boid, velSum = new THREE.Vector3(),
       					count = 0;
   
       					for ( var i = 0, il = boids.length; i < il; i++ ) {
   
       						if ( Math.random() > 0.6 ) continue;
   
       						boid = boids[ i ];
   
       						distance = boid.position.distanceTo( this.position );
   
       						if ( distance > 0 && distance <= _neighborhoodRadius ) {
   
       							velSum.add( boid.velocity );
       							count++;
   
       						}
   
       					}
   
       					if ( count > 0 ) {
   
       						velSum.divideScalar( count );
   
       						var l = velSum.length();
   
       						if ( l > _maxSteerForce ) {
   
       							velSum.divideScalar( l / _maxSteerForce );
   
       						}
   
       					}
   
       					return velSum;
   
       				};
   
       				this.cohesion = function ( boids ) {
   
       					var boid, distance,
       					posSum = new THREE.Vector3(),
       					steer = new THREE.Vector3(),
       					count = 0;
   
       					for ( var i = 0, il = boids.length; i < il; i ++ ) {
   
       						if ( Math.random() > 0.6 ) continue;
   
       						boid = boids[ i ];
       						distance = boid.position.distanceTo( this.position );
   
       						if ( distance > 0 && distance <= _neighborhoodRadius ) {
   
       							posSum.add( boid.position );
       							count++;
   
       						}
   
       					}
   
       					if ( count > 0 ) {
   
       						posSum.divideScalar( count );
   
       					}
   
       					steer.subVectors( posSum, this.position );
   
       					var l = steer.length();
   
       					if ( l > _maxSteerForce ) {
   
       						steer.divideScalar( l / _maxSteerForce );
   
       					}
   
       					return steer;
   
       				};
   
       				this.separation = function ( boids ) {
   
       					var boid, distance,
       					posSum = new THREE.Vector3(),
       					repulse = new THREE.Vector3();
   
       					for ( var i = 0, il = boids.length; i < il; i ++ ) {
   
       						if ( Math.random() > 0.6 ) continue;
   
       						boid = boids[ i ];
       						distance = boid.position.distanceTo( this.position );
   
       						if ( distance > 0 && distance <= _neighborhoodRadius ) {
   
       							repulse.subVectors( this.position, boid.position );
       							repulse.normalize();
       							repulse.divideScalar( distance );
       							posSum.add( repulse );
   
       						}
   
       					}
   
       					return posSum;
   
       				}
   
       			}
   
       		</script>
   
       		<script>
   
       			var SCREEN_WIDTH = window.innerWidth,
       			SCREEN_HEIGHT = window.innerHeight,
       			SCREEN_WIDTH_HALF = SCREEN_WIDTH  / 2,
       			SCREEN_HEIGHT_HALF = SCREEN_HEIGHT / 2;
   
       			var camera, scene, renderer,
       			birds, bird;
   
       			var boid, boids;
   
       			var stats;
   
       			init();
       			animate();
   
       			function init() {
   
       				camera = new THREE.PerspectiveCamera( 75, SCREEN_WIDTH / SCREEN_HEIGHT, 1, 10000 );
       				camera.position.z = 450;
   
       				scene = new THREE.Scene();
   
       				birds = [];
       				boids = [];
   
       				for ( var i = 0; i < 200; i ++ ) {
   
       					boid = boids[ i ] = new Boid();
       					boid.position.x = Math.random() * 400 - 200;
       					boid.position.y = Math.random() * 400 - 200;
       					boid.position.z = Math.random() * 400 - 200;
       					boid.velocity.x = Math.random() * 2 - 1;
       					boid.velocity.y = Math.random() * 2 - 1;
       					boid.velocity.z = Math.random() * 2 - 1;
       					boid.setAvoidWalls( true );
       					boid.setWorldSize( 500, 500, 400 );
   
       					bird = birds[ i ] = new THREE.Mesh( new Bird(), new THREE.MeshBasicMaterial( { color:Math.random() * 0xffffff, side: THREE.DoubleSide } ) );
       					bird.phase = Math.floor( Math.random() * 62.83 );
       					scene.add( bird );
   
       				}
   
       				renderer = new THREE.CanvasRenderer();
       				renderer.setClearColor( 0xffffff );
       				renderer.setPixelRatio( window.devicePixelRatio );
       				renderer.setSize( SCREEN_WIDTH, SCREEN_HEIGHT );
   
       				document.addEventListener( 'mousemove', onDocumentMouseMove, false );
       				document.body.appendChild( renderer.domElement );
   
       				stats = new Stats();
       				document.getElementById( 'container' ).appendChild(stats.dom);
   
       				//
   
       				window.addEventListener( 'resize', onWindowResize, false );
   
       			}
   
       			function onWindowResize() {
   
       				camera.aspect = window.innerWidth / window.innerHeight;
       				camera.updateProjectionMatrix();
   
       				renderer.setSize( window.innerWidth, window.innerHeight );
   
       			}
   
       			function onDocumentMouseMove( event ) {
   
       				var vector = new THREE.Vector3( event.clientX - SCREEN_WIDTH_HALF, - event.clientY + SCREEN_HEIGHT_HALF, 0 );
   
       				for ( var i = 0, il = boids.length; i < il; i++ ) {
   
       					boid = boids[ i ];
   
       					vector.z = boid.position.z;
   
       					boid.repulse( vector );
   
       				}
   
       			}
   
       			//
   
       			function animate() {
   
       				requestAnimationFrame( animate );
   
       				stats.begin();
       				render();
       				stats.end();
   
       			}
   
       			function render() {
   
       				for ( var i = 0, il = birds.length; i < il; i++ ) {
   
       					boid = boids[ i ];
       					boid.run( boids );
   
       					bird = birds[ i ];
       					bird.position.copy( boids[ i ].position );
   
       					color = bird.material.color;
       					color.r = color.g = color.b = ( 500 - bird.position.z ) / 1000;
   
       					bird.rotation.y = Math.atan2( - boid.velocity.z, boid.velocity.x );
       					bird.rotation.z = Math.asin( boid.velocity.y / boid.velocity.length() );
   
       					bird.phase = ( bird.phase + ( Math.max( 0, bird.rotation.z ) + 0.1 )  ) % 62.83;
       					bird.geometry.vertices[ 5 ].y = bird.geometry.vertices[ 4 ].y = Math.sin( bird.phase ) * 5;
   
       				}
   
       				renderer.render( scene, camera );
   
       			}
       </canvas></script>
       ```
   
 * This is the code i’ve been using now. I am not sure what I am doing wrong because
   I don’t know what to look for…

The topic ‘javascript canvas overlay even possible on wordpress?’ is closed to new
replies.

## Tags

 * [background](https://wordpress.org/support/topic-tag/background/)
 * [html5](https://wordpress.org/support/topic-tag/html5/)
 * [javascript](https://wordpress.org/support/topic-tag/javascript/)

 * 0 replies
 * 1 participant
 * Last reply from: [theripoffartist](https://wordpress.org/support/users/theripoffartist/)
 * Last activity: [9 years, 11 months ago](https://wordpress.org/support/topic/javascript-canvas-overlay-even-possible-on-wordpress/)
 * Status: not resolved

## Topics

### Topics with no replies

### Non-support topics

### Resolved topics

### Unresolved topics

### All topics
