GAMES101-现代计算机图形学学习笔记(12)
Lecture 12 Geometry 3
原课程视频链接以及官网
b站视频链接: link.
课程官网链接: link.
几何
这一节的几何部分主要集中在网格的相关处理上,这里主要分为三个部分展开,分别是网格细分、网格简化、网格正则化
网格细分
在计算机图形学中,网格细分指的是给定已知粗糙表面(由网格构成),通过某种方法生成光滑的表面。为什么需要细分?因为对于简单模型来说,当纹理的频率高于模型的面数时,如果直接使用高分辨率的纹理会导致失真(纹理出现拉扯的情况),这时就需要更加精细的模型,由此引入了网格细分。
网格细分本质上往模型引入更多的三角形,它是递归的,它通过一定的细分方案重新对原有网格进行划分,生成更多的面和边来让表面变得光滑。同时,它还会根据附近旧顶点的位置计算网格中新顶点的位置,在某些细分方案中,旧顶点的位置也可能会改变。
课程介绍的细分方案主要分为两类:Loop Subdivision 和 Catmull-Clark Subdivision
Loop Subdivision
这是一种针对三角形网格进行细分的方案,主要步骤分为两步:①添加顶点 ②更新顶点
-
添加顶点
对于每个三角形网格,分别在每条边的中点上添加顶点,此时会把该网格分成四个三角形。将添加的顶点看坐新的顶点,原来的顶点看作旧的顶点,这两种顶点分别用不同的更新方案对位置进行更新。
-
更新顶点
①新的顶点:
如图所示,考虑一般情况,假设新的顶点为白点,那么它一定被两个三角形所共享,分别找到这两个三角形。设和白点同边的顶点为 A ,B;不同边的顶点为 C,D;那么新的点(白点)的更新方案为:
3 / 8 ∗ ( A + B ) + 1 / 8 ∗ ( C + D ) 3 / 8^{*}(A+B)+1 / 8^{*}(C+D) 3/8∗(A+B)