Threejs如何变换Vector3?

时间:2018-02-23 11:08:47

标签: javascript matrix three.js

我正在尝试制作骨骼,然后转换每个骨骼的顶点,但我无法弄清楚我需要使用哪种语法。例如,我试过:

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)。有什么我想念的吗?

1 个答案:

答案 0 :(得分:1)

THREE.Object3D
updateMatrix()更新了本地转化(Object3D.matrix),但updateMatrixWorld()更新了对象及其子项的全局转换(Object3D.matrixObject3D.matrixWorld)。

这意味着您必须使用Object3D.matrix属性:

b.updateMatrix();
v.applyMatrix4(b.matrix);

或者您必须updateMatrixWorld()

b.updateMatrixWorld();
v.applyMatrix4(b.matrixWorld);