Forge 查看器:放大房间内的资产(资产正面)

Forge viewer: Zoom in on a asset inside a room (front of the asset)

我正在使用 JS forge 查看器。

我正在尝试 select 建筑物中的资产,然后使用资产所在房间内的摄像头放大它。我正在尝试使用

let boundingBox = this.viewer.utilities.getBoundingBox(false); this.viewer.navigation.fitBounds(false, boundingBox, true);

但这会放大但不是正确的方向(准确地说是从外面看)

是否可以自动检测资产的正面,将相机旋转到这个位置然后放大?

抱歉让您久等了。经开发组确认,模型衍生服务的翻译过程中不会翻译Revit房间。因此,目前 Forge Viewer 不支持与房间相关的功能或 APIs。

此外,我们发现您的 API 请求,放大房间内的资产,只适用于使用 Forge 技术开发的 BIM 应用程序,并且可能有许多不同类型的用例基于这个请求。因此,很难在 Forge Viewer 中为您的请求设计一个通用的功能或 API。因此,Forge Viewer 的未来版本可能不支持它。

但是,我们鼓励像您这样的开发人员自己实现此功能,这里有一个解决方法:

  1. 通过Navisworks打开包含房间元素的Revit项目,并上传到Forge进行翻译,使用此结果作为辅助您的查看器应用程序的模型也是如此。 [这里是一些信息。关于我同事 (link)] 的房间。
  2. 将您应用中所选资产的片段转换为纯 THREE.Geometry。 [这是访问网格信息的示例。 Forge 查看器 (link)].
  3. step. 2 计算 THREE.GeometryBoundingSphere,并将球体中心视为所选资产的中心点。
  4. BoundingSphere 中心对房间几何形状执行 Three.js raytracing 以找到一些光线,在相机和所选资产之间没有任何障碍物。 [这里是一个示例,展示了如何在 Forge Viewer (link) 中使用 Three.js 光线追踪]。
  5. 将从step. 4获得的光线视为视线。
  6. step. 5 中选择一条所需的视线,重新计算相机的位置、目标和枢轴。


P.S。由于这只是一种解决方法,而不是正式的解决方案。您必须自行承担使用它的风险。