【问题标题】:Limit the orbit movement in Forge Viewer在 Forge Viewer 中限制轨道运动
【发布时间】:2019-10-22 04:36:37
【问题描述】:

我无法为查看器设置旋转限制。 我希望我的查看器在 Three.js 中像这个例子一样工作 https://threejs.org/examples/#misc_controls_orbit 有没有人在这方面取得了成功?并且可以给我一些提示,引导我朝着正确的方向前进..

我已经尝试使用上面示例中的代码。 当达到大约 90 度的极限时,我尝试设置 viewer.autocam.constrainOrbitVertical = true,但它不会给我想要的结果..

【问题讨论】:

    标签: autodesk-forge autodesk-viewer


    【解决方案1】:

    不幸的是,Forge Viewer 中没有这样的功能。但是,您应该能够通过控制每个 CAMERA_CHANGE_EVENT 上的相机属性来解决它,例如:

        viewer.addEventListener(Autodesk.Viewing.CAMERA_CHANGE_EVENT, function() {
            const camera = viewer.getCamera();
            if (camera.position.x > 0) {
                const dist = camera.position.length();
                camera.position.x = 0;
                camera.position.setLength(dist);
                viewer.navigation.updateCamera();
            }
        });
    

    【讨论】:

    • 我尝试了你的建议。正如我所看到的,它停在它应该停在的地方,这很好......但它开始了“连锁反应”并放大我的模型并将其转过来。您是否知道如何阻止这种情况并保持在相同的相机位置并保持 camera.position.x = 0?
    • 是的,这可能是因为简单地将 x 坐标归零会使每一个微小的轨道移动与目标的距离更短。您可能需要在进行调整之前测量与目标的距离,然后,当您需要将 x 坐标设置为零时,重新应用比例因子以确保距离相同.
    • 我更新了代码 sn-p 以保持与 origin 的距离不变。
    • 你很接近为我解决这个问题.. :-)。但现在它停止缩放,唯一剩下的就是它转向一个非常随机的位置,当我到达 x=0 时它直接执行它。你知道如何解决这个问题吗?
    • “转向非常随机的位置”是什么意思?我已经在本地测试了代码 sn-p 并且不再看到任何奇怪的行为。
    猜你喜欢
    • 2021-08-02
    • 2019-11-27
    • 2021-05-31
    • 2020-10-21
    • 2021-10-29
    • 2020-01-29
    • 2018-07-13
    • 2018-02-05
    • 2018-08-12
    相关资源
    最近更新 更多