构造实体几何
构造实体几何(英文为 Constructive solid geometry,缩写为 CSG)是实体造型中应用的一项技术。CSG 是 三维计算机图形学与CAD中经常使用的一个程序化建模技术。在构造实体几何中,建模人员可以使用逻辑运算符将不同物体组合成复杂的曲面或者物体。 CSG 可以用简单的实体来构造或表达非常复杂的模型或者曲面[1]。在有些场合中,构造实体几何只在多边形网格上进行处理,因此可能并不是程序化的或者参数化的。
最简单的实体被称为体元或几何图元,通常是形状简单的物体,如立方体、圆柱体、棱柱、棱锥、球体、圆锥等。根据每个软件包的不同这些体元也有所不同,在一些软件包中可以使用弯曲的物体进行 CSG 处理,在另外一些软件包中则不支持这些功能。
布尔运算(Boolean)
在建模软件包中,如立方体、球体、环体以及其它基本几何体都可以用数学公式来表述,它们统称为体元。通常这些物体用可以输入参数的程序来描述,例如球体可以用球心坐标及半径来表示。这些体元都可以经下面的操作组合成复杂的物体:
并集 | 补集 | 交集 |
---|---|---|
将两个物体组合成一个 | 从一个物体中减去另一个 | 两个物体共有的部分 |
构造实体几何的应用
构造实体几何有许多实际的应用,在需要简单几何物体的场合或者数学精度很关键的场合都有应用。 虚幻引擎、Source引擎 的映射引擎 Hammer 以及 Quake 都在使用这项技术[1]。(Hammer 实际上最初来自于 Worldcraft,它是 Quake 的一个场景编辑器。)BRL-CAD 是一个基于构造实体几何造型技术的实体造型CAD软件包。由于可以用相对简单的物体来生成非常复杂的几何形状,因此构造实体几何得到了广泛的流行。如果构造实体几何是程序化的或者参数化的,那么用户可以通过修改物体的位置或者逻辑运算对复杂物体进行修改。
构造实体几何方法生成的复杂几何体都是密闭的物体,这些物体的表面上不存在难以察觉的缝隙[2]。而如果使用边界表示来生成几何体,则需要拓扑学数据或者额外的连续性检测,来保证生成密闭的几何体。对于一些工程计算而言,几何体必须是密闭的。
如果使用构造实体几何来表示几何体,那么很容易判断某一个理想的点是否在几何体内。因为形状规则的几何图元和点的位置关系易于判断,而根据几何体的逻辑表达式合成几何图元的判断结果后,就可以得到复杂几何体的判断结果[3]。因此可以在光线追踪任务中用构造实体几何表示物体。
示例程序
- POV-Ray
参考文献
- ^ 1.0 1.1 Bloomenthal, Jules; Bajaj, Chandrajit, 5.2.5 Intersection with CSG Trees, Introduction to Implicit Surfaces, Morgan Kaufmann: 178–180, 1997 [2021-01-09], ISBN 9781558602335, (原始内容存档于2017-04-23).
- ^ van Rossen, Sander; Baranowski, Matthew, Real-time constructive solid geometry, Ansari, Marwan (编), Game Development Tools, CRC Press: 79–96, 2011 [2021-01-09], ISBN 9781439867723, (原始内容存档于2017-01-01).
- ^ Glassner, Andrew S., An Introduction to Ray Tracing, Morgan Kaufmann: 80, 1989 [2021-01-09], ISBN 9780122861604, (原始内容存档于2017-01-01).
外部链接
- GNU Triangulated Surface library (页面存档备份,存于互联网档案馆) - 具有在三角形网格上进行构造实体几何处理能力的开放源代码(LGPL)库
- Computational Geometry Algorithms Library (页面存档备份,存于互联网档案馆) - 有构造实体几何处理能力的开放源代码(LGPL,QPL)库