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 的未来版本可能不支持它。
但是,我们鼓励像您这样的开发人员自己实现此功能,这里有一个解决方法:
- 通过Navisworks打开包含房间元素仅的Revit项目,并上传到Forge进行翻译,使用此结果作为辅助您的查看器应用程序的模型也是如此。 [这里是一些信息。关于我同事 (link)] 的房间。
- 将您应用中所选资产的片段转换为纯
THREE.Geometry
。 [这是访问网格信息的示例。 Forge 查看器 (link)].
- 从
step. 2
计算 THREE.Geometry
的 BoundingSphere
,并将球体中心视为所选资产的中心点。
- 从
BoundingSphere
中心对房间几何形状执行 Three.js raytracing
以找到一些光线,在相机和所选资产之间没有任何障碍物。 [这里是一个示例,展示了如何在 Forge Viewer (link) 中使用 Three.js 光线追踪]。
- 将从
step. 4
获得的光线视为视线。
- 从
step. 5
中选择一条所需的视线,重新计算相机的位置、目标和枢轴。
P.S。由于这只是一种解决方法,而不是正式的解决方案。您必须自行承担使用它的风险。
我正在使用 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 的未来版本可能不支持它。
但是,我们鼓励像您这样的开发人员自己实现此功能,这里有一个解决方法:
- 通过Navisworks打开包含房间元素仅的Revit项目,并上传到Forge进行翻译,使用此结果作为辅助您的查看器应用程序的模型也是如此。 [这里是一些信息。关于我同事 (link)] 的房间。
- 将您应用中所选资产的片段转换为纯
THREE.Geometry
。 [这是访问网格信息的示例。 Forge 查看器 (link)]. - 从
step. 2
计算THREE.Geometry
的BoundingSphere
,并将球体中心视为所选资产的中心点。 - 从
BoundingSphere
中心对房间几何形状执行Three.js raytracing
以找到一些光线,在相机和所选资产之间没有任何障碍物。 [这里是一个示例,展示了如何在 Forge Viewer (link) 中使用 Three.js 光线追踪]。 - 将从
step. 4
获得的光线视为视线。 - 从
step. 5
中选择一条所需的视线,重新计算相机的位置、目标和枢轴。
P.S。由于这只是一种解决方法,而不是正式的解决方案。您必须自行承担使用它的风险。