目录
Mesh Operations: Geometry Processing
细分 Mesh Subdivision (upsampling)
Loop Subdivision
用于三角形网格的细分。先创造出更多三角形(点),再更改其位置。
更新新顶点的坐标:
更新原有顶点的坐标:
总结:先细分再调整。
Catmull-Clark Subdivision
对于通常的mesh,网格包含三角形,四边形。
奇异点是度不为4的点。(该点连接的线的个数即为度)
细分步骤:在每个面添加顶点,每条边的中间添加点,连接所有的新点。
经过一次细分后,有四个奇异点,第一次细分后非四边形面都会变成奇异点。之后细分奇异点就不会增加了。
对新的点更新:
对旧的点更新:
细分结果
网格简化 Mesh Simplification (downsampling)
网格简化的目的是减面片的数量,但要维持基本的形状。
不同的应用场景下要选用不同的三角形,面片数量和以下两方面有关:
- mipmap,是在图像层次结构上的。
- 几何的层次结构
边坍缩
使用二次误差度量来求最优解。
坍缩一条边后其他的边的二次度量误差会改变,因此使用优先队列和堆来完成。
简化结果
网格正则化 Mesh Regularization (same #triangles)
Shadow Map
在光栅化中使用shadow map来绘制影子。
点不在阴影里,则该点能被相机看到,也能被光源看到。
硬阴影:非1即0。
实现
-
从光源处进行渲染,得到深度图
-
从视点处进行渲染。
从视点处发出光线到着色点,再从着色点发出光线到光源,若从着色点到光源的深度与前一步的深度相同,则说明该点不是阴影。
举例
由于深度值是浮点数,在比较深度时不好判断相等,有些数值十分接近。
可以引入一个偏差,距离加上这个偏差再进行比较。
shadow map(仍是3D游戏的主流技术)的缺点:
-
相当于渲染两遍
-
数值精度导致的问题
-
得到的是硬阴影
-
map的分辨率,过低会生成锯齿