autodesk-forge - 更改默认 ViewCube 方向
问题描述
我正在使用 Forge Viewer 来显示从建筑物中提取的简单几何图形。但是,在加载它们时,模型/视图立方体的方向与预期的用例不匹配(见图)。基本上我需要将“前视图”与“顶视图”交换。这是否可以通过例如查看器对象的默认设置来实现这样的事情?
我的设置与 Forge Viewer 的第 3 方反应包装器中的设置基本相同:https ://github.com/outer-labs/react-forge-viewer
已经非常感谢了。
丹尼尔
解决方案
基本上,您可以在模型完全加载后通过查看器 API 使用以下步骤将其存档,并且可以分为两部分。
(预处理)获取
Front
您想要使其成为的查看器的视图状态Top
:一个。将当前视图定向到
Front
视图:viewer.setViewCube( 'front' )
。
湾。获取视口的当前视图状态:var viewState = .getState( { viewport: true } )
。
C。将此保存viewState
到某个地方,您的 js 文件或数据库。恢复视图状态并将其设置为
Top
视图:一个。从某个地方(例如 js 文件或数据库)获取
viewState
您从 step1 获得的。
湾。通过 恢复视图状态viewer.restoreState( viewState )
。
C。将当前视图设置为Top
view: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);
});
希望能帮助到你!
推荐阅读
- python - 方法与属性
- r - 如何从R中for循环的迭代结果中获取向量?
- django - 条纹支付 - 为什么当我打电话 if payment_form.is_valid(): 总是无效?
- c# - 在集合中自动删除 Mongodb 中的某些类型的文档
- elasticsearch - logstash 组合多个输入(msql+beat)数据
- clips - CLIPS 使用变量作为实例的名称
- javascript - Web Scraping 以获取链接并根据 JavaScript 页面列表中的选择返回文件
- css - 为什么我的自定义 CSS 转换在更新父 React 组件的状态时不起作用?
- java - 运行 javafx 程序时出现“InvocationTargetException Caused by: java.lang.RuntimeException: Exception in Application start method”
- python - Python 在导出环境变量时抛出 KeyError