IfcAxis2Placement3D 和 IfcObjectPlacement 的三种实现

THREEJS implementation of IfcAxis2Placement3D and IfcObjectPlacement

我现在正在开发 IFC 文件的 webgl 查看器。大多数 IfcRepresentation 对象都很容易理解,但是我不擅长协调转换。是否有更好的表达式来在 IfcAxis2Placement3D 定义的 THREEJS 中平移和旋转 Object3D?我猜它应该通过 Z 轴旋转对象然后将 Z 轴对齐到一个新的向量,如何实现这个? 另一个问题是关于 IfcObjectPlacement 的。它总是需要一个子 PlacementRelTo 对象,直到 PlacementRelTo == null。我又有点疑惑了,如果要从这个放置位置读取绝对坐标,是正向变换还是反向变换?我的意思是,使用 push-pop 还是直接订购?例如,如果有像 M1、M2.. Mn 这样的矩阵,那么 M = M1 x M2 x ... Mn 或 M = Mn x Mn-1 x ... x M2 x M1?我可以在我的项目中找到漂亮的网格对象,但位置总是错误的。请帮助我。

谢谢。

查看 this article on matrix transformations for projection 了解矩阵变换的入门知识。

值得注意的是,IFC 模型中的大多数几何形状都是 'implicit' 而不是 'explicit' 形状。这意味着需要执行额外的处理才能将数据转化为可以输入典型 3D 场景的形式 - 因此您的模型中会丢失很多形状,因为很少有形状会被明确建模为网格。总而言之,IFC 中的几何图形是 non-trivial (diagrams)。那是在您开始 placement/mapping/ 转换到世界坐标系之前。

不清楚您是否使用 IFC 工具包来处理原始 IFC STEP 数据。如果没有,我建议您这样做,因为它会节省大量工作(可能需要数年的工作)。

BuildingSmart 维护一个 list of resources 来处理 IFC(商业和开源)

我知道以下工具包相当成熟并且能够处理几何图形。有些已经有了您可以重复使用的 WebGL 实现。