Browse Source

CanvasRenderer handles textures again.
Most of the examples working.

Mr.doob 14 years ago
parent
commit
22f48a731b

File diff suppressed because it is too large
+ 0 - 0
build/Three.js


File diff suppressed because it is too large
+ 0 - 0
build/ThreeDebug.js


+ 3 - 1
examples/camera_free.html

@@ -39,6 +39,7 @@
 		<script type="text/javascript" src="../src/objects/Mesh.js"></script>
 		<script type="text/javascript" src="../src/objects/Particle.js"></script>
 		<script type="text/javascript" src="../src/objects/Line.js"></script>
+		<script type="text/javascript" src="../src/materials/Material.js"></script>
 		<script type="text/javascript" src="../src/materials/LineBasicMaterial.js"></script>
 		<script type="text/javascript" src="../src/materials/MeshBasicMaterial.js"></script>
 		<script type="text/javascript" src="../src/materials/MeshLambertMaterial.js"></script>
@@ -46,6 +47,7 @@
 		<script type="text/javascript" src="../src/materials/MeshFaceMaterial.js"></script>
 		<script type="text/javascript" src="../src/materials/ParticleBasicMaterial.js"></script>
 		<script type="text/javascript" src="../src/materials/ParticleCircleMaterial.js"></script>
+		<script type="text/javascript" src="../src/materials/Texture.js"></script>
 		<script type="text/javascript" src="../src/scenes/Scene.js"></script>
 		<script type="text/javascript" src="../src/renderers/Projector.js"></script>
 		<script type="text/javascript" src="../src/renderers/CanvasRenderer.js"></script>
@@ -129,7 +131,7 @@
 				geometry = new Sphere( 100, 16, 8 );
 				material = new THREE.MeshLambertMaterial( { color: 0xffffff, opacity: 1 } );
 
-				for (var i = 0; i < 10; i ++ ) {
+				for ( var i = 0; i < 10; i ++ ) {
 
 					cube = new THREE.Mesh( geometry, material );
 					cube.overdraw = true;

+ 3 - 3
examples/geometry/Qrcode.js

@@ -1,10 +1,10 @@
 var Qrcode = function () {
 
-	THREE.Geometry.call(this);
+	THREE.Geometry.call( this );
 
 	var scope = this,
-	m1 = new THREE.MeshColorFillMaterial( 0x000000 ),
-	m2 = new THREE.MeshColorFillMaterial( 0xc0c0c0 );
+	m1 = new THREE.MeshBasicMaterial( { color: 0x000000 } ),
+	m2 = new THREE.MeshBasicMaterial( { color: 0xc0c0c0 } );
 
 	v(-54,134,58);
 	v(-54,146,58);

+ 9 - 10
examples/geometry_earth.html

@@ -36,13 +36,12 @@
 		<script type="text/javascript" src="js/Stats.js"></script>
 
 		<script type="text/javascript" src="../build/Three.js"></script>
+
 		<script type="text/javascript" src="../src/extras/primitives/Plane.js"></script>
 		<script type="text/javascript" src="../src/extras/primitives/Sphere.js"></script>
 
 		<script type="text/javascript">
 
-			var SCREEN_WIDTH = window.innerWidth, SCREEN_HEIGHT = window.innerHeight;
-
 			var container, stats;
 
 			var camera, scene, renderer;
@@ -64,7 +63,7 @@
 
 				container = document.getElementById( 'container' );
 
-				camera = new THREE.Camera( 60, SCREEN_WIDTH / SCREEN_HEIGHT, 1, 10000 );
+				camera = new THREE.Camera( 60, window.innerWidth / window.innerHeight, 1, 10000 );
 				camera.position.z = 500;
 
 				scene = new THREE.Scene();
@@ -78,7 +77,7 @@
 				scene.addObject(mesh);
 
 				renderer = new THREE.CanvasRenderer();
-				renderer.setSize( SCREEN_WIDTH, SCREEN_HEIGHT );
+				renderer.setSize( window.innerWidth, window.innerHeight );
 
 				container.appendChild( renderer.domElement );
 
@@ -87,7 +86,7 @@
 				stats.domElement.style.top = '0px';
 				container.appendChild( stats.domElement );
 
-				document.addEventListener('mousemove', onDocumentMouseMove, false);
+				document.addEventListener( 'mousemove', onDocumentMouseMove, false );
 
 			}
 
@@ -97,13 +96,13 @@
 				canvas.width = 32;
 				canvas.height = 32;
 
-				var material =  new THREE.MeshBitmapMaterial( canvas );
+				var material =  new THREE.MeshBasicMaterial( { map: new THREE.Texture( canvas, THREE.UVMapping ) } );
 
 				var image = new Image();
 
 				image.onload = function () {
 
-					material.bitmap = this;
+					material.map.image = this;
 
 				};
 
@@ -122,12 +121,12 @@
 
 			function loop() {
 
-				camera.position.x += (mouseX - camera.position.x) * 0.05;
-				camera.position.y += (-mouseY - camera.position.y) * 0.05;
+				camera.position.x += ( mouseX - camera.position.x ) * 0.05;
+				camera.position.y += ( - mouseY - camera.position.y ) * 0.05;
 
 				mesh.rotation.y -= 0.005;
 
-				renderer.render(scene, camera);
+				renderer.render( scene, camera );
 				stats.update();
 
 			}

+ 12 - 14
examples/geometry_terrain.html

@@ -41,8 +41,6 @@
 
 		<script type="text/javascript">
 
-			var SCREEN_WIDTH = window.innerWidth, SCREEN_HEIGHT = window.innerHeight;
-
 			var container, stats;
 
 			var camera, scene, renderer;
@@ -52,8 +50,8 @@
 			var mouseX = 0;
 			var mouseY = 0;
 
-			var windowHalfX = window.innerWidth >> 1;
-			var windowHalfY = window.innerHeight >> 1;
+			var windowHalfX = window.innerWidth / 2;
+			var windowHalfY = window.innerHeight / 2;
 
 
 			init();
@@ -64,14 +62,14 @@
 
 				container = document.getElementById( 'container' );
 
-				camera = new THREE.Camera( 60, SCREEN_WIDTH / SCREEN_HEIGHT, 0.0001, 10000 );
+				camera = new THREE.Camera( 60, window.innerWidth / window.innerHeight, 1, 10000 );
 				camera.position.z = 500;
 
 				scene = new THREE.Scene();
 
 				var heightMap = height( 1024, 1024 );
 				var textureMap = shadow( heightMap );
-				var material = new THREE.MeshBitmapMaterial( textureMap );
+				var material = new THREE.MeshBasicMaterial( { map: new THREE.Texture( textureMap, THREE.UVMapping ) } );
 
 				var quality = 20;
 				var quality1 = quality + 1;
@@ -79,7 +77,7 @@
 				var plane = new Plane( 2000, 2000, quality, quality );
 
 				var data = heightMap.getContext( '2d' ).getImageData( 0, 0, heightMap.width, heightMap.height ).data;
-				var pixelsPerTriangle = Math.floor(heightMap.width / quality);
+				var pixelsPerTriangle = Math.floor( heightMap.width / quality );
 
 				for ( var y = 0; y < quality1; y++ ) {
 
@@ -100,7 +98,7 @@
 				scene.addObject(mesh);
 
 				renderer = new THREE.CanvasRenderer();
-				renderer.setSize( SCREEN_WIDTH, SCREEN_HEIGHT );
+				renderer.setSize( window.innerWidth, window.innerHeight );
 
 				container.innerHTML = "";
 
@@ -109,7 +107,7 @@
 				stats = new Stats();
 				stats.domElement.style.position = 'absolute';
 				stats.domElement.style.top = '0px';
-				container.appendChild(stats.domElement);
+				container.appendChild( stats.domElement );
 
 				document.addEventListener( 'mousemove', onDocumentMouseMove, false );
 
@@ -117,22 +115,22 @@
 
 			function onDocumentMouseMove(event) {
 
-				mouseX = (event.clientX - windowHalfX);
-				mouseY = (event.clientY - windowHalfY);
+				mouseX = event.clientX - windowHalfX;
+				mouseY = event.clientY - windowHalfY;
 
 			}
 
 			function loop() {
 
-				camera.position.x += (mouseX - camera.position.x) * 0.05;
-				camera.position.y += (-mouseY - camera.position.y) * 0.05;
+				camera.position.x += ( mouseX - camera.position.x ) * 0.05;
+				camera.position.y += ( - mouseY - camera.position.y ) * 0.05;
 
 				renderer.render(scene, camera);
 				stats.update();
 
 			}
 
-			function height(width, height) {
+			function height( width, height ) {
 
 				var canvas, context, image, data;
 

+ 9 - 11
examples/geometry_vr.html

@@ -35,8 +35,6 @@
 
 		<script type="text/javascript">
 
-			var SCREEN_WIDTH = window.innerWidth, SCREEN_HEIGHT = window.innerHeight;
-
 			var camera, scene, renderer;
 
 			var texture_placeholder, wireframe,
@@ -54,7 +52,7 @@
 
 				container = document.getElementById( 'container' );
 
-				camera = new THREE.Camera( 75, SCREEN_WIDTH / SCREEN_HEIGHT, 1, 10000 );
+				camera = new THREE.Camera( 75, window.innerWidth / window.innerHeight, 1, 10000 );
 
 				scene = new THREE.Scene();
 
@@ -62,7 +60,7 @@
 				texture_placeholder.width = 128;
 				texture_placeholder.height = 128;
 
-				wireframe = new THREE.MeshColorStrokeMaterial( 0xffffff, 0 );
+				wireframe = new THREE.MeshBasicMaterial( { color: 0xffffff, opacity: 0, wireframe: true } );
 
 				var context = texture_placeholder.getContext( '2d' );
 				context.fillStyle = 'rgba( 200, 200, 200, 1 )';
@@ -105,7 +103,7 @@
 
 
 				renderer = new THREE.CanvasRenderer();
-				renderer.setSize( SCREEN_WIDTH, SCREEN_HEIGHT );
+				renderer.setSize( window.innerWidth, window.innerHeight );
 
 				container.appendChild( renderer.domElement );
 
@@ -120,13 +118,13 @@
 
 			function loadTexture( path ) {
 
-				var material = new THREE.MeshBitmapMaterial( texture_placeholder );
+				var material = new THREE.MeshBasicMaterial( { map: new THREE.Texture( texture_placeholder, THREE.UVMapping ) } );
 
 				var texture = new Image();
 
 				texture.onload = function () {
 
-					material.bitmap = this;
+					material.map.image = this;
 					render();
 
 				};
@@ -142,7 +140,7 @@
 
 				isUserInteracting = true;
 
-				wireframe.color.setRGBA( 1, 1, 1, 0.2 );
+				wireframe.opacity = 0.2;
 
 				onPointerDownPointerX = event.clientX;
 				onPointerDownPointerY = event.clientY;
@@ -168,7 +166,7 @@
 
 				isUserInteracting = false;
 
-				wireframe.color.setRGBA( 1, 1, 1, 0);
+				wireframe.opacity = 0;
 
 				render();
 			}
@@ -180,8 +178,8 @@
 
 					event.preventDefault();
 
-					onPointerDownPointerX = event.touches[0].pageX;
-					onPointerDownPointerY = event.touches[0].pageY;
+					onPointerDownPointerX = event.touches[ 0 ].pageX;
+					onPointerDownPointerY = event.touches[ 0 ].pageY;
 
 					onPointerDownLon = lon;
 					onPointerDownLat = lat;

+ 2 - 2
examples/interactive_cubes.html

@@ -50,7 +50,7 @@
 
 				for ( var i = 0; i < 10; i ++ ) {
 
-					var object = new THREE.Mesh( geometry, [ new THREE.MeshBasicMaterial( { diffuse_color: Math.random() * 0xffffff, opacity: 0.5 } ), new THREE.MeshBasicMaterial( { diffuse_color: 0xffffff, opacity: 0.5, wireframe: true } ) ] );
+					var object = new THREE.Mesh( geometry, [ new THREE.MeshBasicMaterial( { color: Math.random() * 0xffffff, opacity: 0.5 } ), new THREE.MeshBasicMaterial( { color: 0xffffff, opacity: 0.5, wireframe: true } ) ] );
 					object.position.x = Math.random() * 800 - 400;
 					object.position.y = Math.random() * 800 - 400;
 					object.position.z = Math.random() * 800 - 400;
@@ -95,7 +95,7 @@
 
 					intersects[ 0 ].object.material[ 0 ].color.setHex( Math.random() * 0xffffff | 0x80000000 );
 
-					var particle = new THREE.Particle( new THREE.ParticleCircleMaterial( 0x000000 ) );
+					var particle = new THREE.Particle( new THREE.ParticleCircleMaterial( { color: 0x000000 } ) );
 					particle.position = intersects[ 0 ].point;
 					particle.scale.x = particle.scale.y = 8;
 					scene.addObject( particle );

+ 49 - 5
examples/interactive_voxelpainter.html

@@ -14,7 +14,49 @@
 	</head>
 	<body>
 
-		<script type="text/javascript" src="../build/Three.js"></script>
+		<!-- <script type="text/javascript" src="../build/Three.js"></script> -->
+
+		<script type="text/javascript" src="../src/Three.js"></script>
+		<script type="text/javascript" src="../src/core/Color.js"></script>
+		<script type="text/javascript" src="../src/core/Vector2.js"></script>
+		<script type="text/javascript" src="../src/core/Vector3.js"></script>
+		<script type="text/javascript" src="../src/core/Vector4.js"></script>
+		<script type="text/javascript" src="../src/core/Ray.js"></script>
+		<script type="text/javascript" src="../src/core/Rectangle.js"></script>
+		<script type="text/javascript" src="../src/core/Matrix3.js"></script>
+		<script type="text/javascript" src="../src/core/Matrix4.js"></script>
+		<script type="text/javascript" src="../src/core/Vertex.js"></script>
+		<script type="text/javascript" src="../src/core/Face3.js"></script>
+		<script type="text/javascript" src="../src/core/Face4.js"></script>
+		<script type="text/javascript" src="../src/core/UV.js"></script>
+		<script type="text/javascript" src="../src/core/Geometry.js"></script>
+		<script type="text/javascript" src="../src/cameras/Camera.js"></script>
+		<script type="text/javascript" src="../src/lights/Light.js"></script>
+		<script type="text/javascript" src="../src/lights/AmbientLight.js"></script>
+		<script type="text/javascript" src="../src/lights/DirectionalLight.js"></script>
+		<script type="text/javascript" src="../src/lights/PointLight.js"></script>
+		<script type="text/javascript" src="../src/objects/Object3D.js"></script>
+		<script type="text/javascript" src="../src/objects/Mesh.js"></script>
+		<script type="text/javascript" src="../src/objects/Particle.js"></script>
+		<script type="text/javascript" src="../src/objects/Line.js"></script>
+		<script type="text/javascript" src="../src/materials/Material.js"></script>
+		<script type="text/javascript" src="../src/materials/LineBasicMaterial.js"></script>
+		<script type="text/javascript" src="../src/materials/MeshBasicMaterial.js"></script>
+		<script type="text/javascript" src="../src/materials/MeshLambertMaterial.js"></script>
+		<script type="text/javascript" src="../src/materials/MeshPhongMaterial.js"></script>
+		<script type="text/javascript" src="../src/materials/MeshFaceMaterial.js"></script>
+		<script type="text/javascript" src="../src/materials/ParticleBasicMaterial.js"></script>
+		<script type="text/javascript" src="../src/materials/ParticleCircleMaterial.js"></script>
+		<script type="text/javascript" src="../src/materials/Texture.js"></script>
+		<script type="text/javascript" src="../src/scenes/Scene.js"></script>
+		<script type="text/javascript" src="../src/renderers/Projector.js"></script>
+		<script type="text/javascript" src="../src/renderers/CanvasRenderer.js"></script>
+		<script type="text/javascript" src="../src/renderers/SVGRenderer.js"></script>
+		<script type="text/javascript" src="../src/renderers/WebGLRenderer.js"></script>
+		<script type="text/javascript" src="../src/renderers/renderables/RenderableFace3.js"></script>
+		<script type="text/javascript" src="../src/renderers/renderables/RenderableFace4.js"></script>
+		<script type="text/javascript" src="../src/renderers/renderables/RenderableParticle.js"></script>
+		<script type="text/javascript" src="../src/renderers/renderables/RenderableLine.js"></script>
 
 		<script type="text/javascript" src="../src/extras/primitives/Cube.js"></script>
 		<script type="text/javascript" src="../src/extras/primitives/Plane.js"></script>
@@ -58,13 +100,15 @@
 				geometry.vertices.push( new THREE.Vertex( new THREE.Vector3( - 500, 0, 0 ) ) );
 				geometry.vertices.push( new THREE.Vertex( new THREE.Vector3( 500, 0, 0 ) ) );
 
+				var material = new THREE.LineBasicMaterial( { color: 0x000000, opacity: 0.2 } );
+
 				for ( var i = 0; i <= 20; i ++ ) {
 
-					var line = new THREE.Line( geometry, new THREE.LineColorMaterial( 0x000000, 0.2 ) );
+					var line = new THREE.Line( geometry, material );
 					line.position.z = ( i * 50 ) - 500;
 					scene.addObject( line );
 
-					var line = new THREE.Line( geometry, new THREE.LineColorMaterial( 0x000000, 0.2 ) );
+					var line = new THREE.Line( geometry, material );
 					line.position.x = ( i * 50 ) - 500;
 					line.rotation.y = 90 * Math.PI / 180;
 					scene.addObject( line );
@@ -145,7 +189,7 @@
 
 						var position = new THREE.Vector3().add( intersects[ 0 ].point, intersects[ 0 ].object.matrixRotation.transform( intersects[ 0 ].face.normal.clone() ) );
 
-						var voxel = new THREE.Mesh( new Cube( 50, 50, 50 ), [ new THREE.MeshColorFillMaterial( 0x00ff80, 1 ), new THREE.MeshFaceMaterial() ] );
+						var voxel = new THREE.Mesh( new Cube( 50, 50, 50 ), [ new THREE.MeshLambertMaterial( { color: 0x00ff80, opacity: 1 } ), new THREE.MeshFaceMaterial() ] );
 						voxel.position.x = Math.floor( position.x / 50 ) * 50 + 25;
 						voxel.position.y = Math.floor( position.y / 50 ) * 50 + 25;
 						voxel.position.z = Math.floor( position.z / 50 ) * 50 + 25;
@@ -205,7 +249,7 @@
 
 						if ( rollOveredFace ) rollOveredFace.material = [];
 						rollOveredFace = intersects[ 0 ].face;
-						rollOveredFace.material = [ new THREE.MeshColorFillMaterial( 0xff0000, 0.5 ) ];
+						rollOveredFace.material = [ new THREE.MeshBasicMaterial( { color: 0xff0000, opacity: 0.5 } ) ];
 					}
 				} else if ( rollOveredFace ) {
 

+ 17 - 17
examples/lines_sphere.html

@@ -60,7 +60,7 @@
 
 				// particles
 
-				material = new THREE.ParticleCircleMaterial(0xffffff, 1);
+				material = new THREE.ParticleCircleMaterial( { color: 0xffffff, opacity: 1 } );
 
 				for (var i = 0; i < 1000; i++) {
 
@@ -69,7 +69,7 @@
 					particle.position.y = Math.random() * 2 - 1;
 					particle.position.z = Math.random() * 2 - 1;
 					particle.position.normalize();
-					particle.position.multiplyScalar(Math.random() * 10 + 450);
+					particle.position.multiplyScalar( Math.random() * 10 + 450 );
 					scene.addObject( particle );
 
 				}
@@ -82,16 +82,16 @@
 
 					var vector = new THREE.Vector3( Math.random() * 2 - 1, Math.random() * 2 - 1, Math.random() * 2 - 1 );
 					vector.normalize();
-					vector.multiplyScalar(450);
+					vector.multiplyScalar( 450 );
 
-					geometry.vertices.push(new THREE.Vertex(vector));
+					geometry.vertices.push( new THREE.Vertex( vector ) );
 
 					var vector2 = vector.clone();
-					vector2.multiplyScalar(Math.random() * 0.3 + 1);
+					vector2.multiplyScalar( Math.random() * 0.3 + 1 );
 
-					geometry.vertices.push(new THREE.Vertex(vector2));
+					geometry.vertices.push( new THREE.Vertex( vector2 ) );
 
-					var line = new THREE.Line( geometry, new THREE.LineColorMaterial( 0xffffff, Math.random() ) );
+					var line = new THREE.Line( geometry, new THREE.LineBasicMaterial( { color: 0xffffff, opacity: Math.random() } ) );
 					scene.addObject(line);
 				}
 
@@ -102,9 +102,9 @@
 				container.appendChild(stats.domElement);
 				*/
 
-				document.addEventListener('mousemove', onDocumentMouseMove, false);
-				document.addEventListener('touchstart', onDocumentTouchStart, false);
-				document.addEventListener('touchmove', onDocumentTouchMove, false);
+				document.addEventListener( 'mousemove', onDocumentMouseMove, false );
+				document.addEventListener( 'touchstart', onDocumentTouchStart, false );
+				document.addEventListener( 'touchmove', onDocumentTouchMove, false );
 			}
 
 			//
@@ -121,8 +121,8 @@
 
 					event.preventDefault();
 
-					mouseX = event.touches[0].pageX - windowHalfX;
-					mouseY = event.touches[0].pageY - windowHalfY;
+					mouseX = event.touches[ 0 ].pageX - windowHalfX;
+					mouseY = event.touches[ 0 ].pageY - windowHalfY;
 				}
 			}
 
@@ -132,8 +132,8 @@
 
 					event.preventDefault();
 
-					mouseX = event.touches[0].pageX - windowHalfX;
-					mouseY = event.touches[0].pageY - windowHalfY;
+					mouseX = event.touches[ 0 ].pageX - windowHalfX;
+					mouseY = event.touches[ 0 ].pageY - windowHalfY;
 				}
 			}
 
@@ -141,11 +141,11 @@
 
 			function loop() {
 
-				camera.position.x += (mouseX - camera.position.x) * .05;
-				camera.position.y += (-mouseY + 200 - camera.position.y) * .05;
+				camera.position.x += ( mouseX - camera.position.x ) * .05;
+				camera.position.y += ( - mouseY + 200 - camera.position.y ) * .05;
 				camera.updateMatrix();
 
-				renderer.render(scene, camera);
+				renderer.render( scene, camera );
 
 				// stats.update();
 			}

+ 6 - 9
examples/lines_test.html

@@ -22,10 +22,7 @@
 
 		<script type="text/javascript">
 
-			var SCREEN_WIDTH = window.innerWidth,
-			SCREEN_HEIGHT = window.innerHeight,
-
-			mouseX = 0, mouseY = 0,
+			var mouseX = 0, mouseY = 0,
 
 			windowHalfX = window.innerWidth / 2,
 			windowHalfY = window.innerHeight / 2,
@@ -49,18 +46,18 @@
 				container = document.createElement('div');
 				document.body.appendChild(container);
 
-				camera = new THREE.Camera( 75, SCREEN_WIDTH / SCREEN_HEIGHT, 1, 10000 );
+				camera = new THREE.Camera( 75, window.innerWidth / window.innerHeight, 1, 10000 );
 				camera.position.z = 1000;
 
 				scene = new THREE.Scene();
 
 				renderer = new THREE.CanvasRenderer();
-				renderer.setSize(SCREEN_WIDTH, SCREEN_HEIGHT);
-				container.appendChild(renderer.domElement);
+				renderer.setSize( window.innerWidth, window.innerHeight );
+				container.appendChild( renderer.domElement );
 
 				// particles
 
-				material = new THREE.ParticleCircleMaterial( 0xffffff, 1 );
+				material = new THREE.ParticleCircleMaterial( { color: 0xffffff, opacity: 1 } );
 				var geometry = new THREE.Geometry();
 
 				for (var i = 0; i < 100; i++) {
@@ -80,7 +77,7 @@
 
 				// lines
 
-				var line = new THREE.Line( geometry, new THREE.LineColorMaterial( 0xffffff, Math.random(), 1 ) );
+				var line = new THREE.Line( geometry, new THREE.LineBasicMaterial( { color: 0xffffff, opacity: Math.random() } ) );
 				scene.addObject(line);
 
 				/*

+ 24 - 26
examples/materials_video.html

@@ -27,8 +27,6 @@
 
 		<script type="text/javascript">
 
-			var SCREEN_WIDTH = window.innerWidth;
-			var SCREEN_HEIGHT = window.innerHeight;
 			var AMOUNT = 100;
 
 			var container, stats;
@@ -43,20 +41,20 @@
 			var mouseX = 0;
 			var mouseY = 0;
 
-			var windowHalfX = window.innerWidth >> 1;
-			var windowHalfY = window.innerHeight >> 1;
+			var windowHalfX = window.innerWidth / 2;
+			var windowHalfY = window.innerHeight / 2;
 
 
-			document.addEventListener('mousemove', onDocumentMouseMove, false);
+			document.addEventListener( 'mousemove', onDocumentMouseMove, false );
 
 			init();
-			setInterval(loop, 1000/60);
+			setInterval( loop, 1000 / 60 );
 
 
 			function init() {
 
 				container = document.createElement('div');
-				document.body.appendChild(container);
+				document.body.appendChild( container );
 
 				var info = document.createElement('div');
 				info.style.position = 'absolute';
@@ -66,7 +64,7 @@
 				info.innerHTML = '<a href="http://github.com/mrdoob/three.js" target="_blank">three.js</a> - video demo. playing <a href="http://durian.blender.org/" target="_blank">sintel</a> trailer';
 				container.appendChild(info);
 
-				camera = new THREE.Camera( 45, SCREEN_WIDTH / SCREEN_HEIGHT, 1, 10000 );
+				camera = new THREE.Camera( 45, window.innerWidth / window.innerHeight, 1, 10000 );
 				camera.position.z = 1000;
 
 				scene = new THREE.Scene();
@@ -83,7 +81,7 @@
 				textureContext.fillStyle = '#000000';
 				textureContext.fillRect( 0, 0, 480, 204 );
 
-				var material = new THREE.MeshBitmapMaterial( texture );
+				var material = new THREE.MeshBasicMaterial( { map: new THREE.Texture( texture, THREE.UVMapping ) } );
 
 				textureReflection = document.createElement( 'canvas' );
 				textureReflection.width = 480;
@@ -97,7 +95,7 @@
 				textureReflectionGradient.addColorStop( 0.2, 'rgba(240, 240, 240, 1)' );
 				textureReflectionGradient.addColorStop( 1, 'rgba(240, 240, 240, 0.8)' );
 
-				var materialReflection = new THREE.MeshBitmapMaterial( textureReflection );
+				var materialReflection = new THREE.MeshBasicMaterial( { map: new THREE.Texture( textureReflection, THREE.UVMapping ) } );
 
 				//
 
@@ -114,7 +112,7 @@
 				mesh.rotation.x = 180 * Math.PI / 180;
 				mesh.doubleSided = true;
 				mesh.overdraw = true;
-				scene.addObject(mesh);
+				scene.addObject( mesh );
 
 				//
 
@@ -122,54 +120,54 @@
 				var amountx = 10;
 				var amounty = 10;
 
-				var material = new THREE.ParticleCircleMaterial(0x808080);
+				var material = new THREE.ParticleCircleMaterial( { color: 0x808080 } );
 
-				for (var ix = 0; ix < amountx; ix++) {
+				for ( var ix = 0; ix < amountx; ix++ ) {
 
-					for(var iy = 0; iy < amounty; iy++) {
+					for ( var iy = 0; iy < amounty; iy++ ) {
 
 						particle = new THREE.Particle( material );
-						particle.position.x = ix * separation - ((amountx * separation) / 2);
+						particle.position.x = ix * separation - ( ( amountx * separation ) / 2 );
 						particle.position.y = -153
-						particle.position.z = iy * separation - ((amounty * separation) / 2);
+						particle.position.z = iy * separation - ( ( amounty * separation ) / 2 );
 						scene.addObject( particle );
 					}
 				}
 
 				renderer = new THREE.CanvasRenderer();
-				renderer.setSize(SCREEN_WIDTH, SCREEN_HEIGHT);
+				renderer.setSize( window.innerWidth, window.innerHeight );
 
-				container.appendChild(renderer.domElement);
+				container.appendChild( renderer.domElement );
 
 				stats = new Stats();
 				stats.domElement.style.position = 'absolute';
 				stats.domElement.style.top = '0px';
-				container.appendChild(stats.domElement);
+				container.appendChild( stats.domElement );
 
 			}
 
 			function onDocumentMouseMove(event) {
 
-				mouseX = (event.clientX - windowHalfX);
-				mouseY = (event.clientY - windowHalfY) * .2;
+				mouseX = ( event.clientX - windowHalfX );
+				mouseY = ( event.clientY - windowHalfY ) * 0.2;
 
 			}
 
 			function loop() {
 
-				camera.position.x += (mouseX - camera.position.x) * .05;
-				camera.position.y += (-mouseY - camera.position.y) * .05;
+				camera.position.x += ( mouseX - camera.position.x ) * 0.05;
+				camera.position.y += ( - mouseY - camera.position.y ) * 0.05;
 
-				if (video.readyState === video.HAVE_ENOUGH_DATA) {
+				if ( video.readyState === video.HAVE_ENOUGH_DATA ) {
 
 					textureContext.drawImage( video, 0, 0 );
 				}
 
 				textureReflectionContext.drawImage( texture, 0, 0 );
 				textureReflectionContext.fillStyle = textureReflectionGradient;
-				textureReflectionContext.fillRect(0, 0, 480, 204);
+				textureReflectionContext.fillRect( 0, 0, 480, 204 );
 
-				renderer.render(scene, camera);
+				renderer.render( scene, camera );
 				stats.update();
 
 			}

+ 21 - 19
examples/test.html

@@ -20,6 +20,7 @@
 		<script type="text/javascript" src="../src/core/Vector2.js"></script>
 		<script type="text/javascript" src="../src/core/Vector3.js"></script>
 		<script type="text/javascript" src="../src/core/Vector4.js"></script>
+		<script type="text/javascript" src="../src/core/Ray.js"></script>
 		<script type="text/javascript" src="../src/core/Rectangle.js"></script>
 		<script type="text/javascript" src="../src/core/Matrix3.js"></script>
 		<script type="text/javascript" src="../src/core/Matrix4.js"></script>
@@ -34,17 +35,18 @@
 		<script type="text/javascript" src="../src/lights/DirectionalLight.js"></script>
 		<script type="text/javascript" src="../src/lights/PointLight.js"></script>
 		<script type="text/javascript" src="../src/objects/Object3D.js"></script>
+		<script type="text/javascript" src="../src/objects/Mesh.js"></script>
 		<script type="text/javascript" src="../src/objects/Particle.js"></script>
 		<script type="text/javascript" src="../src/objects/Line.js"></script>
-		<script type="text/javascript" src="../src/objects/Mesh.js"></script>
-		<script type="text/javascript" src="../src/materials/LineColorMaterial.js"></script>
+		<script type="text/javascript" src="../src/materials/Material.js"></script>
+		<script type="text/javascript" src="../src/materials/LineBasicMaterial.js"></script>
+		<script type="text/javascript" src="../src/materials/MeshBasicMaterial.js"></script>
+		<script type="text/javascript" src="../src/materials/MeshLambertMaterial.js"></script>
 		<script type="text/javascript" src="../src/materials/MeshPhongMaterial.js"></script>
-		<script type="text/javascript" src="../src/materials/MeshBitmapMaterial.js"></script>
-		<script type="text/javascript" src="../src/materials/MeshColorFillMaterial.js"></script>
-		<script type="text/javascript" src="../src/materials/MeshColorStrokeMaterial.js"></script>
 		<script type="text/javascript" src="../src/materials/MeshFaceMaterial.js"></script>
+		<script type="text/javascript" src="../src/materials/ParticleBasicMaterial.js"></script>
 		<script type="text/javascript" src="../src/materials/ParticleCircleMaterial.js"></script>
-		<script type="text/javascript" src="../src/materials/ParticleBitmapMaterial.js"></script>
+		<script type="text/javascript" src="../src/materials/Texture.js"></script>
 		<script type="text/javascript" src="../src/scenes/Scene.js"></script>
 		<script type="text/javascript" src="../src/renderers/Projector.js"></script>
 		<script type="text/javascript" src="../src/renderers/CanvasRenderer.js"></script>
@@ -80,11 +82,11 @@
 			var mouseX = 0;
 			var mouseY = 0;
 
-			var windowHalfX = window.innerWidth >> 1;
-			var windowHalfY = window.innerHeight >> 1;
+			var windowHalfX = window.innerWidth / 2;
+			var windowHalfY = window.innerHeight / 2;
 
 
-			document.addEventListener('mousemove', onDocumentMouseMove, false);
+			document.addEventListener( 'mousemove', onDocumentMouseMove, false );
 
 			init();
 			// loop();
@@ -114,7 +116,7 @@
 
 				var cube = new Cube(100, 100, 100);
 
-				mesh = new THREE.Mesh( cube, new THREE.MeshColorFillMaterial( 0x0000ff, 0.5 ) );
+				mesh = new THREE.Mesh( cube, new THREE.MeshBasicMaterial( { color: 0x0000ff, opacity: 0.5 } ) );
 				mesh.position.x = 500;
 				mesh.rotation.x = Math.random();
 				mesh.rotation.y = Math.random();
@@ -122,7 +124,7 @@
 				mesh.updateMatrix();
 				scene.addObject(mesh);
 
-				mesh = new THREE.Mesh( cube, new THREE.MeshColorFillMaterial( Math.random() * 0xffffff ) );
+				mesh = new THREE.Mesh( cube, new THREE.MeshBasicMaterial( { color: Math.random() * 0xffffff } ) );
 				mesh.position.x = 500;
 				mesh.position.y = 500;
 				mesh.rotation.x = Math.random();
@@ -133,7 +135,7 @@
 
 				// PLANE
 
-				mesh = new THREE.Mesh( new Plane( 100, 100 ), new THREE.MeshColorFillMaterial( Math.random() * 0xffffff ) );
+				mesh = new THREE.Mesh( new Plane( 100, 100 ), new THREE.MeshBasicMaterial( { color: Math.random() * 0xffffff } ) );
 				mesh.position.y = -500;
 				mesh.scale.x = mesh.scale.y = mesh.scale.z = 2;
 				mesh.doubleSided = true;
@@ -142,7 +144,7 @@
 
 				// CYLINDER
 
-				mesh = new THREE.Mesh( new Cylinder( 10, 20, 100, 200, - 50, - 20 ), new THREE.MeshColorFillMaterial( Math.random() * 0xffffff ) );
+				mesh = new THREE.Mesh( new Cylinder( 10, 20, 100, 200, - 50, - 20 ), new THREE.MeshBasicMaterial( { color: Math.random() * 0xffffff } ) );
 				mesh.position.x = -500;
 				mesh.scale.x = mesh.scale.y = mesh.scale.z = 2;
 				mesh.updateMatrix();
@@ -164,7 +166,7 @@
 					v1.position.addSelf( v );
 					v2.position.addSelf( v );
 
-					var face = new THREE.Face3( geometry.vertices.push( v0 ) - 1, geometry.vertices.push( v1 ) - 1, geometry.vertices.push( v2 ) - 1, null, new THREE.MeshColorFillMaterial( Math.random() * 0xffffff ) );
+					var face = new THREE.Face3( geometry.vertices.push( v0 ) - 1, geometry.vertices.push( v1 ) - 1, geometry.vertices.push( v2 ) - 1, null, new THREE.MeshBasicMaterial( { color: Math.random() * 0xffffff } ) );
 
 					geometry.faces.push( face );
 				}
@@ -172,21 +174,21 @@
 				geometry.computeNormals();
 				geometry.computeCentroids();
 
-				mesh = new THREE.Mesh( geometry, [ new THREE.MeshFaceMaterial(), new THREE.MeshColorStrokeMaterial( 0xff0000, 0.5, 10 ) ] );
+				mesh = new THREE.Mesh( geometry, [ new THREE.MeshFaceMaterial(), new THREE.MeshBasicMaterial( { color: 0xff0000, opacity: 0.5, linewidth: 10 } ) ] );
 				mesh.doubleSided = true;
 				mesh.scale.x = mesh.scale.y = mesh.scale.z = 2;
-				scene.addObject(mesh);
+				scene.addObject( mesh );
 
 				// PARTICLES
 
-				for (var i = 0; i < 100; i ++) {
+				for ( var i = 0; i < 100; i ++ ) {
 
-					particle = new THREE.Particle( new THREE.ParticleCircleMaterial( Math.random() * 0xffffff ) );
+					particle = new THREE.Particle( new THREE.ParticleCircleMaterial( { color: Math.random() * 0xffffff } ) );
 					particle.position.x = Math.random() * 1000 - 500;
 					particle.position.y = Math.random() * 1000 - 500;
 					particle.position.z = Math.random() * 1000 - 500;
 					particle.scale.x = particle.scale.y = 10;
-					scene.addObject(particle);
+					scene.addObject( particle );
 
 				}
 

+ 1 - 1
src/materials/Texture.js

@@ -6,7 +6,7 @@
 THREE.Texture = function ( image, mapping ) {
 
 	this.image = image;
-	this.mapping = mapping;
+	this.mapping = mapping ? mapping : THREE.UVMapping;
 
 	this.toString = function () {
 

+ 12 - 10
src/renderers/CanvasRenderer.js

@@ -107,8 +107,7 @@ THREE.CanvasRenderer = function () {
 				for ( m = 0, ml = element.material.length; m < ml; m++ ) {
 
 					material = element.material[ m ];
-
-					renderParticle( v1x, v1y, element, material, scene );
+					material && renderParticle( v1x, v1y, element, material, scene );
 
 				}
 
@@ -131,8 +130,7 @@ THREE.CanvasRenderer = function () {
 				while ( m < ml ) {
 
 					material = element.material[ m ++ ];
-
-					renderLine( v1x, v1y, v2x, v2y, element, material, scene );
+					material && renderLine( v1x, v1y, v2x, v2y, element, material, scene );
 
 				}
 
@@ -177,8 +175,7 @@ THREE.CanvasRenderer = function () {
 						while ( fm < fml ) {
 
 							material = element.faceMaterial[ fm ++ ];
-
-							renderFace3( v1x, v1y, v2x, v2y, v3x, v3y, element, material, scene );
+							material && renderFace3( v1x, v1y, v2x, v2y, v3x, v3y, element, material, scene );
 
 						}
 
@@ -246,8 +243,7 @@ THREE.CanvasRenderer = function () {
 						while ( fm < fml ) {
 
 							material = element.faceMaterial[ fm ++ ];
-
-							renderFace4( v1x, v1y, v2x, v2y, v3x, v3y, v4x, v4y, v5x, v5y, v6x, v6y, element, material, scene );
+							material && renderFace4( v1x, v1y, v2x, v2y, v3x, v3y, v4x, v4y, v5x, v5y, v6x, v6y, element, material, scene );
 
 						}
 
@@ -384,6 +380,12 @@ THREE.CanvasRenderer = function () {
 		var width, height, scaleX, scaleY, offsetX, offsetY,
 		bitmap, bitmapWidth, bitmapHeight;
 
+		if ( _contextGlobalAlpha != material.opacity ) {
+
+			_context.globalAlpha = _contextGlobalAlpha = material.opacity;
+
+		}
+
 		if ( material instanceof THREE.ParticleBasicMaterial ) {
 
 			bitmap = material.bitmap;
@@ -525,7 +527,7 @@ THREE.CanvasRenderer = function () {
 
 		if ( material.map ) {
 
-			bitmap = material.map;
+			bitmap = material.map.image;
 			bitmapWidth = bitmap.width - 1;
 			bitmapHeight = bitmap.height - 1;
 
@@ -617,7 +619,7 @@ THREE.CanvasRenderer = function () {
 
 		if ( material.map ) {
 
-			bitmap = material.map;
+			bitmap = material.map.image;
 			bitmapWidth = bitmap.width - 1;
 			bitmapHeight = bitmap.height - 1;
 

+ 7 - 0
utils/build.py

@@ -108,6 +108,7 @@ def buildFull(debug):
 		'objects/Particle.js',
 		'objects/Line.js',
 		'objects/Mesh.js',
+		'materials/Material.js',
 		'materials/LineBasicMaterial.js',
 		'materials/MeshBasicMaterial.js',
 		'materials/MeshLambertMaterial.js',
@@ -116,6 +117,7 @@ def buildFull(debug):
 		'materials/ParticleBasicMaterial.js',
 		'materials/ParticleCircleMaterial.js',
 		'materials/ParticleDOMMaterial.js',
+		'materials/Texture.js',
 		'scenes/Scene.js',
 		'renderers/Projector.js',
 		'renderers/DOMRenderer.js',
@@ -158,6 +160,7 @@ def buildCanvas(debug):
 		'objects/Particle.js',
 		'objects/Line.js',
 		'objects/Mesh.js',
+		'materials/Material.js',
 		'materials/LineBasicMaterial.js',
 		'materials/MeshBasicMaterial.js',
 		'materials/MeshLambertMaterial.js',
@@ -165,6 +168,7 @@ def buildCanvas(debug):
 		'materials/MeshFaceMaterial.js',
 		'materials/ParticleBasicMaterial.js',
 		'materials/ParticleCircleMaterial.js',
+		'materials/Texture.js',
 		'scenes/Scene.js',
 		'renderers/Projector.js',
 		'renderers/CanvasRenderer.js',
@@ -204,6 +208,7 @@ def buildWebGL(debug):
 		'objects/Particle.js',
 		'objects/Line.js',
 		'objects/Mesh.js',
+		'materials/Material.js',
 		'materials/LineBasicMaterial.js',
 		'materials/MeshBasicMaterial.js',
 		'materials/MeshLambertMaterial.js',
@@ -211,6 +216,7 @@ def buildWebGL(debug):
 		'materials/MeshFaceMaterial.js',
 		'materials/ParticleBasicMaterial.js',
 		'materials/ParticleCircleMaterial.js',
+		'materials/Texture.js',
 		'scenes/Scene.js',
 		'renderers/WebGLRenderer.js',
 	]
@@ -245,6 +251,7 @@ def buildSVG(debug):
 		'objects/Particle.js',
 		'objects/Line.js',
 		'objects/Mesh.js',
+		'materials/Material.js',
 		'materials/LineBasicMaterial.js',
 		'materials/MeshBasicMaterial.js',
 		'materials/MeshLambertMaterial.js',

Some files were not shown because too many files changed in this diff