matrixWorld 中的三个 JS 位置与本地位置相同
Posted
技术标签:
【中文标题】matrixWorld 中的三个 JS 位置与本地位置相同【英文标题】:THREE JS position from matrixWorld is same as local position 【发布时间】: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()
。
是的,就是这样。谢谢!
【参考方案1】:
我需要 updateMatrixWorld()
为我的对象的每个父对象,我这样做是这样的:
function updateWorldMatrices (object)
var parent = object;
while (parent.parent != null)
parent.updateMatrixWorld();
parent = parent.parent;
【讨论】:
请注意,updateWorldMatrix 现在有用于更新父子节点的参数。以上是关于matrixWorld 中的三个 JS 位置与本地位置相同的主要内容,如果未能解决你的问题,请参考以下文章
Autodesk Forge Viewer 中的三个 JS 限制变换控制运动
DangerouslySetInnerHTML 与 React.JS 中的本地图像