我正在尝试制作骨骼,然后变换每个骨骼的顶点,但我不知道我需要使用什么语法。例如我试过:
var v = new THREE.Vector3(0,0,0);
var b = new THREE.Bone();
b.position.x = 5;
b.position.y = 5;
b.position.z = 5;
b.updateMatrix();
v.applyMatrix4(b.matrixWorld);
console.log(v);
期望向量 v 的新坐标为 (5,5,5),但 console.log 输出为 (0,0,0)。有什么我想念的吗?
最佳答案
参见 THREE.Object3D :
updateMatrix()
更新局部变换 (Object3D.matrix
),但是 updateMatrixWorld()
更新对象及其子对象的全局变换 (Object3D.matrix
和 Object3D.matrixWorld
).
这意味着,您要么必须使用 Object3D.matrix
属性:
b.updateMatrix();
v.applyMatrix4(b.matrix);
或者您必须updateMatrixWorld()
:
b.updateMatrixWorld();
v.applyMatrix4(b.matrixWorld);
关于javascript - Threejs如何转换一个Vector3?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48946481/