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

Correct event to listen to before updating camera

正在根据所选节点的 dbid 更新相机和目标。我正在根据使用 dbid 检索的碎片网格更新相机和目标,然后转到 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();

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