IPenchVLive全身动捕软件

我要开发同款
black丿2022年08月03日
273阅读

作品详情

IPenchVLive该软件全部为我单人独自开发而成
IPenchVLive是一个终极的动面捕解决方案,可以解决从入门到专业的所有的动面捕需求,是我们团队目前的主力项目,其相较于市面上现有解决方案具有灵活、全面、可定制、高性能、同时支持AI驱动与真人驱动的特点。

相关技术栈:
客户端 语言:C#、C++ 开发框架:Unity+自研框架HotEngine+Odin工具 UI框架:DoozyUI 快速开发, FariyUI落地
服务端 语言:C# 开发框架: Asp.net core

IPenchVLive主要分为一下几大模块
1. 热更新框架 HotEngine
2. Mediapipe框架 源自Google 开源项目 mediapipe
3. 肢体关键点标记算法
4. 插件框架 PluginManager
5. 姿态解析算法
6. Live2d/3D模型管理器
7. 虚拟相机 源自UnityCapture项目 我进行了二次开发
8. 可视化数据调试器(开发环境专用/发布时会自动剔除)
9. 3D模型自动标准化模块
10. 变量控制映射系统
11. 控制系统
12. 面部解析算法
13. 联动模块

由于该项目模块很多,多方面都具有难度,因此这边只挑选最有代表性的几个进行讲解。

模块实现功能与技术难点
热更新框架HotEngine
此为我独自研发的一套用于Unity热更新的框架,可为Unity开发人员提供和原生几乎一致的开发体验,脚本通过HotHelper模糊搜索挂载,并提供BehaviourContainer,用于储存编辑器信息,当脚本加载后,Container会自动挂在对应的monobehaviour并将储存的数据实例化到实力上,其后便会被销毁回收。
热更新框架支持不停机逻辑热更,热更层与主工程间使用不同的程序域,在C#中程序必须以Domain为单位进行加载卸载,不同Domain间代码不互通,因此会涉及到十分复杂的跨域继承问题,跨域通讯问题。
热更新框架之余还配有大量的通用库,如对象池、单例框架、数据管理器、插件框架PluginManager。可以在多项目中通用

姿态与面部解析算法
此为我针对标记点设计的一套解析算法,由于模型本身的抖动很大,也具有不小的偏差,所以在设计解析算法时需要进行许多的纠偏。在设计时,我引入了人体关节最大可动范围到姿态解析算法中,当标记点间角度超出可动范围,则会线性插值至符合限定的范围内并大量使用了缓动插值,从而极大的提升了最终的捕捉效果。面捕算法也有类似的操作,不过面捕是选择标准化路线,通过人体五官横纵比、关键点间距等解析人的面部表情,目前已能高效解析34种表情,仍在努力提高中。

虚拟相机
主要用于支持透明推流增加设计师的创作自由度,支持有透明物件的模型。为了这样的目标,我们必须虚拟相机才行,因为抠像的方式无法支持透明通道。四处寻找最终找到了Unity上最成熟的项目UnityCapture,但该项目仍然不完美,仍有点下次,如当没有数据留推送或直接访问虚拟相机不开推流时,会输出报错界面。为了解决这样的问题,我对项目代码进行了一些改动,并将其默认推送数据改为了“黑色透明”这样便有了完美的可支持透明推流的虚拟相机。

3D模型自动标准化
不同的3D模型有不同的BlendShape,完全没有统一的标准,若是直接使用面捕数据驱动很容易就会因表情无法正确映射出现鬼畜的表情。而3D模型自动标准化模块便是将所有的模型自动处理为拥有特定表情的模型,如“下巴开”“左眼开闭”等,该模块通过将面部的对应顶点按比例实现了模型的表情的自动标准化,目前该模块只支持Vroid到处的模型,对于其它非标模型暂时还不支持,目前我还在训练关键点标记算法以将该处理器泛化。
不过对于其它暂不支持的自动处理的模型,可以使用变量控制映射系统手动进行表情的映射。
声明:本文仅代表作者观点,不代表本站立场。如果侵犯到您的合法权益,请联系我们删除侵权资源!如果遇到资源链接失效,请您通过评论或工单的方式通知管理员。未经允许,不得转载,本站所有资源文章禁止商业使用运营!
下载安装【程序员客栈】APP
实时对接需求、及时收发消息、丰富的开放项目需求、随时随地查看项目状态

评论