CN113888680A - 一种三维模型穿插修复的方法、装置及设备 - Google Patents
一种三维模型穿插修复的方法、装置及设备 Download PDFInfo
- Publication number
- CN113888680A CN113888680A CN202111155035.9A CN202111155035A CN113888680A CN 113888680 A CN113888680 A CN 113888680A CN 202111155035 A CN202111155035 A CN 202111155035A CN 113888680 A CN113888680 A CN 113888680A
- Authority
- CN
- China
- Prior art keywords
- dimensional model
- original
- target
- limb
- animation
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 51
- 230000008439 repair process Effects 0.000 title claims abstract description 39
- 230000035515 penetration Effects 0.000 claims abstract description 27
- 238000005457 optimization Methods 0.000 claims description 28
- 230000008859 change Effects 0.000 claims description 13
- 238000004590 computer program Methods 0.000 claims description 7
- 230000008569 process Effects 0.000 abstract description 9
- 210000003414 extremity Anatomy 0.000 description 178
- 230000037431 insertion Effects 0.000 description 18
- 238000003780 insertion Methods 0.000 description 18
- 238000003860 storage Methods 0.000 description 11
- 210000000988 bone and bone Anatomy 0.000 description 7
- 239000007787 solid Substances 0.000 description 7
- 238000004364 calculation method Methods 0.000 description 6
- 238000010586 diagram Methods 0.000 description 5
- 238000009826 distribution Methods 0.000 description 4
- 239000002775 capsule Substances 0.000 description 3
- 238000004519 manufacturing process Methods 0.000 description 3
- 238000011555 rabbit model Methods 0.000 description 3
- 230000006978 adaptation Effects 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000001914 filtration Methods 0.000 description 2
- 210000002683 foot Anatomy 0.000 description 2
- 230000002452 interceptive effect Effects 0.000 description 2
- 230000009191 jumping Effects 0.000 description 2
- 230000000670 limiting effect Effects 0.000 description 2
- 210000003141 lower extremity Anatomy 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 210000001364 upper extremity Anatomy 0.000 description 2
- 241000283973 Oryctolagus cuniculus Species 0.000 description 1
- 238000010171 animal model Methods 0.000 description 1
- 238000013473 artificial intelligence Methods 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000036961 partial effect Effects 0.000 description 1
- 238000000513 principal component analysis Methods 0.000 description 1
- 230000002829 reductive effect Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 238000012216 screening Methods 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 210000003371 toe Anatomy 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T13/00—Animation
- G06T13/20—3D [Three Dimensional] animation
- G06T13/40—3D [Three Dimensional] animation of characters, e.g. humans, animals or virtual beings
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T17/00—Three dimensional [3D] modelling, e.g. data description of 3D objects
- G06T17/20—Finite element generation, e.g. wire-frame surface description, tesselation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T5/00—Image enhancement or restoration
Landscapes
- Physics & Mathematics (AREA)
- Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computer Graphics (AREA)
- Geometry (AREA)
- Software Systems (AREA)
- Processing Or Creating Images (AREA)
Abstract
本说明书实施例提供一种三维模型穿插修复的方法、装置及设备。可以针对待进行穿插修复的原始三维模型的各肢体部位,生成一个模拟该肢体部位的几何体,然后可以基于在对原始三维模型各肢体部位的位姿进行调整的过程中,该原始三维模型中各肢体部位对应的几何体之间的相交情况,确定原始三维模型的肢体部位的位姿的目标变化量,基于该目标变化量对三维模型的肢体部位的位姿进行调整,得到修复后的模型。通过本申请实施例提供的方法,可以自动实现对穿插的模型的修复,无需手动修复,节省人力和时间。
Description
技术领域
本说明书涉及人工智能技术领域,尤其涉及一种三维模型穿插修复的方法、装置及设备。
背景技术
当三维模型使用了不合理的动画,比如,某个关节被赋予了超出合理范围的旋转,或者混合形变系数超过了合理范围,三维模型的不同位置的表面可能会相交在一起,比如,手臂转动太大而穿插进身体里,这种情况我们称之为模型穿插。在动画重定向过程中,经常会出现模型穿插的问题,使得重定向后的动画质量较差。目前,在出现三维模型穿插问题时,需要通过动画师手动对模型进行修复,工作量比较大,既耗费人力也耗费时间。
发明内容
基于此,本说明书提供了一种三维模型穿插修复方法、装置及设备。
根据本说明书实施例的第一方面,提供一种三维模型穿插修复方法,所述方法包括:
获取待进行穿插修复的原始三维模型;
针对所述原始三维模型中的每个肢体部位,生成用于模拟所述每个肢体部位的几何体,以得到多个几何体;
基于所述原始三维模型的肢体部位处于不同位姿下所述多个几何体之间的相交情况,确定所述原始三维模型的肢体部位的位姿的目标变化量;
基于所述目标变化量对所述原始三维模型的肢体部位的位姿进行调整,以得到穿插修复后的目标三维模型。
根据本说明书实施例的第二方面,提供一种三维模型穿插修复装置,所述装置包括:
获取模块,用于获取待进行穿插修复的原始三维模型;
几何体生成模块,用于针对所述原始三维模型中的每个肢体部位,生成用于模拟所述每个肢体部位的几何体,以得到多个几何体;
目标变化量确定模块,用于基于所述原始三维模型的肢体部位处于不同位姿下所述多个几何体之间的相交情况,确定所述原始三维模型的肢体部位的位姿的目标变化量;
调整模块,用于基于所述目标变化量对所述原始三维模型的肢体部位的位姿进行调整,以得到穿插修复后的目标三维模型。
根据本说明书实施例的第三方面,提供一种设备,所述设备包括处理器、存储器、存储在所述存储器可供所述处理器执行的计算机程序,所述处理器执行所述计算机程序时实现上述第一方面提及的方法。
应用本说明书实施例的方案,可以针对待进行穿插修复的原始三维模型的各肢体部位,生成一个模拟该肢体部位的几何体,然后可以基于在对原始三维模型各肢体部位的位姿进行调整的过程中,该原始三维模型中各肢体部位对应的几何体之间的相交情况,确定原始三维模型的肢体部位的位姿的目标变化量,基于该目标变化量对三维模型的肢体部位的位姿进行调整,得到修复后的模型。通过本申请实施例提供的方法,可以自动实现对穿插的模型的修复,无需手动修复,节省人力和时间。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本说明书。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本说明书的实施例,并与说明书一起用于解释本说明书的原理。
图1是本说明书一个实施例的存在穿插的模型和不存在穿插的模型。
图2是本说明书一个实施例的一种三维模型穿插修复方法的流程图。
图3是本说明书一个实施例的一种为兔子模型各肢体部位生成几何体的示意图。
图4是本说明书一个实施例的一种两个几何体穿插深度的示意图。
图5是本说明书一个实施例的一种动画制作过程的示意图。
图6是本说明书一个实施例的一种三维模型穿插修复的装置的逻辑结构框图。
图7是本说明书一个实施例的一种电子设备的逻辑结构框图。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本说明书相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本说明书的一些方面相一致的装置和方法的例子。
在本说明书使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本说明书。在本说明书和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
应当理解,尽管在本说明书可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本说明书范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
当三维模型使用了不合理的动画,比如,某个肢体部位被赋予了超出合理范围的旋转,或者混合形变系数超过了合理范围,三维模型的不同位置的表面可能会相交在一起,比如,手臂转动太大而穿插进身体里,这种情况我们称之为模型穿插。在动画制作过程中,经常会将已有的动画资源的动画迁移到目标模型中,以生成新的动画,当把一个来自模型A的动画迁移给模型B时,需要解决由于模型差异导致的动画不适配的问题,这个过程我们称之为动画重定向。在动画重定向过程中,由于模型的形状、身材比例的差异,导致重定向后的动画经常会出现穿插的问题。比如,如图1所示,源动画中的模型的是类似真人一样瘦长型的骨架,而目标模型是一个卡通兔子,其身材短小且比较圆,再将源动画重定向至目标模型后,得到的新动画中的模型会出现穿插的问题,即手臂穿插进身体,如图1中的(a)所示。而不存在穿插的模型则如图1中的(b)所示。
模型穿插会极度影响动画的质量和展示效果,因而,需要对模型穿插进行修复,得到无穿插的模型。目前,在对模型穿插进行修复时,需要动画师对模型进行手动修复,对于穿插较多较频繁的动画,工作量较大,非常耗费时间和人力。
基于此,本申请实施例提供了一种三维模型穿插修复的方法,可以实现对出现穿插的原始三维模型进行自动修复,得到无穿插的目标三维模型。由于三维模型出现穿插,是因为肢体部位被赋予了不合理的动画(比如,不合理的旋转角度或不合理的移动距离),导致不同的肢体部位相交在一起,因而,对穿插的三维模型进行修复,即可以调整三维模型各肢体部位的位姿(位置和姿态),使得三维模型中各肢体部位尽可能不相交,并且为了确保修复后的三维模型的动画和修复前的三维模型的动画尽可能保持一致,尽可能在对三维模型的位姿进行较小的调整的前提下避免各肢体部位相交。所以,可以针对待进行穿插修复的原始三维模型的各肢体部位,生成一个模拟该肢体部位的几何体,然后可以基于在对原始三维模型各肢体部位的位姿进行调整的过程中,该原始三维模型中各肢体部位对应的几何体之间的相交情况,确定原始三维模型的肢体部位的位姿的目标变化量,基于该目标变化量对三维模型的肢体部位的位姿进行调整,得到修复后的模型。通过本申请实施例提供的方法,可以自动实现对穿插的模型的修复,无需手动修复,节省人力和时间。
本申请实施例提供的三维模型穿插修复方法可以用于各种动画制作、动画重定向或者动画穿插修复软件等。比如,可以是具有模型穿插修复功能的APP、组件、工具包等,本申请实施例不作限制。
本申请实施例中的三维模型可是各种类型的三维模型,比如,可以是人体模型、动物模型、各种虚拟形象、卡通形象等,只要是需要进行穿插修复的三维模型,均适用于本申请实施例提供的方法。
如图2所示,所述方法可以包括以下步骤:
S202、获取待进行穿插修复的原始三维模型;
在步骤S202中,可以先获取待进行穿插修复的原始三维模型,其中,原始三维模型可以是一个或者多个,比如,原始三维模型可以是多帧动画中的三维模型,每个原始三维模型对应一帧动画。
S204、针对所述原始三维模型中的每个肢体部位,生成用于模拟所述每个肢体部位的几何体,以得到多个几何体;
三维模型不同肢体部位之间的穿插,即不同肢体部位出现相交。三维模型通常可以通过网格数据来表征,比如,三维模型可以通过大量的三角网格构成,通过网格顶点的位置信息和网格顶点之间的连接关系即可以表示一个三维模型。由于每个肢体部位都通过大量的三角网格表示,如果通过这些三角网格去判定三维模型的两个肢体部位是否出现相交,计算量非常巨大,也十分复杂。在判定原始三维模型的两个肢体部位是否出现相交时,为了减小计算量,在步骤S206中,可以针对原始三维模型中的每个肢体部位,生成用于模拟该肢体部位的几何体,通过利用一个基础的几何体来近似每个肢体部位,从而基于几何体之间的相交情况,即可以确定不同肢体部位之间的相交情况,由于几何体之间的相交情况通过轻量的数学计即可以完成,因而可以简化不同肢体部位相交情况的判定,可以大大减小计算量。
其中,几何体可以根据每个肢体部位的形状和位置生成,几何体的形状可以是球体、胶囊体、立方体等各种基础的几何体,每个肢体部位对应的几何体可以基于该肢体部位的形状和位置确定。比如,如图3所示,是为一个兔子模型生成的几何体的示意图。其中,兔子模型的手部、头部以及躯干使用球体近似,四肢和脚使用胶囊体近似。
S206、基于所述原始三维模型的肢体部位处于不同位姿下所述多个几何体之间的相交情况,确定所述三维模型的肢体部位的位姿的目标变化量;
由于原始三维模型的不同的肢体部位之间出现穿插现象,是因为对于某些肢体部位赋予了不合理的动画,比如,手臂的旋转角度过大,导致手臂穿插到身体中。因而,在对原始三维模型进行穿插修复时,需要对原始三维模型中的一个或者多个肢体部位的动画(即位姿)进行调整,使其处于合理的范围,进而避免出现穿插。所以,在步骤S206中,可以基于原始三维模型的肢体部位处于不同位姿的情况下,原始三维模型的肢体部位对应的多个几何体之间的相交情况,确定原始三维模型的肢体部位位姿的目标变化量,其中,当利用该目标变化量改变该原始三维模型的肢体部位的位姿时,所述原始三维模型的肢体部位对应的多个几何体之间的相交情况可以符合预设的需求(即不相交,或者穿插深度小于预设阈值),且所述目标变化量也比较小,确保调整后的三维模型的位姿与原始三维模型的位姿变化不大,保证三维模型原有的动画
其中,在对原始三维模型进行穿插修复时,可以调整三维模型中特定的一个或多个肢体部位的位姿,其余的肢体部位的位姿保持不变。因而,只需确定这特定的一个或多个肢体部位的位姿在变化时,几何体的相交情况下,进而基于相交情况确定这一个或多个肢体部位的位姿的目标变化量。其中,这一个或多个肢体部位可以由用户预先设置。
S208、基于所述目标变化量对所述原始三维模型的肢体部位的位姿进行调整,得到穿插修复后的目标三维模型。
在步骤S208中,在确定原始三维模型的肢体部位的位姿的目标变化量后,可以基于该目标变化量对原始三维模型的肢体部位的位姿进行调整,从而可以得到穿插修复后的目标三维模型,其中,目标三维模型和原始三维模型只是在肢体部位的位姿上存在一些差别,比如,某些肢体部位的旋转角度稍微小一些,以尽量减少或避免穿插。
此外,针对一些场景中,除了调节三维模型的肢体部位的位姿,以避免三维模型出现穿插,也可以改变三维模型肢体部位的形变系数等,不难理解,类似的可以避免模型穿插的操作均在本申请的保护范围内。
在一些实施例中,待进行穿插修复的原始三维模型可以有多个,每个原始三维模型对应目标动画中的一帧动画,即这多个原始三维模型是肢体动画(即位姿)不一样的多个三维模型,这多个原始三维模型即构成了目标动画。其中,目标动画可以通过将源动画重定向至指定三维模型中得到。
在一些实施例中,原始三维模型可以是三维网格模型,即原始三维模型可以通过多个网格顶点、以及网格顶点之间的连接关系表示。在生成用于模拟原始三维模型中每个肢体部位的几何体时,可以先获取每个肢体部位对应的目标网格顶点的位置信息,然后基于目标网格顶点的位置信息确定用于模拟每个肢体部位的几何体的形状参数的目标值和位姿参数的目标值,其中,形状参数用于确定生成的几何体的形状,比如,假设几何体为球体,可以确定该球体的半径大小,假设几何体为立方体,可以确定立方体的各边长的大小。位姿参数用于确定生成的几何体的位姿,比如,该几何体的中心的位置坐标,该几何体在各个轴向上的旋转角度等。当几何体的形状参数和位姿参数确定后,即可以生成该几何体。
在一些实施例中,在确定原始三维模型中的各肢体部位对应的目标网格顶点时,可以先确定原始三维模型中各网格顶点的蒙皮权重,该蒙皮权重用于表征每个肢体部位对应的骨骼对各网格顶点的影响大小。三维网格模型在进行骨骼绑定时,即可以确定各骨骼对三维网格模型中各网格顶点的影响的大小(即蒙皮权重),其中,针对任一骨骼,距离该骨骼越近的网格顶点受其影响越大。因而,可以获取各网格顶点相对于每个肢体部位的蒙皮权重,然后可以将该蒙皮权重大于预设阈值的网格顶点作为每个肢体部位对应的目标网格顶点。在确定每个肢体部位对应的目标网格顶点后,即可以根据目标网格顶点的分布情况确定模拟该肢体部位的几何体,几何体可以包围所有的目标网格顶点。
在一些实施例中,目标网格顶点的位置信息可以是目标网格顶点的位置坐标,在基于目标网格顶点的位置信息确定用于模拟每个肢体部位的几何体的形状参数的目标值和所述位置参数的目标值时,可以先基于目标网格顶点的位置坐标的平均值确定几何体的位置参数的初始值,然后基于目标网格顶点的位置坐标的最大值,以及目标网格顶点的位置坐标的最小值确定几何体的形状参数的初始值,然后可以以几何体包围所有的目标网格顶点作为约束,以最小化几何体的体积为优化目标,以该位置参数的初始值以及形状参数的初始值作为基础,进一步对位置参数和形状参数进行优化,以得到位置参数的目标值以及形状参数的目标值,基于确定的位置参数的目标值和形状参数的目标值即可以生成几何体。
当然,由于实际应用中,并不是原始三维模型的所有肢体部位之间都存在穿插,大部分穿插都是出现在某些特定的肢体部位之间,比如,通常穿插都是存在于上肢和身体、下肢和身体之间。因此,在判定原始三维模型的肢体部位之间的相交情况时,可以只需判定某些肢体部位对对应的几何体之间的相交情况,无需遍历所有的肢体部位对,以减小计算量。所以,在一些实施例中,在基于原始三维模型的各肢体部位处于不同位姿下多个几何体之间的相交情况,确定原始三维模型的各肢体部位位姿的目标变化量时,可以先从多个几何体中确定一个或多个几何体对,这一个或多个几何体对中的每个几何体对对应的肢体部位对为待进行穿插修复的肢体部位对,这一个或多个几何体对可以由用户预先设置,也可以基于几何体的位置参数自动确定。然后可以基于原始三维模型的肢体部位处于不同位姿时这一个或多个几何体对之间的相交情况,确定原始三维模型的肢体部位位姿的目标变化量。比如,用户可以预先设置一些需要避免穿插的肢体部位对,比如,{LeftHand,Head},{LeftHand,Spine},{RightHand,Spine},{LeftHand,LeftUpLeg},{LeftHand,RightUpLeg},在调整原始三维模型中的肢体部位的位姿的过程中,可以确定上述预先设置的需要避免穿插的肢体部位对对应的几何体对之间的相交情况,以基于该相交情况确定目标变化量。
当然,在一些场景,如果预先无法确定哪些肢体部位对可能出现穿插,则可以遍历原始三维模型的所有肢体部位对,对所有肢体部位对对应的几何体对之间的相交情况进行判定,以确保任意两个肢体部位均不会出现穿插。
在一些实施例中,几何体之间的相交情况可以基于几何体的形状参数的目标值,以及几何体的位置参数的目标值确定。比如,在确定两个几何体的形状参数的数值和位置参数的数值后,既可以基于这两个数值确定两个几何体的相交情况,比如,穿插的深度,穿插的方向等等。
在一些实施例中,几何体对之间的相交情况包括每个几何体对之间的穿插深度,该穿插深度为每个几何体对中的两个几何体在两个几何体的中心连线方向上的重叠距离。如图4所示,假设某个几何体对中的两个几何体都为球状几何体,两个球体相交在一起,则该几何体对的穿插深度可以是两个球体在球心连线方向上的重叠距离,两者的穿插深度可以通过以下方式计算:可以先基于两个球体的位置参数确定两个球体球心的距离,再基于两个球体的形状参数确定两个球体各自的半径,通过两者半径之和与球心距离的差值即可以得到穿插深度。
在对原始三维模型进行穿插修复得到目标三维模型时,其最终的目标是在尽可能保持原始三维模型原有的动画(即位姿)的前提下,保证原始三维模型的各肢体部位相交情况符合预期(比如,不相交或者穿插深度小于一定值)。因而,在一些实施例中,在基于原始三维模型的肢体部位处于不同位姿下该一个或多个几何体对之间的相交情况,确定原始三维模型的肢体部位位姿的目标变化量时,可以以该一个或多个几何体对的穿插深度小于预设距离阈值的作为约束,以肢体部位位姿的变化量最小作为优化目标,对肢体部位位姿的变化量进行优化,以得到目标变化量。
在一些实施例中,待进行穿插修复的原始三维模型可以是多帧动画中的三维模型。比如,该多帧动画可以是描述某个三维模型的一系列肢体动作的一组动画。每帧动画都对应一个原始三维模型,不同帧动画的原始三维模型的肢体部位的位姿不一样。在对这多帧动画中的原始三维模型进行穿插修复时,可以同时对这多帧动画进行优化,比如,可以以任一帧动画中的原始三维模型的不同肢体部位的穿插深度小于预设距离阈值作为约束,以每帧动画中的原始三维模型的各肢体部位位姿的变化量最小,即最小化多帧动画中原始三维模型的各肢体部位位姿的变化量的平均值作为优化目标,对该多帧动画中的每帧动画的原始三维模型的各肢体部位位姿的变化量进行优化,得到每帧动画对应的目标变化量,进而利用该目标变化量对每帧动画中的原始三维模型的位姿进行调整,得到修复后的模型。
在一些实施例中,待进行穿插修复的原始三维模型可以是多帧动画中的三维模型,如果动画的帧数较多,一次完成对这多帧动画中的三维模型的穿插修复,计算量过大。因而,可以将这多帧动画分为多段动画,分别对每段动画中各帧动画中的原始三维模型的肢体部位位姿的目标变化量进行优化,以对每帧动画中的原始三维模型进行穿插修复。当然,如果每段动画独立优化,会出现两段动画衔接的地方出现跳变的问题,为了避免这个问题,可在将多帧动画划分为多段动画时,相邻两段动画可以存在一些重叠帧,在对每段动画的三维模型的肢体部位位姿的变化量进行优化时,可以以每段动画中的各帧动画的原始三维模型的穿插深度均小于预设距离阈值,以及相邻两段动画的重叠帧中原始三维模型肢体部位的位姿变化量一致作为约束,以最小化每段动画中的各帧动画的原始三维模型的肢体部位位姿的变化量的平均值作为优化目标,对每段动画中原始三维模型的肢体部位位姿的变化量进行优化,以得到每段动画中的各帧动画原始三维模型肢体部位位姿的目标变化量。通过加入相邻两段动画中的重叠帧对应的位姿变化量一致作为约束,可以很好的解决两段动画衔接位置出现跳变的问题。
为了进一步解释本申请实施例提供的三维模型穿插修复的方法,以下结合一个具体的实施例加以解释。
在动画制作过程中,通常将已有的源动画重定向至指定模型中,得到目标动画,重定向得到的目标动画中,可能存在有些动画帧中的三维模型出现穿插现象,因而需要自动对三维模型的穿插进行修复。如图5所示,为本申请实施例提供的一种动画制作的示意图,可以获取源动画和指定的三维模型,通过动画重定向将源动画迁移到指定三维模型后,再对重定向得到的每帧动画中的三维模型进行穿插修复,最终可以得到无穿插的目标动画。
在对每帧动画中的三维模型进行穿插修复时,可以先通过统计三维模型各肢体部位对应的网格顶点的分布情况,自动确定模拟各肢体部位的几何体的位姿参数和形状参数。然后可以基于用户预先配置的需要避免的穿插的肢体部位对、需要避免穿插的肢体部位对可以容忍的穿插深度阈值、需要调整位姿的肢体部位、每次优化的动画帧数等参数,以及基于模拟各肢体部位的几何体的形状参数和位姿参数,建立优化任务。其中,该优化任务中的变量是用户设置的需要调整位姿的肢体部位的位姿,优化目标是每帧动画中的三维模型的需要调整位姿的肢体部位的位姿变化量最小,该优化任务中的约束是各帧动画中需要避免穿插的肢体部位对的穿插深度小于预设的阈值(肢体部位对的穿插深度可以基于其形状参数和位姿参数确定)。通过构建上述优化任务,即可以确定各帧动画中的三维模型的肢体部位位姿的变化量,进而基于该变化量对各帧动画中的三维模型的肢体部位的位姿进行调整,得到无穿插的目标动画。
具体的,上述方法可以包括以下几个步骤:
1、参数配置
可以为用户提供一个交互界面,用户可以通过交互界面配置穿插修复过程中需用到的一些参数,具体包括:与三维模型的各肢体部位对应的几何体的创建有关的参数,以及对三维模型的肢体部位的位姿变化量进行优化相关的参数。
与模拟三维模型的各肢体部位的几何体的创建有关的参数:
(1)模拟各肢体部位的几何体的类型,几何体的类型可以是:球体、胶囊体、立方体(当然,几何体的类型也可以基于各肢体部位对应的网格顶点的分布情况自动确定)
(2)各肢体部位包含的骨骼范围,比如,手部需要包含手指,脚部需包含脚趾,头部则只需要包含本身。
(3)各肢体部位对应的蒙皮权重过滤阈值,该过滤阈值用于从三维模型的各网格顶点中,筛选出受各肢体部位影响较大的网格顶点,以基于这些网格顶点的分布情况生成模拟各肢体部位的几何体。
对三维模型各肢体部位的位姿变化量进行优化相关的参数:
(1)需要避免的穿插的肢体部位对。由于穿插往往会出现在特定的肢体部位之间(比如,上肢和身体,或者下肢之间),如使用所有肢体部位的两两组合,即避免所有肢体部位对发生穿插,这样会导致大量的无意义的计算。因而,可以预先配置需要避免穿插的肢体部位对,在进行优化的时候,可以仅将这些需要避免穿插的肢体部位对之间的穿插深度小于预设深度作为约束。
(2)需调整位姿的肢体部位。由于对三维模型的穿插进行修复,即调整三维模型的肢体部位的位姿,使三维模型的动画趋于合理,从而避免穿插。因此,可以预先设置需要调整位姿的肢体部位,以这些肢体部位的位姿作为优化变量,确定这些肢体部位的位姿的最小变化量。
(3)需要避免穿插的肢体部位对可以容忍的穿插深度阈值,可以预先为每对肢体部位对设置穿插深度阈值,在对位姿变化量进行优化时,可以以需要避免穿插的肢体部位对的穿插深度小于预设的穿插深度阈值作为约束。
(4)配置优化窗口大小和窗口步长
实际应用中,输入动画有的会比较长,很难一次优化太长的片段(变量过多,中间运算很大),优化窗口大小指单次优化的连续动画帧数。窗口步长指前后两次窗口的间隔步长,步长小于窗口即意味着窗口是重叠的。
2、为各肢体部位构建几何体
(1)可以获取受每个肢体部位影响的网格顶点;
根据每个肢体部位对应的骨骼对网格顶点的蒙皮权重以及预先设置的蒙皮权重过滤阈值,来确定每个肢体部位对应的顶点。理论上,头部包含头部附近的顶点,手部则包含整个手部附近的顶点。每个顶点用{x,y,z}来表征其在三维空间的位置。
(2)确定各肢体部位的几何体的形状参数(如,半径)以及位姿参数(如,旋转平移量)的初值。
获取各肢体部位对应的全部网格顶点在三维空间的平均位置,可以大致估计几何体的位姿参数的初始值;通过全部网格顶点的最大最小位置以及主要方向(使用主成分分析)可以大致算出几何体的形状参数的初始值;
(3)建立受约束的优化问题,确定几何体的形状参数的目标值以及位置参数的目标值。
以几何体包含该肢体部位的全部网格顶点作为约束,最小化几何体的体积作为优化目标,对几何体的形状参数的初始值和位姿参数的初始值进一步优化,得到形状参数的目标值以及位置参数的目标值,进而可以生成几何体。
3、对各帧动画中的三维模型的肢体部位的位姿变化量进行优化
在对位姿变化量进行优化时,可以以最小化预先设置的待调整位姿的肢体部位(肢体部位A)位姿的变化量作为优化目标,预先设置的需避免穿插的肢体部位对之间的穿插深度小于预设穿插深度阈值作为约束,对肢体部位A的位姿的变化量进行优化,得到每帧动画中三维模型的肢体部位A的肢体部位位姿的目标变化量,然后利用该目标变化量对每帧动画中三维模型的肢体部位A的位姿进行调整,得到修复后的动画。
当动画帧很多时(200以上甚至更多),无法在一次优化全部处理完(变量太多,需要大量内存),需要将动画分段处理,此时不同段衔接处的平滑没办法保证。此时可以设置多个优化窗口,每个优化窗口对应一段动画,相邻两个优化窗口存在重叠帧,同时对重叠帧增加额外的约束。即相邻两个优化窗口中重叠帧的三维模型肢体部位位姿的变化一致。通过额外增加约束,既可以保证修复后的两段动画的衔接处的平滑,不存在跳变。
与上述方法相对应,本公开实施例还提供了一种三维模型穿插修复的装置,如图6所示,所述装置60包括:
获取模块61,用于获取待进行穿插修复的原始三维模型;
几何体生成模块62,用于针对所述原始三维模型中的每个肢体部位,生成用于模拟所述每个肢体部位的几何体,以得到多个几何体;
目标变化量确定模块63,用于基于所述原始三维模型的肢体部位处于不同位姿下所述多个几何体之间的相交情况,确定所述原始三维模型的肢体部位的位姿的目标变化量;
调整模块64,用于基于所述目标变化量对所述原始三维模型的肢体部位的位姿进行调整,以得到穿插修复后的目标三维模型。
在一些实施例中,所述原始三维模型包括多个,每个所述原始三维模型对应目标动画中的一帧动画,所述目标动画通过将源动画重定向至预设的三维模型中得到。
在一些实施例中,所述原始三维模型为三维网格模型,所述目标变化量确定模块用于针对所述原始三维模型中的每个肢体部位,生成用于模拟所述每个肢体部位的几何体,具体用于:
获取所述每个肢体部位对应的目标网格顶点的位置信息;
基于所述目标网格顶点的位置信息确定用于模拟所述每个肢体部位的几何体的形状参数的目标值和位姿参数的目标值,所述形状参数用于指示所述几何体的形状,所述位姿参数用于指示所述几何体的位姿。
在一些实施例中,所述目标网格顶点基于以下方式确定,包括:
确所述原始三维模型中各网格顶点的蒙皮权重,所述蒙皮权重用于表征所述每个肢体部位对应的骨骼对各网格顶点的影响大小;
将所述蒙皮权重大于预设阈值的网格顶点作为所述每个肢体部位对应的目标网格顶点。
在一些实施例中,所述位置信息包括所述目标网格顶点的位置坐标,所述目标变化量确定模块用于基于所述目标网格顶点的位置信息确定用于模拟所述每个肢体部位的几何体的形状参数的目标值和所述位姿参数的目标值,具体用于:
基于所述目标网格顶点的位置坐标的平均值确定所述位姿参数的初始值;
基于所述目标网格顶点的位置坐标的最大值,以及所述目标网格顶点的位置坐标的最小值确定所述形状参数的初始值;
以所述几何体包围所有所述目标网格顶点作为约束,以最小化所述几何体的体积作为优化目标,对所述位姿参数的初始值以及所述形状参数的初始值进行优化,以得到所述位置参数的目标值以及所述形状参数的目标值。
在一些实施例中,所述几何体之间的相交情况基于所述几何体的形状参数的目标值,以及所述几何体的位置参数的目标值确定。
在一些实施例中,所述目标变化量确定模块用于基于所述原始三维模型的各肢体部位处于不同位姿所述多个几何体之间的相交情况,确定所述原始三维模型的各肢体部位的位姿的目标变化量时,具体用于:
从所述多个几何体中确定一个或多个几何体对,每个几何体对对应的肢体部位对为待进行穿插修复的肢体部位对;
基于所述原始三维模型的肢体部位处于不同位姿下所述一个或多个几何体对之间的相交情况,确定所述原始三维模型的肢体部位的位姿的目标变化量。
在一些实施例中,所述相交情况包括每个几何体对之间的穿插深度,所述穿插深度为每个几何体对中的两个几何体在所述两个几何体的中心连线方向上的重叠距离。
在一些实施例中,所述目标变化量确定模块用于基于所述原始三维模型的肢体部位处于不同位姿下所述一个或多个几何体对之间的相交情况,确定所述原始三维模型的肢体部位的位姿的目标变化量时,具体用于:
以所述穿插深度小于预设距离阈值的作为约束,以最小化所述肢体部位位姿的变化量作为优化目标,对所述肢体部位位姿的变化量进行优化,以得到所述目标变化量。
在一些实施例中,所述原始三维模型包括多帧动画中的三维模型,所述约束为每帧动画中的所述原始三维模型的所述穿插深度均小于预设距离阈值,所述优化目标为最小化所述多帧动画中的原始三维模型的肢体部位的位姿的变化量的平均值。
在一些实施例中,所述原始三维模型包括多帧动画中的三维模型,所述装置还用于:
将所述多帧动画分割成多段动画,相邻两段动画之间存在重叠帧;
基于所述原始三维模型的肢体部位处于不同位姿下所述一个或多个几何体对之间的相交情况,确定所述原始三维模型的肢体部位的位姿的目标变化量,包括:
针对所述多段动画中的每段动画,以所述每段动画中的各帧动画中的原始三维模型的所述穿插深度均小于预设距离阈值,以及相邻两段动画的重叠帧的所述目标变化量一致作为约束,以最小化所述每段动画中的原始三维模型的肢体部位位姿的变化量的平均值作为优化目标,对所述每段动画中原始三维模型的肢体部位位姿的变化量进行优化,以得到每段动画中的各帧动画的所述目标变化量。
进一步地,本申请实施例还提供了一种电子设备,如图7所示,所述电子设备包括处理器71、存储器72、存储在所述存储器72可供所述处理器71执行的计算机程序,所述处理器71执行所述计算机程序时实现上述实施例任一项所述的方法。
相应地,本申请实施例还提供一种计算机存储介质,所述存储介质中存储有程序,所述程序被处理器执行时实现上述任一实施例中所述的方法。
本说明书实施例可采用在一个或多个其中包含有程序代码的存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。计算机可用存储介质包括永久性和非永久性、可移动和非可移动媒体,可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括但不限于:相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。
对于装置实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
本领域技术人员在考虑说明书及实践这里公开的说明书后,将容易想到本公开的其它实施方案。本公开旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和精神由下面的权利要求指出。
应当理解的是,本公开并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本公开的范围仅由所附的权利要求来限制。
以上所述仅为本公开的较佳实施例而已,并不用以限制本公开,凡在本公开的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本公开保护的范围之内。
Claims (13)
1.一种三维模型穿插修复的方法,其特征在于,所述方法包括:
获取待进行穿插修复的原始三维模型;
针对所述原始三维模型中的每个肢体部位,生成用于模拟所述每个肢体部位的几何体,以得到多个几何体;
基于所述原始三维模型的肢体部位处于不同位姿下所述多个几何体之间的相交情况,确定所述原始三维模型的肢体部位的位姿的目标变化量;
基于所述目标变化量对所述原始三维模型的肢体部位的位姿进行调整,以得到穿插修复后的目标三维模型。
2.根据权利要求1所述的方法,其特征在于,所述原始三维模型包括多个,每个所述原始三维模型对应目标动画中的一帧动画,所述目标动画通过将源动画重定向至预设的三维模型中得到。
3.根据权利要求1所述的方法,其特征在于,所述原始三维模型为三维网格模型,针对所述原始三维模型中的每个肢体部位,生成用于模拟所述每个肢体部位的几何体,包括:
获取所述每个肢体部位对应的目标网格顶点的位置信息;
基于所述目标网格顶点的位置信息确定用于模拟所述每个肢体部位的几何体的形状参数的目标值和位姿参数的目标值,所述形状参数用于指示所述几何体的形状,所述位姿参数用于指示所述几何体的位姿。
4.根据权利要求3所述的方法,其特征在于,所述目标网格顶点基于以下方式确定,包括:
确所述原始三维模型中各网格顶点的蒙皮权重,所述蒙皮权重用于表征所述每个肢体部位对应的骨骼对各网格顶点的影响大小;
将所述蒙皮权重大于预设阈值的网格顶点作为所述每个肢体部位对应的目标网格顶点。
5.根据权利要求3所述的方法,其特征在于,所述位置信息包括所述目标网格顶点的位置坐标,基于所述目标网格顶点的位置信息确定用于模拟所述每个肢体部位的几何体的形状参数的目标值和所述位姿参数的目标值,包括:
基于所述目标网格顶点的位置坐标的平均值确定所述位姿参数的初始值;
基于所述目标网格顶点的位置坐标的最大值,以及所述目标网格顶点的位置坐标的最小值确定所述形状参数的初始值;
以所述几何体包围所有所述目标网格顶点作为约束,以最小化所述几何体的体积作为优化目标,对所述位姿参数的初始值以及所述形状参数的初始值进行优化,以得到所述位置参数的目标值以及所述形状参数的目标值。
6.根据权利要求3所述的方法,其特征在于,所述几何体之间的相交情况基于所述几何体的形状参数的目标值,以及所述几何体的位置参数的目标值确定。
7.根据权利要求1所述的方法,其特征在于,基于所述原始三维模型的各肢体部位处于不同位姿下所述多个几何体之间的相交情况,确定所述原始三维模型的各肢体部位的位姿的目标变化量,包括:
从所述多个几何体中确定一个或多个几何体对,每个几何体对对应的肢体部位对为待进行穿插修复的肢体部位对;
基于所述原始三维模型的肢体部位处于不同位姿下所述一个或多个几何体对之间的相交情况,确定所述原始三维模型的肢体部位的位姿的目标变化量。
8.根据权利要求7所述的方法,其特征在于,所述相交情况包括每个几何体对之间的穿插深度,所述穿插深度为每个几何体对中的两个几何体在所述两个几何体的中心连线方向上的重叠距离。
9.根据权利要求8所述的方法,其特征在于,基于所述原始三维模型的肢体部位处于不同位姿下所述一个或多个几何体对之间的相交情况,确定所述原始三维模型的肢体部位的位姿的目标变化量,包括:
以所述穿插深度小于预设距离阈值作为约束,以最小化所述肢体部位位姿的变化量作为优化目标,对所述肢体部位位姿的变化量进行优化,以得到所述目标变化量。
10.根据权利要求9所述的方法,其特征在于,所述原始三维模型包括多帧动画中的三维模型,所述约束为每帧动画中的所述原始三维模型的所述穿插深度均小于预设距离阈值,所述优化目标为最小化所述多帧动画中的原始三维模型的肢体部位位姿的变化量的平均值。
11.根据权利要求8所述的方法,其特征在于,所述原始三维模型包括多帧动画中的三维模型,所述方法还包括:
将所述多帧动画分割成多段动画,相邻两段动画之间存在重叠帧;
基于所述原始三维模型的肢体部位处于不同位姿下所述一个或多个几何体对之间的相交情况,确定所述原始三维模型的肢体部位的位姿的目标变化量,包括:
针对所述多段动画中的每段动画,以所述每段动画中的各帧动画的原始三维模型的所述穿插深度均小于预设距离阈值,以及相邻两段动画的重叠帧的所述目标变化量一致作为约束,以最小化所述每段动画中的原始三维模型的肢体部位位姿的变化量的平均值作为优化目标,对所述每段动画中原始三维模型的肢体部位位姿的变化量进行优化,以得到每段动画中的各帧动画的所述目标变化量。
12.一种三维模型穿插修复的装置,其特征在于,所述装置包括:
获取模块,用于获取待进行穿插修复的原始三维模型;
几何体生成模块,用于针对所述原始三维模型中的每个肢体部位,生成用于模拟所述每个肢体部位的几何体,以得到多个几何体;
目标变化量确定模块,用于基于所述原始三维模型的肢体部位处于不同位姿下所述多个几何体之间的相交情况,确定所述原始三维模型的肢体部位的位姿的目标变化量;
调整模块,用于基于所述目标变化量对所述原始三维模型的肢体部位的位姿进行调整,以得到穿插修复后的目标三维模型。
13.一种电子设备,其特征在于,所述电子设备包括处理器、存储器、存储在所述存储器可供所述处理器执行的计算机程序,所述处理器执行所述计算机程序时实现权利要求1-11任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111155035.9A CN113888680A (zh) | 2021-09-29 | 2021-09-29 | 一种三维模型穿插修复的方法、装置及设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111155035.9A CN113888680A (zh) | 2021-09-29 | 2021-09-29 | 一种三维模型穿插修复的方法、装置及设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113888680A true CN113888680A (zh) | 2022-01-04 |
Family
ID=79008464
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111155035.9A Pending CN113888680A (zh) | 2021-09-29 | 2021-09-29 | 一种三维模型穿插修复的方法、装置及设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113888680A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116206026A (zh) * | 2023-05-06 | 2023-06-02 | 腾讯科技(深圳)有限公司 | 轨迹信息处理方法、装置、计算机设备和可读存储介质 |
WO2023207477A1 (zh) * | 2022-04-27 | 2023-11-02 | 腾讯科技(深圳)有限公司 | 动画数据修复方法、装置、设备、存储介质及程序产品 |
-
2021
- 2021-09-29 CN CN202111155035.9A patent/CN113888680A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2023207477A1 (zh) * | 2022-04-27 | 2023-11-02 | 腾讯科技(深圳)有限公司 | 动画数据修复方法、装置、设备、存储介质及程序产品 |
CN116206026A (zh) * | 2023-05-06 | 2023-06-02 | 腾讯科技(深圳)有限公司 | 轨迹信息处理方法、装置、计算机设备和可读存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8797328B2 (en) | Automatic generation of 3D character animation from 3D meshes | |
US9378589B2 (en) | Apparatus and method for generating digital clone | |
Wilhelms et al. | Anatomically based modeling | |
CN113888680A (zh) | 一种三维模型穿插修复的方法、装置及设备 | |
US20100156935A1 (en) | Method and apparatus for deforming shape of three dimensional human body model | |
US10984578B2 (en) | Method and system for directly manipulating the constrained model of a computer-generated character | |
US20210125393A1 (en) | Parameterized animation modifications | |
US10242498B1 (en) | Physics based garment simulation systems and methods | |
JP4719155B2 (ja) | リグ・ベーキング | |
CN112530005A (zh) | 一种三维模型直线结构识别与自动修复方法 | |
US10373373B2 (en) | Systems and methods for reducing the stimulation time of physics based garment simulations | |
CN113034691A (zh) | 人体模型的骨骼绑定方法、装置及电子设备 | |
US20230120883A1 (en) | Inferred skeletal structure for practical 3d assets | |
US11631209B2 (en) | Systems and methods for computer animation using an order of operations deformation engine | |
CN114333482A (zh) | 一种基于混合现实技术的虚拟解剖教学系统 | |
US10636210B2 (en) | Dynamic contour volume deformation | |
KR100636381B1 (ko) | 인간과 유사한 신체 반응을 가지도록 하기 위한 캐릭터애니메이션 시스템 및 그 방법 | |
KR100332648B1 (ko) | 캐릭터애니메이션을위한인체의모델링방법 | |
Rechowicz et al. | Simulation of the critical steps of the Nuss procedure | |
CN116805344B (zh) | 一种数字人动作重定向方法及装置 | |
Gazizov et al. | Modification of Skeletal Character Animation Using Inverse Kinematics Controllers | |
Anderson | Tessellation shader detail implementation for simple surfaces using OpenGL | |
CN115984507A (zh) | 一种多维时序生物力学有限元结果沉浸式可视化方法 | |
Rajendran | Understanding the Desired Approach for Animating Procedurally | |
CN115690283A (zh) | 基于体感技术的二维动画制作方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |