Solid Objects, Constructive Solids
Tips:如何找出几何体的解析式?
第一个技巧:我们直接找出每一个点
Constructive Solid
Min-Max Set 方法
如果我们把几何体表示为隐函数形式 f(x,y,z)≥0,那么,几何体相交、异或之类的图形都可以定义出来了:
Constructive Solids w/ Function Representation
考虑两个几何体 f1(x,y,z)≥0,f2(x,y,z)≥0. 则有
- Union 几何体交集:f=max(f1,f2)≥0
- Intersection 几何体并集:f=min(f1,f2)≥0
- Complement 补集:f=−f1≥0
- Subtractio 差集(在 f1 但不在 f2 里):min(f1,−f2)≥0
R-Functions
定义几何体之间关系的另一个方法,support any desired continuity Cm
Continuity
这个 Continuity 指的是数学上的函数连续性,Graphics 语境下的函数是几何体的表达式。举个例子
- C0: 函数本身连续
- C1: 函数的一阶导也连续
- C2: 函数的一阶导、二阶导都连续
- ……
在 Min-Max 方法里,由于计算机渲染几何体本质上是靠 sampling points 完成的,而根据 min-max 操作的特性(容易在边界处跳变),如果 sampling 精度不够,很容易造成最终渲染结构质量不够。
仍然考虑 G1:f1(x,y,z)≥0,G2:f2(x,y,z)≥0
- Union: f=(f1+f2+f12+f22)(f12+f22)2m≥0
- Intersection: f=(f1+f2−f12+f22)(f12+f22)2m≥0
- Complement: f=−f1≥0
- Subtraction: f=(f1−f2−f12+f22)(f12+f22)2m≥0
Blending 交界光滑
其实可以看作是普通的几何体组合,再额外加上一些项。
注:以下的 p1,p2,p3 是用于控制光滑程度的
- Union
- max(f1,f2)+1+(p1f1)2+(p2f2)2p3