Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/454.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 应用转换时,几何体位置属性未更新_Javascript_Three.js_Buffer Geometry - Fatal编程技术网

Javascript 应用转换时,几何体位置属性未更新

Javascript 应用转换时,几何体位置属性未更新,javascript,three.js,buffer-geometry,Javascript,Three.js,Buffer Geometry,我使用stl加载程序将stl加载到一个返回缓冲几何体的threeJS场景中 然后我用 myMesh.position.set( x,y,z ) myMesh.rotation.setFromQuaternion ( quaternion , 'XYZ'); 来平移几何体。这有效地改变了环境 myMesh.position myMesh.quaternion 翻译正在现场进行,一切正常。 我原以为 myMesh.geometry.attributes.position.array 翻译前后

我使用stl加载程序将stl加载到一个返回缓冲几何体的threeJS场景中

然后我用

myMesh.position.set( x,y,z ) 
myMesh.rotation.setFromQuaternion ( quaternion , 'XYZ');
来平移几何体。这有效地改变了环境

myMesh.position
myMesh.quaternion
翻译正在现场进行,一切正常。 我原以为

myMesh.geometry.attributes.position.array
翻译前后会有所不同,但仍然相同我想在转换后从缓冲区几何体中提取新的事实。 我试着打电话

myMesh.geometry.dynamic = true;
myMesh.geometry.attributes.position.needsUpdate = true;

在渲染循环中,但运气不佳,因为我没有明确更新顶点。

您希望获得网格几何体的世界位置,同时考虑网格的变换矩阵,
mesh.matrix
。此外,网格几何体为
THREE.BufferGeometry

以下是要遵循的模式:

mesh = new THREE.Mesh( geometry, material );
mesh.position.set( 10, 10, 10 );
mesh.rotation.set( - Math.PI / 2, 0, 0 );
mesh.scale.set( 1, 1, 1 );
scene.add( mesh );

mesh.updateMatrix(); // make sure the mesh's matrix is updated

var vec = new THREE.Vector3();
var attribute = mesh.geometry.attributes.position; // we want the position data
var index = 1; // index is zero-based, so this the the 2nd vertex

vec.fromAttribute( attribute, index ); // extract the x,y,z coordinates

vec.applyMatrix4( mesh.matrix ); // apply the mesh's matrix transform

three.js r.71

设置网格位置不会修改几何体属性数据。另外,请使用myMesh.quaternion.copy(quaternion)。