首页 > 解决方案 > 更改默认 ViewCube 方向

问题描述

我正在使用 Forge Viewer 来显示从建筑物中提取的简单几何图形。但是,在加载它们时,模型/视图立方体的方向与预期的用例不匹配(见图)。基本上我需要将“前视图”与“顶视图”交换。这是否可以通过例如查看器对象的默认设置来实现这样的事情?

我的设置与 Forge Viewer 的第 3 方反应包装器中的设置基本相同:https ://github.com/outer-labs/react-forge-viewer

已经非常感谢了。

丹尼尔

编辑:模型是 STP 格式 加载模型时的默认方向

标签: autodesk-forge

解决方案


基本上,您可以在模型完全加载后通过查看器 API 使用以下步骤将其存档,并且可以分为两部分。

  1. (预处理)获取Front您想要使其成为的查看器的视图状态Top

    一个。将当前视图定向到Front视图:viewer.setViewCube( 'front' )
    湾。获取视口的当前视图状态:var viewState = .getState( { viewport: true } )
    C。将此保存viewState到某个地方,您的 js 文件或数据库。

  2. 恢复视图状态并将其设置为Top视图:

    一个。从某个地方(例如 js 文件或数据库)获取viewState您从 step1 获得的。
    湾。通过 恢复视图状态viewer.restoreState( viewState )
    C。将当前视图设置为Topview: viewer.autocam.setCurrentViewAsTop()
    d。将当前视图设置为 Home 以避免视图立方体的状态被重置:viewer.autocam.setCurrentViewAsHome()

step2的代码片段:

viewer.addEventListener(
    Autodesk.Viewing.GEOMETRY_LOADED_EVENT,
    function( event ) {
        console.log( '%cGEOMETRY_LOADED_EVENT: !!!Geometries loaded!!!', 'color: green;' );

        setTimeout(() => {
            const onOrientTopViewCompleted = function() {
                viewer.removeEventListener(
                    Autodesk.Viewing.CAMERA_TRANSITION_COMPLETED,
                    onOrientTopViewCompleted
                );

                viewer.autocam.setCurrentViewAsTop();
                viewer.autocam.setCurrentViewAsHome();

                console.log( 'CAMERA_TRANSITION_COMPLETED' );
            };

            viewer.addEventListener(
                Autodesk.Viewing.CAMERA_TRANSITION_COMPLETED,
                onOrientTopViewCompleted
            );

            var viewState = '....'; //!<< the view state of the original `Front` view.

            viewer.restoreState( viewState )
        }, 1000);
    });

希望能帮助到你!


推荐阅读