Mr.doob 15 yıl önce
ebeveyn
işleme
e68109fdb2
51 değiştirilmiş dosya ile 931 ekleme ve 243 silme
  1. 31 19
      README.md
  2. BIN
      assets/examples/00_floor.png
  3. BIN
      assets/examples/01_waves.png
  4. BIN
      assets/examples/02_random.png
  5. BIN
      assets/examples/03_cube.png
  6. BIN
      assets/examples/04_vr.png
  7. BIN
      assets/examples/05_video.png
  8. BIN
      assets/examples/06_terrain.png
  9. BIN
      assets/examples/07_earth.png
  10. BIN
      assets/projects/00_jsflowfield4d.png
  11. BIN
      assets/projects/01_ddd.png
  12. BIN
      assets/projects/02_spacecannon.png
  13. BIN
      assets/projects/03_spikeball.png
  14. BIN
      assets/projects/04_alocasia.png
  15. BIN
      assets/projects/05_failure.png
  16. BIN
      assets/projects/06_rat.png
  17. BIN
      assets/projects/07_orsotheysay.png
  18. 0 1
      build/Three.js
  19. 0 1
      build/ThreeDebug.js
  20. 2 2
      examples/camera_free.html
  21. 38 0
      examples/geometry/Bird.js
  22. 0 0
      examples/geometry/Qrcode.js
  23. 0 0
      examples/geometry/primitives/Cube.js
  24. 0 0
      examples/geometry/primitives/Cylinder.js
  25. 0 0
      examples/geometry/primitives/Plane.js
  26. 0 0
      examples/geometry/primitives/Sphere.js
  27. 431 0
      examples/geometry_birds.html
  28. 2 2
      examples/geometry_cube.html
  29. 0 181
      examples/geometry_cube_webgl.html
  30. 3 3
      examples/geometry_earth.html
  31. 1 1
      examples/geometry_terrain.html
  32. 1 1
      examples/geometry_vr.html
  33. 1 1
      examples/materials_video.html
  34. 7 7
      examples/test.html
  35. 5 6
      src/core/Color.js
  36. 15 0
      src/materials/ParticleDOMMaterial.js
  37. 2 1
      src/objects/Line.js
  38. 2 1
      src/objects/Mesh.js
  39. 0 2
      src/objects/Object3D.js
  40. 2 1
      src/objects/Particle.js
  41. 58 0
      src/renderers/DOMRenderer.js
  42. 79 0
      utils/Builder.py
  43. 75 0
      utils/BuilderCanvas.py
  44. 59 0
      utils/BuilderDOM.py
  45. 15 6
      utils/BuilderDebug.py
  46. 12 7
      utils/BuilderSVG.py
  47. 70 0
      utils/BuilderWebGL.py
  48. 1 0
      utils/REVISION
  49. 19 0
      utils/build.sh
  50. 0 0
      utils/exporters/export_threejs_2.53b.py
  51. 0 0
      utils/exporters/export_threejs_2.5a2.py

+ 31 - 19
README.md

@@ -7,7 +7,7 @@ three.js
 
 The aim of this project is to create a lightweight 3D engine with a very low level of abstraction (aka for dummies). Currently there is no documentation available but feel free to use the examples as a reference and/or read the source code. However, be aware that the API may change from revision to revision breaking compatibility.
 
-The engine can render using <canvas> and <svg> and WebGL.
+The engine can render using <canvas>, <svg> and WebGL.
 
 [More info...](http://mrdoob.com/blog/post/693)
 
@@ -15,29 +15,32 @@ Other similar projects: [pre3d](http://deanm.github.com/pre3d/), [pvjs](http://c
 
 ### Examples ###
 
-[![geometry_earth](http://github.com/mrdoob/three.js/raw/master/assets/examples/07_earth.png)](http://mrdoob.com/projects/three.js/examples/geometry_earth.html)
-[![geometry_terrain](http://github.com/mrdoob/three.js/raw/master/assets/examples/06_terrain.png)](http://mrdoob.com/projects/three.js/examples/geometry_terrain.html)
-[![materials_video](http://github.com/mrdoob/three.js/raw/master/assets/examples/05_video.png)](http://mrdoob.com/projects/three.js/examples/materials_video.html)
-[![geometry_vr](http://github.com/mrdoob/three.js/raw/master/assets/examples/04_vr.png)](http://mrdoob.com/projects/three.js/examples/geometry_vr.html)
-[![geometry_cube](http://github.com/mrdoob/three.js/raw/master/assets/examples/03_cube.png)](http://mrdoob.com/projects/three.js/examples/geometry_cube.html)
-[![particles_random](http://github.com/mrdoob/three.js/raw/master/assets/examples/02_random.png)](http://mrdoob.com/projects/three.js/examples/particles_random.html)
-[![particles_wave](http://github.com/mrdoob/three.js/raw/master/assets/examples/01_waves.png)](http://mrdoob.com/projects/three.js/examples/particles_waves.html)
-[![particles_floor](http://github.com/mrdoob/three.js/raw/master/assets/examples/00_floor.png)](http://mrdoob.com/projects/three.js/examples/particles_floor.html)
+[![geometry_birds](http://mrdoob.github.com/three.js/assets/examples/08_birds.png)](http://mrdoob.github.com/three.js/examples/geometry_birds.html)
+[![geometry_earth](http://mrdoob.github.com/three.js/assets/examples/07_earth.png)](http://mrdoob.github.com/three.js/examples/geometry_earth.html)
+[![geometry_terrain](http://mrdoob.github.com/three.js/assets/examples/06_terrain.png)](http://mrdoob.github.com/three.js/examples/geometry_terrain.html)
+[![materials_video](http://mrdoob.github.com/three.js/assets/examples/05_video.png)](http://mrdoob.github.com/three.js/examples/materials_video.html)
+[![geometry_vr](http://mrdoob.github.com/three.js/assets/examples/04_vr.png)](http://mrdoob.github.com/three.js/examples/geometry_vr.html)
+[![geometry_cube](http://mrdoob.github.com/three.js/assets/examples/03_cube.png)](http://mrdoob.github.com/three.js/examples/geometry_cube.html)
+[![particles_random](http://mrdoob.github.com/three.js/assets/examples/02_random.png)](http://mrdoob.github.com/three.js/examples/particles_random.html)
+[![particles_wave](http://mrdoob.github.com/three.js/assets/examples/01_waves.png)](http://mrdoob.github.com/three.js/examples/particles_waves.html)
+[![particles_floor](http://mrdoob.github.com/three.js/assets/examples/00_floor.png)](http://mrdoob.github.com/three.js/examples/particles_floor.html)
 
 ### Featured projects ###
 
-[![Or so they say...](http://github.com/mrdoob/three.js/raw/master/assets/projects/07_orsotheysay.png)](http://xplsv.com/prods/demos/online/xplsv_orsotheysay/)
-[![Rat](http://github.com/mrdoob/three.js/raw/master/assets/projects/06_rat.png)](http://tech.lab212.org/2010/07/export-textured-models-from-blender2-5-to-three-js/)
-[![Failure](http://github.com/mrdoob/three.js/raw/master/assets/projects/05_failure.png)](http://www.is-real.net/experiments/three/failure/)
-[![Space Cannon 3D](http://github.com/mrdoob/three.js/raw/master/assets/projects/02_spacecannon.png)](http://labs.brian-stoner.com/spacecannon/)
-[![Alocasia](http://github.com/mrdoob/three.js/raw/master/assets/projects/04_alocasia.png)](http://arithmetric.com/projects/alocasia/)
-[![DDD](http://github.com/mrdoob/three.js/raw/master/assets/projects/01_ddd.png)](http://the389.com/works/three/)
-[![jsflowfield4d](http://github.com/mrdoob/three.js/raw/master/assets/projects/00_jsflowfield4d.png)](http://test.sjeiti.com/jsflowfield4d/)
-[![spikeball](http://github.com/mrdoob/three.js/raw/master/assets/projects/03_spikeball.png)](http://kile.stravaganza.org/lab/js/spikeball/)
+[![The Wilderness Downtown](http://mrdoob.github.com/three.js/assets/projects/08_wutw.png)](http://thewildernessdowntown.com/)
+[![CloudSCAD](http://mrdoob.github.com/three.js/assets/projects/08_cloudscad.png)](http://cloudscad.com/stl_viewer/)
+[![Or so they say...](http://mrdoob.github.com/three.js/assets/projects/07_orsotheysay.png)](http://xplsv.com/prods/demos/online/xplsv_orsotheysay/)
+[![Rat](http://mrdoob.github.com/three.js/assets/projects/06_rat.png)](http://tech.lab212.org/2010/07/export-textured-models-from-blender2-5-to-three-js/)
+[![Failure](http://mrdoob.github.com/three.js/assets/projects/05_failure.png)](http://www.is-real.net/experiments/three/failure/)
+[![Space Cannon 3D](http://mrdoob.github.com/three.js/assets/projects/02_spacecannon.png)](http://labs.brian-stoner.com/spacecannon/)
+[![Alocasia](http://mrdoob.github.com/three.js/assets/projects/04_alocasia.png)](http://arithmetric.com/projects/alocasia/)
+[![DDD](http://mrdoob.github.com/three.js/assets/projects/01_ddd.png)](http://the389.com/works/three/)
+[![jsflowfield4d](http://mrdoob.github.com/three.js/assets/projects/00_jsflowfield4d.png)](http://test.sjeiti.com/jsflowfield4d/)
+[![spikeball](http://mrdoob.github.com/three.js/assets/projects/03_spikeball.png)](http://kile.stravaganza.org/lab/js/spikeball/)
 
 ### Usage ###
 
-Download the [minified library](http://github.com/mrdoob/three.js/raw/master/build/Three.js) and include it in your html.
+Download the [minified library](http://mrdoob.github.com/three.js/build/Three.js) and include it in your html.
 
 	<script type="text/javascript" src="js/Three.js"></script>
 
@@ -102,6 +105,9 @@ For creating a customised version of the library, including the source files in
 	<script type="text/javascript" src="js/three/objects/Line.js"></script>
 	<script type="text/javascript" src="js/three/objects/Mesh.js"></script>
 	<script type="text/javascript" src="js/three/objects/Particle.js"></script>
+	<script type="text/javascript" src="js/three/lights/Light.js"></script>
+	<script type="text/javascript" src="js/three/lights/AmbientLight.js"></script>
+	<script type="text/javascript" src="js/three/lights/DirectionalLight.js"></script>
 	<script type="text/javascript" src="js/three/materials/LineColorMaterial.js"></script>
 	<script type="text/javascript" src="js/three/materials/MeshBitmapUVMappingMaterial.js"></script>
 	<script type="text/javascript" src="js/three/materials/MeshColorFillMaterial.js"></script>
@@ -125,11 +131,17 @@ For creating a customised version of the library, including the source files in
 
 Thanks to the power of the internets (and github <3) these people have kindly helped out with the project.
 
-[Paul Brunt](http://github.com/supereggbert), [Fernando Serrano](http://kile.stravaganza.org/), [kikko](http://github.com/kikko).
+[philogb](http://github.com/philogb), [supereggbert](http://github.com/supereggbert), [kikko](http://github.com/kikko), [kile](http://kile.stravaganza.org/), ...
 
 
 ### Change Log ###
 
+2010 09 17 - **r17** (39.005 kb)
+
+* Added `Light`, `AmbientLight` and `DirectionalLight` ([philogb](http://github.com/philogb))
+* `WebGLRenderer` basic lighting support ([philogb](http://github.com/philogb))
+
+
 2010 08 21 - **r16** (35.592 kb)
 
 * Workaround for Opera bug (clearRect not working with context with negative scale)

BIN
assets/examples/00_floor.png


BIN
assets/examples/01_waves.png


BIN
assets/examples/02_random.png


BIN
assets/examples/03_cube.png


BIN
assets/examples/04_vr.png


BIN
assets/examples/05_video.png


BIN
assets/examples/06_terrain.png


BIN
assets/examples/07_earth.png


BIN
assets/projects/00_jsflowfield4d.png


BIN
assets/projects/01_ddd.png


BIN
assets/projects/02_spacecannon.png


BIN
assets/projects/03_spikeball.png


BIN
assets/projects/04_alocasia.png


BIN
assets/projects/05_failure.png


BIN
assets/projects/06_rat.png


BIN
assets/projects/07_orsotheysay.png


Dosya farkı çok büyük olduğundan ihmal edildi
+ 0 - 1
build/Three.js


Dosya farkı çok büyük olduğundan ihmal edildi
+ 0 - 1
build/ThreeDebug.js


+ 2 - 2
examples/camera_free.html

@@ -54,8 +54,8 @@
 
 		<script type="text/javascript" src="cameras/FreeCamera.js"></script>
 
-		<script type="text/javascript" src="primitives/Cube.js"></script>
-		<script type="text/javascript" src="primitives/Plane.js"></script>
+		<script type="text/javascript" src="geometry/primitives/Cube.js"></script>
+		<script type="text/javascript" src="geometry/primitives/Plane.js"></script>
 
 		<script type="text/javascript" src="http://github.com/mrdoob/stats.js/raw/master/build/Stats.js"></script>
 

+ 38 - 0
examples/geometry/Bird.js

@@ -0,0 +1,38 @@
+var Bird = function () {
+
+	var scope = this;
+
+	THREE.Geometry.call(this);
+
+	v(   5,   0,   0 );
+	v( - 5, - 2,   1 );
+	v( - 5,   0,   0 );
+	v( - 5, - 2, - 1 );
+
+	v(   0,   2, - 6 );
+	v(   0,   2,   6 );
+	v(   2,   0,   0 );
+	v( - 3,   0,   0 );
+
+	f3( 0, 2, 1 );
+	// f3( 0, 3, 2 );
+
+	f3( 4, 7, 6 );
+	f3( 5, 6, 7 );
+
+	function v( x, y, z ) {
+
+		scope.vertices.push( new THREE.Vertex( new THREE.Vector3( x, y, z ) ) );
+
+	}
+
+	function f3( a, b, c ) {
+
+		scope.faces.push( new THREE.Face3( a, b, c ) );
+
+	}
+
+}
+
+Bird.prototype = new THREE.Geometry();
+Bird.prototype.constructor = Bird;

+ 0 - 0
examples/objects/Qrcode.js → examples/geometry/Qrcode.js


+ 0 - 0
examples/primitives/Cube.js → examples/geometry/primitives/Cube.js


+ 0 - 0
examples/primitives/Cylinder.js → examples/geometry/primitives/Cylinder.js


+ 0 - 0
examples/primitives/Plane.js → examples/geometry/primitives/Plane.js


+ 0 - 0
examples/primitives/Sphere.js → examples/geometry/primitives/Sphere.js


+ 431 - 0
examples/geometry_birds.html

@@ -0,0 +1,431 @@
+<html>
+	<head>
+		<meta http-equiv="content-type" content="text/html; charset=utf-8"/> 
+		<title>three.js - geometry - birds</title>
+		<style type="text/css"> 
+			body {
+				color: #808080;
+				font-family:Monospace;
+				font-size:13px;
+				text-align:center;
+
+				background-color: #ffffff;
+				margin: 0px;
+				overflow: hidden;
+			}
+
+			#info {
+				position: absolute;
+				top: 0px; width: 100%;
+				padding: 5px;
+			}
+		</style
+	</head>
+	<body>
+
+		<div id="container"></div>
+		<div id="info"><a href="http://github.com/mrdoob/three.js" target="_blank">three.js</a> - birds demo</div>
+
+		<script type="text/javascript" src="http://github.com/mrdoob/stats.js/raw/master/build/Stats.js"></script>
+
+		<script type="text/javascript" src="../build/Three.js"></script>
+		<script type="text/javascript" src="geometry/Bird.js"></script>
+
+		<script type="text/javascript">
+
+			// 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;vector
+					_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.addSelf( vector );
+
+						vector.set( _width, this.position.y, this.position.z );
+						vector = this.avoid( vector );
+						vector.multiplyScalar( 5 );
+						_acceleration.addSelf( vector );
+
+						vector.set( this.position.x, - _height, this.position.z );
+						vector = this.avoid( vector );
+						vector.multiplyScalar( 5 );
+						_acceleration.addSelf( vector );
+
+						vector.set( this.position.x, _height, this.position.z );
+						vector = this.avoid( vector );
+						vector.multiplyScalar( 5 );
+						_acceleration.addSelf( vector );
+
+						vector.set( this.position.x, this.position.y, - _depth );
+						vector = this.avoid( vector );
+						vector.multiplyScalar( 5 );
+						_acceleration.addSelf( vector );
+
+						vector.set( this.position.x, this.position.y, _depth );
+						vector = this.avoid( vector );
+						vector.multiplyScalar( 5 );
+						_acceleration.addSelf( vector );
+
+					}/* else {
+
+						this.checkBounds();
+
+					}
+					*/
+
+					if ( Math.random() > 0.5 ) {
+
+						this.flock( boids );
+
+					}
+
+					this.move();
+
+				}
+
+				this.flock = function ( boids ) {
+
+					if ( _goal ) {
+
+						_acceleration.addSelf( this.reach( _goal, 0.005 ) );
+
+					}
+
+					_acceleration.addSelf( this.alignment( boids ) );
+					_acceleration.addSelf( this.cohesion( boids ) );
+					_acceleration.addSelf( this.separation( boids ) );
+
+				}
+
+				this.move = function () {
+
+					this.velocity.addSelf( _acceleration );
+
+					var l = this.velocity.length();
+
+					if ( l > _maxSpeed ) {
+
+						this.velocity.divideScalar( l / _maxSpeed );
+
+					}
+
+					this.position.addSelf( 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.subSelf( 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.sub( this.position, target );
+						steer.multiplyScalar( 0.5 / distance );
+
+						_acceleration.addSelf( steer );
+
+					}
+
+				}
+
+				this.reach = function ( target, amount ) {
+
+					var steer = new THREE.Vector3();
+
+					steer.sub( 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.addSelf( 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.addSelf( boid.position );
+							count++;
+
+						}
+
+					}
+
+					if ( count > 0 ) {
+
+						posSum.divideScalar( count );
+
+					}
+
+					steer.sub( 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.sub( this.position, boid.position );
+							repulse.normalize();
+							repulse.divideScalar( distance );
+							posSum.addSelf( repulse );
+
+						}
+
+					}
+
+					return posSum;
+
+				}
+
+			}
+
+		</script>
+
+		<script type="text/javascript">
+
+			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();
+
+			function init() {
+
+				camera = new THREE.Camera( 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.MeshColorFillMaterial( Math.random() * 0xffffff ) );
+					bird.phase = Math.floor( Math.random() * 62.83 );
+					bird.position = boids[ i ].position;
+					bird.doubleSided = true;
+					// bird.scale.x = bird.scale.y = bird.scale.z = 10;
+					scene.addObject( bird );
+
+
+				}
+
+				renderer = new THREE.CanvasRenderer();
+				// renderer.autoClear = false;
+				renderer.setSize( SCREEN_WIDTH, SCREEN_HEIGHT );
+
+				document.addEventListener( 'mousemove', onDocumentMouseMove, false );
+				document.body.appendChild( renderer.domElement );
+
+				stats = new Stats();
+				stats.domElement.style.position = 'absolute';
+				stats.domElement.style.left = '0px';
+				stats.domElement.style.top = '0px';
+
+				document.getElementById( 'container' ).appendChild(stats.domElement);
+
+				setInterval( loop, 1000 / 200 );
+
+			}
+
+			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 loop() {
+
+				for ( var i = 0, il = birds.length; i < il; i++ ) {
+
+					boid = boids[ i ];
+					boid.run( boids );
+
+					bird = birds[ i ];
+
+					color = bird.material[0].color;
+					color.r = color.g = color.b = ( 500 - bird.position.z ) / 1000;
+					color.updateStyleString();
+
+					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 ].position.y = bird.geometry.vertices[ 4 ].position.y = Math.sin( bird.phase ) * 5;
+
+				}
+
+				renderer.render( scene, camera );
+
+				stats.update();
+
+			}
+
+		</script>
+
+	</body>
+</html>

+ 2 - 2
examples/geometry_cube.html

@@ -17,8 +17,8 @@
 
 		<script type="text/javascript" src="../build/Three.js"></script>
 
-		<script type="text/javascript" src="primitives/Cube.js"></script>
-		<script type="text/javascript" src="primitives/Plane.js"></script>
+		<script type="text/javascript" src="geometry/primitives/Cube.js"></script>
+		<script type="text/javascript" src="geometry/primitives/Plane.js"></script>
 
 		<script type="text/javascript" src="http://github.com/mrdoob/stats.js/raw/master/build/Stats.js"></script>
 

+ 0 - 181
examples/geometry_cube_webgl.html

@@ -1,181 +0,0 @@
-<!DOCTYPE HTML>
-<html lang="en">
-	<head>
-		<title>three.js - geometry - cube</title>
-		<meta charset="utf-8">
-		<meta name="viewport" content="width=device-width; initial-scale=1.0; maximum-scale=1.0; user-scalable=0;"/>
-		<style type="text/css">
-			body {
-				font-family: Monospace;
-				background-color: #f0f0f0;
-				margin: 0px;
-				overflow: hidden;
-			}
-		</style>
-	</head>
-	<body>
-
-		<script type="text/javascript" src="../build/Three.js"></script>
-		
-		<script type="text/javascript" src="../src/core/Matrix4.js"></script>
-		<script type="text/javascript" src="../src/renderers/WebGLRenderer.js"></script>
-		
-		<script type="text/javascript" src="primitives/Cube.js"></script>
-		<script type="text/javascript" src="primitives/Plane.js"></script>
-
-		<script type="text/javascript" src="http://github.com/mrdoob/stats.js/raw/master/build/Stats.js"></script>
-
-		<script type="text/javascript">
-
-			var SCREEN_WIDTH = window.innerWidth;
-			var SCREEN_HEIGHT = window.innerHeight;
-
-			var container;
-			var stats;
-
-			var camera;
-			var scene;
-			var renderer;
-
-			var cube, plane;
-
-			var targetRotation = 0;
-			var targetRotationOnMouseDown = 0;
-
-			var mouseX = 0;
-			var mouseXOnMouseDown = 0;
-
-			var windowHalfX = window.innerWidth / 2;
-			var windowHalfY = window.innerHeight / 2;
-
-			init();
-			setInterval(loop, 1000/60);
-
-			function init() {
-
-				container = document.createElement('div');
-				document.body.appendChild(container);
-
-				var info = document.createElement('div');
-				info.style.position = 'absolute';
-				info.style.top = '10px';
-				info.style.width = '100%';
-				info.style.textAlign = 'center';
-				info.innerHTML = 'Drag to spin the cube';
-				container.appendChild(info);
-
-				camera = new THREE.Camera( 70, SCREEN_WIDTH / SCREEN_HEIGHT, 1, 10000 );
-				camera.position.y = 150;
-				camera.position.z = 500;
-				camera.target.position.y = 150;
-				camera.updateMatrix();
-				
-				scene = new THREE.Scene();
-
-				// Cube
-
-				geometry = new Cube( 200, 200, 200 );
-
-				for (var i = 0; i < geometry.faces.length; i++) {
-
-					geometry.faces[i].color.setRGBA( Math.random() * 0.5, Math.random() * 0.5 + 0.5, Math.random() * 0.5 + 0.5, 1 );
-				}
-
-				cube = new THREE.Mesh(geometry, new THREE.MeshFaceColorFillMaterial() );
-				cube.position.y = 150;
-				scene.addObject(cube);
-
-				// Plane
-
-				plane = new THREE.Mesh( new Plane( 200, 200, 4, 4 ), new THREE.MeshColorFillMaterial( 0xe0e0e0 ) );
-				plane.rotation.x = -90 * ( Math.PI / 180 );
-				scene.addObject(plane);
-
-				renderer = new THREE.WebGLRenderer();
-				renderer.setSize(SCREEN_WIDTH, SCREEN_HEIGHT);
-
-				container.appendChild(renderer.domElement);
-
-				stats = new Stats();
-				stats.domElement.style.position = 'absolute';
-				stats.domElement.style.top = '0px';
-				container.appendChild(stats.domElement);
-
-				document.addEventListener('mousedown', onDocumentMouseDown, false);
-				document.addEventListener('touchstart', onDocumentTouchStart, false);
-				document.addEventListener('touchmove', onDocumentTouchMove, false);
-			}
-
-			//
-
-			function onDocumentMouseDown( event ) {
-
-				event.preventDefault();
-
-				document.addEventListener('mousemove', onDocumentMouseMove, false);
-				document.addEventListener('mouseup', onDocumentMouseUp, false);
-				document.addEventListener('mouseout', onDocumentMouseOut, false);
-
-				mouseXOnMouseDown = event.clientX - windowHalfX;
-				targetRotationOnMouseDown = targetRotation;
-			}
-
-			function onDocumentMouseMove( event ) {
-
-				mouseX = event.clientX - windowHalfX;
-
-				targetRotation = targetRotationOnMouseDown + (mouseX - mouseXOnMouseDown) * 0.02;
-			}
-
-			function onDocumentMouseUp( event ) {
-
-				document.removeEventListener('mousemove', onDocumentMouseMove, false);
-				document.removeEventListener('mouseup', onDocumentMouseUp, false);
-				document.removeEventListener('mouseout', onDocumentMouseOut, false);
-			}
-
-			function onDocumentMouseOut( event ) {
-
-				document.removeEventListener('mousemove', onDocumentMouseMove, false);
-				document.removeEventListener('mouseup', onDocumentMouseUp, false);
-				document.removeEventListener('mouseout', onDocumentMouseOut, false);
-			}
-
-			function onDocumentTouchStart( event ) {
-
-				if(event.touches.length == 1) {
-
-					event.preventDefault();
-
-					mouseXOnMouseDown = event.touches[0].pageX - windowHalfX;
-					targetRotationOnMouseDown = targetRotation;
-
-				}
-			}
-
-			function onDocumentTouchMove( event ) {
-
-				if(event.touches.length == 1) {
-
-					event.preventDefault();
-
-					mouseX = event.touches[0].pageX - windowHalfX;
-					targetRotation = targetRotationOnMouseDown + (mouseX - mouseXOnMouseDown) * 0.05;
-
-				}
-			}
-
-			//
-
-			function loop() {
-
-				plane.rotation.z = cube.rotation.y += (targetRotation - cube.rotation.y) * 0.05;
-
-				renderer.render(scene, camera);
-				stats.update();
-			}
-
-		</script>
-
-	</body>
-</html>

+ 3 - 3
examples/geometry_earth.html

@@ -31,14 +31,14 @@
 	<body>
 
 		<div id="container"></div> 
-		<div id="info"><a href="http://github.com/mrdoob/three.js" target="_blank">three.js</a> - earth demo</div> 
+		<div id="info"><a href="http://github.com/mrdoob/three.js" target="_blank">three.js</a> - earth demo</div>
 
 		<script type="text/javascript" src="http://github.com/mrdoob/stats.js/raw/master/build/Stats.js"></script>
 
 		<script type="text/javascript" src="../build/Three.js"></script>
 
-		<script type="text/javascript" src="primitives/Plane.js"></script>
-		<script type="text/javascript" src="primitives/Sphere.js"></script>
+		<script type="text/javascript" src="geometry/primitives/Plane.js"></script>
+		<script type="text/javascript" src="geometry/primitives/Sphere.js"></script>
 
 		<script type="text/javascript">
 

+ 1 - 1
examples/geometry_terrain.html

@@ -37,7 +37,7 @@
 
 		<script type="text/javascript" src="../build/Three.js"></script>
 
-		<script type="text/javascript" src="primitives/Plane.js"></script>
+		<script type="text/javascript" src="geometry/primitives/Plane.js"></script>
 
 		<script type="text/javascript">
 

+ 1 - 1
examples/geometry_vr.html

@@ -32,7 +32,7 @@
 
 		<script type="text/javascript" src="../build/Three.js"></script>
 
-		<script type="text/javascript" src="primitives/Plane.js"></script>
+		<script type="text/javascript" src="geometry/primitives/Plane.js"></script>
 
 		<script type="text/javascript">
 

+ 1 - 1
examples/materials_video.html

@@ -18,7 +18,7 @@
 		<script type="text/javascript" src="http://github.com/mrdoob/stats.js/raw/master/build/Stats.js"></script>
 		<script type="text/javascript" src="../build/Three.js"></script>
 
-		<script type="text/javascript" src="primitives/Plane.js"></script>
+		<script type="text/javascript" src="geometry/primitives/Plane.js"></script>
 
 		<video id="video" autoplay style="display:none">
 			<source src="textures/sintel.mp4" type='video/mp4; codecs="avc1.42E01E, mp4a.40.2"'>

+ 7 - 7
examples/test.html

@@ -32,6 +32,9 @@
 		<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/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/materials/LineColorMaterial.js"></script>
 		<script type="text/javascript" src="../src/materials/MeshBitmapUVMappingMaterial.js"></script>
 		<script type="text/javascript" src="../src/materials/MeshColorFillMaterial.js"></script>
@@ -40,9 +43,6 @@
 		<script type="text/javascript" src="../src/materials/MeshFaceColorStrokeMaterial.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/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/scenes/Scene.js"></script>
 		<script type="text/javascript" src="../src/renderers/Renderer.js"></script>
 		<script type="text/javascript" src="../src/renderers/CanvasRenderer.js"></script>
@@ -53,10 +53,10 @@
 		<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="objects/Qrcode.js"></script>
-		<script type="text/javascript" src="primitives/Cube.js"></script>
-		<script type="text/javascript" src="primitives/Plane.js"></script>
-		<script type="text/javascript" src="primitives/Cylinder.js"></script>
+		<script type="text/javascript" src="geometry/Qrcode.js"></script>
+		<script type="text/javascript" src="geometry/primitives/Cube.js"></script>
+		<script type="text/javascript" src="geometry/primitives/Plane.js"></script>
+		<script type="text/javascript" src="geometry/primitives/Cylinder.js"></script>
 
 		<script type="text/javascript" src="http://github.com/mrdoob/stats.js/raw/master/build/Stats.js"></script>
 

+ 5 - 6
src/core/Color.js

@@ -7,9 +7,8 @@ THREE.Color = function ( hex ) {
 	/*
 	this.r; this.g; this.b; this.a;
 	this.hex;
-	*/
-
 	this.__styleString = 'rgba(0, 0, 0, 1)';
+	*/
 
 	this.setHex = function ( hex ) {
 
@@ -39,10 +38,10 @@ THREE.Color = function ( hex ) {
 
 	this.updateRGBA = function () {
 
-		this.a = ( this.hex >> 24 & 0xff ) / 0xff;
-		this.r = ( this.hex >> 16 & 0xff ) / 0xff;
-		this.g = ( this.hex >> 8 & 0xff ) / 0xff;
-		this.b = ( this.hex & 0xff ) / 0xff;
+		this.a = ( this.hex >> 24 & 255 ) / 255;
+		this.r = ( this.hex >> 16 & 255 ) / 255;
+		this.g = ( this.hex >> 8 & 255 ) / 255;
+		this.b = ( this.hex & 255 ) / 255;
 
 	};
 

+ 15 - 0
src/materials/ParticleDOMMaterial.js

@@ -0,0 +1,15 @@
+/**
+ * @author mr.doob / http://mrdoob.com/
+ */
+
+THREE.ParticleDOMMaterial = function ( domElement ) {
+
+	this.domElement = domElement;
+
+	this.toString = function () {
+
+		return 'THREE.ParticleDOMMaterial ( domElement: ' + this.domElement + ' )';
+
+	};
+
+};

+ 2 - 1
src/objects/Line.js

@@ -4,9 +4,10 @@
 
 THREE.Line = function ( geometry, material ) {
 
-	THREE.Object3D.call( this, material );
+	THREE.Object3D.call( this );
 
 	this.geometry = geometry;
+	this.material = material instanceof Array ? material : [ material ];
 
 };
 

+ 2 - 1
src/objects/Mesh.js

@@ -4,9 +4,10 @@
 
 THREE.Mesh = function ( geometry, material ) {
 
-	THREE.Object3D.call( this, material );
+	THREE.Object3D.call( this );
 
 	this.geometry = geometry;
+	this.material = material instanceof Array ? material : [ material ];
 
 	this.flipSided = false;
 	this.doubleSided = false;

+ 0 - 2
src/objects/Object3D.js

@@ -11,8 +11,6 @@ THREE.Object3D = function ( material ) {
 	this.matrix = new THREE.Matrix4();
 	this.screen = new THREE.Vector3();
 
-	this.material = material instanceof Array ? material : [ material ];
-
 	this.autoUpdateMatrix = true;
 
 	this.updateMatrix = function () {

+ 2 - 1
src/objects/Particle.js

@@ -4,8 +4,9 @@
 
 THREE.Particle = function ( material ) {
 
-	THREE.Object3D.call( this, material );
+	THREE.Object3D.call( this );
 
+	this.material = material instanceof Array ? material : [ material ];
 	this.autoUpdateMatrix = false;
 
 };

+ 58 - 0
src/renderers/DOMRenderer.js

@@ -0,0 +1,58 @@
+/**
+ * @author mr.doob / http://mrdoob.com/
+ */
+
+THREE.DOMRenderer = function () {
+
+	THREE.Renderer.call( this );
+
+	var _div = document.createElement( 'div' ),
+	_width, _height, _widthHalf, _heightHalf;
+
+	this.domElement = _div;
+
+	this.setSize = function ( width, height ) {
+
+		_width = width; _height = height;
+		_widthHalf = _width / 2; _heightHalf = _height / 2;
+
+	};
+
+	this.render = function ( scene, camera ) {
+
+		var e, el, m, ml, element, material, dom, v1x, v1y;
+
+		this.project( scene, camera );
+
+		for ( e = 0, el = this.renderList.length; e < el; e++ ) {
+
+			element = this.renderList[ e ];
+
+			if ( element instanceof THREE.RenderableParticle ) {
+
+				v1x = element.x * _widthHalf + _widthHalf; v1y = element.y * _heightHalf + _heightHalf;
+
+				for ( m = 0, ml = element.material.length; m < ml; m++ ) {
+
+					material = element.material[ m ];
+
+					if ( material instanceof THREE.ParticleDOMMaterial ) {
+
+						dom = material.domElement;
+						dom.style.left = v1x + 'px';
+						dom.style.top = v1y + 'px';
+
+					}
+
+				}
+
+			}
+
+		}
+
+	};
+
+}
+
+THREE.DOMRenderer.prototype = new THREE.Renderer();
+THREE.DOMRenderer.prototype.constructor = THREE.DOMRenderer;

+ 79 - 0
utils/Builder.py

@@ -0,0 +1,79 @@
+import sys
+import os
+
+filename = 'Three.js'
+
+# MERGER
+
+files = []
+files.append('Three.js')
+files.append('core/Color.js')
+files.append('core/Vector2.js')
+files.append('core/Vector3.js')
+files.append('core/Vector4.js')
+files.append('core/Rectangle.js')
+files.append('core/Matrix4.js')
+files.append('core/Vertex.js')
+files.append('core/Face3.js')
+files.append('core/Face4.js')
+files.append('core/UV.js')
+files.append('core/Geometry.js')
+files.append('cameras/Camera.js')
+files.append('objects/Object3D.js')
+files.append('objects/Line.js')
+files.append('objects/Mesh.js')
+files.append('objects/Particle.js')
+files.append('lights/Light.js')
+files.append('lights/AmbientLight.js')
+files.append('lights/DirectionalLight.js')
+files.append('materials/LineColorMaterial.js')
+files.append('materials/MeshBitmapUVMappingMaterial.js')
+files.append('materials/MeshColorFillMaterial.js')
+files.append('materials/MeshColorStrokeMaterial.js')
+files.append('materials/MeshFaceColorFillMaterial.js')
+files.append('materials/MeshFaceColorStrokeMaterial.js')
+files.append('materials/ParticleBitmapMaterial.js')
+files.append('materials/ParticleCircleMaterial.js')
+files.append('materials/ParticleDOMMaterial.js')
+files.append('scenes/Scene.js')
+files.append('renderers/Renderer.js')
+files.append('renderers/DOMRenderer.js')
+files.append('renderers/CanvasRenderer.js')
+files.append('renderers/SVGRenderer.js')
+files.append('renderers/WebGLRenderer.js')
+files.append('renderers/renderables/RenderableFace3.js')
+files.append('renderers/renderables/RenderableFace4.js')
+files.append('renderers/renderables/RenderableParticle.js')
+files.append('renderers/renderables/RenderableLine.js')
+
+string = ''
+
+for item in files:
+	src_file = open('../src/' + item,'r')
+	string += src_file.read() + "\n"
+
+tmp_file = open('temp.js','w')
+tmp_file.write(string)
+tmp_file.close()
+
+
+# YUICOMPRESSOR
+
+os.system("java -jar yuicompressor-2.4.2.jar temp.js -o ../build/" + filename + " --charset utf-8 -v")
+os.unlink("temp.js")
+
+
+# HEADER
+
+rev_file = open('REVISION','r')
+rev = rev_file.read().rstrip()
+
+output = '../build/' + filename
+string = "// " + filename + " r" + rev + " - http://github.com/mrdoob/three.js\n"
+
+src_file = open(output,'r')
+string += src_file.read()
+
+dep_file = open(output,'w')
+dep_file.write(string)
+dep_file.close()

+ 75 - 0
utils/BuilderCanvas.py

@@ -0,0 +1,75 @@
+import sys
+import os
+
+filename = 'ThreeCanvas.js'
+
+# MERGER
+
+files = []
+files.append('Three.js')
+files.append('core/Color.js')
+files.append('core/Vector2.js')
+files.append('core/Vector3.js')
+files.append('core/Vector4.js')
+files.append('core/Rectangle.js')
+files.append('core/Matrix4.js')
+files.append('core/Vertex.js')
+files.append('core/Face3.js')
+files.append('core/Face4.js')
+files.append('core/UV.js')
+files.append('core/Geometry.js')
+files.append('cameras/Camera.js')
+files.append('objects/Object3D.js')
+files.append('objects/Line.js')
+files.append('objects/Mesh.js')
+files.append('objects/Particle.js')
+files.append('lights/Light.js')
+files.append('lights/AmbientLight.js')
+files.append('lights/DirectionalLight.js')
+files.append('materials/LineColorMaterial.js')
+files.append('materials/MeshBitmapUVMappingMaterial.js')
+files.append('materials/MeshColorFillMaterial.js')
+files.append('materials/MeshColorStrokeMaterial.js')
+files.append('materials/MeshFaceColorFillMaterial.js')
+files.append('materials/MeshFaceColorStrokeMaterial.js')
+files.append('materials/ParticleBitmapMaterial.js')
+files.append('materials/ParticleCircleMaterial.js')
+files.append('scenes/Scene.js')
+files.append('renderers/Renderer.js')
+files.append('renderers/CanvasRenderer.js')
+files.append('renderers/renderables/RenderableFace3.js')
+files.append('renderers/renderables/RenderableFace4.js')
+files.append('renderers/renderables/RenderableParticle.js')
+files.append('renderers/renderables/RenderableLine.js')
+
+string = ''
+
+for item in files:
+	src_file = open('../src/' + item,'r')
+	string += src_file.read() + "\n"
+
+tmp_file = open('temp.js','w')
+tmp_file.write(string)
+tmp_file.close()
+
+
+# YUICOMPRESSOR
+
+os.system("java -jar yuicompressor-2.4.2.jar temp.js -o ../build/" + filename + " --charset utf-8 -v")
+os.unlink("temp.js")
+
+
+# HEADER
+
+rev_file = open('REVISION','r')
+rev = rev_file.read().rstrip()
+
+output = '../build/' + filename
+string = "// " + filename + " r" + rev + " - http://github.com/mrdoob/three.js\n"
+
+src_file = open(output,'r')
+string += src_file.read()
+
+dep_file = open(output,'w')
+dep_file.write(string)
+dep_file.close()

+ 59 - 0
utils/BuilderDOM.py

@@ -0,0 +1,59 @@
+import sys
+import os
+
+filename = 'ThreeDOM.js'
+
+# MERGER
+
+files = []
+files.append('Three.js')
+files.append('core/Color.js')
+files.append('core/Vector2.js')
+files.append('core/Vector3.js')
+files.append('core/Vector4.js')
+files.append('core/Rectangle.js')
+files.append('core/Matrix4.js')
+files.append('core/Vertex.js')
+files.append('core/Face3.js')
+files.append('core/Face4.js')
+files.append('core/UV.js')
+files.append('cameras/Camera.js')
+files.append('objects/Object3D.js')
+files.append('objects/Particle.js')
+files.append('materials/ParticleDOMMaterial.js')
+files.append('scenes/Scene.js')
+files.append('renderers/Renderer.js')
+files.append('renderers/DOMRenderer.js')
+files.append('renderers/renderables/RenderableParticle.js')
+
+string = ''
+
+for item in files:
+	src_file = open('../src/' + item,'r')
+	string += src_file.read() + "\n"
+
+tmp_file = open('temp.js','w')
+tmp_file.write(string)
+tmp_file.close()
+
+
+# YUICOMPRESSOR
+
+os.system("java -jar yuicompressor-2.4.2.jar temp.js -o ../build/" + filename + " --charset utf-8 -v")
+os.unlink("temp.js")
+
+
+# HEADER
+
+rev_file = open('REVISION','r')
+rev = rev_file.read().rstrip()
+
+output = '../build/' + filename
+string = "// " + filename + " r" + rev + " - http://github.com/mrdoob/three.js\n"
+
+src_file = open(output,'r')
+string += src_file.read()
+
+dep_file = open(output,'w')
+dep_file.write(string)
+dep_file.close()

+ 15 - 6
utils/builder_debug.py → utils/BuilderDebug.py

@@ -1,9 +1,9 @@
 import sys
 import os
 
-# MERGER
+filename = 'ThreeDebug.js'
 
-rev = 16
+# MERGER
 
 files = []
 files.append('Three.js')
@@ -23,6 +23,9 @@ files.append('objects/Object3D.js')
 files.append('objects/Line.js')
 files.append('objects/Mesh.js')
 files.append('objects/Particle.js')
+files.append('lights/Light.js')
+files.append('lights/AmbientLight.js')
+files.append('lights/DirectionalLight.js')
 files.append('materials/LineColorMaterial.js')
 files.append('materials/MeshBitmapUVMappingMaterial.js')
 files.append('materials/MeshColorFillMaterial.js')
@@ -31,8 +34,10 @@ files.append('materials/MeshFaceColorFillMaterial.js')
 files.append('materials/MeshFaceColorStrokeMaterial.js')
 files.append('materials/ParticleBitmapMaterial.js')
 files.append('materials/ParticleCircleMaterial.js')
+files.append('materials/ParticleDOMMaterial.js')
 files.append('scenes/Scene.js')
 files.append('renderers/Renderer.js')
+files.append('renderers/DOMRenderer.js')
 files.append('renderers/CanvasRenderer.js')
 files.append('renderers/SVGRenderer.js')
 files.append('renderers/WebGLRenderer.js')
@@ -64,16 +69,20 @@ tmp_file.close()
 
 # YUICOMPRESSOR
 
-os.system("java -jar yuicompressor-2.4.2.jar temp.js -o ../build/ThreeDebug.js --charset utf-8 -v")
+os.system("java -jar yuicompressor-2.4.2.jar temp.js -o ../build/" + filename + " --charset utf-8 -v")
 os.unlink("temp.js");
 
+
 # HEADER
 
-output = '../build/ThreeDebug.js'
-string = "// three.js r" + str(rev) + " - http://github.com/mrdoob/three.js\n"
+rev_file = open('REVISION','r')
+rev = rev_file.read().rstrip()
+
+output = '../build/' + filename
+string = "// " + filename + " r" + rev + " - http://github.com/mrdoob/three.js\n"
 
 src_file = open(output,'r')
-string += src_file.read();
+string += src_file.read()
 
 dep_file = open(output,'w')
 dep_file.write(string)

+ 12 - 7
utils/builder.py → utils/BuilderSVG.py

@@ -1,9 +1,9 @@
 import sys
 import os
 
-# MERGER
+filename = 'ThreeSVG.js'
 
-rev = 16
+# MERGER
 
 files = []
 files.append('Three.js')
@@ -23,6 +23,9 @@ files.append('objects/Object3D.js')
 files.append('objects/Line.js')
 files.append('objects/Mesh.js')
 files.append('objects/Particle.js')
+files.append('lights/Light.js')
+files.append('lights/AmbientLight.js')
+files.append('lights/DirectionalLight.js')
 files.append('materials/LineColorMaterial.js')
 files.append('materials/MeshBitmapUVMappingMaterial.js')
 files.append('materials/MeshColorFillMaterial.js')
@@ -33,9 +36,7 @@ files.append('materials/ParticleBitmapMaterial.js')
 files.append('materials/ParticleCircleMaterial.js')
 files.append('scenes/Scene.js')
 files.append('renderers/Renderer.js')
-files.append('renderers/CanvasRenderer.js')
 files.append('renderers/SVGRenderer.js')
-files.append('renderers/WebGLRenderer.js')
 files.append('renderers/renderables/RenderableFace3.js')
 files.append('renderers/renderables/RenderableFace4.js')
 files.append('renderers/renderables/RenderableParticle.js')
@@ -54,13 +55,17 @@ tmp_file.close()
 
 # YUICOMPRESSOR
 
-os.system("java -jar yuicompressor-2.4.2.jar temp.js -o ../build/Three.js --charset utf-8 -v")
+os.system("java -jar yuicompressor-2.4.2.jar temp.js -o ../build/" + filename + " --charset utf-8 -v")
 os.unlink("temp.js")
 
+
 # HEADER
 
-output = '../build/Three.js'
-string = "// three.js r" + str(rev) + " - http://github.com/mrdoob/three.js\n"
+rev_file = open('REVISION','r')
+rev = rev_file.read().rstrip()
+
+output = '../build/' + filename
+string = "// " + filename + " r" + rev + " - http://github.com/mrdoob/three.js\n"
 
 src_file = open(output,'r')
 string += src_file.read()

+ 70 - 0
utils/BuilderWebGL.py

@@ -0,0 +1,70 @@
+import sys
+import os
+
+filename = 'ThreeWebGL.js'
+
+# MERGER
+
+files = []
+files.append('Three.js')
+files.append('core/Color.js')
+files.append('core/Vector2.js')
+files.append('core/Vector3.js')
+files.append('core/Vector4.js')
+files.append('core/Rectangle.js')
+files.append('core/Matrix4.js')
+files.append('core/Vertex.js')
+files.append('core/Face3.js')
+files.append('core/Face4.js')
+files.append('core/UV.js')
+files.append('core/Geometry.js')
+files.append('cameras/Camera.js')
+files.append('objects/Object3D.js')
+files.append('objects/Line.js')
+files.append('objects/Mesh.js')
+files.append('objects/Particle.js')
+files.append('lights/Light.js')
+files.append('lights/AmbientLight.js')
+files.append('lights/DirectionalLight.js')
+files.append('materials/LineColorMaterial.js')
+files.append('materials/MeshBitmapUVMappingMaterial.js')
+files.append('materials/MeshColorFillMaterial.js')
+files.append('materials/MeshColorStrokeMaterial.js')
+files.append('materials/MeshFaceColorFillMaterial.js')
+files.append('materials/MeshFaceColorStrokeMaterial.js')
+files.append('materials/ParticleBitmapMaterial.js')
+files.append('materials/ParticleCircleMaterial.js')
+files.append('scenes/Scene.js')
+files.append('renderers/WebGLRenderer.js')
+
+string = ''
+
+for item in files:
+	src_file = open('../src/' + item,'r')
+	string += src_file.read() + "\n"
+
+tmp_file = open('temp.js','w')
+tmp_file.write(string)
+tmp_file.close()
+
+
+# YUICOMPRESSOR
+
+os.system("java -jar yuicompressor-2.4.2.jar temp.js -o ../build/" + filename + " --charset utf-8 -v")
+os.unlink("temp.js")
+
+
+# HEADER
+
+rev_file = open('REVISION','r')
+rev = rev_file.read().rstrip()
+
+output = '../build/' + filename
+string = "// " + filename + " r" + rev + " - http://github.com/mrdoob/three.js\n"
+
+src_file = open(output,'r')
+string += src_file.read()
+
+dep_file = open(output,'w')
+dep_file.write(string)
+dep_file.close()

+ 1 - 0
utils/REVISION

@@ -0,0 +1 @@
+17

+ 19 - 0
utils/build.sh

@@ -0,0 +1,19 @@
+#!/bin/sh
+
+echo Compiling Three.js
+python Builder.py
+
+echo Compiling ThreeDebug.js
+python BuilderDebug.py
+
+# echo Compiling ThreeDOM.js
+# python BuilderDOM.py
+
+# echo Compiling ThreeCanvas.js
+# python BuilderCanvas.py
+
+# echo Compiling ThreeSVG.js
+# python BuilderSVG.py
+
+# echo Compiling ThreeWebGL.js
+# python BuilderWebGL.py

+ 0 - 0
utils/export_threejs_25b.py → utils/exporters/export_threejs_2.53b.py


+ 0 - 0
utils/export_threejs_25a2.py → utils/exporters/export_threejs_2.5a2.py


Bu fark içinde çok fazla dosya değişikliği olduğu için bazı dosyalar gösterilmiyor