Skip to content

Lecture 12: Geometry 3

Subdivision

Subdivision 是一种通过迭代细分多边形网格来生成更平滑曲面的技术。

Loop Subdivision

如Loop细分,它通过插入新顶点并重新计算位置来细化网格,从而产生更光滑的外观。将一个三角形细分为四个更小的三角形,然后对新顶点分配位置。

对于四边形ABCD,包含着两个三角形ABC和ABD,细分后边AB上的新顶点的位置为:

\[ P_{AB} = \frac{3}{8}(A + B) + \frac{1}{8}(C + D) \]

而对于旧顶点,所使用的公式为:

\[ P_{old}^{'} = (1 - n \cdot u) P_{old} + u \sum_{i=1}^{n} P_i \]

其中\(n\)是相邻顶点的数量,\(u\)的计算公式为:

\[ u = \frac{3}{8n} \quad \text{if } n > 3 \quad \text{, otherwise if n = 3 , } u = \frac{3}{16} \]

Catmull-Clark Subdivision

还有一种常见的细分方法是Catmull-Clark细分,主要用于四边形网格。它通过插入面点、边点和重新计算顶点位置来生成更平滑的曲面。

Non-quad face是指非四边形的面,Extraordinary vertex是指度不为4的顶点。

具体的细分步骤如下:取面内的一个点作为面点,取边中点作为边点,重新计算顶点位置,然后连接这些点形成新的面。第一次执行这个步骤会增加若干个奇异点,增加数量等于Non-quad face的数量,之后这个数不会再增加。

Simplification

Simplification 是通过减少多边形网格中的顶点和面数来简化模型的技术。

Collapse Edge

Collapse Edge 是一种常见的简化方法,通过将边的两个端点合并为一个点来减少网格的复杂度。选择一条边,然后将其两个端点合并为一个新顶点,更新相应的面。

Quadric Error Metrics

Quadric Error Metrics (QEM) 是一种用于评估顶点合并误差的技术。它通过计算每个顶点的二次误差矩阵来量化合并操作的影响,从而选择最优的边进行合并。

Shadow Mapping

不在影子里而又能看到的点一定是既能被光源看到又能被摄像机看到的点。

Shadow Mapping使用了这个原理,第一步是从光源的视角渲染场景,生成深度图(Depth Map),记录每个像素到光源的距离。第二步是从摄像机的视角渲染场景,对于每个像素,计算其在光源视角下的位置,并与深度图中的值进行比较。如果当前像素的深度大于深度图中的值,则该像素处于阴影中,否则处于光照中。

对点光源使用这种方法产生的是硬阴影(Hard Shadow),阴影边界清晰。如果需要软阴影(Soft Shadow),可以使用非点光源(如面积光源)来模拟更真实的光照效果,如月食的阴影,有半影和本影。