ForgeViewer在定制化设计应用中的功能分析
ForgeViewer并非设计软件,但在定制化设计中可扮演以下角色:
- 自定义布置构件或部件
- 自定义构件或部件的变换
- 自定义材质或着色器设置
- 包围盒计算和射线检测
- 自定义辅助对象
模型聚合与额外参数设置
- 使用
oviewer.loadDocumentNode加载模型,可设置额外参数:
keepCurrentModels: 布尔值,是否保留当前模型
preserveView: 布尔值,是否保留当前视图
placementTransform: THREE.Matrix4,放置变换矩阵
globalOffset: THREE.Vector3,全局偏移量
applyScaling: 字符串,是否应用缩放
- 参考资料链接:
- https://forge.autodesk.com/blog/loading-multiple-models-forge-viewer-v7
- https://forge.autodesk.com/blog/multi-model-refresher
移动对象(以Fragments形式)
- 通过
instance tree和fragment list遍历对象的fragments
- 参考资料链接:
- https://forge.autodesk.com/blog/working-2d-and-3d-scenes-and-geometry-forge-viewer
- https://github.com/Autodesk-Forge/forge-extensions/tree/master/public/extensions/TransformationExtension
自定义材质或着色器设置
- 创建自定义
THREE.Material并注册到材质管理器,或使用SVF自带材质
- 使用
instance tree和fragment list获取对象fragment,遍历并设置材质
- 参考资料链接:
- https://forge.autodesk.com/blog/material-swatches-forge-viewer
- https://forge.autodesk.com/blog/custom-shader-materials-forge-viewer
包围盒计算和射线检测
- 通过
instance tree和fragment list计算包围盒:
ofrags.getWorldBounds(fragid: number, targetBounds: THREE.Box3)
- 使用
viewer.hitTest(x: number, y: number)进行射线检测,返回第一个相交对象的id及相交点
- 参考资料链接:
- https://forge.autodesk.com/en/docs/viewer/v7/developers_guide/advanced_options/custom-geometry
- https://forge.autodesk.com/blog/custom-models-forge-viewer