matrixWorld中的三个JS位置与本地位置相同

时间:2017-03-07 23:53:03

标签: javascript three.js collada

我从Cinema4D导入了一个带有父对象树的collada文件。当我像这样得到一个物体的世界位置时:

var thing = scene.getObjectByName("thing");
thing.updateMatrixWorld();
var worldPos = new THREE.Vector3(); 
worldPos.setFromMatrixPosition(thing.matrixWorld);

它与thing.position相同,文档称其为本地位置。我知道这个对象的父级位置非零。当我在没有updateMatrixWorld()的情况下尝试相同的事情时,世界位置为零。我怎样才能获得正确的世界位置?

1 个答案:

答案 0 :(得分:0)

对于我的对象的每个父级,我需要updateMatrixWorld(),我这样做了:

function updateWorldMatrices (object)
{
    var parent = object;
    while (parent.parent != null)
    {
        parent.updateMatrixWorld();
        parent = parent.parent;
    }
}