GAMES301课程笔记14-参数化在产业中的应用1
这个系列是GAMES301-曲面参数化(GAMES 301: Surface Parameterization)的同步课程笔记。课程内容涉及曲面参数化的基本理论与问题描述、面向离散网格的参数化、基于基函数表示的连续参数化、共形参数化、曲面参数化的应用等。本节课主要介绍参数化在相关产业中的应用。
曲面参数化在几何处理中的应用
曲面参数化是几何处理的重要研究内容。我们希望能够把三维空间中的曲面展开到二维平面上,而且这种展开需要能够保持原始曲面的各种性质并且有比较小的几何扭曲。

许多其它的几何处理任务都可以把参数化的结果作为基础,在二维平面上进行处理往往要比直接处理三维空间中的几何对象要容易。

本门课程详细介绍了参数化在Atlas生成、艺术设计、网格生成、几何形变、锥奇异点参数化、曲面对应、以及高阶多项式映射等领域的应用,相关内容可以参考前面的课程笔记。

曲面参数化在产业中的应用
在几何处理之外,参数化在很多其它的领域也都有丰富的应用。以游戏行业为例,如今的3D游戏都依赖于参数化技术的广泛应用。

对三维模型进行渲染时需要获取模型上每个顶点的颜色、纹理、材质等,此时需要把曲面上的这些信息存储到一张二维纹理图像上,称为UV图。显然这样的过程需要使用参数化技术将曲面映射到平面上。


产业实践:游戏工业中的3D建模
游戏工业中的三维建模工序
在现代游戏工业中三维模型的建模过程一般可以分为造型、材质、光照和优化等四个步骤。

造型
造型的工序可以分为粗模、高模和低模三步。美术在设计造型时会由粗到细逐渐建立精细的三维模型,而第一步是得到一个粗模。获得粗模有很多途径,比如说可以从已有的模型库来寻找相似的标准模型并通过一些修改来得到粗模。

除此之外也可以使用物理仿真或是利用三维重建来获得粗模。


得到粗模后一般会通过雕刻的技术来添加细节并获得高模。此时的模型有非常多的细节,往往会具有百万级的面片数。

除了雕刻建模外也可以使用曲线建模的方式来获得高模。曲线建模的特点在于它可以得到无限的精度,不过在渲染前需要先将曲面进行三角化得到三角网格。

玩家在游戏中实际看到的模型是低模,它一般只具有几百到几万的面片数。高模到低模的过程可以理解为一种降采样。


对于一些特定的造型也可以直接使用数学模型来直接生成低模。

材质
得到几何模型后还需要为模型表面赋予材质信息,这就需要将模型表面映射到一个规范的二维区域上。



光照
除了材质信息外模型还需要存储光照信息,这一般由具体的引擎需求来决定。


优化
建模的最后一步是对这些得到的数据进行简化。很多情况下引擎并不需要渲染一个非常高精度的模型,此时可以借助LOD的思想只渲染一个低精度的模型。

参数化技术在建模流程中都有非常多的应用场景,我们大体可以把这些应用分为主应用和嵌入式应用。

主应用案例
在游戏引擎中一般会把模型的材质以及场景的光照分别记录到两张二维纹理图像上,称为1UV和2UV。

对于同一个模型材质信息往往可以进行复用,此时可以把相同的材质映射到纹理图像的同一位置上。而对光照映射来说,模型上不同位置的光照一般都是不同的,这就要求光照映射需要将模型的表面平铺到纹理图像上。

具体来说,2UV在制作时需要满足如下的一些要求。

目前游戏行业对于光照映射还没有十分完善的自动化处理方法,一般需要人工制作。

全自动2UV的制作流程包括切割展平、形变拉直、尺寸调整以及紧致装箱等几步,其中切割展平和形变拉直两步都大量运用了参数化的相关算法。

切割展平的过程可以分解为过量切割再拼装两步。



在切割展平过程中可以使用各种经典的参数化方法,实践中会把这些方法结合起来获得更好的参数化结果。










在参数化结果的基础上我们可以把UV岛拉直使得它们的边界平行于纹理图像的坐标轴,这样可以提高最终的渲染质量减少锯齿现象。





完成切割展平和形变拉直后,我们需要把参数平面上的结果紧凑地摆放在一张二维纹理图像上。需要说明的是这种问题本质上是NP完备的,实践中只能结合一些启发式的方法来实现装箱。

嵌入式应用案例
除了纹理和光照映射这样直接使用参数化技术的应用外,在游戏行业的很多业务中同样可以使用参数化来进行处理。比如说我们需要把高模上过于精细的网格进行重新布线,从而得到一个面数较低且更加整齐的新网格。


对于这样的需求可以使用无缝参数化的技术来实现。

除此之外,利用参数化技术还可以实现拓扑、蒙皮以及骨骼动画等信息的迁移。

甚至造型识别这样的需求也可以基于参数化来实现。

