|
@@ -45,9 +45,7 @@
|
|
|
var renderer, scene, camera, stats;
|
|
|
var objects = [];
|
|
|
|
|
|
-
|
|
|
- var WIDTH = window.innerWidth,
|
|
|
- HEIGHT = window.innerHeight;
|
|
|
+ var WIDTH = window.innerWidth, HEIGHT = window.innerHeight;
|
|
|
|
|
|
init();
|
|
|
animate();
|
|
@@ -61,37 +59,28 @@
|
|
|
scene.background = new THREE.Color( 0x111111 );
|
|
|
scene.fog = new THREE.Fog( 0x111111, 150, 200 );
|
|
|
|
|
|
- root = new THREE.Object3D();
|
|
|
-
|
|
|
var subdivisions = 6;
|
|
|
var recursion = 1;
|
|
|
|
|
|
- var points = hilbert3D( new THREE.Vector3( 0,0,0 ), 25.0, recursion, 0, 1, 2, 3, 4, 5, 6, 7 );
|
|
|
-
|
|
|
+ var points = hilbert3D( new THREE.Vector3( 0, 0, 0 ), 25.0, recursion, 0, 1, 2, 3, 4, 5, 6, 7 );
|
|
|
var spline = new THREE.CatmullRomCurve3( points );
|
|
|
- var geometrySpline = new THREE.Geometry();
|
|
|
|
|
|
- for ( var i = 0; i < points.length * subdivisions; i ++ ) {
|
|
|
+ var samples = spline.getPoints( points.length * subdivisions );
|
|
|
+ var geometrySpline = new THREE.Geometry().setFromPoints( samples );
|
|
|
|
|
|
- var t = i / ( points.length * subdivisions );
|
|
|
- geometrySpline.vertices[ i ] = spline.getPoint( t );
|
|
|
+ var line = new THREE.Line( geometrySpline, new THREE.LineDashedMaterial( { color: 0xffffff, dashSize: 1, gapSize: 0.5 } ) );
|
|
|
+ line.computeLineDistances();
|
|
|
|
|
|
- }
|
|
|
+ objects.push( line );
|
|
|
+ scene.add( line );
|
|
|
|
|
|
var geometryCube = cube( 50 );
|
|
|
|
|
|
- geometryCube.computeLineDistances();
|
|
|
- geometrySpline.computeLineDistances();
|
|
|
-
|
|
|
- var object = new THREE.Line( geometrySpline, new THREE.LineDashedMaterial( { color: 0xffffff, dashSize: 1, gapSize: 0.5 } ) );
|
|
|
-
|
|
|
- objects.push( object );
|
|
|
- scene.add( object );
|
|
|
+ var lineSegments = new THREE.LineSegments( geometryCube, new THREE.LineDashedMaterial( { color: 0xffaa00, dashSize: 3, gapSize: 1, linewidth: 2 } ) );
|
|
|
+ lineSegments.computeLineDistances();
|
|
|
|
|
|
- var object = new THREE.LineSegments( geometryCube, new THREE.LineDashedMaterial( { color: 0xffaa00, dashSize: 3, gapSize: 1, linewidth: 2 } ) );
|
|
|
-
|
|
|
- objects.push( object );
|
|
|
- scene.add( object );
|
|
|
+ objects.push( lineSegments );
|
|
|
+ scene.add( lineSegments );
|
|
|
|
|
|
renderer = new THREE.WebGLRenderer( { antialias: true } );
|
|
|
renderer.setPixelRatio( window.devicePixelRatio );
|
|
@@ -113,47 +102,49 @@
|
|
|
|
|
|
var h = size * 0.5;
|
|
|
|
|
|
- var geometry = new THREE.Geometry();
|
|
|
-
|
|
|
- geometry.vertices.push(
|
|
|
- new THREE.Vector3( -h, -h, -h ),
|
|
|
- new THREE.Vector3( -h, h, -h ),
|
|
|
+ var geometry = new THREE.BufferGeometry();
|
|
|
+ var position = [];
|
|
|
|
|
|
- new THREE.Vector3( -h, h, -h ),
|
|
|
- new THREE.Vector3( h, h, -h ),
|
|
|
+ position.push(
|
|
|
+ -h, -h, -h,
|
|
|
+ -h, h, -h,
|
|
|
|
|
|
- new THREE.Vector3( h, h, -h ),
|
|
|
- new THREE.Vector3( h, -h, -h ),
|
|
|
+ -h, h, -h,
|
|
|
+ h, h, -h,
|
|
|
|
|
|
- new THREE.Vector3( h, -h, -h ),
|
|
|
- new THREE.Vector3( -h, -h, -h ),
|
|
|
+ h, h, -h,
|
|
|
+ h, -h, -h,
|
|
|
|
|
|
+ h, -h, -h,
|
|
|
+ -h, -h, -h,
|
|
|
|
|
|
- new THREE.Vector3( -h, -h, h ),
|
|
|
- new THREE.Vector3( -h, h, h ),
|
|
|
+ -h, -h, h,
|
|
|
+ -h, h, h,
|
|
|
|
|
|
- new THREE.Vector3( -h, h, h ),
|
|
|
- new THREE.Vector3( h, h, h ),
|
|
|
+ -h, h, h,
|
|
|
+ h, h, h,
|
|
|
|
|
|
- new THREE.Vector3( h, h, h ),
|
|
|
- new THREE.Vector3( h, -h, h ),
|
|
|
+ h, h, h,
|
|
|
+ h, -h, h,
|
|
|
|
|
|
- new THREE.Vector3( h, -h, h ),
|
|
|
- new THREE.Vector3( -h, -h, h ),
|
|
|
+ h, -h, h,
|
|
|
+ -h, -h, h,
|
|
|
|
|
|
- new THREE.Vector3( -h, -h, -h ),
|
|
|
- new THREE.Vector3( -h, -h, h ),
|
|
|
+ -h, -h, -h,
|
|
|
+ -h, -h, h,
|
|
|
|
|
|
- new THREE.Vector3( -h, h, -h ),
|
|
|
- new THREE.Vector3( -h, h, h ),
|
|
|
+ -h, h, -h,
|
|
|
+ -h, h, h,
|
|
|
|
|
|
- new THREE.Vector3( h, h, -h ),
|
|
|
- new THREE.Vector3( h, h, h ),
|
|
|
+ h, h, -h,
|
|
|
+ h, h, h,
|
|
|
|
|
|
- new THREE.Vector3( h, -h, -h ),
|
|
|
- new THREE.Vector3( h, -h, h )
|
|
|
+ h, -h, -h,
|
|
|
+ h, -h, h
|
|
|
);
|
|
|
|
|
|
+ geometry.addAttribute( 'position', new THREE.Float32BufferAttribute( position, 3 ) );
|
|
|
+
|
|
|
return geometry;
|
|
|
|
|
|
}
|
|
@@ -180,14 +171,16 @@
|
|
|
|
|
|
var time = Date.now() * 0.001;
|
|
|
|
|
|
- for ( var i = 0; i < objects.length; i ++ ) {
|
|
|
+ scene.traverse( function( object ) {
|
|
|
+
|
|
|
+ if ( object.isLine ) {
|
|
|
|
|
|
- var object = objects[ i ];
|
|
|
+ object.rotation.x = 0.25 * time;
|
|
|
+ object.rotation.y = 0.25 * time;
|
|
|
|
|
|
- object.rotation.x = 0.25 * time;
|
|
|
- object.rotation.y = 0.25 * time;
|
|
|
+ }
|
|
|
|
|
|
- }
|
|
|
+ } );
|
|
|
|
|
|
renderer.render( scene, camera );
|
|
|
|