diff --git a/examples/js/Cloth.js b/examples/js/Cloth.js index 47c78b89ad811c21926a309a01433ef52b975488..383f87f52690d3b5caf545e716d6bbf873defe84 100644 --- a/examples/js/Cloth.js +++ b/examples/js/Cloth.js @@ -243,19 +243,23 @@ function simulate( time ) { if ( wind ) { - var face, faces = clothGeometry.faces, normal; + var indx; + var normal = new THREE.Vector3(); + var indices = clothGeometry.index; + var normals = clothGeometry.attributes.normal; particles = cloth.particles; - for ( i = 0, il = faces.length; i < il; i ++ ) { + for ( i = 0, il = indices.count; i < il; i += 3 ) { - face = faces[ i ]; - normal = face.normal; + for ( j = 0; j < 3; j ++ ) { - tmpForce.copy( normal ).normalize().multiplyScalar( normal.dot( windForce ) ); - particles[ face.a ].addForce( tmpForce ); - particles[ face.b ].addForce( tmpForce ); - particles[ face.c ].addForce( tmpForce ); + indx = indices.getX( i + j ); + normal.fromBufferAttribute( normals, indx ) + tmpForce.copy( normal ).normalize().multiplyScalar( normal.dot( windForce ) ); + particles[ indx ].addForce( tmpForce ); + + } } diff --git a/examples/webgl_animation_cloth.html b/examples/webgl_animation_cloth.html index c4701508f55d1d12080177b079b5d49ef17d800f..dd2fa3c72d03412504ffbc7e10b06e5ffcc8dd35 100644 --- a/examples/webgl_animation_cloth.html +++ b/examples/webgl_animation_cloth.html @@ -144,7 +144,7 @@ // cloth geometry - clothGeometry = new THREE.ParametricGeometry( clothFunction, cloth.w, cloth.h ); + clothGeometry = new THREE.ParametricBufferGeometry( clothFunction, cloth.w, cloth.h ); // cloth mesh @@ -296,13 +296,14 @@ for ( var i = 0, il = p.length; i < il; i ++ ) { - clothGeometry.vertices[ i ].copy( p[ i ].position ); + var v = p[ i ].position; + + clothGeometry.attributes.position.setXYZ( i, v.x, v.y, v.z ); } - clothGeometry.verticesNeedUpdate = true; + clothGeometry.attributes.position.needsUpdate = true; - clothGeometry.computeFaceNormals(); clothGeometry.computeVertexNormals(); sphere.position.copy( ballPosition );