Tips:如何找出几何体的解析式?

第一个技巧:我们直接找出每一个点


Constructive Solid

Min-Max Set 方法

如果我们把几何体表示为隐函数形式 f(x,y,z)0f(x,y,z)\ge 0,那么,几何体相交、异或之类的图形都可以定义出来了:

Constructive Solids w/ Function Representation

考虑两个几何体 f1(x,y,z)0,f2(x,y,z)0f_1(x,y,z)\ge 0, f_2(x,y,z)\ge 0. 则有

  1. Union 几何体交集:f=max(f1,f2)0f=\max(f_1, f_2)\ge 0
  2. Intersection 几何体并集:f=min(f1,f2)0f=\min(f_1,f_2)\ge 0
  3. Complement 补集:f=f10f=-f_1\ge 0
  4. Subtractio 差集(在 f1f_1 但不在 f2f_2 里):min(f1,f2)0\min(f_1, -f_2)\ge 0

R-Functions

定义几何体之间关系的另一个方法,support any desired continuity CmC^m

Continuity

这个 Continuity 指的是数学上的函数连续性,Graphics 语境下的函数是几何体的表达式。举个例子

  • C0C^0: 函数本身连续
  • C1C^1: 函数的一阶导也连续
  • C2C^2: 函数的一阶导、二阶导都连续
  • ……

在 Min-Max 方法里,由于计算机渲染几何体本质上是靠 sampling points 完成的,而根据 min-max 操作的特性(容易在边界处跳变),如果 sampling 精度不够,很容易造成最终渲染结构质量不够。

R-Functions

仍然考虑 G1:f1(x,y,z)0,G2:f2(x,y,z)0G_1:f_1(x,y,z)\ge 0, G_2:f_2(x,y,z)\ge 0

  1. Union: f=(f1+f2+f12+f22)(f12+f22)m20f=\Big( f_1+f_2+\sqrt{f_1^2+f_2^2} \Big)(f_1^2+f_2^2)^{\frac{m}{2}}\ge 0
  2. Intersection: f=(f1+f2f12+f22)(f12+f22)m20f=\Big( f_1+f_2-\sqrt{f_1^2+f_2^2} \Big)(f_1^2+f_2^2)^{\frac{m}{2}}\ge 0
  3. Complement: f=f10f=-f_1\ge 0
  4. Subtraction: f=(f1f2f12+f22)(f12+f22)m20f=\Big( f_1-f_2-\sqrt{f_1^2+f_2^2} \Big)(f_1^2+f_2^2)^{\frac{m}{2}}\ge 0

Blending 交界光滑

Blending

其实可以看作是普通的几何体组合,再额外加上一些项。

注:以下的 p1,p2,p3p_1,p_2,p_3 是用于控制光滑程度的

  • Union
    • max(f1,f2)+p31+(f1p1)2+(f2p2)2\max(f_1,f_2)+\frac{p_3}{1+(\frac{f_1}{p_1})^2+(\frac{f_2}{p_2})^2}