1.渲染Render
*把3D变为2D的过程,指用软件从模型生成图像的过程。模型是用严格定义的语言或者数据结构对于三维物体的描述,它包括几何、视点、纹理以及照明信息。
*首先定位摄像机的位置(四个默认的摄像机:顶视图、正视图、侧视图和透视图),我们大多数时候渲染的是透视图,透视图的摄像机基本遵循真实摄像机的原理。
*然后处理空间感:处理遮挡关系、计算光源、计算阴影、根据物体的材质来计算物体表面
2.着色Shade:
*是一种显示方案,和三维模型的线框图一样起到辅助观察模型的作用。很明显,着色模式比线框模式更容易让我们理解模型的结构。它提供了非常直观、实时的表面基本着色效果,根据硬件的能力,还能显示出纹理贴图、光源影响甚至阴影效果,但这一切都是粗糙的。
3.光栅化Rasterization:
*计算机的屏幕是二维的平面坐标,以左上角为原点,x轴向右增加,y轴向下增加
*三维物体在二维屏幕上的显示,大致分为以下几步:(1)坐标变换(transform):将场景中的三维坐标转换为二维坐标(2)颜色计算(shade):计算每个顶点的颜色(那么一个三角形的颜色怎么规定呢?*三个顶点颜色取平均值*取某一个顶点的颜色*三个顶点颜色的渐变),通过UV贴图的颜色,结合光照,透明度等,计算出模型每个顶点的具体颜色(R, G, B)。(3)光栅化(rasterization):假定屏幕分辨率为1920×1080,在二维屏幕渲染(光栅化)时,内存中frame buffer只保存着1920×1080个屏幕点的颜色,然后一个一个的画到屏幕上。(X, Y, Z, alpha等等属性要在另外的地方存储。)
*光栅化,就是计算出1920×1080这么长的RGB数组中,每一个RGB的值:
- 读取模型的顶点,3个3个的读,因为要画三角形。
- 将3个顶点两两连成线,形成三角形。
- 计算屏幕像素点在三角形内还是三角形外。在三角形内部的,就上色(颜色是之前算出来的),在三角形外部的,就不上色。
(注意:如果一个三角形挡在另一个三角形前面,我们应该只画前面的三角形。所以这里还需要比较一下正准备上色的这个像素点是不是已经上过色了。如果这个像素点已经上过色了,并且它是被Z=1的顶点上的色,而我们正准备上色的这个顶点的Z=2(说明这个顶点被挡在了后面),那么这个顶点就不应该上色,因为它是被挡住的点。)
4.体素化Voxelization:
*体素化能够对模型进行简化,得到均匀的网格,输入是三角面片,输出体素化格子。
*体素化无非是对模型所在空间进行划分成网格,并决定网格是否有被模型覆盖。