CN115908651A - 一种三维人体模型与骨架的同步更新方法及电子设备 - Google Patents
一种三维人体模型与骨架的同步更新方法及电子设备 Download PDFInfo
- Publication number
- CN115908651A CN115908651A CN202211211710.XA CN202211211710A CN115908651A CN 115908651 A CN115908651 A CN 115908651A CN 202211211710 A CN202211211710 A CN 202211211710A CN 115908651 A CN115908651 A CN 115908651A
- Authority
- CN
- China
- Prior art keywords
- skeleton
- node
- bone
- nodes
- human body
- 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
Images
Landscapes
- Processing Or Creating Images (AREA)
Abstract
本申请涉及虚拟现实技术领域,提供一种三维人体模型与骨架的同步更新方法及电子设备,通过对初始三维人体模型与预设骨架进行初始化,确定每个骨骼节点关联的多个目标几何顶点、每个目标几何顶点对应的影响权重、以及子骨骼节点和父骨骼节点间的缩放比例。采用非骨骼动画方式驱动初始三维人体模型,根据驱动后几何顶点的三维坐标以及初始化结果,反向推算各骨骼节点的三维坐标,并根据各骨骼节点的三维坐标,更新预设骨架的骨骼结构,得到与目标三维人体模型匹配的骨架,保证了模型动画过程中骨架的一致性,从而实现三维人体模型驱动后骨架的同步更新,进而提高了基于更新后的骨架进行骨骼动画时模型的真实性,节省了动画数据占用的存储空间。
Description
技术领域
本申请涉及虚拟现实技术领域,提供一种三维人体模型与骨架的同步更新方法及电子设备。
背景技术
虚拟人动画技术作为虚拟现实的重要组成部分,已成为系统仿真、三维动画以及游戏娱乐等场景中不可或缺的技术。
目前,虚拟人动画技术主要包括顶点动画和骨骼动画两种模型动画方式。其中,顶点动画过程中,每帧动画都是三维模型的一个特定姿态,通过关键帧技术,在帧与帧之间进行插值,来产生平滑的虚拟人运动。而在骨骼动画过程中,将三维模型表面的几何顶点与三维模型内部互相连接的″骨骼节点″组成的骨架绑定骨骼后,通过改变骨骼节点的朝向和位置实现虚拟人动画。由于骨骼动画不需要存储每一帧模型的顶点数据,只需要存储一套骨骼数据,相比于顶点动画,骨骼动画占用的存储空间更小,应用也更为广泛。
为了降低虚拟人动画占用的存储空间,往往会对预设三维人体模型绑定一个骨架,后续采用骨骼动画的形式来实时驱动模型的姿态,该动画方式虽然在一定程度上减小了存储空间压力,但同时也因骨架与实时驱动过程中的三维人体模型不匹配,带来了动画灵活性差、模型真实度低的问题。
因此,为三维人体模型提供一个匹配的骨架具有重要的研究意义。
发明内容
本申请实施例提供了一种三维人体模型与骨架的同步更新方法及电子设备,用于提高骨骼动画时三维人体模型的真实性和灵活性。
一方面,本申请实施例提供一种三维人体模型与骨架的同步更新方法,包括:
根据与初始三维人体模型绑定的预设骨架中各骨骼节点间的父子关系,对所述初始三维人体模型中的几何顶点与所述预设骨架中的骨骼节点进行初始化,确定所述各骨骼节点的初始参数;
获取所述初始三维人体模型对应的顶点数据,并根据所述顶点数据,驱动所述初始三维人体模型,得到目标三维人体模型;
根据所述目标三维人体模型中几何顶点的三维坐标以及各初始参数,确定所述各骨骼节点的三维坐标;
根据所述各骨骼节点的三维坐标以及所述各骨骼节点间的父子关系,更新用于对所述目标三维人体模型进行骨骼动画的骨架。
另一方面,本申请实施例提供一种电子设备,包括处理器和存储器,所述处理器和所述处理器通过总线连接,存储器存储有计算机程序,所述处理器根据所述计算机程序,执行以下操作:
根据与初始三维人体模型绑定的预设骨架中各骨骼节点间的父子关系,对所述初始三维人体模型中的几何顶点与所述预设骨架中的骨骼节点进行初始化,确定所述各骨骼节点的初始参数;
获取所述初始三维人体模型对应的顶点数据,并根据所述顶点数据,驱动所述初始三维人体模型,得到目标三维人体模型;
根据所述目标三维人体模型中几何顶点的三维坐标以及各初始参数,确定所述各骨骼节点的三维坐标;
根据所述各骨骼节点的三维坐标以及所述各骨骼节点间的父子关系,更新用于对所述目标三维人体模型进行骨骼动画的骨架。
另一方面,本申请实施例提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机可执行指令,所述计算机可执行指令用于使计算机设备执行本申请实施例提供的三维人体模型与骨架的同步更新方法。
本申请实施例提供的一种三维人体模型与骨架的同步更新方法及电子设备中,为初始三维人体模型绑定一个预设骨架,根据预设骨架中各骨骼节点间的父子关系,初始化初始三维人体模型的几何顶点和骨骼节点,得到各骨骼节点的初始参数以用于后续骨架更新。初始化完成后,用获取的顶点数据驱动初始三维人体模型,根据驱动后的目标三维人体模型中几何顶点的三维坐标以及各骨骼节点的初始参数,确定各骨骼节点的三维坐标,并根据各骨骼节点的三维坐标以及各骨骼节点间的父子关系,更新预设骨架,得到与目标三维人体模型匹配的骨架。由于是对预设骨架进行的更新,更新过程不会大幅度移动骨骼位置,骨骼节点的组织结构不会发生变化,维持了预设骨架原有的结构与骨骼节点数量、以及原始的骨骼蒙皮数据,保证了模型动画过程中骨架的一致性,从而能够基于更新后的骨架对目标三维模型进行骨骼动画驱动,提高了骨骼动画的真实性和灵活性。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例提供的以非骨骼动画方式驱动三维人体模型后更新骨架的整体架构图;
图2A为本申请实施例提供的T pose姿态的初始三维人体模型的示意图;
图2B为本申请实施例提供的适配初始三维人体模型的T pose骨架;
图2C为本申请实施例提供的初始三维人体模型与预设骨架的绑定关系图;
图3为本申请实施例提供的三维人体模型与骨架的同步更新方法流程图;
图4为本申请实施例提供的对初始三维人体模型和预设骨架进行初始化的方法流程图;
图5为本申请实施例提供的计算各目标几何顶点对关键的骨骼节点的影响权重流程图;
图6为本申请实施例提供的计算各目标几何顶点的质心在骨骼长度上的占比流程图;
图7为本申请实施例提供的推算驱动后各骨骼节点的三维坐标的方法流程图;
图8为本申请实施例提供的确定驱动后各骨骼节点间局部变换矩阵的方法流程图;
图9为本申请实施例提供的三维人体模型和骨架同步更新的完整流程图;
图10为本申请实施例提供电子设备结构图。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请技术方案的一部分实施例,而不是全部的实施例。基于本申请文件中记载的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请技术方案保护的范围。
虚拟人动画技术主要包括顶点动画和骨骼动画两种模型动画方式,相比于顶点动画,由于骨骼动画不需要存储每一帧模型的顶点数据,只需要存储一套骨骼数据,骨骼动画占用的存储空间更小,因此,在进行虚拟人动画时,往往采用骨骼动画方式,预先设计好初始状态下的三维人体模型和绑定骨架的结构,通过调整骨骼数据改变三维人体模型的动作,从而驱动三维人体模型与骨骼同步变化。
大多数的虚拟人动画方法主要集中在三维人体模型的躯体动作方面,甚至能够通过将不同的骨骼动画数据结合在一起,来驱动人体完成更复杂的运动。但对于三维人体模型的细节处(如:面部表情,手部等)要求较高的场景中(如:虚拟直播、手势识别等),如果采用骨骼动画方式,为保证模型的细节信息,需要在细节处添加很多骨骼节点,而且要精细地频繁调整细节处骨骼节点的位置。因此,无论是出于骨架制作的工作量,还是细节处骨架结构的复杂程度,传统的骨骼动画都难以满足此类场景的需求。
目前,对于细节精度要求较高的场景中,相关技术在虚拟人动画时,一般是在三维人体模型的细节处(如:头部、手部等)设置结构较为简单的骨骼,然后使用Maya动画软件中的BlendShape组件来驱动模型细节处的变化。这样,当细节处的顶点数据发生变化时,通过对人体几何模型进行渲染,可以显示出高精度的细节信息。然而,为减小了存储空间压力,当后续对三维人体模型进行骨骼动画时,便需要实时提取现有模型姿态下的骨架结构,并以提取出的骨架为基准进行骨骼动画来保正骨架与模型同步。若直接使用原始的骨架进行骨骼动画,骨架和驱动后的三维人体模型之间会存在偏差,影响模型的真实性和动画操作的灵活性。
其中,从三维人体模型中提取骨架的方法主要两种:一种是基于静态模型的提取方法,该方法针对某一特定姿态下的静态三维人体模型,通过对三维人体模型的几何特征进行分析来提取骨骼节点的位置,从而提取出模型骨架。另一种是基于动态模型的提取方法,该方法根据同一个人体的不同姿态的动画序列组成动态三维人体模型,并以其中一个姿态作为参考姿态,计算参考姿态到其他姿态间的变换矩阵,基于计算出的变换矩阵对模型的顶点或面片进行聚类,根据类的邻接情况确定骨骼节点的位置,从而提取出模型骨架。然而,这两种骨架的提取方法都很难准确定位到骨骼节点的位置信息,且因为是重新计算变化后三维人体模型的骨架,会丢失原有的骨架结构和骨骼蒙皮信息。
鉴于此,本申请实施例提供一种三维人体模型与骨架的同步更新方法及电子设备,先为初始三维人体模型绑定了一个预设骨架,再使用非骨骼动画(如顶点动画)方式驱动初始三维人体模型变换后,反推算出预设骨架中各骨骼节点的位置,并基于各骨骼节点间的位置,得到各骨骼节点间的位姿信息,获得更新后用于骨骼动画的骨架,从而将三维人体模型驱动和骨架生成有机融合起来,实现当初始三维人体模型姿态变化后,所绑定的预设骨架自适应同步更新的过程,减少了模型与骨架之间的误差,提高了骨骼动画的真实性和灵活性。并且,本申请实施例在顶点动画和骨骼动画的基础上进行了一定的拓展延伸,相比于顶点动画,基于更细后的骨架进行骨骼驱动时,占用的存储空间更小,也克服了在细节变化较丰富的位置处设置很多骨骼节点所引入的高工作量和复杂的骨骼结构。同时,本申请实施例中与模型驱动后同步的骨架是基于预设骨架的结构计算骨骼节点间的位姿,维持了原有的骨架结构与骨骼节点数量、以及原始的骨骼蒙皮数据,相比于直接从模型中实时提取骨架的方法,保证了模型动画过程中骨架的一致性。
虚拟人动画技术中,绑定了骨架的三维人体模型往往会以骨骼动画的方式进行驱动,驱动后,三维人体模型表面的几何数据和内部的骨骼节点会同步变化,但细节的精细程度较低。而以顶点动画的方式驱动三维人体模型后,仅改变了三维人体模型表明的几何数据,内部的骨骼节点不会同步变化。
针对一些对三维人体模型细节要求较高的场景,往往采用顶点动画的方式来保留三维人体模型更多的细节信息。本申请实施例旨在三维人体模型被以非骨骼动画的方式驱动后,骨架能够与三维人体模型同步更新,从而后续进行骨骼动画方式驱动,实现顶点动画和骨骼动画的优势互补。
参见图1,为本申请实施例提供的以非骨骼动画方式驱动三维人体模型后更新骨架的整体架构图,主要包括数据源准备部分和逻辑计算部分。
图1中的数据源准备部分,用于重建初始三维人体模型,以及搭建一个与初始三维人体模型绑定的预设骨架,初始三维人体模型与预设骨架处于同一空间坐标系。
如图2A所示,为本申请实施例提供的T pose姿态的初始三维人体模型的示意图,通过局部放大可知,初始三维人体模型的表面由多个几何顶点连接的面片组成。
如图2B所示,为本申请实施例提供的适配初始三维人体模型的T pose骨架。在图2B中,该预设骨架包含24个相互连接的骨骼节点,各骨骼节点间存在父子关系,在图2B中用箭头表示。其中,一个父节点可以有一个或多个子节点,一个子节点(根节点除外)只有一个父节点,例如,编号为0的骨骼节点为根节点,是编号为1和2的骨骼节点的父节点,编号为15的骨骼节点是编号为12的骨骼节点的子节点。
图2A中的初始三维人体模型与图2B中的预设骨架的适配关系如图2C所示,通过改变预设骨架中各骨骼节点的位姿,从而改变初始三维人体模型的姿态。
为了保证虚拟人动画的真实性,在数据源准备部分,重建的初始三维人体模型和搭建的预设骨架满足以下至少一个条件:
1)初始三维人体模型中,相邻区域内几何顶点的密度分布较为均匀。
2)初始三维人体模型中,在躯干等整体较为平滑的身体部位,几何顶点的密度相对较低,这样可以减少数据计算量,降低了图形渲染的负担和虚拟人交互过程中的数据传输压力;在面部、手部等特征比较丰富的部位,几何顶点的密度相对密集,以便能够呈现出人体更多的细节信息(如:面部表情和手势等);
3)预设骨架中,骨骼节点层次结构完整、层级深度大于预设深度阈值,全局包含能够反映人体运动姿态的主要的关节信息(如:手肘、手腕、颈部等),局部包含能够反映指关节等细节信息,如图2B所示;
4)预设骨架中,各骨骼节点几何坐标(即三维坐标)的设置与初始三维人体模型的姿态匹配,如图2C所示;
5)预设骨架中骨骼节点和初始三维人体模型中几何顶点之间存在关联关系。
基于数据源准备部分重建的初始三维人体模型和搭建的预设骨架,在逻辑计算部分,首先采用非骨骼动画方式驱动初始三维人体模型,然后根据驱动后目标三维人体模型中的几何顶点,计算已绑定骨架的各骨骼节点的三维坐标,最后根据各骨骼节点的三维坐标,对预设骨架的结构进行更新,得到与目标三维人体模型同步的骨架。
下面对本申请实施例提供的三维人体模型与骨架的同步更新方法进行详细说明。
参见图3,为本申请实施例提供的三维人体模型与骨架的同步更新方法流程图,该流程主要包括以下几步:
S301:根据与初始三维人体模型绑定的预设骨架中各骨骼节点间的父子关系,对初始三维人体模型中的几何顶点与预设骨架中的骨骼节点进行初始化,确定各骨骼节点的初始参数。
骨骼动画中,一个模型中几何顶点的位置,可能会受多个骨骼节点的影响,且一个骨骼节点也会对多个几何顶点产生影响,也就是说,骨架中的骨骼节点和模型中几何顶点之间是多对多的关联关系。另一方面,每个骨骼节点对模型的影响大小不同,而影响大小可以通过为每个模型中的几何顶点赋予受各骨骼节点的影响权重,且各骨骼节点对存在关联关系的一个几何顶点的影响权重和为1,因此,通过线性加权的方式,可以得到骨骼动画后模型中几何顶点的位置坐标。
反向推知,当人体几何模型率先改变时,利用骨骼节点与几何顶点间的关联关系,也可以为各几何顶点赋予对存在关联关系的骨骼节点的影响权重,采用类似骨骼动画的线性加权方法,从而根据改变后的人体几何模型中几何顶点的位置坐标,推算出存在关联关系的骨骼节点的位置坐标。
因此,在S301中,本申请实施例根据与初始三维人体模型绑定的预设骨架中各骨骼节点间的父子关系进行了初始化操作,以获得反向推理过程中所需的预设骨架中每个骨骼节点关联的初始三维人体模型中的目标几何顶点,每个目标几何顶点对相应骨骼节点的三维坐标的影响权重,以及存在父子关系的骨骼节点间的缩放比例。
具体初始化过程参见图4,针对每一个骨骼节点,执行以下操作:
S3011:将初始三维人体模型中距离当前骨骼节点最近的多个目标几何顶点与骨骼节点关联。
在骨骼动画中,当父骨骼节点发生变化时,会带动子骨骼节点也发生变化,同时导致子骨骼节点影响的M(M≥1)个几何顶点也发生变化。但当子骨骼节点的变化时,却不会导致父骨骼节点发生变化,也不会导致所有受父骨骼节点影响的几何顶点发生变化。
例如,以人体旋转胳膊的动作为例,当肩膀处关节点移动时,会带动手肘处关节点发生移动,并导致整个手臂的运动。而手肘处关节点的运动,却不一定是由于肩膀处关节点的运动所导致的,且只会带动人体几何模型小臂区域的几何顶点的变化,不会影响人体几何模型大臂区域的几何顶点。
基于运动学原理,本申请实施例中,在反向推算几何顶点对骨骼节点的三维坐标的影响权重时,未使用受当前骨骼节点影响的所有几何顶点,而是使用骨骼节点周边的几何顶点,在提高计算精度的同时,减少了计算复杂度。
在虚拟世界中,每个骨骼可以理解为一个坐标空间,骨骼节点则可以理解为骨骼坐标空间的原点,子骨骼节点的位置由它在父骨骼节点的坐标空间中的位置描述,骨骼的层次就是嵌套的坐标空间。因此,骨骼节点的位置用该骨骼节点的坐标空间原点在其父骨骼节点的坐标空间中的局部位置描述,绕骨骼节点旋转是指骨骼节点的坐标空间(包括所有子骨骼节点的坐标空间)自身的旋转,也就是说,骨骼节点的位姿就是一个仿射变换(包括平移变换、旋转变换和缩放变换)。
假设,编号为j骨骼节点相对于其父节点的仿射变换表示为Pj,仿射变换Pj为4×44×4的矩阵,Pj由平移向量Tj、旋转矩阵Rj以及对角缩放矩阵Sj组成,即Pj=RjTjSj。
在虚拟人动画技术中,骨骼结构表征了子骨骼节点和父骨骼节点间的仿射变换关系。在初始化过程中,为了计算当前骨骼节点以根节点(如图2B中编号为0的骨骼节点)为原点的坐标空间下的全局位姿,可遍历当前骨骼节点一直到根节点,将每层骨骼节点相对于其父节点的仿射变换矩阵累乘,便可以得到当前骨骼节点与根节点间的仿射变换矩阵。
假设,根节点为骨骼结构的第0层,当前骨骼节点位于骨骼结构的第K层,那么当前骨骼节点在以根节点为原点的坐标空间中初始的三维坐标可以表示为:
Pk=P1*P2*…*Pk 公式1
因此,在S3011中,针对每个骨骼节点,在预设骨架与初始三维人体模型处于同一空间坐标系的原始状态下,遍历初始三维人体模型中的每个几何顶点,获取每个几何顶点初始的三维坐标,同时,获取当前骨骼节点初始的三维坐标,采用K近邻算法,分别计算每个几何顶点到当前骨骼节点的距离,进一步地,根据计算的各个距离,选取N(N<M)个距离当前骨骼节点最近的几何顶点,并将选取的N个几何顶点作为与当前骨骼节点关联的目标几何顶点,并记录这N个几何顶点全局的三维坐标,以及这N个几何顶点在初始三维人体模型中的编号。
需要说明的是,N的数值可根据与骨骼节点相连接的骨骼尺寸进行自适应调节。例如,对于手臂等尺寸较大的骨骼,N的数量也可以相对较大,而对于如手指骨等尺寸较小的骨骼,N的数值可以相对较小。
获得距离当前骨骼节点最近的N个目标几何节点后,基于这N个几何顶点对当前骨骼节点的三维坐标的影响权重,具体参见S3012-S3016。
S3012:确定当前骨骼节点是否为根节点,若否,则执行S3013,若是则结束。
由于父骨骼节点的变化,会带动子骨骼节点的变化。因此在反向推算骨骼节点的位置时,可按照预设骨架中各骨骼节点间的父子关系,采用从上到下的顺序逐步计算。但考虑到根节点(如图2C所示的人体几何模型位于两脚心正中编号为0的骨骼节点)没有父节点,因此,需要确定当前骨骼节点是否为根节点。由于根节点仅用作骨骼坐标系原点定位,不参与骨骼动画驱动,是保持不变的,因此,当当前骨骼节点为根节点时,结束三维坐标推算过程。
S3013:以当前骨骼节点与当前骨骼节点的父节点为法向量,建立一个经过当前骨骼节点的虚拟平面。
当当前骨骼节点为非根节点,也就是说当前骨骼节点为子节点,其存在父节点,因此,可以采用点法式,以当前骨骼节点和其父节点为法向量,经过当前骨骼节点建立一个虚拟平面。
S3014:确定初始三维人体模型中与骨骼节点最近的多个目标几何顶点,是否分在虚拟平面的两侧,若是,则执行S3015,否则,执行S3016。
假设建立的虚拟平面的方程为:Ax+By+Cz+D=0,通过计算与当前骨骼节点关联的N个目标几何顶点到虚拟平面的距离,可以确定初始三维人体模型中与骨骼节点最近的N个目标几何顶点与虚拟平面间的分布状态。其中,距离d1计算公式为:
其中,(x1,y1,z1)为1个目标几何顶点中的三维坐标。
由于虚拟平面是经过当前骨骼节点的,因此,在S3014中,根据初始三维人体模型中与当前骨骼节点关联的N个目标几何顶点到虚拟显示平面的距离d1的正负,可以确定初始三维人体模型中N个目标几何顶点与虚拟平面间的分布状态。具体的,统计初始三维人体模型中N个目标几何顶点到虚拟显示平面的距离d1中,d1大于0的数量(记为n1),以及d1小于0的数量(记为n2),当n1和n2均不为0时,表明初始三维人体模型中N个目标几何顶点分别分布在虚拟平面的两侧,这种情况一般针对位于骨架结构中间层级的骨骼节点,模型的几何顶点离散分布在骨骼节点周围;当n1或n2均为0时,表明初始三维人体模型中N个目标几何顶点分布在虚拟平面的同侧,这种情况一般针对骨架结构最末端的子骨骼节点,如手指头位置处的骨骼节点。
S3015:确定初始三维人体模型中多个目标几何点分别对当前骨骼节点的三维坐标的影响权重。
在S3015中,当初始三维人体模型中与骨骼节点最近的多个目标几何顶点分布在虚拟平面的两侧时,分别计算每个目标几何顶点对当前骨骼节点的三维坐标的影响权重。
考虑到初始三维人体模型中不同区域的几何顶点的密度大小可能不一致,因此,在S3015中,可根据每个目标几何顶点到当前骨骼节点的第一几何距离,确定相应目标几何顶点对当前骨骼节点的三维坐标的影响权重。
影响权重的计算过程参见图5,主要包括以下几步:
S3015_1:分别计算初始三维人体模型中多个目标几何点到当前骨骼节点的第一几何距离。
S3015_2:将各第一几何距离的倒数作为相应目标几何顶点对骨骼节点的三维坐标的影响权重,并对各影响权重进行归一化。
以N个目标几何顶点中的一个为例,根据该目标几何顶点的三维坐标,以及当前骨骼节点的三维坐标,计算该目标几何顶点到当前骨骼节点的第一几何距离d2,取第一几何距离d2的倒数1/d2,将1/d2作为该目标几何顶点对当前骨骼节点的三维坐标的影响权重ω。其中,第一几何距离越小,表示目标几何顶点距离当前骨骼节点越近,赋予的权重越大。
得到N个目标几何顶点分别对当前骨骼节点的三维坐标的影响权重后,对N个影响权重进行归一化处理,令N个影响权重的和为1。
S3016:根据初始三维人体模型中多个目标几何顶点的质心,确定骨骼节点与骨骼节点的父节点间的缩放比例。
当初始三维人体模型中与骨骼节点最近的多个目标几何顶点分布在虚拟平面的同侧时,后续如果采用邻近点加权的方式推算骨骼节点,推算出的骨骼节点的三维坐标必将会向一侧(如向掌心方向)偏移。针对这种情况,在S3016中,通过计算N个目标几何节点的质心在骨骼长度上的占比,以推算当前骨骼节点的理论位置。
其中,占比计算过程参见图6,主要包括以下几步:
S3061_1:计算当前骨骼节点与当前骨骼节点的父节点间的骨骼长度,以及计算初始三维人体模型中多个目标几何顶点的质心到当前骨骼节点的父节点间的第二几何距离。
在S3061_1中,首先,确定初始三维人体模型中N个目标几何顶点的质心,然后,计算质心到当前骨骼节点的父节点间的第二几何距离d,同时,根据当前骨骼节点的三维坐标,以及当前骨骼节点的父节点的三维坐标,计算父子节点间的骨骼长度L。
S3061_2:将第二几何距离占骨骼长度的比例,作为当前骨骼节点与当前骨骼节点的父节点间的缩放比例。
在S3061_2中,质心在骨骼长度L上的占比rate为d/L,即第二几何距离占骨骼长度的比例rate=d/L,并将rate作为当前骨骼节点与当前骨骼节点的父节点间的缩放比例。
在S301中,对初始三维人体模型中的几何顶点与预设骨架中的骨骼节点进行初始化后,可以得到每个骨骼节点关联的初始三维人体模型中的目标几何顶点,每个目标几何顶点对相应骨骼节点的三维坐标的影响权重,以及存在父子关系的骨骼节点间的缩放比例等初始参数。基于该初始参数,实现非骨骼动画方式驱动后,三维人体模型与骨架的同步更新,具体描述参见S302-S304。
S302:获取初始三维人体模型对应的顶点数据,并根据顶点数据,驱动初始三维人体模型,得到目标三维人体模型。
其中,顶点数据可以是测量得到的,也可以是动画师设置的,并且,顶点数据可以针对初始三维人体模型的全局数据,也可以是针对初始三维人体模型某个部位的局部数据。
例如,初始三维人体模型的身高参数为1.5,通过采集的点云数据获得目标对象的实际身高为1.8,则将实际身高1.8作为顶点数据,驱动初始三维人体模型,得到反映目标对象真实身高的目标三维人体模型。然而,预设骨架是与身高参数为1.5的初始三维人体模型适配的,采用顶点动画的方式,初始三维人体模型的几何顶点虽然发生了变化,但内部的骨架并未发生变化,这样,就会导致预设骨架与真实身高为1.8的目标三维人体不匹配,因此,需要对预设骨架进行更新,减少预设骨架与目标三维人体模型间的偏差,实现与目标三维人体模型的同步。
S303:根据目标三维人体模型中几何顶点的三维坐标以及各初始参数,确定各骨骼节点的三维坐标。
在S303中,通过初始化过程,可以获得每个骨骼节点的初始参数,至少包括该骨骼节点关联的多个目标几何顶点分别对该骨骼节点的三维坐标的影响权重,以及该骨骼节点与该骨骼节点的父节点间的缩放比例。
根据骨骼节点在骨骼结构中的层次不同,顶点动画后目标三维人体模型的几何顶点在骨骼节点周围的分布状态不同,因此,在303中,骨骼节点三维坐标的计算方法也不同。
以一个骨骼节点为例,顶点动画后骨骼节点三维坐标的推算过程参见图7,主要包括以下几步:
S3031:确定当前骨骼节点是否为根节点,若是,则结束,若否,则执行S3032。
由于根节点仅用作骨骼坐标系原点定位,不参与骨骼动画驱动,是保持不变的,因此,当当前骨骼节点为根节点时,结束三维坐标推算过程。而顶点动画后初始三维人体模型中的几何顶点的三维坐标发生了变换,但与当前骨骼节点关联的N个目标几何顶点并未发生变化,因此,当当前骨骼节点不为根节点时,则根据顶点动画后目标三维人体模型中与当前骨骼节点关联的N个目标几何顶点的三维坐标,反向推算当前骨骼节点的三维坐标。
S3032:确定目标三维人体模型中与当前骨骼节点关联的多个目标几何顶点,是否分布在虚拟平面的两侧,若是,则执行S3033,若否,则执行S3034。
骨骼节点的三维坐标更新前是不变的,且骨骼结构中的父子关系也是不变的,因此,S3032中的虚拟平面为初始化过程中以当前骨骼节点与当前骨骼节点的父节点为法向量,经过当前骨骼节点建立的。基于虚拟平面,可以确定顶点动画后目标三维人体模型中与当前骨骼节点关联的多个目标几何顶点的分布状态,从而确定推算当前骨骼节点的三维坐标的方式。
具体的,重新计算目标三维人体模型中,与当前骨骼节点关联的N个目标几何顶点到虚拟显示平面的距离,分别统计N个距离中大于0的数量n1’和小于0的数量n2’,当n1’和n2’均不为0时,表明驱动后的目标三维人体模型中的N个目标几何顶点分别分布在虚拟平面的两侧,即当前骨骼节点位于骨架结构的中间层级,目标三维人体模型中的N个目标几何顶点离散分布在当前骨骼节点周围;当n1’或n2’为0时,表明驱动后的目标三维人体模型中N个目标几何顶点分布在虚拟平面的同侧,即当前骨骼节点位于骨架结构的最末端。
S3033:根据当前骨骼节点关联的多个目标几何顶点分别对当前骨骼节点的三维坐标的影响权重,对目标三维人体模型中的多个目标几何顶点的三维坐标进行加权,确定当前骨骼节点的三维坐标。
在S3033中,当目标三维人体模型中与当前骨骼节点关联的N个目标几何顶点,分布在经过当前骨骼节点的虚拟平面的两侧时,通过初始化过程,已经得到了N个目标几何顶点分别对当前骨骼节点的三维坐标的影响权重,这样,对目标三维人体模型中的多个目标几何顶点的三维坐标进行线性加权后,可以反向推算出模型驱动后当前骨骼节点全局的三维坐标。
假设,与当前骨骼节点关联的N个目标几何顶点对其三维坐标的影响权重分别为ω1、ω2、…、ωN,目标三维人体模型中N个目标几何顶点的三维坐标分别为V1、V2、…、VN,则当前骨骼节点Vbone的三维坐标的推算公式为:
Vbone=(ω1V1+ω2V2+…+ωNVN)/N 公式3
需要说明的是,基于公式3推算出来的骨骼节点的位置,可能与实际位置存在出入。但由于目标三维人体模型上与当前骨骼节点关联的N个几何顶点分布在当前骨骼节点的各个方向,且较为发散,使得计算出的当前骨骼节点的位置偏小,但经过实验测得,推算出的当前骨骼节点的位置精度在可接受范围内。
S3034:重新确定目标三维人体模型中与骨骼节点关联的多个目标几何顶点的质心,到当前骨骼节点的父节点间的第二几何距离,并根据第二几何距离以及当前骨骼节点与当前骨骼节点的父节点间的缩放比例,确定当前骨骼节点的三维坐标。
在S3034中,当目标三维人体模型中与当前骨骼节点关联的N个目标几何顶点,分布在经过当前骨骼节点的虚拟平面的同侧时,通过初始化过程,已经得到了当前骨骼节点与当前骨骼节点的父节点间的缩放比例,基于该缩放比例和目标三维人体模型中的N个目标几何顶点的三维坐标,可以反向推算出模型驱动后当前骨骼节点全局的三维坐标。
具体的,由于驱动后目标三维人体模型中几何顶点的坐标发生了变化,因此,在S3034中,需要重新计算目标三维人体模型中与当前骨骼节点关联的N个几何顶点的质心,做当前骨骼节点的父节点到新的质心的矢量线段,矢量线段的长度根据当前骨骼节点与当前骨骼节点的父节点间的骨骼长度以及初始化得到的当前骨骼节点与当前骨骼节点的父节点间的缩放比例确定,矢量线段终点的位置即为模型驱动后当前骨骼节点的三维坐标。
本申请实施例中,骨骼长度的缩放主要适用于人体几何模型自身尺寸发生变化的场景,如模型身高变化时,导致骨骼结构尺寸发生同步变化。
S304:根据各骨骼节点的三维坐标以及各骨骼节点间的父子关系,更新用于对目标三维人体模型进行骨骼动画的骨架。
推算出模型驱动后所有骨骼节点全局的三维坐标后,便可根据实际需求进行骨骼动画等驱动算法。由于骨骼结构中存储的时骨骼节点相对于父节点的局部变换矩阵,所以在得到所有骨骼节点的三维坐标后,为了保证骨骼结构与目标三维人体模型同步,需要根据推算出的各骨骼节点的三维坐标更新初始的预设骨架的骨骼结构中,即更新预设骨架中各骨骼节点相对于父节点的仿射变换矩阵。
具体的,骨骼结构的更新过程参见图8,主要包括以下几步:
S3041:根据存在父子关系的骨骼节点以及骨骼节点的父节点的三维坐标,确定骨骼节点相对于骨骼节点的父节点的旋转矩阵、平移矩阵和缩放矩阵。
S3042:根据各骨骼节点相对于相应的父节点的旋转矩阵、平移矩阵和缩放矩阵,更新用于对目标三维人体模型进行骨骼动画的骨架。
由于骨骼结构中存放了个骨骼节点相对于父节点的平移向量、旋转矩阵和缩放矩阵。为了降低程序计算复杂度,一种可选的实施方式为,保持子骨骼节点相对于父骨骼节点的缩放矩阵不变,设置为单位矩阵(即子骨骼节点和父骨骼节点在同一单位数量级),同时,将旋转矩阵设置为单位矩阵,便可以根据子骨骼节点与父骨骼节点的三维坐标,计算二者间的平移向量。
考虑到骨骼结构中根节点的缩放系数可能不为1,假设,根节点的缩放系数为S,此时,子骨骼节点相对于父骨骼节点的平移向量T表示为:
T=(Vbone_child-Vbone_parent)/S 公式4
其中,Vbone_child表示子骨骼节点的三维坐标,Vbone_parent)表示父节点的三维坐标。
本申请实施例在人体几何模型发生顶点坐标变换后,能够同步更新骨骼节点的坐标信息,从而使骨骼架构与模型同步变化,三维人体模型和骨架同步更新的完整流程图参见图9,主要包括以下几步:
S901:重建初始三维人体模型,以及生成与初始三维人体模型匹配的骨架。
S902:针对骨架中的每一个骨骼节点,确定初始三维人体模型中距离该骨骼节点最近的N个目标几何顶点并记录。
S903:以该骨骼节点和该骨骼节点的父节点为法向量,经过该骨骼节点建立一个虚拟平面。
S904:确定模型驱动前N个目标几何顶点是否分布在虚拟平面的两侧,若是,则执行S905,若否,则执行S908。
S905:分别计算N个目标几何顶点到该骨骼节点的距离。
S906:根据N个距离为相应的目标几何顶点赋予对该骨骼节点的三维坐标的影响权重。
S907:对N个影响权重进行归一化。
S908:计算该骨骼节点与该骨骼节点的父节点间的骨骼长度。
S909:计算N个目标几何顶点的质心,以及质心到该骨骼节点的父节点的距离。
S910:确定质心到该骨骼节点的父节点的距离占骨骼长度的比例。
S911:获取顶点数据,驱动初始三维人体模型,得到目标三维人体模型。
S912:针对骨架中的每一个非根节点的骨骼节点,确定驱动后N个目标几何顶点是否分布在该非根节点的骨骼节点的两侧,若是,则执行S913,若否,则执行S914。
S913:根据驱动后N个目标几何顶点的三维坐标,以及每个目标几何顶点对该骨骼节点的三维坐标的影响权重,确定该骨骼节点的全局三维坐标。
S914:确定驱动后N个目标几何顶点的质心,并建立该骨骼节点的父节点到新的质心的矢量。
S915:根据该骨骼节点与该骨骼节点的父节点间的缩放比例,以及该骨骼节点和该骨骼节点的父节点间的骨骼长度,确定矢量的终点。
S916:将矢量终点的三维坐标作为该骨骼节点的全局三维坐标。
S917:计算各骨骼节点间的局部变换矩阵。
S918:根据局部变化矩阵,同步更新用于对驱动后的目标三维模型进行骨骼动画的骨架。
本申请上述实施例提供的三维人体模型与骨架的同步更新方法中,将初始三维人体模型与预设骨架进行绑定,通过初始化操作,确定每个骨骼节点关联的多个目标几何顶点、每个目标几何顶点对应的影响权重、以及子骨骼节点和父骨骼节点间的缩放比例。初始化完成后,采用非骨骼动画方式驱动初始三维人体模型,根据驱动后的目标三维人体模型中几何顶点的三维坐标以及初始化结果,确定各骨骼节点的三维坐标,并根据各骨骼节点的三维坐标,更新预设骨架的骨骼结构,得到与目标三维人体模型匹配的骨架,从而实现三维人体模型驱动后骨架的同步更新。由于骨架更新过程是在预设骨架的基础上进行的更新,更新过程不会大幅度移动骨骼位置,骨骼节点的组织结构不会发生变化,维持了预设骨架原有的结构与骨骼节点数量、以及原始的骨骼蒙皮数据,保证了模型动画过程中骨架的一致性。这样,基于更新后的骨架进行后续骨骼动画时,由于骨架与目标三维人体模型同步,二者间的偏差很小,从而提高了骨骼动画的真实性和灵活性。
需要说明的是,本申请实施例提供的三维人体模型与骨架的同步更新方法,不仅适用于通过BlendShape组件引起的模型细微变化和整体或局部尺寸的调整等场景外,也同时适用于利用动作捕捉数据等驱动场景,这是因为,动作捕捉受测量噪声和人体游走误差等各种因素的影响,长时间驱动后,骨骼节点的位置可能会出现偏差,通过本申请实施例的方法可以进行优化。
基于相同的技术构思,本申请实施例提供了一种电子设备,该电子设备可以是笔记本电脑,台式计算机、手机、平板、可穿戴设备等用户端设备,还可以是用于虚拟人交互场景中的云服务器、服务器集群、分布式服务器等服务器,该电子设备可以实现上述实施例提供的三维人体模型与骨架的同步更新方法。
参见图10,该电子设备包括处理器1001和存储器1002,处理器1001和存储器1002通过总线1003连接,所述存储器1002存储有计算机程序指令,所述处理器根据所述计算机程序执行以下操作:
根据与初始三维人体模型绑定的预设骨架中各骨骼节点间的父子关系,对所述初始三维人体模型中的几何顶点与所述预设骨架中的骨骼节点进行初始化,确定所述各骨骼节点的初始参数;
获取所述初始三维人体模型对应的顶点数据,并根据所述顶点数据,驱动所述初始三维人体模型,得到目标三维人体模型;
根据所述目标三维人体模型中几何顶点的三维坐标以及各初始参数,确定所述各骨骼节点的三维坐标;
根据所述各骨骼节点的三维坐标以及所述各骨骼节点间的父子关系,更新用于对所述目标三维人体模型进行骨骼动画的骨架。
可选的,所述处理器1001根据与初始三维人体模型绑定的预设骨架中各骨骼节点间的父子关系,对所述初始三维人体模型中的几何顶点与所述预设骨架中的骨骼节点进行初始化,确定所述各骨骼节点的初始参数,具体操作为:
针对每个骨骼节点,执行以下操作:
将所述初始三维人体模型中距离所述骨骼节点最近的多个目标几何顶点与所述骨骼节点关联;
若所述骨骼节点为非根节点,则以所述骨骼节点与所述骨骼节点的父节点为法向量,建立一个经过所述骨骼节点的虚拟平面;
若所述初始三维人体模型中与所述骨骼节点最近的所述多个目标几何顶点分布在所述虚拟平面的两侧,则确定所述初始三维人体模型中所述多个目标几何点分别对所述骨骼节点的三维坐标的影响权重;
若所述初始三维人体模型中与所述骨骼节点最近的所述多个目标几何顶点分布在所述虚拟平面的同侧,则根据所述初始三维人体模型中所述多个目标几何顶点的质心,确定所述骨骼节点与所述骨骼节点的父节点间的缩放比例。
可选的,所述处理器1001确定所述初始三维人体模型中所述多个目标几何点分别对所述骨骼节点的三维坐标的影响权重,具体操作为:
分别计算所述初始三维人体模型中所述多个目标几何点到所述骨骼节点的第一几何距离;
将各第一几何距离的倒数作为相应目标几何顶点对所述骨骼节点的三维坐标的影响权重,并对各影响权重进行归一化。
可选的,所述处理器1001根据所述初始三维人体模型中所述多个目标几何顶点的质心,确定所述骨骼节点与所述骨骼节点的父节点间的缩放比例,具体操作为:
计算所述骨骼节点与所述骨骼节点的父节点间的骨骼长度,以及计算所述初始三维人体模型中所述多个目标几何顶点的质心到所述骨骼节点的父节点间的第二几何距离;
将所述第二几何距离占所述骨骼长度的比例,作为所述骨骼节点与所述骨骼节点的父节点间的缩放比例。
可选的,所述骨骼节点的初始参数至少包括:所述骨骼节点关联的多个目标几何顶点分别对所述骨骼节点的三维坐标的影响权重,以及所述骨骼节点与所述骨骼节点的父节点间的缩放比例;
所述处理器1001根据所述目标三维人体模型中几何顶点的三维坐标以及各初始参数,确定所述各骨骼节点的三维坐标,具体操作为:
针对每个骨骼节点,执行以下操作:
若所述骨骼节点为非根节点,则确定所述目标三维人体模型中与所述骨骼节点关联的多个目标几何顶点与虚拟平面的分布关系,所述虚拟平面是以所述骨骼节点与所述骨骼节点的父节点为法向量,经过所述骨骼节点建立的;
若所述目标三维人体模型中所述多个目标几何顶点分布在所述虚拟平面的两侧,根据所述骨骼节点关联的多个目标几何顶点分别对所述骨骼节点的三维坐标的影响权重,对所述目标三维人体模型中的多个目标几何顶点的三维坐标进行加权,确定所述骨骼节点的三维坐标;
若所述目标三维人体模型中所述多个目标几何顶点分布在所述虚拟平面的同侧,则重新确定所述目标三维人体模型中与所述骨骼节点关联的多个目标几何顶点的质心,并根据新的质心以及所述骨骼节点与所述骨骼节点的父节点间的缩放比例,确定所述骨骼节点的三维坐标。
可选的,所述处理器1001根据所述各骨骼节点的三维坐标以及所述各骨骼节点间的父子关系,更新用于对所述目标三维人体模型进行骨骼动画的骨架,具体操作为:
根据存在父子关系的所述骨骼节点以及所述骨骼节点的父节点的三维坐标,确定所述骨骼节点相对于所述骨骼节点的父节点的旋转矩阵、平移矩阵和缩放矩阵;
根据各骨骼节点相对于相应的父节点的旋转矩阵、平移矩阵和缩放矩阵,更新用于对所述目标三维人体模型进行骨骼动画的骨架。
需要说明的是,图10仅是一种示例,给出电子设备执行本申请实施例提供的三维人体模型与骨架的同步更新方法步骤所必要的硬件。未示出的,当电子设备为用户端设备时,还包括显示屏、键盘、电源等常用器件。
本申请实施例图10中涉及的处理器可以是中央处理器(Central ProcessingUnit,CPU),通用处理器,图形处理器(Graphics Processing Unit,GPU)数字信号处理器(Digital Signal Processor,DSP),专用集成电路(Application-specific IntegratedCircuit,ASIC),现场可编程门阵列(Field Programmable Gate Array,FPGA)或者其他可编程逻辑器件、晶体管逻辑器件、硬件部件或者其任意组合。
本申请实施例还提供一种计算机可读存储介质,用于存储一些指令,这些指令被执行时,可以完成前述实施例中三维人体模型与骨架的同步更新方法。
本申请实施例还提供一种计算机程序产品,用于存储计算机程序,该计算机程序用于执行前述实施例中三维人体模型与骨架的同步更新方法。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。
Claims (10)
1.一种三维人体模型与骨架的同步更新方法,其特征在于,包括:
根据与初始三维人体模型绑定的预设骨架中各骨骼节点间的父子关系,对所述初始三维人体模型中的几何顶点与所述预设骨架中的骨骼节点进行初始化,确定所述各骨骼节点的初始参数;
获取所述初始三维人体模型对应的顶点数据,并根据所述顶点数据,驱动所述初始三维人体模型,得到目标三维人体模型;
根据所述目标三维人体模型中几何顶点的三维坐标以及各初始参数,确定所述各骨骼节点的三维坐标;
根据所述各骨骼节点的三维坐标以及所述各骨骼节点间的父子关系,更新用于对所述目标三维人体模型进行骨骼动画的骨架。
2.如权利要求1所述的方法,其特征在于,所述根据与初始三维人体模型绑定的预设骨架中各骨骼节点间的父子关系,对所述初始三维人体模型中的几何顶点与所述预设骨架中的骨骼节点进行初始化,确定所述各骨骼节点的初始参数,包括:
针对每个骨骼节点,执行以下操作:
将所述初始三维人体模型中距离所述骨骼节点最近的多个目标几何顶点与所述骨骼节点关联;
若所述骨骼节点为非根节点,则以所述骨骼节点与所述骨骼节点的父节点为法向量,建立一个经过所述骨骼节点的虚拟平面;
若所述初始三维人体模型中与所述骨骼节点最近的所述多个目标几何顶点分布在所述虚拟平面的两侧,则确定所述初始三维人体模型中所述多个目标几何点分别对所述骨骼节点的三维坐标的影响权重;
若所述初始三维人体模型中与所述骨骼节点最近的所述多个目标几何顶点分布在所述虚拟平面的同侧,则根据所述初始三维人体模型中所述多个目标几何顶点的质心,确定所述骨骼节点与所述骨骼节点的父节点间的缩放比例。
3.如权利要求2所述的方法,其特征在于,所述确定所述初始三维人体模型中所述多个目标几何点分别对所述骨骼节点的三维坐标的影响权重,包括:
分别计算所述初始三维人体模型中所述多个目标几何点到所述骨骼节点的第一几何距离;
将各第一几何距离的倒数作为相应目标几何顶点对所述骨骼节点的三维坐标的影响权重,并对各影响权重进行归一化。
4.如权利要求2所述的方法,其特征在于,所述根据所述初始三维人体模型中所述多个目标几何顶点的质心,确定所述骨骼节点与所述骨骼节点的父节点间的缩放比例,包括:
计算所述骨骼节点与所述骨骼节点的父节点间的骨骼长度,以及计算所述初始三维人体模型中所述多个目标几何顶点的质心到所述骨骼节点的父节点间的第二几何距离;
将所述第二几何距离占所述骨骼长度的比例,作为所述骨骼节点与所述骨骼节点的父节点间的缩放比例。
5.如权利要求1所述的方法,其特征在于,所述骨骼节点的初始参数至少包括:所述骨骼节点关联的多个目标几何顶点分别对所述骨骼节点的三维坐标的影响权重,以及所述骨骼节点与所述骨骼节点的父节点间的缩放比例;
所述根据所述目标三维人体模型中几何顶点的三维坐标以及各初始参数,确定所述各骨骼节点的三维坐标,包括:
针对每个骨骼节点,执行以下操作:
若所述骨骼节点为非根节点,则确定所述目标三维人体模型中与所述骨骼节点关联的多个目标几何顶点与虚拟平面的分布关系,所述虚拟平面是以所述骨骼节点与所述骨骼节点的父节点为法向量,经过所述骨骼节点建立的;
若所述目标三维人体模型中所述多个目标几何顶点分布在所述虚拟平面的两侧,根据所述骨骼节点关联的多个目标几何顶点分别对所述骨骼节点的三维坐标的影响权重,对所述目标三维人体模型中的多个目标几何顶点的三维坐标进行加权,确定所述骨骼节点的三维坐标;
若所述目标三维人体模型中所述多个目标几何顶点分布在所述虚拟平面的同侧,则重新确定所述目标三维人体模型中与所述骨骼节点关联的多个目标几何顶点的质心,并根据新的质心以及所述骨骼节点与所述骨骼节点的父节点间的缩放比例,确定所述骨骼节点的三维坐标。
6.如权利要求1所述的方法,其特征在于,所述根据所述各骨骼节点的三维坐标以及所述各骨骼节点间的父子关系,更新用于对所述目标三维人体模型进行骨骼动画的骨架,包括:
根据存在父子关系的所述骨骼节点以及所述骨骼节点的父节点的三维坐标,确定所述骨骼节点相对于所述骨骼节点的父节点的旋转矩阵、平移矩阵和缩放矩阵;
根据各骨骼节点相对于相应的父节点的旋转矩阵、平移矩阵和缩放矩阵,更新用于对所述目标三维人体模型进行骨骼动画的骨架。
7.一种电子设备,其特征在于,包括处理器和存储器,所述处理器和所述处理器通过总线连接,存储器存储有计算机程序,所述处理器根据所述计算机程序,执行以下操作:
根据与初始三维人体模型绑定的预设骨架中各骨骼节点间的父子关系,对所述初始三维人体模型中的几何顶点与所述预设骨架中的骨骼节点进行初始化,确定所述各骨骼节点的初始参数;
获取所述初始三维人体模型对应的顶点数据,并根据所述顶点数据,驱动所述初始三维人体模型,得到目标三维人体模型;
根据所述目标三维人体模型中几何顶点的三维坐标以及各初始参数,确定所述各骨骼节点的三维坐标;
根据所述各骨骼节点的三维坐标以及所述各骨骼节点间的父子关系,更新用于对所述目标三维人体模型进行骨骼动画的骨架。
8.如权利要求7所述的电子设备,其特征在于,所述处理器根据与初始三维人体模型绑定的预设骨架中各骨骼节点间的父子关系,对所述初始三维人体模型中的几何顶点与所述预设骨架中的骨骼节点进行初始化,确定所述各骨骼节点的初始参数,具体操作为:
针对每个骨骼节点,执行以下操作:
将所述初始三维人体模型中距离所述骨骼节点最近的多个目标几何顶点与所述骨骼节点关联;
若所述骨骼节点为非根节点,则以所述骨骼节点与所述骨骼节点的父节点为法向量,建立一个经过所述骨骼节点的虚拟平面;
若所述初始三维人体模型中与所述骨骼节点最近的所述多个目标几何顶点分布在所述虚拟平面的两侧,则确定所述初始三维人体模型中所述多个目标几何点分别对所述骨骼节点的三维坐标的影响权重;
若所述初始三维人体模型中与所述骨骼节点最近的所述多个目标几何顶点分布在所述虚拟平面的同侧,则根据所述初始三维人体模型中所述多个目标几何顶点的质心,确定所述骨骼节点与所述骨骼节点的父节点间的缩放比例。
9.如权利要求8所述的电子设备,其特征在于,所述处理器根据所述初始三维人体模型中所述多个目标几何顶点的质心,确定所述骨骼节点与所述骨骼节点的父节点间的缩放比例,具体操作为:
计算所述骨骼节点与所述骨骼节点的父节点间的骨骼长度,以及计算所述初始三维人体模型中所述多个目标几何顶点的质心到所述骨骼节点的父节点间的第二几何距离;
将所述第二几何距离占所述骨骼长度的比例,作为所述骨骼节点与所述骨骼节点的父节点间的缩放比例。
10.如权利要求7所述的电子设备,其特征在于,所述骨骼节点的初始参数至少包括:所述骨骼节点关联的多个目标几何顶点分别对所述骨骼节点的三维坐标的影响权重,以及所述骨骼节点与所述骨骼节点的父节点间的缩放比例;
所述处理器根据所述目标三维人体模型中几何顶点的三维坐标以及各初始参数,确定所述各骨骼节点的三维坐标,具体操作为:
针对每个骨骼节点,执行以下操作:
若所述骨骼节点为非根节点,则确定所述目标三维人体模型中与所述骨骼节点关联的多个目标几何顶点与虚拟平面的分布关系,所述虚拟平面是以所述骨骼节点与所述骨骼节点的父节点为法向量,经过所述骨骼节点建立的;
若所述目标三维人体模型中所述多个目标几何顶点分布在所述虚拟平面的两侧,根据所述骨骼节点关联的多个目标几何顶点分别对所述骨骼节点的三维坐标的影响权重,对所述目标三维人体模型中的多个目标几何顶点的三维坐标进行加权,确定所述骨骼节点的三维坐标;
若所述目标三维人体模型中所述多个目标几何顶点分布在所述虚拟平面的同侧,则重新确定所述目标三维人体模型中与所述骨骼节点关联的多个目标几何顶点的质心,并根据新的质心以及所述骨骼节点与所述骨骼节点的父节点间的缩放比例,确定所述骨骼节点的三维坐标。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211211710.XA CN115908651A (zh) | 2022-09-30 | 2022-09-30 | 一种三维人体模型与骨架的同步更新方法及电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211211710.XA CN115908651A (zh) | 2022-09-30 | 2022-09-30 | 一种三维人体模型与骨架的同步更新方法及电子设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115908651A true CN115908651A (zh) | 2023-04-04 |
Family
ID=86494545
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211211710.XA Pending CN115908651A (zh) | 2022-09-30 | 2022-09-30 | 一种三维人体模型与骨架的同步更新方法及电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115908651A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116883624A (zh) * | 2023-09-07 | 2023-10-13 | 海马云(天津)信息技术有限公司 | 骨骼快速绑定方法和装置、电子设备及存储介质 |
-
2022
- 2022-09-30 CN CN202211211710.XA patent/CN115908651A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116883624A (zh) * | 2023-09-07 | 2023-10-13 | 海马云(天津)信息技术有限公司 | 骨骼快速绑定方法和装置、电子设备及存储介质 |
CN116883624B (zh) * | 2023-09-07 | 2023-11-21 | 海马云(天津)信息技术有限公司 | 骨骼快速绑定方法和装置、电子设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111465965B (zh) | 用于实时复杂角色动画和交互性的系统和方法 | |
US11836843B2 (en) | Enhanced pose generation based on conditional modeling of inverse kinematics | |
Zurdo et al. | Animating wrinkles by example on non-skinned cloth | |
US11875458B2 (en) | Fast and deep facial deformations | |
Igarashi et al. | As-rigid-as-possible shape manipulation | |
US8830269B2 (en) | Method and apparatus for deforming shape of three dimensional human body model | |
Vlasic et al. | Articulated mesh animation from multi-view silhouettes | |
US9240067B2 (en) | Animation of photo-images via fitting of combined models | |
WO2022205760A1 (zh) | 三维人体重建方法、装置、设备及存储介质 | |
US11992768B2 (en) | Enhanced pose generation based on generative modeling | |
KR20220017900A (ko) | 단일 이미지-기반 실시간 신체 애니메이션 | |
Zhang et al. | Avatarverse: High-quality & stable 3d avatar creation from text and pose | |
JP2001209824A (ja) | ビデオゲームにおける三次元オブジェクト変形方法及びビデオゲーム装置、並びにビデオゲーム用のプログラムを記録したコンピュータ読み取り可能な記録媒体 | |
Jacka et al. | A comparison of linear skinning techniques for character animation | |
CN115908651A (zh) | 一种三维人体模型与骨架的同步更新方法及电子设备 | |
CN111932659A (zh) | 骨骼模型数据的处理方法、计算机设备及存储介质 | |
CN115908664B (zh) | 人机交互的动画生成方法、装置、计算机设备、存储介质 | |
Chen et al. | Skeleton-driven surface deformation through lattices for real-time character animation | |
Huang et al. | Detail-preserving controllable deformation from sparse examples | |
Zhan | Application of Skeletal Skinned Mesh Algorithm Based on 3D Virtual Human Model in Computer Animation Design. | |
CN117557699B (zh) | 动画数据生成方法、装置、计算机设备和存储介质 | |
Wang et al. | Automatic generation of game content customized by players: Generate 3D game character based on pictures | |
Fang et al. | On the simulation of expressional animation based on facial MoCap | |
Zheng et al. | Driveable 3D Human Reconstruction Focusing on Facial Precision Enhancement | |
Dang et al. | Generalizable Dynamic Radiance Fields For Talking Head Synthesis With Few-shot |
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 |