共计 6489 个字符,预计需要花费 17 分钟才能阅读完成。
大家好,我是来自浙江大学 - 腾讯游戏智能图形翻新技术联结实验室的金小刚。明天与大家分享的题目是《基于异质图神经网络的主动蒙皮零碎》,这项工作由浙江大学与腾讯光子工作室群单干实现。
在计算机动画中,咱们须要各种各样的角色以体现剧情。以迪士尼和皮克斯公司往年的最新动画长片《Luca》中的配角 Luca 为例,数字建模师首先会对这些角色进行设计、建模,一般来说角色设计始于艺术家创作的草图和泥塑,以使每个角色恰到好处,而后数字建模师创立角色的虚构三维模型,有时也会对模型进行数字扫描以用作参考,数字建模师必须理解解剖学,因为骨骼和肌肉所在的地位会影响外表形态。
在计算机动画中,数字角色通常是动的,如何让角色动起来?那须要用到一种称为 Rigging,中文称为角色绑定的技术,什么是 Rig?咱们看一下皮克斯动画工作室的定义,Rig 的中文意思是索具,数字索具 (Digital Rig) 是容许数字模型挪动的虚构骨骼、关节和肌肉,这有点像牵线木偶上的绳子,一个好的索具具备恰到好处的灵活性,如果没有正确的管制,动画师就无奈创立他们须要的姿态,然而太多的灵活性又会使模型摆姿势太耗时,索具在游戏和电影的动画角色中最为常见,这种技术简化了动画过程并进步了生产效率,将任何三维对象与骨骼绑定后,咱们就能够依据须要进行管制他们和扭转他们的形态。在数字娱乐行业,骨骼绑定简直是对角色设置动画的规范形式,也是极其为重要的一步,实现晦涩和简单的动画齐全取决于动画流水线中索具阶段的品质。
Rigger 也就是角色绑定师,角色绑定师从角色的虚构三维模型开始,他们依据故事钻研角色须要如何挪动,例如电影《怪物公司》中的兰德尔 (Randall) 像变色龙一样挪动,但他也是用两条腿走路,角色绑定师将这些动作合成为独自的元素,并创立数百个动画师可用来创立姿态的控制点,在这个图例中角色绑定师从左侧的线框模型开始,增加虚构骨骼也就是右侧的骨骼,这样来自电影《怪物公司》的配角毛怪就能够摆姿势了。
Rigging 在电影和游戏畛域都失去了宽泛的利用,上图是一些典型的角色绑定例子,左侧出现的是电影中的绑定,功夫熊猫中的所有角色都用到了骨骼绑定技术,右侧是在游戏中的例子,无论是《堡垒之夜》还是《咫尺明月刀》,都应用了角色绑定技术。
绑定技术能够用骨骼来驱动模型的动画,具备利用范围广、动作范畴大、运算速度快、成果好等长处。例如左侧对于手的骨骼,通过调整骨骼的姿态能够让手出现丰盛的状态,右侧出现的是两个不同的模型一个是马、一个是人,也就是说 该技术不仅能够用于人形模型,还可用于其它非人形角色模型。
在绑定的过程中,动画师首先为处在 T -pose 的模型创立一套骨骼,如图中第二步 RIG 所示,之后用肯定的蒙皮权重将骨骼和模型顶点相分割,这就是第三步 Skin,随后就能够用人物骨骼的静止来驱动模型的静止了。
骨骼绑定技术具备十分宽泛的利用,不仅可用于动画、游戏,还可利用于社交媒体、虚拟现实、虚构主播、智能制作等任何须要虚构角色的畛域。例如腾讯 Next 工作室的 Matt AI 我的项目 也须要用到骨骼绑定技术。
回到论文的核心内容,先讲一下咱们的钻研动机:在骨骼蒙皮中蒙皮权重的确定是最消耗工夫的,为了达到骨骼对模型的精密管制,动画师通常采纳手工的形式精密调整蒙皮权重,即便是一个业余的动画师,要失去一个令人满意的蒙皮后果也是十分耗时的。咱们的第一个动机是是否充分利用动画师的这些教训常识。第二个动机,在咱们实际中发现不同的骨骼对不同大小的模型区域会产生不同的影响。例如人物脊柱的骨骼会影响间隔它很远的躯干的顶点,而手指的骨骼只影响很近范畴的局部,因而咱们须要寻找一种主动蒙皮的算法同时思考骨骼和顶点的不同之处。第三个动机,在一些简单的模型中有一些骨骼可能被搁置在模型以外,例如示例模型的蓝色骨骼,甚至有一些模型可能由多个不相连的局部组成,例如右侧模型的手臂和腿,因而,咱们须要寻找一个鲁棒的算法,可能解决这些一般性的状况。
在接下来的解说中我会首先介绍相干工作,之后介绍咱们的办法和咱们的试验,最初会进行一些相干的探讨。
对于主动蒙皮研究者曾经摸索过十分多的办法,这些办法能够大抵分为几何特色、基于几何特色和数据驱动的办法两类。基于几何特色的办法也就是 PPT 上半局部,例如匹诺曹 Pinicchio 和体素测地间隔,应用特定的数学方程来计算蒙皮权重,这些办法的毛病在于他们对蒙皮权重的散布存在人为的假如,而实际上蒙皮权重的散布并不一定合乎这些方程,数据驱动的办法也就是 PPT 下半局部,从一系列由动画师蒙皮的模型中学习,从而可能获取模型的解剖学信息来克服以上的毛病。例如 RigNet 就是应用一个图神经网络作为蒙皮权重的方程,以上办法都将蒙皮权重作为模型顶点某些特色的方程,然而这些办法具备如下局限:RigNet 尽管能够解决任意模型,然而没有思考到骨骼的不同之处,NeuroSkinning 办法对于不同的骨骼学习不同的蒙皮权重方程,但 NeuroSkinning 只能用于固定的人形骨骼构造,并不能用于非人形骨骼的模型。
另一个相干畛域是图神经网络,近年来,将图神经网络应用于计算机图形学是近几年的一个热门方向。图神经网络分为两类:空域 (spatial) 的网络能够解决不同拓扑的图,例如 MeshCNN,基于谱域 (spectral) 的网络只可能解决一种拓扑构造的图,例如针对 Mesh 的 AutoEncoder,与 MeshCNN 相似,咱们的网络能够利用于具备不同构造的网格模型。另一方面 在图神经网络中异质性,也就是具备不同品种节点和边的图是一个热点方向然而研究者对于这方面的尝试很少。
咱们提出的主动蒙皮办法包含两个要害的奉献点,首先咱们构建了一种异质的图神经网络,它不仅可能思考不同模型顶点的特色,也能思考不同骨骼的特色,在这个网络当中,咱们应用了一种新的图网络操作来将不同类的节点关联起来。其次咱们提出一种间隔方程,HollowDist,来计算模型顶点和骨骼的关系,这种间隔方程能够鲁棒地解决体外的骨骼,和由不相连局部组成的模型网格构造。
接下来 咱们简略概述一下咱们的办法,给定一个角色咱们有它的网格模型和它的骨骼构造,这两者能够别离看作图的构造。
而后对于每一个模型网格上的顶点和骨架中的骨骼对,咱们计算它们之间的 HollowDist,这种间隔函数用于把模型网格图和骨架图相连,从而构建了一张异质的图。
咱们的网络在这张异质图上进行一系列的图卷积操作,包含在模型网格图和骨骼图两张同质图内的卷积,以及在两张图之间的卷积操作,并最终推断出每个顶点和骨骼对应的蒙皮权重。
上面咱们将具体论述本文办法,首先介绍 HollowDist 它的计算过程,这个间隔函数用来计算从模型网格上的顶点到角色骨架上的骨骼的间隔,咱们心愿寻找一种从骨骼到网格顶点的间隔,该门路不能与网格有穿透,而后咱们以门路长度作为骨骼到顶点的间隔,为了同时思考模型网格的形态,咱们从体素测地间隔的计算中取得了灵感。
首先也就是 PPT 上半局部咱们将模型网格的外表进行体素化,该操作将空间宰割为三个局部,别离是:网格体素,它们在图中用粗体边框标识进去;骨骼体素它们在图中是红色的;以及其它空方块,在这里用灰色来示意。在这里咱们把模型的外表体素化而不是将它外部体素化,这样做能够疏忽骨骼和网格之间的地位关系,也就是说能够鲁棒地解决模型内部的骨骼。
之后也就是 PPT 下半局部,用广度优先搜寻(Breadth First Search,BFS),从骨骼体素开始寻找到网格体素的一条门路,右图中展示了这一过程,体素的色彩深浅代表了它们间隔左下角骨骼的间隔远近。
在上一步中,可能存在一些广度优先搜寻无奈遍历到的网格体素,这是因为模型网格由不相连局部形成导致的,在这些体素中,咱们从曾经遍历到的网格体素边缘开始重启广度优先搜寻,直到所有的网格体素都被遍历到,最终 也就是 PPT 下半局部,基于在之前步骤计算失去的体素之间的间隔,咱们能够计算骨骼到顶点的间隔,公式列在下方。
下一步咱们开始构建图 (PPT 上半局部)给定一个模型的网格以及与之绝对应的骨架,咱们为他们别离构建图,模型网格图 Gm 的每个节点都对应着模型网格的顶点,它的边也是模型网格的边,模型骨架图 Gs 的构建与骨架的状态略有区别,它的节点代表着骨架中的骨骼,而边代表着把一根一根骨骼相连的关节。在构建完模型网格图和模型骨架图之后,咱们能够应用计算失去的 HollowDist,将模型网格和模型骨架形成的两张图连接起来,构建异质图,依据 HollowDist 的远近关系,咱们将顶点所代表节点和与其最近的 K 个骨骼节点相连接,也就是说 咱们假设一个节点只受其靠近的 K 根骨骼影响,在这个图当中,咱们对节点赋予一系列属性作为图神经网络的输出(PPT 下半局部),对于模型网格图的节点,它的属性是其所代表的顶点的地位以及与它最近的 K 根骨骼的 HollowDist 的倒数,对于模型骨架图中的节点,它的属性就是两端关节的顶点地位。
咱们的异质图神经网络在刚刚构建的异质图上进行操作,它的构造如上图所示,Intra-Graph Conv 示意图内卷积、Inter-Graph Conv 示意图间卷积 这两个卷积交替进行,图内卷积操作别离在模型网格图和模型骨架图外部进行。而图间卷积操作在模型网格图和模型骨架图之间进行,在之后会具体论述这两种操作,两种卷积操作可能提取顶点对应节点和骨骼对应节点的部分特色,而咱们也应用池化操作提取全局的特色,把部分特色和全局特色拼接,再用一个多层感知机进行解决,就能够失去最终的蒙皮权重了。
图内卷积可能聚合节点及其相连接的同类节点的信息,咱们基于 EdgeConv 来构筑图内卷积模块,在模型网格图和模型骨架图中的卷积操作略有一些不同,对于模型骨架图(PPT 上半局部)而言 咱们间接采纳 EdgeConv,而对于模型网格图(PPT 下半局部),一个节点的感触域受模型的细分水平影响,为了解决这个问题,咱们应用了 RigNet 中介绍的卷积操作,它同时对节点和它的测地间隔街坊和相连的街坊进行 EdgeConv 操作,将后果拼接并通过一个多层感知机解决失去最终后果,一个节点的测地间隔街坊是与它的测地间隔在肯定范畴内的节点。
在 Inter-Graph Convolution 图间卷积模块中,顶点所代表的节点和骨骼所代表的节点相互聚合并替换信息,因为模型网格图和模型骨架图并不均衡,个别的模型网格都具备上千个顶点,而模型骨架只有几十根骨骼,咱们为从骨骼节点到顶点节点,和从顶点节点到骨骼节点设计了不同的卷积操作,对于从骨骼节点到顶点节点的卷积操作 (PPT 上半局部) 因为一个顶点节点与其最相近的 K 个骨骼节点所影响,简略把它们的特色拼接起来就能够了,这样做生成的特色长度是固定的,而对于从顶点节点到骨骼节点的卷积操作(PPT 下半局部),因为骨骼影响的顶点数不同,相似的操作无奈生成固定尺寸的特色,因而咱们转而提取骨骼所影响顶点节点的特色的最大、均匀和方差,以上两个卷积操作都在特色拼接操作之后增加了一个多层感知机来保障非线性。
在办法的最初咱们介绍一下损失函数的设计,损失函数由两项形成,首先是 Data Fitting Term 也就是数据里合项,该项的意义在于使预测的后果与实在后果相近,对于顶点而言 所有骨骼的蒙皮权重是正的而且它们的和为一,因而咱们不实用简略的 L2 间隔 而是应用 KL 散度来计算这一项,此外(PPT 右侧)咱们心愿蒙皮权重在模型网格外表散布是平滑的,这样能力使模型的骨骼动画看起来平滑,因而咱们增加了 Smoothing Term 平滑项,咱们应用一个拉普拉斯矩阵来计算这一项。
咱们应用的数据集是 ModelResource-RigNet-v1,这个数据集蕴含了一系列不同品种的模型,比方人形、鸟形和鱼形等,它们具备齐全不同拓扑和骨骼,在一些模型中,甚至存在体外骨骼和非连贯局部,但这些模型咱们都可能解决。
接下来展现咱们办法的后果,咱们应用手工构建的骨骼动画来驱动绑定好的模型,从后果中能够看到,咱们的办法生成的后果与真值十分靠近。
这里展现咱们的办法与其它办法的比照,首先出现的是定性的后果(PPT 上方)在上方一列,咱们的办法能够较好地解决裙子的末端和马尾的末端这些局部,这是因为咱们的办法提取了对应骨骼的特色,从而在身材骨骼和马尾、裙子骨骼上应用了不同的蒙皮权重方程,在下方一列,咱们的办法在关节区域具备更小的误差,这是因为咱们的办法学习了骨骼之间的关系,这是之前的办法无奈做到的,在定量后果方面(PPT 下方)咱们的办法在各种定量指标上都优于其它办法,咱们的精度指标是 83.04% 召回率是 81.11% L1-norm 是 0.3269,间隔误差是 0.005682,这些指标都比目前的 SOTA 办法都要好。
咱们的办法对体外骨骼和由非连贯局部组成的模型是鲁棒的,上图体外骨骼被标注为红色,咱们的 HollowDist 能够解决体内和体外的骨骼,同时对非连贯局部也十分鲁棒。
在试验的最初是一些融化试验,用来保障网络中的每一部分都起到了成果,定量的后果出现上方,在下方咱们展现在损失函数中应用和不应用平滑项的后果,能够看到平滑项使蒙皮权重在模型网格外表散布更加平滑了。
咱们将这个办法集成进 maya,开发了一个 maya 插件,使用者只须要导入网格模型和骨骼就能够主动进行蒙皮,插件提供抉择须要蒙皮的骨骼的性能,不便使用者减少辅助骨骼,对于一个 5000 顶点、50 根骨骼的模型,咱们的办法只须要一分钟左右就能够实现解决。
当然咱们目前的办法还存在一些局限性,例如 因为短少简单模型的 Rigging 数据,论文解决的模型不是很简单,在未来 咱们会在更加简单的模型上测试咱们的办法,因为在动画界应用的模型可能比咱们试验应用的数据集中的模型更加简单,其次咱们也心愿可能晋升 HollowDist 的计算速度,它是整个流程中的工夫瓶颈。最初 咱们也心愿摸索更多的模型网格 - 模型骨架之间的特色。
好,最初咱们把咱们的工作做个简略的总结。第一咱们提出了一个异构图神经网络的办法来主动预计,角色骨骼绑定的皮肤权重,咱们的办法图间卷积操作容许异构节点之间的特色聚合,因而咱们的网络能够提取顶点和骨骼特色。第二基于一种新的间隔计算方法 HollowDist,咱们的办法能够解决蕴含多个不相交局部或在骨骼内部的模型,咱们的相干的工作发表在往年的 ACM SIGGRAPH Symposium on Interactive 3D Graphics and Games 这个国内学术会议上 并失去了十分侧面的评估,认为咱们的工作解决了一个公开的挑战性”问题“Open Challenge”,使得这方面的钻研向前跨了一大步。好,我的汇报就到此结束,感激大家凝听。
Q & A
Q:我看目前这个方法解决的模型还不是很简单,对于简单模型,有没有可行的计划?
金小刚:如果这个模型的顶点数十分多的话,咱们可先把简单模型简化,简化当前咱们对绝对比较简单的模型利用咱们的办法进行解决,如果是更密的模型 咱们通过插值的办法来失去其余顶点的权值,目前咱们有一个问题 咱们短少非常复杂模型的标定数据,而且这个也是国内上目前都比拟缺的一个数据集,今后,如果咱们整个业界都能奉献本人的一些十分业余的骨骼绑定后果,而后构建一个十分大的一个虚构数据集,那这样的话咱们也能够解决一些非常复杂的模型,而且可能失去一些更加好的后果。
Q:目前这个方法有没有投入利用?
金小刚:方才咱们曾经介绍了,咱们这个办法曾经开发成一个 Maya 插件,目前曾经在腾讯的光子工作室进行利用,这个办法能够辅助动画师缩小骨骼绑定的工夫,进步他们的生产效率。
Q:用了这个方法后,美术是否齐全能承受自动化解决的后果?
金小刚:实际上用咱们的办法的话,生成的后果跟美术做的曾经十分靠近了,但在利用中 可能也会有些美术认为有些局部还须要再调整,但这个调整相应的工作量就比拟小,所以咱们能够把咱们的后果作为一个比拟好的初值,而后美术能够花比拟少的工夫对后果进行调整,这样能够十分快地达到他所须要的和冀望的骨骼绑定后果。