风蚀之月

UE4的VRM插件试用

11 Apr 2020 UE4 VRM

最近试用了下UE4的VRM插件。

感觉上VRoid这边的社区不是很活跃的样子,最近blender用的VRM插件也因为某些原因[停止更新]了。

不过VRoid其实是基于Gltf的,在使用上还是大致不会有很大的问题。

插件地址:https://github.com/ruyo/VRM4U。由于官方有提供很多效果截图,这边就不贴图了~

VRM4U的功能主要包括三个方面:MToon支持、动画辅助和移动开发用的骨骼缩减。

主要感兴趣的还是动画风格渲染的MToon的实现,VRM4U这边的目标是使用非侵入式的方式来达到类似于VRoid官方MToon的效果。

光照

作为基础的MToon材质是基于UnLit的,为了防止ToneMap和Exposure的影响,在材质中进行了相应的抵消操作。

image

对于UnLit的材质,为了模拟阴影效果,使用一个SceneCapture来对周围的阴影进行捕捉,并通过RenderTarget重新应用在了模型上。

光照效果方面,则直接使用自定义Shader节点来获取光照的信息并重新赋予到材质上。SkyLight有GetSkySHDiffuseSimple, GetSkySHDiffuse;DirectionalLight则使用DirectionalLightColor并通过光源于发现的关系来决定阴影的构造。

天空光源和AO也同样采用了类似的方式进行处理,基础的材质节点非常的复杂,如果之后有需要相关效果的,可以详细的看看具体的实现方式。

描边

描边特效方面,由于要兼容前向渲染,所以VRM没有采用PostProcess的方式。而是使用了模型复制的方式。

通过复制一个模型,并将其反转,同时在材质上使用Normal和WorldOffset来进行了某种程度的扩展。

image

反转的模型与原始模型的同步使用的是SetMasterPoseComponent,保证其能与动画同步。