Browse Source

Simplified and clarified hierarchy2 example.

Mr.doob 13 years ago
parent
commit
1914458738
1 changed files with 39 additions and 56 deletions
  1. 39 56
      examples/webgl_geometry_hierarchy2.html

+ 39 - 56
examples/webgl_geometry_hierarchy2.html

@@ -27,7 +27,7 @@
 
 
 			var camera, scene, renderer;
 			var camera, scene, renderer;
 
 
-			var geometry, objects;
+			var geometry, root;
 
 
 			var mouseX = 0, mouseY = 0;
 			var mouseX = 0, mouseY = 0;
 
 
@@ -52,99 +52,82 @@
 				var geometry = new THREE.CubeGeometry( 100, 100, 100 );
 				var geometry = new THREE.CubeGeometry( 100, 100, 100 );
 				var material = new THREE.MeshNormalMaterial();
 				var material = new THREE.MeshNormalMaterial();
 
 
-				var mesh = new THREE.Mesh( geometry, material );
-				mesh.position.x = 1000;
+				root = new THREE.Mesh( geometry, material );
+				root.position.x = 1000;
+				scene.add( root );
 
 
-				objects = [];
-
-				objects.push( mesh );
-
-				var amount = 200, child, object = mesh;
+				var amount = 200, object, parent = root;
 
 
 				for ( var i = 0; i < amount; i ++ ) {
 				for ( var i = 0; i < amount; i ++ ) {
 
 
-					child = new THREE.Mesh( geometry, material );
-					child.position.x = 100;
-
-					object.add( child );
-					object = child;
+					object = new THREE.Mesh( geometry, material );
+					object.position.x = 100;
 
 
-					objects.push( child );
+					parent.add( object );
+					parent = object;
 
 
 				}
 				}
 
 
-				object = mesh;
+				parent = root;
 
 
 				for ( var i = 0; i < amount; i ++ ) {
 				for ( var i = 0; i < amount; i ++ ) {
 
 
-					child = new THREE.Mesh( geometry, material );
-					child.position.x = - 100;
+					object = new THREE.Mesh( geometry, material );
+					object.position.x = - 100;
 
 
-					object.add( child );
-					object = child;
-
-					objects.push( child );
+					parent.add( object );
+					parent = object;
 
 
 				}
 				}
 
 
-				object = mesh;
+				parent = root;
 
 
 				for ( var i = 0; i < amount; i ++ ) {
 				for ( var i = 0; i < amount; i ++ ) {
 
 
-					child = new THREE.Mesh( geometry, material );
-					child.position.y = - 100;
-
-					object.add( child );
-					object = child;
+					object = new THREE.Mesh( geometry, material );
+					object.position.y = - 100;
 
 
-					objects.push( child );
+					parent.add( object );
+					parent = object;
 
 
 				}
 				}
 
 
-				object = mesh;
+				parent = root;
 
 
 				for ( var i = 0; i < amount; i ++ ) {
 				for ( var i = 0; i < amount; i ++ ) {
 
 
-					child = new THREE.Mesh( geometry, material );
-					child.position.y = 100;
+					object = new THREE.Mesh( geometry, material );
+					object.position.y = 100;
 
 
-					object.add( child );
-					object = child;
-
-					objects.push( child );
+					parent.add( object );
+					parent = object;
 
 
 				}
 				}
 
 
-				object = mesh;
+				parent = root;
 
 
 				for ( var i = 0; i < amount; i ++ ) {
 				for ( var i = 0; i < amount; i ++ ) {
 
 
-					child = new THREE.Mesh( geometry, material );
-					child.position.z = - 100;
-
-					object.add( child );
-					object = child;
+					object = new THREE.Mesh( geometry, material );
+					object.position.z = - 100;
 
 
-					objects.push( child );
+					parent.add( object );
+					parent = object;
 
 
 				}
 				}
 
 
-				object = mesh;
+				parent = root;
 
 
 				for ( var i = 0; i < amount; i ++ ) {
 				for ( var i = 0; i < amount; i ++ ) {
 
 
-					child = new THREE.Mesh( geometry, material );
-					child.position.z = 100;
-
-					object.add( child );
-					object = child;
+					object = new THREE.Mesh( geometry, material );
+					object.position.z = 100;
 
 
-					objects.push( child );
+					parent.add( object );
+					parent = object;
 
 
 				}
 				}
 
 
-				scene.add( mesh );
-
 				renderer = new THREE.WebGLRenderer();
 				renderer = new THREE.WebGLRenderer();
 				renderer.setSize( window.innerWidth, window.innerHeight );
 				renderer.setSize( window.innerWidth, window.innerHeight );
 				renderer.sortObjects = false;
 				renderer.sortObjects = false;
@@ -189,13 +172,13 @@
 
 
 				camera.lookAt( scene.position );
 				camera.lookAt( scene.position );
 
 
-				for ( var i = 0, l = objects.length; i < l; i ++ ) {
+				THREE.SceneUtils.traverseHierarchy( root, function ( object ) {
 
 
-					objects[ i ].rotation.x = rx;
-					objects[ i ].rotation.y = ry;
-					objects[ i ].rotation.z = rz;
+					object.rotation.x = rx;
+					object.rotation.y = ry;
+					object.rotation.z = rz;
 
 
-				}
+				} );
 
 
 				renderer.render( scene, camera );
 				renderer.render( scene, camera );