MMD联动Unity学习笔记 Vol.36 使用HDRP时MMD的制作流程改

前言
我们在第16期已经介绍了UP本身总结的HDRP下制作MMD的简要流程。在学习新知识和对过去经验的总结,UP将最近在HDRP制作MMD的改进流程在这期笔记分享出来,供各位小伙伴参考。我们这期以UP自己制作的MMD为例,我们可以同时参考下面视频



准备工作
我们这次选择制作室内的场景,我们需要的素材以HDRP练习为例,素材可以在简介里面看到。这个名为“叠&宿”的场景是一个比较长的走廊,它可以体现出场景的纵深感。我们还是将它导入Blender,在Blender里我们精简一下模型的顶点数,删除不需要的部分,我们点选导入的模型,将模式切换为编辑模式。

一般在切换为编辑模式的同时,会全选所有顶点。如果没有全选所有顶点,我们可以按A键全选。(另外,请注意确认我们是在点编辑模式下)我们在Tools下面找到Merge,点选Remove Doubles(删除重合点)。顶点由25433个降为17472个。减少顶点的数量可以有效提高我们的制作效率,也可以提高游戏的运行效率。

然后导出Mesh和材质,保存为FBX文件。这个可以参考第16期笔记,原理是一样的。

下面导入MMD角色模型,我们依照上面的方法精简顶点数量,导入动作,创建刚体,这些步骤我们同样可以参考16期笔记。正好复习一下制作的过程,最后我们还是导出FBX文件。接着我们用MikuMikuDance十周年版本导出相机的abc文件,然后导入Maya,再使用Maya导出FBX文件。我们可以参考第4期笔记。
我们将场景,模型,相机准备好之后,就可以导入Unity中。然后我们直接将角色动作和相机动作和角色控制器设置好,具体可以参考第16期笔记。
UP推荐我们在Asset文件夹里面创建一个文件夹来放置导入的这些文件(Up将其命名为Model),最好再对它们分别再创建各自类别的文件夹,比如场景文件我们可以在Asset>Model>Scene,这样来区别它和场景Unity文件。

材质的设置
金属


我们给金属一个反射的材质类型,我们给了它一个Specular Color的类型,我们将Smoothness设置为0.8,可以看到笔记本电脑就有了良好的反光效果。
玻璃

这个桌面Up采用了玻璃的材质。

我们要把Surface Type(表面类型)设置为Transparent(透明),勾选Double-Side(双面)和Alpha Clipping,将Threshold设置一个合适的值,再将Material Type设置为Specular(镜面反射)。将表面类型设置为透明是为了让材质可以显得通透,勾选双面可以渲染两个面,这样让材质看起来更加真实,勾选Alpha Clipping后可以让我们控制材质的透明度,才会出现控制透明度的Threshold这个阈值,我们将材质类型设置为镜面反射,让玻璃可以反映出周围的物体,这个反射的清晰度主要看我们Surface Inputs下面Smoothness的值,越接近1反射的越清晰,反之越模糊。另外Alpha Clipping下面的阈值控制透明与反射之间的取舍,越接近1越透明,为0时也仍然透明,但这里可以让反射效果更加明显。
皮肤
我们在很多MMD作品中都能看到晶莹剔透,白里透红的皮肤效果,之前Up也试过SSS材质,却没有得到理想的效果。经过一段时间的研究,总算有一点意思了。

HDRP中我们将材质类型设置Subsurface Scattering后,还要将Transmission勾选。

在下面Diffusion profile里面我们还需要设置一个Profile文件。

这里我们暂时理解为皮肤边缘透出的颜色,我们如果使用上面的颜色就可以看到皮肤发出诡异的边缘色。

在HDRP下我们还需要设置HDRP资源文件。这个资源文件是我们一开始创建HDRP项目时就需要修改的设置文件。

我们点选文件,在检查器里面我们找到Diffusion Profile List这个选项,如果没有的话,我们点击加号添加一个Profile,Unity已经给我们准备好了一个Profile,我们选择这个就可以了。

我们可以设置多个Profile,每个角色可以使用不同的Profile,我们可以尝试复制默认的Profile,然后修改它的颜色,再赋予角色可以看到很有趣的效果。

如果不设置资源文件的话,皮肤的边缘就会呈现出异常的绿色,是不是有点像鬼片的赶脚。其实在UP的HDRP测试的视频中就可以看到没有设置资源文件出现的问题。

另外,我们在Emission Inputs里面可以调Emission Map后面的颜色条,设置皮肤的发光色,最主要我们可以适当调节Intensity的强度,让皮肤看起来光亮耀眼,如果在后处理加上Bloom特效,就会有种电视里面化妆品的梦幻般亮眼效果了。
清漆的妙用
在练习二改视频里,时常在衣服上可以看到闪烁的亮点。这其实是设置清漆属性引发的效果。

我们将Coat Mask设置为0.2,配合后处理的Bloom特效,就可以让时常闪烁的亮点变得更加耀眼,效果非常棒。


灯光的设置
我们以练习二改为例子,这里Up事先下载一种顶灯的模型,小伙伴们可以根据自己需要下载。下载地址:3dwarehouse.sketchup.com。需要注意的是,这个网站的模型大多都是skp和dea文件,这里我们最好先将dea文件导入blender,对模型进行修改,比如删减无用的相机和部件等等,再导出FBX文件。
我们将灯光模型的FBX文件导入Unity,然后调整好大小比例,设置在场景的棚顶位置,接着设置它的材质,我们修改Emission Input下面的Emission Map后面颜色条,给HDR一个类似灯光的颜色,再增加一些强度,让它发亮。


我们在长廊场景中放置五个灯光模型,中间的间隔要平均一些。接着我们在每个灯光模型的下方各添加一盏灯,我们选择Light> Area Light(区域光),我们选择Type里面的Rectangle,Mode选择Mixed。下面Emission还可以设置色温,颜色,强度,范围,间接照射强度,Cookie我们可以设置灯光自带的阴影。区域光是不能产生阴影的,这里我们要将地板设置为反射材质,所以不要阴影,就不需要另设置灯光。

灯光设置好以后,我们将灯光模型和灯光放在一个新建的空物体里面,可以命名为Light来方便管理。另外,灯光在Unity里面十分耗费性能,我们可以在不观察灯光时将灯光暂时关闭,我们控制Light这个父层物体的显示和隐藏就可以达到开关灯光的目的。


可以看到开关灯光时Bathes和SetPass calls的差别相当大,这个Unity的性能影响是非常大的。
Up在场景保留了方向光的存在,它的作用是可以微调场景中灯光的亮度,让我们的后期处理有修改的空间。

另外在Window下面的Rendering的Light Explorer界面中,我们可方便的调节每个灯光的属性,对我们管理灯光十分有用。

烘焙和反射

我们在学习天空盒的时候稍微接触了灯光的设置。我们这里也添加一些简单的烘焙。首先我们在菜单中找到Window>Rendering>Lighting Settings,打开上面这个面板。我们可以把它拖到右侧检查器旁边的位置,因为我们可能会经常用到它。
我们先将Auto Generate的勾选去掉,这样它不会在我们修改了某项设置后就重新烘焙。Realtime Global Illumination在不使用的情况下也可以关闭,让我们提高运行的性能。

下面我们着手烘焙。我们先要搭建灯光探针,它看起来是不是很像电影里面保密场所架设的激光设备。我们在层级中创建选择Light>Light Probe Group(灯光探针组),我们可以在场景中看到四个黄色的点,连接粉色的线。

我们在上面的图可以看到,红色的框里的按钮可以编辑灯光探针,当编辑探针时,下面蓝色的按钮才可以高亮。从左到右,从上到下,它的功能分别是增加探针,选择所有,删除选择,复制选择。我们在编辑探针时,我们实际就是在操作黄色的圆点覆盖想要让光照的位置,让光照得到另人满意的效果。可以说探针的密度越大,光照的效果越好,但是也越耗费性能。这个就根据我们项目的需求来进行取舍了。

架设完探针后我们还要将场景中静态的物体设置为Static。

下面我们就可以进行烘焙了。我们点击Lighting窗口下面的Generate Lighting按钮。它就开始烘焙了。这时我们可以进行操作,但如果我们想快一点烘焙的话,建议还是先做点别的事情,这样可以更快一些。烘焙完成后,可以在场景的模型的光照贴图看到结果。
接下来我们设置地板的反射效果。

首先我们设置地板的材质,我们这里只要修改它的材质类型为Specular Color,然后调节Smoothness为0.92就可以了。Smoothness设置的越高反射越清晰,但也会出锯齿的问题。

接着我们创建灯光下的Planar Reflection Group(反射平面组),然后设置Shape为Sphere,Radius为4,Blend Distance为2。Shape为反射体的形状,球形的话它是以球的中心,这里面的物体为镜面反射材质类型的话就可以反射周围物体,半径是以它圆心的距离影响范围,Blend Distance是与周围混合的大小距离。我们可以在下面图里看到效果,也可以在Game视窗看到实际效果。


后处理
烘焙完成后,我们再添加Post Processing后处理的效果,让画面看到更有质感和美感。这里我们添加两个Volume。分别进行调节。

在第一个Volume中我们设置了Shadow,Visual Environment(可视环境),Procedural Sky(程序化天空盒)。这里UP想用天空盒来控制画面整体的色彩,而HDRP的天空盒只能在Volume里面设置,所以我们添加了程序化天空盒,我们可以控制天空和地面的颜色来控制场景中物体映射的色彩。

在第二个Volume中,我们分别设置了Bloom,Depth Of Field(景深),Exposure(曝光)。Bloom这里我们设置了脏镜头的效果,让镜头看上去沾染了色彩,十分有意思。在景深和曝光的模式上,UP选择了使用物理相机,让相机来控制景深和曝光,这样会比较自然。
Tips
当场景内物体越来越多时,Unity可能会变得比较卡顿。根据UP的经验,我们可以将场景按类型分成几个模块,每个模块用一个空物体作为父级来包裹这些个模块。当我们暂时不需要调整(或显示)某个模块时,我们可以将它的显示关闭,这样就可以让我们的创作保持最佳的效率。
在MMD场景中的个别物体原本是透明的,在转到HDRP的Lit材质后,系统不会识别它原来的材质,我们需要手动将材质设置为Transparent,它才能正确的显示出来。

视频输出
这时,我们已经把所有需要的东西都准备完成了。我们可以播放场景来查看效果,哪里有不满意的地方再进行调整。
最后,我们还是使用官方的Recorder将视频输出。这里我们不过多赘述。具体可以参考3.1期笔记内容。

这期内容就到这里了,希望能够帮助到创作MMD的小伙伴们。如果有错误或者纰漏请留言回复。
最后,Unity与你我同在。