三角形面我们可以增加或者减少,让图像更光滑细腻或者简化
或者说为了更快更好渲染,我们有时候会将三角形变化的更像正三角形。
细分:
loop细分(创造者性loop,不是翻译成循环细分)
我们找中间,
我们还要调整他的位置
新的顶点
加权平均
旧的顶点
n表示顶点的度(连接数量)图中为6
新算法:名字太长了
我们取中间点然后连接起来
奇异点变为了4,
度为3,
非四边形面全部消失了。
因为没有非四变形面了,也就是说不会再增加奇异点了
点更新方式
如果是正常点:
如果是边中心:
如果是老的点:
基本就是平均
看完曲面细分我们来看曲面简化:
在不同场景我们用不同模型其实是允许的,比如很远的场景,我们本就看不出细节,那么何必使用很精细的模型呢。
边坍缩:
很难,我们缩那些边呢
我们使用二次误差度量。
我们找一个点,使得他对每一个点的距离平方和最小。
我们给每一条边求坍缩值,然后我们就选坍缩值最小的,排序探索
但是我们探索边之后,有一些边会收到影响,所以不行,我们要更新,(优先队列),链表就完事了。更新添加。
思考我们用局部最优保证全局最优,显然是贪心思想,还是那句话,贪心可能不是最好的,但是肯定是不错的。
几何部分算是完成了
我们讲一下阴影:
主流: shadow mapping
会出现走样;
思想:如果点不在阴影里面。那也就是说我们光源也可以看到这个点,相机也可以看到,所以光源看不到的就是阴影。
shadow mapping只能用于点光源
逻辑:我们先从光源看,做光栅化,不着色,记录深度
第二步从眼睛出发看场景
我们一两个点为例,我们吧看到的点投影回光源,记录深度,如果深度一样也就是说这个点是可见的,(左边那个点),再看右边那个点,深度是会不一样的,也就是说点光源看不到该点(照射不到)。也就是阴影。
记录深度
实际看到的图
进行投影回点光源。
因为这个距离肯定是一个浮点数的,精度比较大小等都会很麻烦,所以我们用大小判断(如果差不多,就给加权,差距有足够大才当作有大小区别),但是指标不治本。还有我们记录的图还有分辨率问题,必须要匹配不然就会走样,往往实际情况不行。
我有一个想法,为什么我们不用贴图吧每一个视角的shadow给记录下来呢,然后把他的深度调到最低,
现在还有软阴影:
软阴影看起来很舒适:
是根据物理来的,有两块区域:
第一块区域(umbra)本影 完全看不见
第二块区域:(Penumbra)半影 可以看见一点点
(点光源是不会出现的,出现这种情况主要是因为,光源有大小)