在更新相机之前纠正要收听的事件

时间:2017-12-15 08:12:16

标签: autodesk-forge autodesk-viewer

根据所选节点的dbid更新摄像头和目标。我正在根据用dbid检索的frag网格更新相机和目标,然后移动到VR模式。目前我有一个事件监听器GEOMETRY_LOADED_EVENT和OBJECT_TREE_CREATED_EVENT。在运行代码或更新相机之前是否还有其他事件需要等待?

const nav = viewer.navigation;
const cam = nav.getCamera();
const it = viewer.model.getData().instanceTree;

let xPos, yPos, zPos;
it.enumNodeFragments(nodeId, (frag) => {
    const mesh = viewer.impl.getRenderProxy(viewer.model, frag);
    xPos = mesh.matrixWorld.elements[12];
    yPos = mesh.matrixWorld.elements[13];
    zPos = mesh.matrixWorld.elements[14];
}, false);
cam.position.set(xPos, yPos, zPos);
cam.target.set(xPos, yPos + 10000, zPos);

viewer.impl.sceneUpdated();
viewer.navigation.updateCamera();
document.getElementById("toolbar-vrTool").click();

1 个答案:

答案 0 :(得分:1)

这两个事件应确保您的模型已完全加载,并且您的代码可以安全地访问模型层次结构,本文可能很有用:Asynchronous viewer events notification