【发布时间】:2012-09-14 21:21:23
【问题描述】:
所以基本上我有一个组 Object3D 的子 object3D,而子对象的 [x,y,z] 坐标相对于父对象的对象空间显示,我想更改子对象在其中的位置3D空间。所以首先我得到子对象相对于世界空间的位置。
var wrld_pos = childobject.matrixWorld.multiplyVector3(new THREE.Vector3);
这将返回孩子在世界空间中的位置的三元素向量。现在我想自己定位。所以我创建了一个三元素向量。
var new_pos = THREE.Vector3();
new_pos.x = 1;
new_pos.y = 2;
new_pos.z = 3;
childobject.matrixWorld.setPosition(new_pos);
提供了 setPosition 的函数定义,它本质上将对象世界矩阵的最后三个元素设置为作为参数传递的向量的值,从而改变对象在世界空间中的位置。为了确保矩阵在这些更改后更新,我调用了以下函数。
childobject.matrixWorldNeedsUpdate = true;
childobject.updateMatrixWorld();
现在,在检查对象的新世界矩阵时,我注意到 setPosition 函数什么也没做,什么也没做。
为什么?如果需要真实的代码示例,我会提供。但是上面应该很准确的代表了我使用的应用领域和语法。
【问题讨论】:
标签: javascript graphics webgl three.js