欢迎光临散文网 会员登陆 & 注册

Games101-10 几何

2023-02-23 15:10 作者:云长梧  | 我要投稿

先把上一节纹理讲完,然后讲如何生成阴影以及近似的动态光照

第一部分

Application1 Environment lighting 环境光照图

环境贴图----犹他茶壶

环境贴图是将任何一个方向的光记录下来(假设光源无限远,只记录光照的方向信息,这种贴图被称作环境光贴图)

球面环境映射 Spherical Environment Map

球形是不可展开的曲面,所以展开的贴图顶部和底部会有变形,且中间也会被拉伸

球心为世界中心。类比地球仪展开铺平,存在纹理的拉升扭曲问题,地图上维度越高的地方越偏大,例如北南极在地图上偏小

解决方法:Cube Map

将纹理信息存储在cube上而不是球上

将环境光照信息记录在一个立方体表面上,但会需要额外判断球体某一方向上的光照是记录在立方体的哪个面上,计算量更大

凹凸贴图=高度贴图

通过凹凸贴图记录的点与基准的高度得到顶点/片元的法线方向,经过采样(近邻平均)后生成法线贴图,所以凹凸贴图约等于法线贴图

使用高度贴图和法线贴图,不可以得到真正的凹凸模型,但视觉上会让人觉得凹凸

计算法线贴图的方法:

在平面上计算法线

dp为切线

UV下的法线算法:(3D模型)

仅适用于局部坐标,需要转换到世界空间坐标,转换方式见作业3常见问题
Displacement贴图--位移贴图

位移贴图有着和凹凸贴图一样的功能,会对顶点的位移产生影响

但对模型的精度(三角面数量)要求更高,并且运算量也会随之上升

如果自行调整模型的精细度,来节省空间,可以使用曲面细分(后面马上讲)

曲面细分:DirectX有Dynamic的插值法,根据需要对模型做插值,看情况决定模型的细致程度,但只能用在Windows上

程序纹理

程序纹理指定义了空间中任意一个点的值,即三维纹理,而非真正生成了纹理的图

比如图中的球,贴上程序纹理后,砍一半,还能看到里面的值

它定义三维空间中的一个噪声函数——空间中任何一个点都有一个比例设置,算出这个点的噪声的值是多少,再通过处理噪声的值,得到预想的效果

预计算着色将环境光进行预计算处理,再附在原先纹理上做一层遮蔽,再将纹理贴到模型上

Solid Modeling &. Volume Rendering

三维渲染广泛应用于物体渲染,如核磁共振等扫描后得到的体积信息,通过这些信息进行渲染,得到结果

第二部分

几何的表达方式分为隐式几何和显式几何

隐式几何用空间中的满足一定条件的点的集合来表示面,隐式几何不会表示点的具体位置信息,而是告诉我们这些点满足的函数关系

我们很难看出隐式想表达的形状是什么,但对于判断点的位置关系(在内,在外还是在表面)会很方便(优缺点)

隐式几何应用

        代数曲面

隐式几何很难通过隐式式子推断形状

        CSG构造实体几何

模型制作软件爱用这个功能

        ※ 距离函数

对于任意一个几何,不直接描述其表面,而是描述空间中任意一点到这个表面的距离,如此一来空间中所有点都会被定义出一个距离值,把距离函数做出来,在做个belnding就可以达到融合效果

        距离函数应用:SDF

上面3个图做出简单的线性blend

SDF函数根据相对应的位置进行正负的赋值,再用blend直接相加

得到距离函数后,函数值为0的地方就是表面。类似的,水平集也用了同样的思想,在地理上类似定义是等高线,用等高线的思想确定表面位置

        分形几何

自相似,递归,很难控制形状

显式几何直接给出点的位置,或者可以进行参数映射;可以推断出显式想表达的形状,然而想要判断内外时,显式的表达就很难进行表示

例如有的二维图片直接给出对应二维模型的坐标,而二维转换为三维则需要参数映射
推断式子表达的形状时,可以不断任意取uv的值代入式子得到


Games101-10 几何的评论 (共 条)

分享到微博请遵守国家法律