简介
编辑构造实体几何是一种用于实体建模的技术。 构造实体几许允许建模者通过使用布尔运算符组合更简单的对象来创建复杂的表面或对象,通过组合一些原始对象可能生成视觉上复杂的对象。
在 3D 计算机图形学和 CAD 中,CSG 通常用于程序建模。 CSG 也可以在多边形网格上执行,并且可能是也可能不是程序和/或参数化的。
将 CSG 与多边形网格建模和框建模进行对比。
工作原理
编辑用于表示的最简单的实体对象称为几何图元。 通常它们是简单形状的物体:长方体、圆柱体、棱柱体、棱锥体、球体、圆锥体。 允许的原语集受每个软件包的限制。 一些软件包允许在弯曲物体上使用 CSG,而其他软件包则不允许。
一个对象是通过允许的操作从基元构造的,这些操作通常是对集合的布尔操作:联合、交集和差异,以及这些集合的几何变换。
原语通常可以通过接受一定数量参数的过程来描述; 例如,球体可以用其中心点的坐标和半径值来描述。 这些基元可以使用如下操作组合成复合对象:
- UnionMerger 将两个对象合并为一个对象
- 一个对象与另一个对象的差减法
- 两个对象共有的IntersectionPortion
结合这些基本操作,可以从简单的对象开始构建高度复杂的对象。
光线追踪
光线追踪时,建设性实体几何的渲染特别简单。 光线追踪器将一条光线与正在操作的两个图元相交,将运算符应用于沿一维光线的相交间隔,然后将沿光线距离相机最近的点作为结果。
应用
编辑构建实体几何具有许多实际用途。 它用于需要简单几何对象或数学精度很重要的情况。几乎所有工程 CAD 软件包都使用 CSG(它可能用于表示工具切割和零件必须装配在一起的特征)。
Quake 引擎和 Unreal 引擎都使用这个系统,Hammer(原生 Source 引擎关卡编辑器)和 Torque Game Engine/Torque Game Engine Advanced 也是如此。 CSG 很受欢迎,因为建模者可以使用一组相对简单的对象来创建非常复杂的几何体。 当 CSG 是程序化或参数化时,用户可以通过更改对象的位置或更改用于组合这些对象的布尔运算来修改其复杂的几何形状。
CSG 的优点之一是如果所有的原始形状都是水密的,它可以很容易地确保对象是实体的或水密的。 这对于某些制造或工程计算应用程序可能很重要。 相比之下,当基于边界表示创建几何时,需要额外的拓扑数据,或者必须执行一致性检查以确保给定的边界描述指定了有效的实体对象。
CSG 形状的一个方便属性是很容易将任意点分类为在 CSG 创建的形状内部或外部。 该点简单地根据所有底层基元进行分类,并对生成的布尔表达式进行求值。 对于某些应用程序(例如光线追踪)来说,这是一个理想的质量。
从网格到CSG的转换
编辑由于 CSG 模型通过构造参数化,当涉及到以制造定制模型为目标的应用时,它们通常优于普通网格。 对于此类应用程序,将现有网格转换为 CSG 树可能很有趣。 这种自动将网格转换为 CSG 树的问题称为逆 CSG。
生成的 CSG 树需要在 3D 空间中占据与输入网格相同的体积,同时具有最少数量的节点。 首选简单的解决方案,以确保生成的模型易于编辑。解决这个问题是一项挑战,因为必须探索的搜索空间很大。 它结合了原始形状的维度和大小等连续参数,以及用于构建最终 CSG 树的布尔运算符等离散参数。
演绎法通过建立一组描述几何内部的半空间来解决这个问题。 这些半空间用于描述可以组合以获得最终模型的图元。
另一种方法将原始形状的检测与定义最终模型的 CSG 树的计算分离。 这种方法利用现代程序综合工具的能力来找到具有最小复杂性的 CSG 树。
内容由匿名用户提供,本内容不代表vibaike.com立场,内容投诉举报请联系vibaike.com客服。如若转载,请注明出处:https://vibaike.com/242155/