曲面细分
三角形增加数量 让曲面变得更加光滑
网格简化
去掉一些边或者三角形 但还是要维持互相的连接关系
网格正则化
让多变形变得更统一 提升三角形或者多变形的质量
LOOP细分:
这里的loop和循环没有任何关系
引入更多的三角形
也可以把三角形拆成更多的三角形
但这不足以让形状发生很大改变
所以说曲面细分 是两部分操作
拆分原有的三角形
调整三角形顶点的位置
对于新生成的顶点 做加权平均
对旧的顶点
n:顶点的度
u:跟度有关系的一个数(关系如图)
loop细分的结果 先细分 再调整
Catmull-Clark的细分
如果不是三角形网格 loop就无法适用了
非四边形面
奇异点:度不为4
每条边和每个面我都取中点然后连起来
经过一次细分后
会引入两个新的奇异点 总共有4个奇异点
旧和新的度分别是5和3
非四边形面全都消失了 也就是说在引入奇异点后就消失了
也就是说奇异点在第一次细分后 再也不可能增加了
如何调整这些点呢?
面上的点 边上的点 旧的点 都有不同的方式更新
曲面简化
根据不同情况 选用不同的多变形面数
但是几何的层次结构不好做
边坍缩
引入二次误差度量
希望把这个点放在某个位置上能够让二次误差度量最小
如何坍缩这些边呢?
把每条边都打上一个分数 也就是二次度量误差
选最小的那个操作
要注意坍缩一条边的时候还会影响另外一条边的二次度量误差
所以还要对这些被影响的边更新二次度量误差
所以需要一个可靠的数据结构——优先队列/堆
我们通过不断的局部最优解找全局最优解 是一种贪心
并不是就是全局最优 只能说比较接近
实际的操作
在光栅化里是怎么生成阴影呢?
我们之前所说的着色并不能解决阴影问题
所以阴影贴图/阴影映射出现了
阴影贴图仍会有走样现象
最重要的思想是什么?
如果点不在阴影里 你可以从摄像机看到 光源也可以看到
同理 如果在 那光就看不到这个点
利用这个现象就能把阴影做出来
经典的阴影贴图只能处理点光源
第一:先从光源看向场景
找到能看到的点 并且生成一幅图
不做着色 但是把深度记下来
从眼睛或者摄像机出发
再次看向这个场景
把看到的点 重现投影回光源
然后对比刚刚记录的深度 如果是相等的
就说明这个是可见的(既能被摄像机看到又能被光源看到)
这里就是反例了
为什么会出现这种情况呢?
这就是阴影贴图本身会出现的一些问题
是否相等这个概念是很难达到的 因为场景中的距离都是浮点数
都有微小差异 浮点和浮点想要判断相等是非常困难的事情
因为要扫描两遍自然开销较大
我们已知的3d游戏和视频的主流技术
硬阴影
阴影的分辨率(设置里的阴影质量)
浮点精度造成的问题
什么是硬阴影 什么是软阴影
边缘锐利/不锐利 有过渡
软阴影来自物理现象 本影/半影的过渡