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

本文由 简悦 SimpRead 转码, 原文地址 www.bilibili.com

作者:xL2P

前言 在使用 HDRP(高清渲染管线)后,Unity 的画面会提升到一个新的级别。

前言

在使用 HDRP(高清渲染管线)后,Unity 的画面会提升到一个新的级别。我们使用 HDRP 来制作 MMD 会给以往的效果更加出色。这次共同研究在使用 HDRP 时 MMD 的制作流程。

事前准备

这次我们不使用 MMD4Mecanim 来导入模型,我们用另一种方法来替代 MMD4Mecanim。MMD4Mecanim 有时导入动作,可能会使面部表情缺失,所以我们这次选择 Blender。导入 Blender 时我们需要先安装一款叫做 MMD Tools 的插件,这款插件导入模型的时候支持模型的贴图,骨骼,刚体,动作,非常全面,制作视频所需要的所有元素都支持。下载地址:http://github.com/sugiany/blender_mmd_tools

mmd_tools 的安装

设置语言在左上角的 file > User preference,然后点击右上角的 system,拖拽滚动条,到下面,勾选 Internatonal fonts,然后把其他几上按钮点上。最后保存用户设置。

这样之后,语言切换到了中文显示。接下来是插件的安装。

首先解压插件压缩包。解压之后会得到几个文件。把其中的 mmd_tools 文件夹剪切,移动到 blender 目录的插件目录,路径是 blener-2.78-scrpts-addon。其中的数字部分根据自己安装的版本灵活应变。Blender Foundation > Blender > 2.78 >scripts > addons,把刚才那个目录粘贴到这里。

然后,还要在 blender 里激活插件才能使用。同样是在用户设置面板,文件用户设置中,点击插件,在左边搜索栏里输入 mmd,点击小三角,展开信息显示。

点击方框,给它打上勾。最后保存用户设置启动插件。

具体操作

导入模型

我们已经将插件准备好。现在可以开始导入模型。

导入 PMX 文件

选择 File>Import>MikuMikuDance Model,找到. pmd 或. pmx 模型文件,将其导入 Blender 中。

工具条也可以导入模型

或者在左边可以看到插件工具条。其中的 Import Model 可以导入模型。找到模型文件导入,点击 Import Model file。

点击 GLSL

这之后就开始模型,按 N 键打开信息,最下面有个 GLSL,点击后可以显示角色的贴图。

点击 Build

点击模型,再点击左边工具栏中 Rigbody 的 Bulid,点击生成刚体。添加成功后人物身上会出现很多虚线,没有刚体人物的头发就会出现一些奇怪的行为。

现在可以导入动作,首先要选中物骨骼,在右边属性栏找到 MMD Display,勾选骨骼显示,人物身上会出现很多骨骼类的物体。

之后导入动作,在左边的工具栏找到导入导出,点击下面的 Import Motion,找到 VMD 后缀的动作文件,点击 Import VMD file to MMD Model。

导入动作文件

也可以在文件 > 导入 > MikuMikuDance Motion 导入动作文件。

时间轴出现关键帧

导入成功后就能在时间轴上看到很多黄色竖线。这时人物已经可以被骨骼带动,但是头发和衣服不会跟随人物。这时还需要结算刚体碰撞。

在右边属性窗口点击图标切换到场景分页,找到 Rigid Body Cache(刚体缓存)扩展栏,打开标签,并点击 Bake All Dynamics(烘焙所有动力学)。这需要耐心等待,在导入动作和烘焙刚体之前不要做多余的操作,那样可能导致模型动作异常或者衣服头发姿态的异常。

额外提示**(下面步骤是应用在 Blender 中的内容,因为我们主要学习 Untiy,不感兴趣的同学****可以跳过蓝字****)**

导入镜头

烘焙完成后接下来是镜头,也可以像人物那样直接导动作。

首先选中摄像机,然后在菜单里打开文件,导入 mikumikudance motion。导航到动作数据文件,然后导入。时间轴同样出现黄色竖线。

需要注意的是,Blender 导入 Unity 的相机是有问题的,所以导入镜头的步骤我们也可以省略。

渲染输出

渲染是单帧图像渲染,动画是渲染视频。分辨率就是图像分辨率,帧率一般在导入动作之后就自动调好了,帧范围同样也是。

输出设置选项,最上面一行是要输出的位置,就是最终渲染的视频存储位置,文件格式可以直接设置成视频的格式。

编码格式设置 MPEG-4,编码器 H.264,比率 1800,音频编码器:AAC。

关于声音,这里是可以直接添加声音的,blender 内置非线性编辑工具,可以添加音轨,剪辑,做转场效果,添加字幕等等。

最后按下渲染动画的按钮,等待完成即可。Blender 是一款开源免费的 3D 软件,虽然小巧但是功能强大,2.8 版本增加了 EEVEE 渲染器,可以进行实时渲染。

导出 FBX

切换到 AV-sync

我们切换到 AV-sync,再播放动画看看效果。烘焙后衣服和头发的问题已经修复,模型的面部表情也保留下来。我们现在导出 FBX 文件。我们在 3D 界面按 A 键。或者在 Outline 窗口 Select Hierachy(选中层级),选中模型文件(这里注意要将骨骼显示出来)。

必须选中整个模型的层级 导出 FBX

打开 File>Export>FBX。

里面需要更改的地方

在左下角 Export FBX 扩展栏中,我们按照上图设置。选择好输出文件位置。点击 Export FBX 按钮。导出时在输出 FBX 同时会生成 *.fbm 的文件夹,这个里面装的是贴图文件。

导入导出相机动作

这个步骤 Up 偷个懒,请移步下面方案,查看 Up 学习笔记的第四期。

Up 推荐步骤 MMDBridge 导出 abc 文件 > Maya 导出 FBX 文件  > FBX 导入 Unity 

导入导出场景

导入场景 Up 建议和模型分开进行,场景导入 Blender 和模型前面的步骤基本一致。场景不需要进行 Build 刚体和导入动作。所以导入场景后我们就可以导出 FBX 文件了。

按此设置

因为场景不需要骨骼和动画,所以我们只点选 Mesh 就可以。

在 Unity 中组装

预先设置

首先,我们要创建 HDRP 模版的项目。

创建 HDRP 项目

根据之前的经验,创建项目要先进行两项设置。第一,在 Asset 文件夹中创建高清渲染管线资源,在项目设置中图像的可编程渲染管线设置中,设置为新创建的 HDRP 资源。第二,将项目设置中 Player 的其它设置里的渲染下的颜色空间设为线性。

导入资源

我们将刚才导出好模型,场景,相机的 FBX 和音乐文件导入 Unity,可以直接将它们拖到 Assets 文件夹里面。可以看到模型拖入 Unity 后只是显示白模,没有贴图。我们将与 FBX 同时生成的 *.fbm 直接拖到 Material 文件夹里面(如果导出 FBX 文件时没有生成 fbm 文件夹,我们在 Material 文件夹里面创建一个新的文件夹(可以命名为 Model),将贴图文件夹和文件都拖到这个新建的文件夹里面)。

我们点选模型的 FBX 文件,将 Material 的 Location 从 Use Embedded Material(使用嵌入材质)切换到 Use Exteral Materials(Legacy)(使用外部材质(遗留)),点击下面 Apply 按钮应用。可以在预览窗口看到模型的贴图已经附着上。

Transform

布置场景

我们将模型拖入场景中,调整 Transform 参数。这里我们需要注意的是要让模型符合相机的移动范围,我们要灵活地设置 Scale 大小,一般以原来值的 10 倍或一半进行实验性的设置。

动画文件

我们展开 FBX 文件,可在看到带播放图标的文件,这个文件是 FBX 附带的动画文件,我们将它拖到场景中的模型上。

Controller 原来为 None,拖入动画文件变为模型名

模型的 Animator 组件下 Controller 原来为 None,拖入动画文件变为模型名。这时模型的默认动画已经修改为刚刚拖入的动画。这时我们点击播放按钮就可以看到模型动画已经设置完成了。

动画设置

Blender 一般会给动画加入几帧多余的空白帧。我们点选动画文件的检查器的 Edit(编辑)按钮,对动画进行编辑,要改变动画的帧范围可以拖动里面的刻度的滑杆。   

场景 FBX 文件只需要将材质以模型相同的处理步骤即可。    

相机 FBX 文件导入 Assets 文件夹后,将 FBX 文件拖入场景中。点击 FBX 后的小三角展开里面内容,将里面的动画文件拖到相机文件上。相机的动画一般 Transform 设为 Reset,不需要再进行调整,Up 建议我们只修改模型和场景的 Transform 参数,让角色模型和场景适配相机即可。我们再给相机增加 Audio Source 和 Audio Listener 两个组件,将音乐文件拖到 Audio Source 组件的 AudioClip 后面的空白处。有了新相机,那么原来的相机就可以禁用或者直接删除掉了。

相机的设置

我们还要给相机增加抗锯齿,点击 Anti-aliasing 后面的选项可以选择四个级别的抗锯齿。

四个级别的抗锯齿

FXAA 是轻度抗锯齿,TAA 比它稍好一些,SMAA 是越高级的抗锯齿。我们按自己需求的情况适当设置抗锯齿的级别。

材质设置

使用 HDRP 后材质和正常的情况下有很大的区别,这时我们要进材质进行修正。

材质面板

我们保持材质的 Shader 为 HDRP/Lit,有些材质的可见度现在是不正确的,我们要调整 Surface Type 的设置,Opaque 为不透明,Transparent 为透明。这时只要稍动一下,就会发现不正常的材质变正确了(各别材质会这样),而不是真得实际去改变设置。不排除升级 HDRP 材质后,原材质出现的 Bug。

下面我们再将 Material Type 设置为对应的材质,比如皮肤设为 Subsurface Scattering(次表面分散),也就是传说中的 SSS 材质,把 Transmission 的勾选去掉。其它可以选择 Standard,高亮的材质可以选择 Specular Color。材质的详细设置 Up 以后还要深入研究,我们现在先简单设置一下。

环境设置

HDRP 下环境设置与正常情况时有很大区别,需要将天空盒等效果放入单独一个 Volume 中进行设置。下面这篇有 HDRP 详细说明,感兴趣可以看看。

Volume 组件

我们在场景中创建一个空物体,命名为 Skybox。增加 Volume 组件,勾选 Is Global 框选。点击 Profile 后面的 New 按钮,新建一个 Skybox Profile 配置文件。

再点击 Add Oerride 按钮,选择 Sky 里面的其中一种。这里的天空盒和正常的天空盒大同小异,我们可以参考之前的设置。

HDRI Sky

UP 这里选择 HDRI Sky,我们可以在 Asset Store 里面搜索 HDRI Pack。可以找到下面两个免费的贴图包。

HDRI Pack

这里 Up 自已在网上搜索全景文件(jpg,hdr 都可以,但推荐 hdr),如下所示。

Panoramic (全景图)

我们将 Texture Shape 设置由 2D 切换至 Cube,点击 Apply 应用。

按此设置

设置好天空盒,再点击 Add Override 按钮,增加 Visual Environment 组件。按自已需求勾选 Type,Ambient Mode,Fog。Sky Type 可选择上面的三种天空盒。Ambient Mode 可以选择 Static(静态)和 Dynamic(动态)。

Fog Type 可以选择 Linear Fog(线性雾),Exponential Fog(指数雾)和 Volumetric Fog(体积雾)。我们还可以加入 Lighting,Shadowing,Post-processing,这些设置各位小伙伴可以实验性地调节,直到效果让我们满意为止。

这是 Up 的设置,仅供大家参考

这个不是标准,每个人对画面可能都有不同的喜好。另外还得补充一点,我们虽然使用了全景天空设置,但还是要记得将方向光对着模型的正面,用来保持更好的光照效果。还可以根据自己的需要增加灯光。我们后面再探讨灯光的设置。

设置后的效果,有点诡异的感觉

HDRP 的 Post-processing 和之前第五期的设置类似,我们可以参考 Up 的笔记回顾一下。关于 Volume 的具体设置我们后面再深入研究。

预览动画

准备工作已经完成,我们先播放看看整体效果如何。

Game 预览效果

如果你的 Game 窗口效果不明显,说明你的窗口分辨率可能比较低。我们可以调高窗口的分辨率仔细观察画面质量。

分辨率设置

我们点击 Game 下面的这个按钮(一般默认设置为 Free Aspect),我们可以点击下面的 + 号来增加新的分辨率。Up 增加的是 1920x1080 分辨率。小伙伴们可以按照自己的想法来随意设置。4k 以上也是没问题的,不过前提是你的机器得足够好,否则播放起来可能会卡成 PPT。

导出视频

如果播放没有问题了,我们下面就可以准备导出视频文件了。之前 Up 的第三期里面已经介绍过了视频的录制插件和使用方法。我们可借这个机会复习一下。

另外,Up 还要补充一点,官方的 Recorder 已经更新到 v2 版本,功能而且更加丰富。我们可以在 Asset Store 或者新版的 Package Manager 里面搜索可以找到。

Unity Recorder

它操作和以前略有不同,我们在这里简单了解一下它的视频输出。我们在 Window>General>Recorder>Recorder Window 打开它的界面窗口。

Recorder 的窗口

我们先要点击左侧 Add New Recorders 的按钮,添加一种输出类型,我们选择 Movie(影片),下面就会出现输出类型,右面对应这种类型的参数设置。

Frame Rate (帧率)下,我们选择 Playback 的 Constant,Target 里面选择 60,勾选 Cap。

我们要影片保持 60 帧的播放速度。下面 Format 我们可以选择 MP4 类型的视频,Path 选择我们的输出位置。Capture 保持 Game View,Output Resolution 我们选择 4K - 2160p,Quality 我们选择 High,勾选 Capture audio 抓取音轨。这样我们可以得到 4K 的高清高质量视频。

最后我们点击上面 START RECORDING 按钮,开始录制视频。这个录制的速度取决我们电脑的配置,分辨率越高花费的时间越长,但对于 Unity 这种实时渲染的方式,要比其它 3D 软件快得多。

新版的 Recorder 使用方法可以参考下面这篇专栏。

输出完成后我们就可以欣赏自己的作品了,成就感油然而生。小伙伴们都可以尝试一下。

当然,这个流程并不是固定的,它只是在 Up 自已有限知识范围内归纳的东西,肯定还有错误和冗余的步骤。如果哪位小伙伴有更好做法,希望您不吝赐教,指出 Up 的错误和不足。这样 Up 以后才能不断进步,进一步提高 Unity 水平,这也是我制作笔记的目的。

评论