我正在使用Forge Viewer显示建筑物的简单几何图形提取。 但是,在加载它们时,模型/视图多维数据集的方向与预期的用例不匹配(请参见图)。 基本上,我需要将“前视图”与“顶视图”交换。 是否有可能通过例如查看器对象的默认设置?
我的设置基本上与Forge Viewer的第三方反应包装中的设置相同:https://github.com/outer-labs/react-forge-viewer
已经非常感谢您了。
丹尼尔
答案 0 :(得分:1)
基本上,您可以在模型完全加载并且可以分为两部分之后,通过Viewer API通过以下步骤对其进行存档。
(过程)获取要设为Front
的查看器的Top
视图状态:
a。将当前视图定向到Front
视图:viewer.setViewCube( 'front' )
。
b。获取视口的当前视像:var viewState = .getState( { viewport: true } )
。
C。将此viewState
保存到您的js文件或数据库中。
还原视图状态并将其设置为Top
视图:
a。从您从step1获得的某个地方(例如js文件或数据库)获取viewState
。
b。通过viewer.restoreState( viewState )
恢复视图状态。
C。将当前视图设置为Top
视图:viewer.autocam.setCurrentViewAsTop()
。
d。将当前视图设置为Home,以避免重置视图多维数据集的状态:viewer.autocam.setCurrentViewAsHome()
。
第二步的代码段:
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);
});
希望有帮助!