● 背黑锅也是一门技术活
标准的几何流程是一个比较复杂的数学转换过程,既然霍金说加一个方程就会让读者减半,那我就掠过那些恼人的蝌蚪文和教科书式的说教,改用群众们喜闻乐见且通俗易懂的普通汉语来进行过程的描述吧。请相信我,我一定会让你明白发生了什么的。
霍金的话我觉得很有道理
一个完整的几何过程是以CPU泵送顶点信息为起点的。3D图形程序开始运行之后,最先忙活起来的是CPU,它会根据程序的需要生成构成模型的所有顶点,然后略带怨气的将这些顶点的坐标发给GPU,在几何单元接收到顶点坐标之后,将香草从方程世界解救出来的作战任务就正式开始了。
首先是“描点”,几何单元会按照我们看得见的位置,也就是屏幕的位置为视线的起点,以此出发来设置一个可视空间,构成香草柔美外形的所有顶点都会被撒在这片空间之中。由于CPU发送过来的关于这些点的信息只不过是他们在空间中所在位置的坐标,因此几何过程的第一步动作,也就是把这些点按照坐标要求摆放出来的过程,就成了沟通数学和人类世界的重要桥梁。
在顶点被摆放妥当之后,setup单元接下来要做的事情就是连接。按照正确的规则将顶点连接起来之后,物体的外形也就被确定下来了,这样,我们的香草就有了实在的外形“骨骼”。当你抬头仰望星空时,你看到的永远都只是一颗一颗的星星,只有把它们连起来,星座才会出现,setup输出三角形的目的也在于此。
完成多边形的构成之后,我们就来到了整个步骤的灵魂——顶点的操作了。我们前面说过了,香草面部表情的细节,比如说挑逗的眉毛,微微微翘起的眼角,或者下垂的双颊以及撅起的小嘴,为每一帧画面的不同表情乃至不同外形去规定以及生成一套新的模型显然是非常不划算的事情。以上这些要求其实都可以通过对对应位置的顶点进行操作,“扯动”多边形形状来完成。因此程序员会事先创造出香草的表情,然后通过方程规定好这些表情中特定顶点的位置,而几何单元所要做的,就是在保证其他绝大部分顶点和模型位置不变的前提下,根据方程的规定将这些顶点操作到合适的位置,这不仅可以大幅降低CPU生成顶点的次数和数量,更可以非常灵活自由的实现程序员想要的外形效果。因此顶点操作这一步,可以说是整个背黑锅过程最根本的核心。
进行完上述诸多操作,我们的香草就有了外形,接下来要做的就是蒙皮和打光,Vertex Texture和Vertex Lighting会按照程序要求提前访问材质库,并为整个模型附上最基本的带光照信息的底层纹理,就好像把框架模型变成一座石膏雕像一样。到这一步,常规的几何过程基本上就算完成了。香草就此从满是方程和符号的抽象的世界里具体化出来了。