如何在Forge Viewer中列出所有视图(而非相机对象)
如何获取Forge Viewer中SVF模型的全部视图列表
你之前调用的
NOP_VIEWER.model.getData().cameras仅能获取当前已加载的单个模型分支绑定的默认相机,3DS Max导出的多视图SVF格式会将不同导出视图存为根气泡下的独立可加载节点,不会聚合到单个模型的cameras数组中,因此仅调用该接口只能拿到当前视图对应的相机,无法获取全部视图列表。
具体实现方法
通过模型的文档气泡节点筛选所有可加载视图,示例代码如下:
// 1. 取当前模型对应的根气泡节点 const rootBubble = NOP_VIEWER.model.getDocumentNode().getRoot(); // 2. 筛选所有3D视图节点,如需包含2D视图可删除 role: '3d' 筛选条件 const allViewList = rootBubble.search({ type: 'geometry', role: '3d' }); // 3. 遍历获取视图信息 allViewList.forEach((viewNode, idx) => { // 视图名称,对应3DS Max导出时设置的视图名 const viewName = viewNode.getName(); // 视图唯一标识,可用于后续切换视图 const viewGuid = viewNode.getGuid(); console.log(`第${idx+1}个视图:${viewName},标识:${viewGuid}`); });
补充说明
- 如果需要切换到指定视图,调用
NOP_VIEWER.loadDocumentNode(NOP_VIEWER.model.getDocument(), 目标viewNode)即可自动加载对应视图及绑定的相机参数 - 该方法对Revit、Navisworks等其他软件导出的多视图SVF/SVF2模型同样适用
内容的提问来源于stack exchange,提问作者Fábio Pontes
相关产品推荐
相关产品推荐

