写个读书笔记,一来作为字典以后可以查,二来记录自己的理解。
并没有对每个知识点的详细解释,大部分只有主观的定性的解释。
网格部分的知识有以下几点:
– Mesh tessellation 网格划分?
– Mesh simplification 网格简化
– Subdivision 网格细化
–Mesh parameterization: Seam computation 网格参数化
网格的意义:
- 一个3D模型的统一表达形式
- 精度和速度的权衡
网格的划分
将一个多变形分割为方便表示的面(一般为三角型)
切耳法ear clipping : 2D下的切耳法:连续的三个顶点v1,v2,v3, 如果v1和v3之间的连线没有和其他边相交,那么v1,v2,v3组成一个三角面。 重复以上得到用多个三角填充的多边形。
网格简化
简化网格,提升效率。 去除多余的面(有的共平面的面 可以合并到一块)。
LOD: levels of detail,用来表示 在不同需求下采取不同的简化等级。
2D manifold (2D流型):每两个三角都只共享一条边的拓扑结构。
简化方法:
• decimation:去除顶点,重新计算模型
• vertex merging:将两个顶点合并,计算新顶点的位置,将与原顶点连接的点 重新连接到新顶点。
简化cagtegory:
- 静态简化:提前把不同LOD等级的模型计算好,渲染的时候直接拿来用。
- 动态简化:动态的计算模型的顶点,细节。
- 随视点简化
decimation和vertex merging算法细节
网格细分
网格细分分为两个阶段:一、refinement phase, 创建新顶点,并连接成为新的三角面。二、smoothing phase, 给所有顶点计算新的位置。
loop subdivision:
一个三角面分为四个新的三角面。
√3 subdivision:
一个三角面分为三个新的三角面。