我经常会在外部获取一些优秀的资源进行学习,以增进自己的能力,最近涉及到一些渲染和人物动画控制的问题,正好写一篇教程,以讲述如何使用外部的优秀模型资源。
一、获取相关模型
这里我以原神的模型为例子,在哔哩哔哩旗下专业模型创作分享社区(https://www.aplaybox.com/)中可以找到原神的相关模型。
此处我以原神角色芙宁娜为例子,按照网站要求后下载相关文件后将得到以下文件,其中tex为材质文件,而pmx文件便是角色的模型文件。
二、安装必备软件(Blender)
注意,由于插件的影响,截止发稿前,请使用Blender 3.5以下版本,否则在使用相关插件时会报错,此处打开Blender官方网站(https://www.blender.org/),在历史版本中选择3.5以下版本下载并按要求安装
三、安装插件
我们这里要将pmx转为fbx格式,就需要用到一个Cats插件。Cats插件自身是开源的,我们直接从GitHub上下载(https://github.com/GiveMeAllYourCats/cats-blender-plugin) 。
按要求下载好后,打开Blender,新建一个项目后,依次点击编辑 - 偏好设置 - 插件 - 安装,选择下载好的插件,这里注意是直接安装后缀名为.zip的压缩包,请不要将其解压。
安装好后返回插件设置页,点击启用。
注意这里如果遇到报错,提示bpy.context.window_manager.addon_support = {'OFFICIAL', 'COMMUNITY', 'TESTING'} ,请打开Blender的日志窗口,寻找报错项目的文件路径,按照该路径找到名为_init_.py的文件,打开后找到第319行,将bpy.context.window_manager.addon_support = {'OFFICIAL', 'COMMUNITY', 'TESTING'} 修改为bpy.context.window_manager.addon_support = {'OFFICIAL', 'COMMUNITY'} 。
现在就可以在Blender侧边栏中看到Cat相关的插件了。
四、转换模型文件格式
点击Cat插件中的Import Model,或在顶部文件中导入pmx文件,选中刚刚在模之屋下载好的芙宁娜压缩包中的芙宁娜.pmx导入。
导入后发现,仅仅导入了白模,没有材质,这个时候需要用到Cat插件的修复材质功能,将材质修复。找到杂项 - Shadeless。
修复好之后,芙宁娜就完整的出现了!但在研究时却发现,芙宁娜的骨骼绑定没有按照Unity的标准来命名。
这个时候就需要用到Cat插件中修复骨骼的功能,这项功能能够将模型的骨骼修复为符合Unity标准的格式。找到Fix Model。
到这样我们在Blender的工作就完成了,接下来点击Cat插件中的导出,也就是Export Model,将文件导出为fbx格式的文件。
五、导入Unity
首先打开一个Unity3D项目,将刚刚导出的fbx文件和原本的tex文件夹导入到Project中,(如果你没有拷贝tex文件夹,在Unity中显示的就是白模)。
此时把模型拖入场景中,看到的效果是这样的。
上面可以看到,模型的材质效果不是卡通渲染风格,当你去定位模型的材质的时候,会发现材质是嵌在fbx文件里。
在Unity中不能对fbx文件进行编辑。
但我们可以通过将材质导出来来实现编辑的能力。选中fbx文件,在Inspector窗口中点击Materials,设置Location为Use External Materials (Legacy),然后点击Apply按钮。
此时就会发现材质球已经从fbx文件中分离出来了。
接下来,就可以对单个材质球进行修改,接下来我会展示两种不同的渲染风格,第一种是2D卡通风格,也就是游戏局外效果,而另外一种就是游戏局内效果,两者相差了光照效果。
第一种:
这里将直接使用Unity材质来实现卡通效果。将材质球的shader全部改成Unlit/Texture(也就是无光照模型,直接显示贴图纹理)。
第二种:
第一种到第二种,还缺少了光照效果才能达到和游戏实机一样的效果。因此仍然需要考虑光照效果,基于光照模型的卡通渲染,可以使用GitHub的一个项目(https://github.com/Sorumi/UnityToonShader.git),进入GitHub中,依次点击仓库中的Assets - Shaders,然后选中第一个项目将其下载到本地后导入Unity中。
接下来,将材质球的shader改为Toon/Basic/MultiSteps。
接下来,可以调整一下高光、阴影、渐变阈值、镜面、边缘等参数,这里可以默认不作调整。
在设置好后,可以使用Unity的太阳光看下效果。
六、添加动画
我将要给模型添加动画效果,由于我没有制作人形骨骼动画的技术,因此需要在网上寻找,这里我用原神角色基尼奇的待机动作作为例子。将动作Fbx文件导入Unity中。
选中动画fbx文件,在Inspector窗口中点击Rig,把Animation Type设置为Humanoid,然后点击Apply,此时点击Configure,可以看到人形动画Avatar的绑定信息。
接下来,按同样的操作将芙芙的模型也更改为Humanoid,同样点击Configure按钮,检查一下Avatar。(此处如果有问题,请检查前面修复骨骼的操作是否正确或模型是否完整)
一切顺利后,将动画文件托给模型父节点,此时Inspector页面会出现一个Animator组件,检查芙芙模型的Avatar对象是否为None,如果是,请再设置一下Avatar对象。
然后点击Unity上方的运行键就可以查看该动作了。注意,如果要让动画循环播放,需要把动画的Loop Time勾选上。