几何学其三
几何处理
- 网格细分
- 网格精简
- 网格正规化——delaunay
网格细分
相对高度场、凹凸贴图->制造凹凸效果
Loop 细分:
1.每一个三角形分为四个
2.调整新三角形以及顶点的位置
无论是新顶点还是旧顶点,都要看该点与周围点的权重比。
Catmull-Clark 细分:
多边形面与三角形面的细分
- 对于不是四边形的面叫Non-quad face
- 所有度不是4的顶点称为奇异点
- 每个面中都添加一个点,每条边的中点也都添加一个点,所有新顶点连接所有边上的新顶点:
回答:
- 有几个非四边形面,就会多出几个奇异点,所以现在一共有2+2 = 4个
- 新多出来的奇异点的度数与原来所在面的边数相等,如这里就是3度
- 第一次细分之后所有面都会变成四边形,且往后奇异点数目不再增加
如下看:
网格简化
边坍缩(相邻顶点和为一个顶点)与二次误差度量(检查哪几个顶点要合并)
坍缩之后顶点所在位置与原来的边平面垂直距离之和就是误差,如果能在减少顶点的情况下使这个误差尽量小是最好的。
用例图只是一个2D启发图,实际的情况是这个点与其所相连的所有三角形面片平面
在实际操作过程中,我们想要达成目的大致分为两步
- 确定收缩哪条边——误差度量
- 确定收缩过后新顶点的位置——收缩
具体算法可见
【几何处理】基于二次误差测量的网格简化(二)_garland提出的二次误差测度简化算法-CSDN博客
Lod技术:利用二次误差度量的曲面简化(一) - 知乎 (zhihu.com)
关键是贪心算法对于顶点对的选择
补充:光栅化过程中的几何阴影
为实时光线追踪做铺垫
Shadow Mapping
点不在阴影里==摄像机能看到这个点,而且光源也能看到这个点
从简单的开始,首先处理点光源产生的光——这种光阴影边缘十分锐利,称作硬阴影
做法:
1.从光源角度看场景,记录看到的点,但不着色,只是对图信息做记录
2.摄像机看场景,将点都投影到光源上,这样就能分辨出看到的点是否被光源看到——实际是查看投影过后同一点对于光源的深度,如果深度相同,则说明是实际看到的。
硬阴影与软阴影
软阴影怎么来的?边缘部分看到的是部分光源,所以光照强度是一个过渡态
很遗憾点光源肯定没办法软阴影,因为实现软阴影肯定要保证光源有体积
todo:要怎样实现软阴影呢