|
69 | 69 |
|
70 | 70 | function init() { |
71 | 71 |
|
72 | | - var container; |
73 | | - |
74 | | - container = document.createElement( 'div' ); |
75 | | - document.body.appendChild( container ); |
76 | | - |
77 | 72 | camera = new THREE.PerspectiveCamera( 80, SCREEN_WIDTH / SCREEN_HEIGHT, 1, 3000 ); |
78 | 73 | camera.position.z = 1000; |
79 | 74 |
|
|
93 | 88 |
|
94 | 89 | line = new THREE.LineSegments( geometry, material ); |
95 | 90 | line.scale.x = line.scale.y = line.scale.z = p[ 0 ]; |
96 | | - line.originalScale = p[ 0 ]; |
| 91 | + line.userData.originalScale = p[ 0 ]; |
97 | 92 | line.rotation.y = Math.random() * Math.PI; |
98 | 93 | line.updateMatrix(); |
99 | 94 | scene.add( line ); |
|
103 | 98 | renderer = new THREE.WebGLRenderer( { antialias: true } ); |
104 | 99 | renderer.setPixelRatio( window.devicePixelRatio ); |
105 | 100 | renderer.setSize( SCREEN_WIDTH, SCREEN_HEIGHT ); |
106 | | - container.appendChild( renderer.domElement ); |
| 101 | + document.body.appendChild( renderer.domElement ); |
107 | 102 |
|
108 | 103 | document.addEventListener( 'mousemove', onDocumentMouseMove, false ); |
109 | 104 | document.addEventListener( 'touchstart', onDocumentTouchStart, false ); |
|
121 | 116 |
|
122 | 117 | scene.traverse( function ( object ) { |
123 | 118 |
|
124 | | - if ( object instanceof THREE.Line ) { |
| 119 | + if ( object.isLine ) { |
125 | 120 |
|
126 | 121 | object.geometry.dispose(); |
127 | 122 | object.geometry = geometry; |
|
136 | 131 |
|
137 | 132 | function createGeometry() { |
138 | 133 |
|
139 | | - var geometry = new THREE.Geometry(); |
| 134 | + var geometry = new THREE.BufferGeometry(); |
| 135 | + var vertices = []; |
| 136 | + |
| 137 | + var vertex = new THREE.Vector3(); |
140 | 138 |
|
141 | 139 | for ( var i = 0; i < 1500; i ++ ) { |
142 | 140 |
|
143 | | - var vertex1 = new THREE.Vector3(); |
144 | | - vertex1.x = Math.random() * 2 - 1; |
145 | | - vertex1.y = Math.random() * 2 - 1; |
146 | | - vertex1.z = Math.random() * 2 - 1; |
147 | | - vertex1.normalize(); |
148 | | - vertex1.multiplyScalar( r ); |
| 141 | + vertex.x = Math.random() * 2 - 1; |
| 142 | + vertex.y = Math.random() * 2 - 1; |
| 143 | + vertex.z = Math.random() * 2 - 1; |
| 144 | + vertex.normalize(); |
| 145 | + vertex.multiplyScalar( r ); |
149 | 146 |
|
150 | | - var vertex2 = vertex1.clone(); |
151 | | - vertex2.multiplyScalar( Math.random() * 0.09 + 1 ); |
| 147 | + vertices.push( vertex.x, vertex.y, vertex.z ); |
152 | 148 |
|
153 | | - geometry.vertices.push( vertex1 ); |
154 | | - geometry.vertices.push( vertex2 ); |
| 149 | + vertex.multiplyScalar( Math.random() * 0.09 + 1 ); |
| 150 | + |
| 151 | + vertices.push( vertex.x, vertex.y, vertex.z ); |
155 | 152 |
|
156 | 153 | } |
157 | 154 |
|
| 155 | + geometry.addAttribute( 'position', new THREE.Float32BufferAttribute( vertices, 3 ) ); |
| 156 | + |
158 | 157 | return geometry; |
159 | 158 |
|
160 | 159 | } |
|
227 | 226 |
|
228 | 227 | var object = scene.children[ i ]; |
229 | 228 |
|
230 | | - if ( object instanceof THREE.Line ) { |
| 229 | + if ( object.isLine ) { |
231 | 230 |
|
232 | 231 | object.rotation.y = time * ( i < 4 ? ( i + 1 ) : - ( i + 1 ) ); |
233 | 232 |
|
234 | | - if ( i < 5 ) object.scale.x = object.scale.y = object.scale.z = object.originalScale * (i/5+1) * (1 + 0.5 * Math.sin( 7*time ) ); |
| 233 | + if ( i < 5 ) { |
| 234 | + |
| 235 | + var scale = object.userData.originalScale * ( i / 5 + 1 ) * ( 1 + 0.5 * Math.sin( 7 * time ) ); |
| 236 | + |
| 237 | + object.scale.x = object.scale.y = object.scale.z = scale; |
| 238 | + |
| 239 | + } |
235 | 240 |
|
236 | 241 | } |
237 | 242 |
|
|
0 commit comments