【问题标题】:THREE JS position from matrixWorld is same as local positionmatrixWorld 中的三个 JS 位置与本地位置相同
【发布时间】:2017-07-28 09:12:57
【问题描述】:

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

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

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

【问题讨论】:

  • 您还必须更新所有对象祖先的世界矩阵。根据您的情况,尝试parent.updateMatrixWorld()scene.updateMatrixWorld()
  • 是的,就是这样。谢谢!

标签: javascript three.js collada


【解决方案1】:

我需要 updateMatrixWorld() 为我的对象的每个父对象,我这样做是这样的:

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

【讨论】:

猜你喜欢
  • 2015-12-28
  • 1970-01-01
  • 2018-11-22
  • 1970-01-01
  • 2018-10-05
  • 1970-01-01
  • 2021-04-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多