实现边界表示建模

时间:2011-05-21 02:15:41

标签: math graphics model brep

是否有人有任何良好的实施策略或资源来整合b-rep建模系统?

OpenCascade是一个非常好的b-rep建模库(FreeCad和PythonOCC都非常酷)但是这个库庞大,复杂,可能不是一个学习b-rep建模'引擎'的好起点

我做了很多研究论文阅读,虽然基础数学有助于理解为什么一切都有效,但它给我留下了一些实施问题。

half edge数据结构似乎是在b-rep实现中存储有关正文的信息的首选方法。

所以一些问题没有特别的顺序:

  1. 使用halfedge数据结构通常如何实现渲染?基于实体边界的三角测量?

  2. 圆形面/曲面通常如何实现?例如,我读取的b-rep的一个基本介绍中的圆柱体在内部存储为棱镜。 IE是一个挤压三角形和元数据存储在盖面上,表示它们确实是圆形的。

  3. 通常如何实现布尔运算?我已经阅读了关于沿交叉曲线生成BSP树的信息,然后将这些树组合起来生成新的几何图形。是否还有其他方法可以实现布尔运算以及它们具有什么类型的pro / con?

  4. 谢谢!

    如果您想提供代码示例,请不要担心语言 - 问题更多是关于算法/数据结构实现细节

1 个答案:

答案 0 :(得分:0)

我正在使用C#中的B-Rep建模器(我处于一个非常早期的阶段:这是一个巨大的项目)所以我问自己和你一样的问题。这是我的答案:

  1. 三角测量:我没有完成这一步,但我正在考虑的策略如下:在参数空间中投影面边界以获得二维多边形(带孔),用耳剪切算法对其进行三角剖分,然后在3D空间中重新投影三角形顶点。对于曲面,我需要用网格分割多边形以跟随表面;
  2. 对于圆柱体,有3个边缘:两个圆形和一个线段。我为每种类型的曲线(Segment3dCircle3d ...)都有类,每个半边都有一个这样的类的实例。每个面都有一个表面对象的实例(平面,圆柱,球体......);
  3. 有一个基于BSP-Tree的有趣项目here,但它使用CSG方法,而不是B-rep。我还在研究如何做到这一点,但我认为我不需要BSP树。困难在于计算交叉点和拓扑结构。
  4. 我在这个主题上找到的最好的书: