最近在学习 UE 相关的使用,正好看到一篇文章讲解用 Control Rig 实现简单捏脸功能,这种小而美的完整案例挺适合来练手的,涉及到了 UI、蓝图、动画、骨骼等方面,值得推荐一下。
从这个小功能出发,在学习其他内容时如果有个简单案例可以将一系列功能点都串起来,那么往往会起到事半功倍的效果。
正好我也实现了一个简单捏脸效果,视频号里分享一下:
欢迎大家关注我的视频号,后续考虑更多地以视频形式来展示内容。
接下来就是这个捏脸功能的实现逻辑了。底层的实现很复杂,很多都是由 UE 虚幻引擎来提供的,但是理论上的实现很简单,体现在个人上更多的是操作经验。
UE 在导入人物模型时会带有一个骨架,如下图所示。人物的行动就是由一根根骨骼的变化来实现的,而面部的捏脸调节也是基于这一点。通过改变脸部相关骨骼的位置从而实现面部的变形,间接达到一个类似捏脸的效果。
如下图所示,针对眉毛、眼睛、鼻子、脸颊、嘴唇这五个部位建立了相应的控制点。
然后就是在蓝图中把骨骼和控制点的变换进行关联,并且暴露相关的调整参数让外部进行调整。
由于 UE 的很多功能都是由蓝图来实现的,也不太好贴代码,就只能贴个蓝图的连接了,比拼一下谁的蓝图连线方式更优雅~~
完成了骨骼和控制点的绑定之后,就可以在动画蓝图中设置人物的姿势是由 Control Rig 调整后的姿势(哪怕就是调整了个脸部)。
在动画蓝图中增加了几个变量去调节 Control Rig 中控制点的范围,这几个变量的值是由 UI 界面中的滑竿来调节的,并且在动画每次更新时都会更新这些值。
这里用代码来实现了 UE 中的一个子系统 FaceEditSubsystem ,主要功能就是用来存储数据的值,并且它可以在动画蓝图和 UI 蓝图中访问到,这一点很重要,否则这两个蓝图无法建立数据上的关联了。
总结一下整体的实现就如上面所说,UE 虚幻引擎提供的功能很强大,强大到只要熟练一点使用就可以实现一点小功能了,而这些功能的实现都可以不需要一行行代码的。
那么问题来了,在这种情况下,程序员学习 UE 怎样才能算是有自己的独特竞争力呢?莫非要比拼对 UE 软件的使用熟练度吗?那反而还失去了程序员的编码能力,恐怕还是要深入其源码,研究更多的底层功能实现。
最后欢迎大家加入 音视频开发进阶 知识星球 ,这里有知识干货、编程答疑、开发教程,还有很多精彩分享。
更多内容可以在星球菜单中找到,随着时间推移,干货也会越来越多!!!
给出 10元 优惠券,涨价在即,目前还是白菜价,基本上提几个问题就回本,投资自己就是最好的投资!!!
加我微信 ezglumes ,拉你进技术交流群
推荐阅读:
音视频开发工作经验分享 || 视频版
OpenGL ES 学习资源分享
开通专辑 | 细数那些年写过的技术文章专辑
Android NDK 免费视频在线学习!!!
你想要的音视频开发资料库来了
推荐几个堪称教科书级别的 Android 音视频入门项目
觉得不错,点个在看呗~