我正在尝试制作骨骼,然后转换每个骨骼的顶点,但我无法弄清楚我需要使用哪种语法。例如,我试过:
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)。有什么我想念的吗?
答案 0 :(得分:1)
见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);