【问题标题】:Setting the Camera to Perspective From Orthographic causing Camera to change direction将相机设置为从正交透视导致相机改变方向
【发布时间】:2019-07-06 07:17:52
【问题描述】:

我正在尝试为 Autodesk forge 查看器 API 开发一个扩展,其功能类似于包含的当前第一人称导航工具。我所描述的问题也出现在第一人称导航工具中,因此我将在这里使用它来说明我的示例。

建筑物的正交图像。 Image of model after load

现在使用鼠标导航到如下所示的位置。这是通过单击鼠标旋转模型和鼠标滚轮滚动来完成的。 Image of model after navigation

单击第一人称视图按钮已将建筑物内的摄像机视图移动到稍远的地方。 Image of inside building

这似乎不会改变相机的位置或目标值,即使相机被锁定也会发生。进行移动的实际调用似乎是对 navigation.toPerspective 的调用。

我想知道是否有人知道一种解决方法,可以让我使用相机对焦位置的第一人称。正如我之前所说,我正在编写的插件实际上并不是第一人称扩展,所以假设我可以在需要进行的地方进行任何必要的更改。

【问题讨论】:

    标签: javascript autodesk-forge autodesk-viewer


    【解决方案1】:

    如果您深入研究内置第一人称扩展的源代码(可以通过source map\extensions\BimWalk\BimWalk.js 进行),那么在activation 期间将发生以下导航(因为这是以编程方式完成的,所以它不会' t尊重相机锁定):

    viewer.navigation.toPerspective(); //Switch to perspective (view or real world as opposed to orthography) camera
    viewer.navigation.setVerticalFov(75, true); //This sets the vertical field of view to 75 degree for a better "walking" experience
    //It also records the current vertical fov and sets it back when exiting First Person
    

    然后当退出第一人称时,它会重新设置垂直视野。

    viewer.navigation.setVerticalFov(_previousFov, true);
    

    【讨论】:

    • 对不起,如果我不清楚,我知道视角和 FOV 作为激活的一部分正在改变,我在问为什么改变透视相机会改变相机正在看的东西,更重要的是,是否有办法阻止它这样做(如果我假设完全控制了 BIMWalk.js 代码),
    • 您可以使用toPerspective() 查看源代码以了解幕后究竟发生了什么,该toPerspective() 位于viewer3d.min.js 的第60108 行,启用了源映射。要禁用它,一种简单但有效的方法是使用 viewer.getCamera().toPerspective = function(){ this.isPerspective=true; //adapt the navigation to your own needs here} 之类的东西搭载它,但请务必保存原始功能的副本,并在完成后恢复它。
    猜你喜欢
    • 1970-01-01
    • 2021-03-03
    • 2018-03-31
    • 2014-04-01
    • 1970-01-01
    • 2020-11-03
    • 1970-01-01
    • 2015-08-27
    • 2018-07-23
    相关资源
    最近更新 更多