最近在学习 UE 相关的使用,正好看到一篇文章讲解用 Control Rig 实现简单捏脸功能,这种小而美的完整案例挺适合来练手的,涉及到了 UI、蓝图、动画、骨骼等方面,值得推荐一下。
从这个小功能出发,在学习其他内容时如果有个简单案例可以将一系列功能点都串起来,那么往往会起到事半功倍的效果。
正好我也实现了一个简单捏脸效果,视频号里分享一下:
欢迎大家关注我的视频号,后续考虑更多地以视频形式来展示内容。
接下来就是这个捏脸功能的实现逻辑了。底层的实现很复杂,很多都是由 UE 虚幻引擎来提供的,但是理论上的实现很简单,体现在个人上更多的是操作经验。
UE 在导入人物模型时会带有一个骨架,如下图所示。人物的行动就是由一根根骨骼的变化来实现的,而面部的捏脸调节也是基于这一点。通过改变脸部相关骨骼的位置从而实现面部的变形,间接达到一个类似捏脸的效果。
由于不会 3D 建模,使用了 UE 提供的免费模型。图上这个就是 “虚幻争霸:心菲” 模型了。
想要调节人物的骨骼,就要用到 Control Rig 插件功能了。它是一套骨骼绑定系统,可以对人物的骨骼建立相关的控制点,然后通过调节控制点的变换,就实现对骨骼的变换啦。
如下图所示,针对眉毛、眼睛、鼻子、脸颊、嘴唇这五个部位建立了相应的控制点。
控制点的性质、颜色以及位置都是可以调节的,建立的时候要选择好相应的骨骼位置。这个地方其实挺考验审美的,因为我只是写个小功能,就没有用到很复杂的骨骼,但是很逼真的调节效果就需要反复打磨骨骼模型以及控制点了。
然后就是在蓝图中把骨骼和控制点的变换进行关联,并且暴露相关的调整参数让外部进行调整。
由于 UE 的很多功能都是由蓝图来实现的,也不太好贴代码,就只能贴个蓝图的连接了,比拼一下谁的蓝图连线方式更优雅~~
完成了骨骼和控制点的绑定之后,就可以在动画蓝图中设置人物的姿势是由 Control Rig 调整后的姿势(哪怕就是调整了个脸部)。
在动画蓝图中增加了几个变量去调节 Control Rig 中控制点的范围,这几个变量的值是由 UI 界面中的滑竿来调节的,并且在动画每次更新时都会更新这些值。
这里用代码来实现了 UE 中的一个子系统 FaceEditSubsystem ,主要功能就是用来存储数据的值,并且它可以在动画蓝图和 UI 蓝图中访问到,这一点很重要,否则这两个蓝图无法建立数据上的关联了。
接下来就是设置 UI 界面了,和用 Android Studio 操作界面差不多,拖一下控件绑定相关事件就好,具体效果就和上面视频展示的一样了。
完整了上面全部功能之后,再把相机位置调整一下对准人物的脸部,就可以看到运行效果啦。
总结一下整体的实现就如上面所说,UE 虚幻引擎提供的功能很强大,强大到只要熟练一点使用就可以实现一点小功能了,而这些功能的实现都可以不需要一行行代码的。
那么问题来了,在这种情况下,程序员学习 UE 怎样才能算是有自己的独特竞争力呢?莫非要比拼对 UE 软件的使用熟练度吗?那反而还失去了程序员的编码能力,恐怕还是要深入其源码,研究更多的底层功能实现。
原创文章,转载请注明来源: 用 UE4 虚幻引擎做个捏脸小功能~~