卢鹏

顶点色烘焙流程


使用顶点色和使用lightmap的优缺点

在游戏制作中,制作静态物体的光影一般有两种方法:烘焙顶点色和烘焙光照贴图(lightmap)。

下图是使用顶点色和使用lightmap效果对比(只有植物是使用的顶点色),从效果对比上来看使用了顶点色的植物光影细节要比使用lightmap稍微差一些。但是从效率上来看,使用顶点色的场景,awd模型文件大小为1088k,Vertex数量为4.4M,贴图内存占用为10.7M;而使用lightmap的场景,awd模型文件大小为901k,vertex数量为5.6M,贴图内存占用为11.4M;因此使用顶点色效率要明显优于lightmap;
1

总结下:

  • 使用顶点色优点:效率比较高,虽然增加了顶点色数据,但是由于不需要使用UV2,因此顶点数据可以减少很多,大大减少包的大小(本例减少了188K,大约15%),另外也减少了lightmap贴图,如本例,减少了一张1024*1024贴图的使用,从而减少了0.7M的贴图占用,但是缺点是光影不是很精确,在需要精确阴影的情况下不如lightmap。
  • 使用lightmap的优点:画面效果比较好,光影比较精确,如本例除植物以外的模型使用的都是lightmap,如地面光影就非常精确,如果使用顶点色几乎无法实现(除非顶点数足够密集)

在Max中使用lightmap贴图映射顶点色

  1. 在max中有两种方式烘焙顶点色,一是使用贴图映射,另外一种将灯光信息烘焙至顶点。下面先讲解第一种方法,如下图,先将diffuse贴图替换成lightmap,并将uv通道设置为2,效果如图
    3
    4
    5
  2. 选定需要烘焙顶点色的模型,添加VertexPaint命令,设置如下:
    6
    7
  3. 点击Assign,等待一段时间,lightmap的信息就被烘焙到模型顶点上了,引擎到处设置如下图,导出awd文件。
    8
  4. 打开导出的awd文件,选择模型的materail,如图:添加一个VertexColorMethod,即可应用顶点色效果。
    9
    10

在max直接烘焙灯光至顶点色

  1. 在max中烘焙灯光至顶点色,先给需要烘焙顶点色的模型加上VertexPaint命令,设置与贴图映射方式稍有不同,如下图所示:
    11

2.设置渲染器,如图,按【F10】打开渲染面板设置渲染器为默认扫描渲染器。打开高级灯光选项卡(Advanced Lighting),设置如下:
12

  1. 按【8】调出环境光面板设置如下图所示:这里贴了个hdr图做反射环境球,如果没有也可以,主要是讲环境光得设置成黑色,因为后面会设置天光作为GI光源。
    12

  2. 灯光设置:灯光的参数要基本和烘焙lightmap的参数匹配,在这里我们使用标准灯光,如果需要说着阴影,请设置成Adv.Ray Traced,场景中所用直射光和天光主要设置如下:
    13
    14

  3. 灯光设置好之后,回到渲染设置面板的【高级照明】选项卡,选择点击光能传递start按钮,等一段时间,得到光能传递结果。
    15

  4. 选择需要烘焙顶点色模型,点击vertexpaint命令中的Assign按钮,等待一段时间即可,引擎导出设置和之前一样。

PS:

  • 通过实测,在max中建议使用第一种方法,虽然需要多一步烘焙lightmap的过程,但是效果比max自带光能传递要效果要精确很多,因为lightmap可以选择更加好的渲染器渲染,此外max自带光能传递貌似在2014版本有bug,计算非常慢。

  • 本文档讲解了max中获得顶点色的方法,后面有时间会陆续补充其他3d软件和渲染器的顶点色烘焙方法。

  • 烘焙顶点色最主要的目的,是减少模型数据的大小。

  • 如果有疑问或者错误不足之处,请和TA组联系!欢迎交流,我们会及时补充纠正!