现在不少人开Zoom会议或者和朋友线上聚会的时候,都爱用各种奇奇怪怪的虚拟形象出镜,其中动物人、人马这类造型特别受欢迎,其实这个功能根本不是Zoom官方自带的,全靠第三方编程开发实现,中间涉及到动作捕捉、模型适配、实时音视频同步一堆技术环节,接下来就给大家唠唠具体的实现方法。
前期需求与素材筹备
做这个功能之前首先得把需求和要用的素材捋清楚,首先要明确你做这个Zoom动物人配人**用途,是给朋友聚会玩还是做商业化的会议插件,不同用途对模型的精细度要求差很多,要是只用来娱乐玩的话模型可以做的夸张一点,要是用到正式商务会议里就得尽量贴近真人比例,不要太突兀。然后素材方面需要准备带完整骨骼绑定的3D人马模型,这种模型可以用专业的建模软件自己做,也可以去正规的素材网站买正版授权的成品,还要准备好动作捕捉的相关工具,要是用普通电脑摄像头捕捉用户动作的话,需要调用OpenCV这类视觉处理库,要是用专业的动作捕捉设备的话就要提前对接好对应的设备接口。另外必须提前去Zoom开放平台申请开发者权限,拿到对应的SDK密钥,不然根本没法把你的自定义功能和Zoom的会议系统打通。
核心功能模块开发
核心功能主要分成三个模块来敲代码实现,第一个是动作捕捉映射模块,这个模块负责把用户的实际动作同步到人马模型上,用普通摄像头捕捉的话,得先用视觉算法提取用户的身体关键点,比如头部、肩膀、手肘、膝盖这些位置,再把这些关键点的坐标对应到人马模型的骨骼节点上,因为人马模型比普通人类模型多了马身部分的骨骼,所以不能直接照搬普通虚拟形象的映射逻辑,得单独调整下半身的映射规则,比如用户走路迈腿的动作,要对应到人马前后四条腿的运动轨迹上,不然就会出现动作错位的搞笑情况。第二个是模型渲染合成模块,这个模块要把做好的3D人马模型和Zoom的视频流合成为一路输出,得设置好模型的渲染层级,确保模型不会遮挡用户分享的屏幕内容或者其他参会者的画面,还要支持用户自定义调整模型的透明度、大小、背景虚化程度这些参数。第三个是实时同步优化模块,这个模块要保证用户的动作、说话声音和模型的表现完全同步,还要应对网络波动的情况,当网络带宽不够的时候自动降低模型的渲染精度,优先保证动作和音视频的流畅性,避免出现严重的卡顿或者动作延迟好几秒的尴尬情况。
Zoom平台对接与测试
功能开发完就得和Zoom平台做对接,首先要按照Zoom开放平台的官方文档要求,把开发好的功能封装成符合规范的插件,调用Zoom提供的音视频接口、会议控制接口,把你的虚拟形象模块嵌入到Zoom的客户端或者网页端的使用界面里,对接的时候要注意权限申请的问题,必须明确告知用户你的插件会调用摄像头、麦克风这些硬件权限,以及这些权限的具体用途,完全符合平台的隐私规范。对接完成之后需要进行多轮测试,首先要测不同设备的兼容性,比如Windows系统、Mac系统、安卓手机、苹果手机这些主流设备上能不能正常加载模型、捕捉动作,然后要测不同网络环境下的表现,比如WiFi环境下、5G环境下、带宽只有1Mbps的弱网环境下会不会出现卡顿、动作延迟、模型加载失败的问题,还要测多人会议场景下的性能,比如十几个人同时使用这个虚拟形象的时候会不会占用过多带宽导致整个会议卡顿,动作捕捉的准确率也要重点测试,比如用户做大动作、快速移动的时候模型会不会出现错位、穿模的问题。
上线后的迭代优化
功能正式上线之后还得持续做迭代优化,首先要收集用户的使用反馈,比如很多用户反映动作捕捉不准确、模型加载慢、没有自定义功能这些问题,就要针对性的优化,比如优化动作捕捉的算法,加入更多的预设动作库,用户可以一键触发挥手、跳舞、打招呼这些动作,不用自己手动摆姿势。然后优化3D模型的压缩算法,在保证模型精细度的前提下尽量减小模型体积,加快加载速度,避免用户进入会议的时候要等很久才能加载出模型。还要跟进Zoom官方的版本更新,及时适配新版本的接口,避免出现插件无法使用的问题,后续还可以加入更多自定义功能,比如支持用户自己上传专属模型、更换模型的皮肤、添加互动特效这些,进一步提升用户的体验。