【问题标题】:Correct event to listen to before updating camera在更新相机之前要收听的正确事件
【发布时间】:2018-05-29 10:04:24
【问题描述】:

根据选定节点的 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();

【问题讨论】:

    标签: autodesk-forge autodesk-viewer


    【解决方案1】:

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

    【讨论】:

    • 似乎在 async.each 之后为这两个事件正确设置了摄像机角度,但是当单击 VR 模式时: document.getElementById("toolbar-vrTool").click();相机跳离模型并且不保持相同的相机角度。我能以某种方式知道 WebVR 扩展何时可以使用吗?
    • 尝试事件 Autodesk.Viewing.EXTENSION_LOADED_EVENT 并检查要加载的“Autodesk.Viewing.WebVR”扩展
    猜你喜欢
    • 2018-06-02
    • 2015-07-11
    • 1970-01-01
    • 1970-01-01
    • 2014-02-05
    • 1970-01-01
    • 1970-01-01
    • 2013-06-27
    • 1970-01-01
    相关资源
    最近更新 更多