郭一璞 发自 云凹非寺 量子位 报道 | 公众号 QbitAI
一只3D的狗头卡通角色:
给它画上骨架:
诶?就可以动起来了:
同样的方法,也可以让3D小男孩动起来:
让3D高挑大姐姐动起来:
让3D猫猫活蹦乱跳:
总之,一切原本应该只是静态的3D角色模型,不管是人是动物,还是自然界不存在的卡通创意角色,都能见皮知骨,由静到动:
连影子都配合的非常好!
只知道脱骨鸡、脱骨鸭掌,没想到,还有人反着来。
这一切,都是一个叫做RigNet的AI自动完成的。只要设计好角色的3D动态外形,它就可以自动预测角色骨架,预估骨架外皮肤的重量,生成角色运动的图像。
这可比人工制作动画方便多了,要是能用在3D动画或者3D游戏制作上,以后就不用担心拖更或跳票了呢。
这项研究也登上了SIGGRAPH 2020,作者来自马萨诸塞大学阿默斯特分校和多伦多大学。
多网络合作实现
AI让3D角色动起来,需要经历两个步骤:先是确定骨骼的位置,再预测骨架之外皮肤的重量。
骨骼是有关节、会转动的,因此AI预测的时候也要先找到那些关节。
先用一个GMEdgeNet图神经网络,预测顶点向相邻关节的位移。
这样,骨头大概长在什么地方就出来了。
同时,还准备了另一个GMEdgeNet,参数和前面的那个不太一样,用它来预测网格上的注意力函数,图上越红的位置,注意力就越强。
划重点,GMEdgeNet长这样,后面还要用:
做了这样的准备,就可以用聚类模型,找到关节的位置。
关节的分布和生物学意义上的脊椎动物并不完全一致,不过鉴于只是追求外在的运动效果,并不是做骷髅装饰品,因此有大致的位置来表示身体弯曲的节点就OK了。
现在找到了关节,我们再把关节连起来,给它装上骨头。
装骨头用的是BoneNet模型和最小生成树算法,BoneNet负责预测每两个关节的连接里,哪些连接才是正确的骨头的位置,符合一般动物的身体结构。
BoneNet模型长这样:
同时,还要给这个3D角色找到“根关节”,就是下图的小红点,可以理解为“重心”,需要用到RootNet模型。
这真是“刻骨铭心”啊。
好的,现在关节、骨架和重心都有了,需要让这幅骨头感知一下皮肉的重量,它才能运动得符合自然规律也符合人们的观感。
给皮肉“称重”的任务,还是GMEdgeNet模型来做,它来预测骨架蒙皮权重。
传送门
项目主页: https://zhan-xu.github.io/rig-net/
论文地址: https://people.cs.umass.edu/~zhanxu/papers/RigNet.pdf
GitHub: https://github.com/zhan-xu/RigNet
— 完 —