|
@@ -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 );
|
|
|
|
|