gpt4 book ai didi

math - 实现边界表示建模

转载 作者:行者123 更新时间:2023-12-03 14:51:45 26 4
gpt4 key购买 nike

有没有人有任何好的实现策略或资源来组合 b-rep 建模系统?

OpenCascade 显然是一个很好的 b-rep 建模库(FreeCad 和 PythonOCC 使用的都非常酷),但该库庞大、复杂,可能不是了解 b-rep 建模“引擎”的良好起点。

我已经阅读了相当多的研究论文,虽然基础数学对于理解一切正常的原因很有用,但它给我留下了一些实现问题。

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

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

  • 使用半边数据结构通常如何实现渲染?基于固体边界的三角剖分?
  • 通常如何实现圆形面/曲面?例如,在我读过的关于 b-rep 的一个基本介绍中,圆柱体在内部存储为棱镜。 IE 一个挤压三角形和元数据存储在帽面周围,表明它们确实是圆形的。
  • bool 运算通常是如何实现的?我已经阅读了关于沿相交曲线生成 BSP 树然后组合这些树以生成新几何的信息。是否有其他方法来实现 bool 运算以及它们有哪些优点/缺点?

  • 谢谢!

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

    最佳答案

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

  • 三角剖分:这一步我没有做,但是我想到的策略如下:将人脸边界投影到参数空间中,得到二维多边形(带孔),用耳朵剪裁算法对其进行三角剖分,然后重新投影三角形顶点在 3D 空间中。对于曲面,我需要用网格分割多边形以跟随曲面;
  • 对于圆柱体,有 3 个边:两个圆形和一个线段。我为每种类型的曲线( Segment3dCircle3d ...)都有类,并且每个半边都包含这些类之一的实例。每个面都包含一个表面对象的实例(平面、圆柱体、球体...);
  • 有一个有趣的项目here基于 BSP-Tree,但它使用 CSG 方法,而不是 B-rep。我仍在研究如何做到这一点,但我认为我不需要 BSP 树。难点在于计算交集和拓扑。

  • 我在这个主题上找到的最好的书:
  • 3D CAD - Principles and Applications (旧但仍然相关)
  • Geometric Modeling: The mathematics of shapes (比上一个更新,但不太清楚)
  • 关于math - 实现边界表示建模,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6079192/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com