卢鹏

场景美术:新版本场景编辑流程及引擎导入规范


概述

  本文基于引擎更新而做的新编辑流程,《场景编辑流程及引擎导入规范》所述的旧流程依然可以使用,新流程与旧流程相比,主要是简化了在3ds max分层整理uv2的步骤,改进了光照烘焙的流程,节省了相当的工作量,并且可以极大的缩小AWD文件的大小,并为以后在引擎编辑器中编辑场景奠定了基础。

##系统单位设置
  单位,比例统一。打开菜单 自定义>单位设置,显示单位比例选为公制 > 米(个人建议为厘米),系统单位设置为1个单位=1米(个人建议一个单位等于一个厘米)(如图)。
1

场景编辑前单体模型准备

1. 单体模型准备,具体要求可参看《场景美术模型制作预提交规范》文档,但是还需要增加单个模型分UV2步骤。

2. 单体模型UV2如图所示:UV2必须保证在0,1的空间里,不能有重叠UV和反转UV(Select/Select Inverted Polygons|Select Overlapped Polygons可以检查),尽量撑满0,1空间,不要留空白。UV2 和UV1一样也尽量保证接缝最少,能缝合的尽量缝合,这样可以减有效少awd文件的大小和游戏运行时加载的顶点数。
1

##场景模型编辑摆放

1. 完成单体模型准备,就可以进入场景编辑这一步,再说一遍,单体模型一定要检查完整,才能导入编辑。

2. 模型尽量复用,复用的时候使用instance模式复制,这样模型可以做到引入引擎完全复用,模型可以缩放旋转移动摆放,需要注意的是,缩放旋转移动后的模型不能够再使用重置命令,否则会丢失transform信息,导致引擎无法进行复用优化,切记!!

3. 合理利用模型,疏密有致,用最少的模型做出丰富的效果,同时保证同屏的面数不要太高。

4. 以下场景为本文为摆放好的测试场景,max中显示三角面为137375,顶点数为1333357。
2

场景模型导入引擎及输出lightmap烘焙文件

1. 将整理好的场景导入引擎,设置如下:记住需要勾选导出UV2选项
3

2. 打开输出的awd文件,效果如下:场景中没有任何光影效果,需要添加光影,在这里我们将使用静态lightmap方式添加光影。
4

3. 点击引擎菜单栏【lightmap 分块】5按钮,如下图设置:lightmap尺寸为1024,每米uv2所占像素为40个,lightmap前缀名为LightMap01_(请保持良好的随时命名习惯)。点击【export】按钮,等一会儿,跳出对话框,一共使用5张lightmap。
6
7

4. 在awd所在目录会生成一个lightMapPreviewer的文件夹,以及一个meshLightMaps.dae文件和一个meshLightMaps.json文件。打开lightMapPreviewer文件夹,可以看到5张lightmap预览图,如图所示:我们发现lightmap并没有填满贴图空间,因此我们需要进一步调整参数。
8

5. 选择场景中地面模型,选择属性栏中LightMap选项卡,如图所示,将scale in lightmap值设置成0.8,这个值是用来控制模型在最终lightmap分辨率的缩放比。分别选择两个鼓楼模型,将scale in lightmap设置成1.2,然后点击【lightmap 分块】5按钮,设置如下:点击export导出,生成3张lightmap,如下图所示,空间填得比较满,因此就作为最终结果(PS:实际上最终结果是反复调试 area units 和模型的scale in lightmap参数确定的,并非一步到位,需要耐心把贴图撑满不浪费,原则上一些小物件或者远景的scale in lightmap值可以小一些,而一些角色活动范围和需要清晰投影的模型则需要把scale in lightmao值设置大一些)
9
10

6. 最后需要说的是,如果场景中有模型并不想烘焙lightmap,那么可以在Light Map 选项卡上将lightMapLayer选线取消勾选,这样这个模型就不参与导出,然后在重复3~5步骤。
11

3ds Max +vray 光照贴图烘焙流程

灯光设置及渲染设置:

1. 打开3ds max 文件,导入上一步导出的meshLightMaps.dae,如下图所示,由于collada文件无法记录3dsmax透明设置属性,需要手工修改下透明贴图设置(当然也可以通过脚本统一替换),记得将文件保存。
12

2. 先设置渲染器,打开Rendering\Render Setup(快捷键F10),在跳出来的面板上如下图所示设置好Vray渲染器
13

3. 下面将以黄昏灯光为例设置本测试场景灯光,首先关掉3ds 默认环境光,打开环境特效设置面板(Rendering\Environment…或者快捷键8),按下图所示设置。
14

4. 然后打开渲染设置面板,选择【V-Ray】选项卡,在【帧缓冲区】中勾选【启用内置帧缓冲区】:
11

5. 设置【全局开关】中的【默认灯光】为关闭状态:
12

6. 设置【图像采样器(抗锯齿)】中的【固定】并关闭抗锯齿过滤器。
13

7. 勾选【环境】选项卡中的【全局照明(GI)环境】,在这里我选择一个hdr全景图来模拟全局环境光效果,其中我们可以通过【水平旋转】参数控制太阳的方向,本文设置为183。
15

8. 打开【GI】选项卡,勾选【全局照明】的【启用全局照明(GI)】,分别设置首次引擎和二次引擎为【发光图】,【BF算法】。将【发光图】的【当前预设】设置为【中】(实际调试中可以设置更低的品质,等灯光调整好才输出高品质结果),BF算法计算全局照明为默认不改动,vray渲染设置到此完毕。
15

9. 为场景设置主光源,打开灯光选项卡,选择【Target Direct】目标直射光,如下图所示设置,调整好灯光方向。
16

10. 为场景中的几个火盆加上点光源,参数如下图所示设置:
17

11. 灯光到此设置完毕,最终渲染效果如下图所示:
18

注意:
① 对于比较大的场景,一定要在不同的关键位置渲染效果图,确认效果,避免有死黑的地方。
② 由于引擎使用的lightmap为8位png格式,灯光不是特殊情况,尽量不要过爆。

Lightmao烘焙:

1. 确认灯光渲染无误后,就可以开始lightmap的烘焙了,按【H】打开选择管理器,如图我们发现导入的场景模型名字与light map预览图名字一一对应,选择模型LightMap01_1。
19

2. 备份并替换材质:按【M】打开材质编辑器,先吸取模型材质备份,在重新给模型赋予一个默认材质。
20

3. 烘焙设置:选择该模型,按【0】打开【Render to Texture】面板,按如下图所示设置:
21

4. Lightmap格式设置,这里为了方便我们设置lightmap格式为png格式,lightmap名字与模型名字一致。
5. 完成设置后,点击【Render】按钮,等待一段时间,渲染完成得到的即为lightmap。
6. 然后选择模型,将备份材质重新赋予给模型,让后选择其他模型重复以上步骤,直到将所有lightmap烘焙完毕,然后将所有的lightmap贴图放入awd文件所在的texture文件夹。

Lighmap引擎导入及设置

1. 打开之前awd文件,点击引擎菜单栏【lightmap 分块】5按钮,在跳出的菜单上点击import,导入lightmap。
22

2. 然后如图,打开Materials 选项卡,新建一个LightmapMethod方法,任意选择一张导入的lightmap,设置如下:brightness参数可以根据需要设置,数值越大场景越亮。
23

3. 到此lightmap导入设置完成,最终效果(上图)和vray渲染效果(下图)对比如下,还是比较接近的
24

PS:

① 在场景编辑部分最需要注意的地方是模型命名,以及lightmap命名,合理的命名规范将有助于后面引擎编辑效率的提高
② 关于模型复用,主要作用是减少内存的占用以及awd文件尺寸,与旧流程相比,复制模型采用instance模式,最终导入引擎中会自动复用,并且因为uv2也复用的缘故,awd文件能大幅度的减小,相同场景旧流程awd文件大小约为630KB,新流程大小为404KB,缩小了200多KB。
③ 本文采用的是vray+3ds max烘焙流程,实际上项目组可以根据需要选择自己比较熟悉的渲染引擎进行烘焙,如mentalray,arnold渲染器等。
④ 该规范为新版本引擎场景编辑以及引擎输出基本规范。旧的流程依然有效,不过建议使用新流程。如果有疑问或者错误不足之处,请和我联系!欢迎交流!