Geometry
Implicit & Explicity Geometry
是两种几何表述方法Implicit Geometry: Points satisfy specified reationship. x^2+y^2+Z^2=1
对于判断点在不在面上较为简单,但举出所有在免上的点,绘制出几何形体比较难
Explicit Geometry: 直接给出点的坐标或参数映射的方式给出点的坐标f: R2–>>R3 ,(u,v)–>>(x,y,z)
有点和缺点与Implicit Geometry相反
Constructive Solid Geometry(Implicit)
利用布尔运算合并implicit geometry,根据简单几何形成复杂几何
Distance Functions(Implicit)
根据距离函数而不是布尔运算进行blend
Distance functions:定义一个点到目标物体上任意点的最小距离
Point cloud(Explicit)
Polygon Mesh(Explicit)
Curves
1.Bezier Curve
de Casteljau Algorithm:生成贝塞尔曲线
用数学语言表述:Bernstein polynomial作为系数对给定点进行加权
仿射变换下只需要将给定点做仿射变换再生成贝塞尔曲线即可
贝塞尔曲线在控制点的凸包内
Piecewaise Bezier Curves,如何将贝塞尔曲线连续?
C0连续,端点相连
C1连续,端点相连,导数相同
2.B-splines
- short for base splines
3.Bezier Surface
4 X 4 = 16个点
水平方向每四个点获取四条曲线,竖直方向根据曲线上四个点再拟合贝塞尔曲线
4.subdivision
细分图形,不仅是增加三角形的数目,还需要使物体看上去更圆滑
Loop subdivision:对不同的顶点应用不同的变换
new point = 1/8X(old points in the line) + 3/8 X (old points vertical perpendicular to the line)
old point = (1- n X u) X orginal_position + u*neighbor_position_sum
Catmull-Clark Subdivision(General Mesh)
物体可能不是用三角形描述的
首先定义quad face与Non-quad face,还有Extraordinary vertex(奇异点,度不为4)
取每条边的中点,取每个面的中点
第一次细分之后增加了非四边形面个奇异点个数,之后不会再增加奇异点个数
如何调整:将点分为三类:在平面中心的点、边中心的点、原始的顶点
Mesh Simplification
Goal:reduce number of mesh elements while maintaining the overall shape
做法:Collapsing An Edge(边坍缩),将一条边的两个顶点变成一个点
但是哪些边需要进行坍缩?使用Quadric Error Metrics(二次误差度量),将某个点放在某个位置上使其到其原本连接各个面的距离最小。
如何选边?先为每个边用二次误差度量打个分,每次选最小的边,更新受影响的边(建议使用堆结构)