CN112819971A - 虚拟形象的生成方法、装置、设备和介质 - Google Patents
虚拟形象的生成方法、装置、设备和介质 Download PDFInfo
- Publication number
- CN112819971A CN112819971A CN202110111064.9A CN202110111064A CN112819971A CN 112819971 A CN112819971 A CN 112819971A CN 202110111064 A CN202110111064 A CN 202110111064A CN 112819971 A CN112819971 A CN 112819971A
- Authority
- CN
- China
- Prior art keywords
- bone
- node
- matrix
- model
- skeleton
- 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.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 48
- 210000000988 bone and bone Anatomy 0.000 claims abstract description 262
- 239000011159 matrix material Substances 0.000 claims description 165
- 230000009466 transformation Effects 0.000 claims description 31
- 238000004364 calculation method Methods 0.000 claims description 26
- 238000004590 computer program Methods 0.000 claims description 11
- 238000010606 normalization Methods 0.000 claims description 4
- 239000000126 substance Substances 0.000 claims 1
- 230000003190 augmentative effect Effects 0.000 abstract description 3
- 238000010586 diagram Methods 0.000 description 18
- 238000004891 communication Methods 0.000 description 11
- 238000013519 translation Methods 0.000 description 9
- 238000012545 processing Methods 0.000 description 5
- 230000009471 action Effects 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 4
- 230000008569 process Effects 0.000 description 4
- 239000000758 substrate Substances 0.000 description 4
- 230000006870 function Effects 0.000 description 3
- 230000003993 interaction Effects 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 238000005457 optimization Methods 0.000 description 3
- 230000005540 biological transmission Effects 0.000 description 2
- 230000001413 cellular effect Effects 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 238000004458 analytical method Methods 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 238000013473 artificial intelligence Methods 0.000 description 1
- 230000002146 bilateral effect Effects 0.000 description 1
- 230000015572 biosynthetic process Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 230000000295 complement effect Effects 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000010801 machine learning Methods 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000001953 sensory effect Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 238000003786 synthesis reaction Methods 0.000 description 1
- 230000001131 transforming effect Effects 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T19/00—Manipulating 3D models or images for computer graphics
- G06T19/20—Editing of 3D images, e.g. changing shapes or colours, aligning objects or positioning parts
-
- 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
- G06T5/00—Image enhancement or restoration
- G06T5/50—Image enhancement or restoration using two or more images, e.g. averaging or subtraction
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2207/00—Indexing scheme for image analysis or image enhancement
- G06T2207/20—Special algorithmic details
- G06T2207/20212—Image combination
- G06T2207/20221—Image fusion; Image merging
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2207/00—Indexing scheme for image analysis or image enhancement
- G06T2207/30—Subject of image; Context of image processing
- G06T2207/30196—Human being; Person
- G06T2207/30201—Face
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Architecture (AREA)
- Computer Graphics (AREA)
- Computer Hardware Design (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Processing Or Creating Images (AREA)
Abstract
本公开公开了一种虚拟形象的生成方法、装置、设备和介质,涉及计算机技术领域,具体涉及增强现实、计算机图形学等技术领域。该虚拟形象的生成方法包括:获取图像的网格模型,以及预置的基底蒙皮骨骼模型,所述基底蒙皮骨骼模型包括至少一个骨骼节点,所述网格模型和所述基底蒙皮骨骼模型具有相同的拓扑结构;根据所述网格模型和所述基底蒙皮骨骼模型,确定所述至少一个骨骼节点中各个骨骼节点的当前骨骼驱动系数;将所述当前骨骼驱动系数发送给客户端,以使所述客户端根据所述当前骨骼驱动系数生成所述图像对应的虚拟形象。本公开可以自动确定出骨骼驱动系数,提高虚拟形象生成的自动化程度。
Description
技术领域
本公开涉及计算机技术领域,具体涉及增强现实、计算机图形学等技术领域,尤其涉及一种虚拟形象的生成方法、装置、设备和介质。
背景技术
增强现实(Augmented Reality,AR)技术是一种将虚拟信息与真实世界巧妙融合的技术,广泛运用了多媒体、三维建模、实时跟踪及注册、智能交互、传感等多种技术手段,将计算机生成的文字、图像、三维模型、音乐、视频等虚拟信息模拟仿真后,应用到真实世界中,两种信息互为补充,从而实现对真实世界的“增强”。
图像到三维虚拟形象(Photo-To-Avatar,PTA)是基于用户图片生成个性化三维虚拟形象,比如,基于人脸图像生成个性化的三维头像。
相关技术中,可以人工配置骨骼驱动系数,以生成对应的个性化的三维头像。
发明内容
本公开提供了一种虚拟形象的生成方法、装置、设备和介质。
根据本公开的一方面,提供了一种虚拟形象的生成方法,包括:获取图像的网格模型,以及预置的基底蒙皮骨骼模型,所述基底蒙皮骨骼模型包括至少一个骨骼节点,所述网格模型和所述基底蒙皮骨骼模型具有相同的拓扑结构;根据所述网格模型和所述基底蒙皮骨骼模型,确定所述至少一个骨骼节点中各个骨骼节点的当前骨骼驱动系数;将所述当前骨骼驱动系数发送给客户端,以使所述客户端根据所述当前骨骼驱动系数生成所述图像对应的虚拟形象。
根据本公开的另一方面,提供了一种虚拟形象的生成装置,包括:获取单元,用于获取图像的网格模型,以及预置的基底蒙皮骨骼模型,所述网格模型包括至少一个第一顶点,所述至少一个第一顶点组成第一拓扑网络,所述基底蒙皮骨骼模型包括至少一个第二顶点和至少一个骨骼节点,所述至少一个第二顶点组成第二拓扑网络,所述第一拓扑网络和所述第二拓扑网络具有相同的拓扑结构;确定单元,用于根据所述网格模型和所述基底蒙皮骨骼模型,确定所述至少一个骨骼节点中各个骨骼节点的当前骨骼驱动系数;发送单元,用于将所述当前骨骼驱动系数发送给客户端,以使所述客户端根据所述当前骨骼驱动系数生成所述图像对应的虚拟形象。
根据本公开的另一方面,提供了一种电子设备,包括:至少一个处理器;以及与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行如上述任一方面的任一项所述的方法。
根据本公开的另一方面,提供了一种存储有计算机指令的非瞬时计算机可读存储介质,其中,所述计算机指令用于使所述计算机执行根据上述任一方面的任一项所述的方法。
根据本公开的另一方面,提供了一种计算机程序产品,包括计算机程序,所述计算机程序在被处理器执行时实现根据上述任一方面的任一项所述的方法。
根据本公开的技术方案,可以自动确定出骨骼驱动系数,提高虚拟形象生成的自动化程度。
应当理解,本部分所描述的内容并非旨在标识本公开的实施例的关键或重要特征,也不用于限制本公开的范围。本公开的其它特征将通过以下的说明书而变得容易理解。
附图说明
附图用于更好地理解本方案,不构成对本公开的限定。其中:
图1是根据本公开第一实施例的示意图;
图2是根据本公开第二实施例的示意图;
图3是根据本公开第三实施例的示意图;
图4是根据本公开第四实施例的示意图;
图5是根据本公开第五实施例的示意图;
图6是根据本公开第六实施例的示意图;
图7是根据本公开第七实施例的示意图;
图8是根据本公开第八实施例的示意图;
图9是根据本公开第九实施例的示意图;
图10是根据本公开第十实施例的示意图;
图11是用来实现本公开实施例的虚拟形象的生成方法中任一方法的电子设备的示意图。
具体实施方式
以下结合附图对本公开的示范性实施例做出说明,其中包括本公开实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本公开的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。
为了更好地理解和说明本公开实施例,对本公开实施例中涉及的一些技术术语说明如下:
虚拟形象,与图像对应,比如,图像为人脸图像,虚拟形象是指人脸图像对应的三维虚拟形象(avatar)。
网格模型,是指图像对应的三维模型,该三维模型是个性化模型,比如,对应不同的人脸图像,相应的网格模型是不同的。网格模型由多个网格(skin mesh)构成,每个网格可以包括三个顶点(vertex)。网格模型用于表征待生成的虚拟形象的外形。
蒙皮骨骼模型,是指虚拟形象对应的包含骨骼信息的三维模型,在上述网格模型的基础上,增加了骨骼节点(node),骨骼节点也可以称为关节。蒙皮骨骼模型用于表征虚拟形象的外形和骨架,骨架由骨骼节点链接骨骼片段组成。
进一步地,蒙皮骨骼模型可以分为基底蒙皮骨骼模型和当前蒙皮骨骼模型,基底蒙皮骨骼模型是预置的、通用的,比如,不同的虚拟形象对应的基底蒙皮骨骼模型是相同的,可以由设计人员设计;当前蒙皮骨骼模型是个性化的,不同的虚拟形象对应不同的当前蒙皮骨骼模型,比如,第一人脸图像对应的avatar称为第一虚拟形象,第二人脸图像对应的avatar称为第二虚拟形象,在生成第一虚拟形象时,基于第一人脸图像和基底蒙皮骨骼模型生成第一当前蒙皮骨骼模型,之后将该第一当前蒙皮骨骼模型作为第一虚拟形象;类似地,在生成第二虚拟形象时,基于第二人脸图像和基底蒙皮骨骼模型生成第二当前蒙皮骨骼模型,之后将该第二当前蒙皮骨骼模型作为第二虚拟形象。
骨骼驱动系数,蒙皮骨骼模型中的每个骨骼节点都具有骨骼驱动系数,骨骼驱动系数为刚性变换系数,刚性变换包括平移(Translate)、旋转(Rotation)和缩放(Scale)。相应的,骨骼驱动系数可以包括平移系数、旋转系数和缩放系数,平移系数是指三个坐标轴(x、y、z)对应的平移值,旋转系数是指三个坐标轴对应的欧拉角旋转值,缩放系数是指三个坐标轴对应的缩放值,因此,骨骼驱动系数可以用9个数值表示。对于某个骨骼节点,该骨骼节点依据对应的TRS系数动作,从而使得虚拟形象的外形出现形变。对应不同的人脸图像,可以生成不同的骨骼驱动系数,假设对应某个人脸图像,对应的骨骼驱动系数可以称为当前骨骼驱动系数,当前蒙皮骨骼模型基于当前骨骼驱动系数和基底蒙皮骨骼模型生成。
局部位姿矩阵,是一个4x4的矩阵,表示一个三维状态,骨骼驱动系数与局部位姿矩阵可以互相无损转换。
假设一个骨骼节点的索引为j,该骨骼节点的骨骼驱动系数可以用localTRS(j)表示,该骨骼节点的局部位姿矩阵可以用matTRS(j)表示。局部位姿矩阵与骨骼驱动系数的关系如下所示:
骨骼驱动系数包括3个平移系数、3个旋转系数和3个缩放系数,3个平移系数为局部位姿矩阵中的(Tx,Ty,Tz);3个旋转系数可以用(α,β,γ)表示,其中,α=atan2(-m20,m00),β=asin(m10),γ=atan2(-m12,m11);3个缩放系数分别是局部位姿矩阵中前3列的模长。
反向运动(Inverse kinematics,IK)解算器,IK解算器是应用在机器人和计算机动画领域的反向运动学解决方案,与正向运动学不同,是以子节点变换反推父节点变换的技术。相关技术中,IK解算器一般应用在求解动作中,本公开实施例中将其应用到外形求解中。
骨骼求解器,基于网格模型和基底蒙皮骨骼模型,求解骨骼驱动系数。
骨骼驱动器,基于骨骼驱动系数和基底蒙皮骨骼模型,生成当前蒙皮骨骼模型。
图1是根据本公开第一实施例的示意图。本实施例提供一种虚拟形象的生成方法,包括:
101、获取图像的网格模型,以及预置的基底蒙皮骨骼模型,所述基底蒙皮骨骼模型包括至少一个骨骼节点,所述网格模型和所述基底蒙皮骨骼模型具有相同的拓扑结构。
102、根据所述网格模型和所述基底蒙皮骨骼模型,确定所述至少一个骨骼节点中各个骨骼节点的当前骨骼驱动系数。
103、将所述当前骨骼驱动系数发送给客户端,以使所述客户端根据所述当前骨骼驱动系数生成所述图像对应的虚拟形象。
如图2所示,为网格模型和蒙皮骨骼模型的示意图,其中,左侧是蒙皮骨骼模型,右侧是网格模型。参照右侧的网格模型,每个三角形表示一个网格,每个三角形的三个顶点分别为网格模型的顶点,为了区分,网格模型的顶点可以称为第一顶点,蒙皮骨骼模型的顶点可以称为第二顶点。参照左侧的蒙皮骨骼模型,除了顶点(即第二顶点,图中未示出)之外,还具有骨骼节点,骨骼节点用圆圈加号表示。
顶点(第一顶点和第二顶点)在数据表示上,可以包括:顶点的位置坐标和顶点索引。
蒙皮骨骼模型的骨骼节点(可以简称为节点)可以构成树状结构,即,除了根节点,每个节点具有一个父节点,每个节点具备0到多个子节点。
如图3所示,节点(用圆圈加号表示)和顶点(用圆点表示)可以是多对多的关系,受节点作用的蒙皮区域中包括多个顶点,每个节点对该区域的每个顶点具备一个蒙皮权重,取值0到1之间,每个顶点受一个或多个节点控制,其蒙皮总权重为1。
获取图像的网格模型可以采用各种相关技术实现,比如,将人脸图像输入到PTA求解器中,通过PTA求解器计算该人脸图像对应的多个BlendShape系数和多个BlendShape模型,并对这多个BlendShape系数和对应的多个BlendShape模型线性加权合成,以得到网格模型。
基底蒙皮骨骼模型是预置的,即,可以预先配置基底蒙皮骨骼模型的结构,该结构包括第二顶点组成的网格结构,以及节点组成的树状结构,其中,基底蒙皮骨骼模型和网格模型具有相同的拓扑结构。其中,可以预先规定拓扑结构,以使得两者具有相同的拓扑结构。通过两者具有相同的拓扑结构,可以保证蒙皮骨骼模型与网格模型具有相同的外形结构,提高生成的虚拟形象的准确度。
基底蒙皮骨骼模型和网格模型具有相同的拓扑结构是指,两个模型具有相同的顶点个数、相同的顶点相对位置、相同的顶点连接顺序和网格连接顺序。
在获取到网格模型和基底蒙皮骨骼模型后,可以采用IK求解器确定各个骨骼节点的当前骨骼驱动系数。确定当前骨骼驱动系数的具体流程可以参见后续描述。
本实施例中,通过根据网格模型和基底蒙皮骨骼模型确定当前骨骼驱动系数,可以自动确定出当前骨骼驱动系数,进而可以基于当前骨骼驱动系数生成虚拟形象,从而提高虚拟形象生成的自动化程度。进一步地,骨骼驱动系数的数据量较小,如上分析,一般为9个值,因此可以降低数据量,进而可以实现轻量化部署,便于在用户终端上实际实施。
图4是本公开第四实施例的示意图。本实施例提供一种虚拟形象的生成方法,包括:
401、客户端采集人脸图像。
客户端可以位于用户终端上,用户终端比如为移动终端,进一步比如为平板电脑、个人数字助理、蜂窝电话、智能电话、可穿戴设备和其它类似的计算装置。
用户可以将图片库中的人脸图像输入到客户端中,或者,用户也可以通过客户端调用摄像头进行拍摄,得到人脸图像。
402、客户端将人脸图像发送给服务端。
客户端可以通过通信网络将人脸图像发送给服务端,通信网络可以包括局域网、广域网、互联网等。
403、服务端中的PTA求解器根据人脸图像获取对应的网格模型。
404、服务端中的骨骼求解器,基于网格模型和预置的基底蒙皮骨骼模型,求解各个骨骼节点的当前骨骼驱动系数。
其中,具体求解过程可以参见图5所示的实施例。
405、服务端在所述各个骨骼节点的当前骨骼驱动系数中,选择出满足预设选择条件的骨骼节点的当前骨骼驱动系数,以得到选择后的当前骨骼驱动系数,并将所述选择后的当前骨骼驱动系数发送给客户端。
依照骨骼规范,蒙皮骨骼模型中的一些骨骼节点是不能发生刚性变换的,因此,不能发生刚性变换的骨骼节点的当前骨骼驱动系数不需要发送给客户端,另外,蒙皮骨骼模型中的骨骼节点一般是左右对称的,基于该左右对称结构,可以只发送一侧的骨骼节点的当前骨骼驱动系数。因此,满足预设选择条件的骨骼节点可以是指:能发生刚性变换的骨骼节点,且,左右对称的骨骼节点中一侧(左侧或右侧)的骨骼节点。
一般来讲,需要发送几十个骨骼节点的当前骨骼驱动系数,每个当前骨骼驱动系数包括9个元素值。
服务端可以通过上述的通信网络将当前骨骼驱动系数发送给客户端。
406、客户端中的骨骼驱动器,基于接收的所述选择后的当前骨骼驱动系数和预置的基底蒙皮骨骼模型,生成当前蒙皮骨骼模型,将当前蒙皮骨骼模型作为人脸图像对应的虚拟形象,展示给用户。
客户端接收到选择后的当前骨骼驱动系数后,可以根据对称关系确定另一侧的骨骼节点的骨骼驱动系数,从而可以获取到能发生刚性变换的全部的骨骼节点的当前骨骼驱动系数,进而基于该当前骨骼驱动系数,可以驱动骨骼节点对应的顶点位置改变,该过程可以称为正向驱动模型,具体步骤可以参见后续描述,实现基底蒙皮骨骼模型的外形改变,得到改变后的模型,即当前蒙皮骨骼模型。
本实施例中,通过服务端对当前骨骼驱动系数进行筛选,可以进一步降低数据量,进而降低网络流程开销,降低对移动终端的资源占用,便于在移动终端上部署。
图5是本公开第五实施例的示意图。本实施例提供一种当前骨骼驱动系数的求解方法,本实施例的执行主体可以为服务端,该方法包括:
501、获取网格模型和基底蒙皮骨骼模型。
网格模型比如根据人脸图像,采用blendshape方式得到。
基底蒙皮骨骼模型是有设计师设计并预置在服务端的。
网格模型包括第一顶点,第一顶点的位置坐标可以称为第一位置坐标,索引为i的第一顶点Ai的位置坐标可以用VertexAi表示。基底蒙皮骨骼模型包括第二顶点,第二顶点的位置坐标可以称为第二位置坐标,索引为i的第二顶点Bi的位置坐标可以用VertexBi表示,采用基底蒙皮骨骼模型的各个骨骼节点的骨骼驱动系数,对基底蒙皮骨骼模型的第二顶点进行坐标变换,得到的变换后的位置坐标可以称为第三位置坐标,可以用VertexB'i表示。
502、设置回传缓存矩阵。
其中,初始时,可以将该回传缓存矩阵置为全0。之后,可以根据流程的执行不断更新该矩阵。
503、以任意顺序遍历节点,将当前遍历的节点确定为当前节点。
504、根据所述网格模型和所述基底蒙皮骨骼模型,计算所述当前节点的最优局部位姿矩阵。
一些实施例中,所述网格模型包括至少一个第一顶点,所述基底蒙皮骨骼模型包括至少一个第二顶点,该最优局部位姿矩阵的计算过程可以包括:
获取第一组点云和第二组点云,所述第二组点云包括一组第二顶点,所述一组第二顶点为所述当前节点在所述基底蒙皮骨骼模型中作用的蒙皮区域包括的第二顶点,所述第一组点云包括一组第一顶点,所述一组第一顶点为所述网格模型中与所述蒙皮区域的位置对应的区域包括的第一顶点;求解最优的刚性变换矩阵,使得采用所述最优的刚性变换矩阵对所述第二组点云变换后的点云,与所述第一组点云的误差最小;将所述最优的刚性变换矩阵作为所述最优局部位姿矩阵。
其中,设计师设计基底蒙皮骨骼模型时,可以设计各个骨骼节点作用的蒙皮区域,并记录在基底蒙皮骨骼模型对应的属性数据中,因此,基于该属性数据可以确定当前节点作用的蒙皮区域,进而可以获取到蒙皮区域包括的第二顶点组成的第二组点云,由于第一顶点组成的第一拓扑网络与第二顶点组成的第二拓扑网络具有相同的拓扑结构,可以确定网格模型中与蒙皮区域位置对应的区域,进而可以获取到对应的区域中的第一顶点组成的第一组点云。
假设第一组点云用矩阵A表示,第二组点云用矩阵B表示,刚性变换矩阵用x表示,通过求解A*x=B的最优解,即最优的刚性变换矩阵,将最优的刚性变换矩阵作为最优局部位姿矩阵。A*x=B的最优解可以采用各种相关技术实现,比如最小二乘法、正交普鲁克方法、普氏分析法等,本实施例对此不再详述。
通过最优刚性变换求解,可以计算得到最优局部位姿矩阵。
505、将所述最优局部位姿矩阵累加到预置的回传缓存矩阵中,以得到累加后的回传缓存矩阵,将所述累加后的回传缓存矩阵作为更新前的回传缓存矩阵。
通过设置并更新回传缓存矩阵,可以将子节点的优化结果作用到父节点,提高各个节点的骨骼驱动系数的计算准确度。
506、采用IK解算器,计算所述当前节点所在IK链上各级父节点的IK位姿矩阵,并根据所述父节点的IK位姿矩阵更新所述更新前的回传缓存矩阵,以得到所述各个骨骼节点的更新后的回传缓存矩阵。
IK解算器可以依据子节点的位姿矩阵计算子节点所在的IK链上,父节点、祖父节点等直至根节点的各级父节点的位姿矩阵。如图6所示,IK解算器保证了父节点到子节点的长度不会变换,解算结果主要影响了父祖节点的旋转属性。IK解算器的计算原理可以采用各种相关技术实现,在此不再详述。
假设索引为j的当前节点的索引为k的父节点的IK位姿矩阵表示为ikTRS(j,k)。
通过采用IK解算器,可以将IK应用到从动作驱动扩展到外形驱动,实现充分利用已有资源解决本公开实施例的外形驱动问题。
一些实施例中,所述根据所述父节点的IK位姿矩阵更新所述更新前的回传缓存矩阵,包括:计算所述父节点的蒙皮总权重比值,所述比值为第一蒙皮总权重与第二蒙皮总权重的比值,所述第一蒙皮总权重为所述当前节点的蒙皮总权重,所述第二蒙皮总权重为所述父节点在所述IK链上的蒙皮总权重;根据所述蒙皮总权重比值、预设的全局回传系数和所述父节点的IK位姿矩阵,计算加权位姿矩阵;将所述加权位姿矩阵累加到所述更新前的回传缓存矩阵中。
比如,各个节点对应的蒙皮权重可以由设计师设计并记录在属性数据中,因此可以根据基底蒙皮骨骼模型的属性数据得到节点对应的蒙皮权重,并对每个节点对应的蒙皮权重相加后得到上述的第一蒙皮总权重和,第二蒙皮总权重,并用第一蒙皮总权重除以第二蒙皮总权重,得到上述的总权重比值。
假设该蒙皮总权重比值用q(j,k)表示,其中,j是当前节点的索引,k是当前节点的父节点的索引。预设的全局回传系数可以用r表示,则加权位姿矩阵可以表示为:q(j,k)*r*ikTRS(j,k);更新后的回传缓存矩阵表示为buff'(j),则更新后的回传缓存矩阵的计算公式可以为:buff'(j)=q(j,k)*r*ikTRS(j,k)+buff(j)。
通过将蒙皮总权重比值作用到IK解算器的权重,可以提高解算结果的准确度。
507、对所述各个骨骼节点的更新后的回传缓存矩阵进行归一化,以得到所述各个骨骼节点的归一化后的回传缓存矩阵。
其中,归一化处理时,使得各个骨骼节点的归一化后的回传缓存矩阵的右下角元素为1。另外,基于上述计算过程可知,该回传缓存矩阵实际上局部位姿矩阵,因此,索引为j的骨骼节点的归一化后的回传缓存矩阵可以表示为对应的局部位姿矩阵,即matTRS(j)。
508、根据所述各个骨骼节点的归一化后的回传缓存矩阵,更新所述各个骨骼节点的骨骼驱动系数。
一些实施例中,所述归一化后的回传缓存矩阵为局部位姿矩阵,所述根据所述各个骨骼节点的归一化后的回传缓存矩阵,更新所述各个骨骼节点的骨骼驱动系数,包括:获取所述各个骨骼节点的更新前的骨骼驱动系数对应的源值,所述更新前的骨骼驱动系数的初始值为所述基底蒙皮骨骼模型对应的骨骼驱动系数;根据所述各个骨骼节点的局部位姿矩阵,确定所述各个骨骼节点的目标值;对应所述各个骨骼节点,计算所述目标值与所述源值的差值,并用所述差值乘以预设步长,以得到乘积值,再用所述乘积值加上所述源值,以得到所述各个骨骼节点的结果值;将所述各个骨骼节点的结果值对应的骨骼驱动系数,作为所述各个骨骼节点的更新后的骨骼驱动系数。
假设源值表示为source,目标值表示为target,结果值表示为result,则计算公式可以是:result=(target-source)*step+source。
其中,源值是更新前的值,结果值是更新后的值,目标值是归一化后的回传缓存矩阵对应的值,具体的,对于平移系数和缩放系数,上述的源值和结果值为更新前后的平移系数和缩放系数,目标值为归一化后的回传缓存矩阵对应的平移系数和缩放系数,对于旋转系数,需要先将更新前的旋转系数和归一化后的回传缓存矩阵对应的旋转系数分别转换为四元组,再依据上式计算,将计算后得到的四元组再转换为旋转系数,作为更新后的旋转系数。四元组(w,x,y,z)与旋转系数(α,β,γ)的关系如下:
w=c1*c2*c3-s1*s2*s3
x=s1*s2*c3+c1*c2*s3
y=s1*c2*c3+c1*s2*s3
z=c1*s2*c3-s1*c2*s3
其中,c1=cos(α/2),c2=cos(β/2),c3=cos(γ/2),s1=sin(α/2),s2=sin(β/2),s1=sin(γ/2)。
因此,可以依照上述关系在四元组与旋转系数之间进行转换。
通过基于源值和目标值更新骨骼驱动系数,可以提高骨骼驱动系数的计算准确度。
509、根据更新后的骨骼驱动系数更新第二位置坐标,以得到第三位置坐标。
即,基于更新后的骨骼驱动系数,正向驱动蒙皮骨骼模型,以将第二顶点的位置坐标从第二位置坐标VertexBi更新为第三位置坐标VertexB'i。
如图7所示,为基于骨骼驱动系数正向驱动蒙皮骨骼模型的示意图,如图7所示,正向驱动蒙皮骨骼模型的流程可以包括:
①、获取各个骨骼节点的骨骼驱动系数。
对于骨骼驱动器,骨骼驱动系数为已知值,对于骨骼求解器,骨骼驱动系数为待求解值。
②、基于各个骨骼节点的骨骼驱动系数,计算各个骨骼节点的局部位姿矩阵,以及,基于各个骨骼节点的局部位姿矩阵,计算各个骨骼节点的全局位姿矩阵。
依据上述的骨骼驱动系数与局部位姿矩阵的对应关系,可以基于骨骼驱动系数localTRS(j)计算对应的局部位姿矩阵matTRS(j)。
基于局部位姿矩阵计算全局位姿矩阵的计算公式为:
若骨骼节点j为根节点,则:currentNode(j)Global=matTRS(j);
若骨骼节点j为根节点,则:
currentNode(j)Global=parentNode(j)Global*matTRS(j);
其中,currentNode(j)Global是骨骼节点j的全局位姿矩阵,parentNode(j)Global是骨骼节点j的父节点的全局位姿矩阵,matTRS(j)是骨骼节点j的局部位姿矩阵。
即,对于根节点,根节点的全局位姿矩阵与局部位姿矩阵相同;对于非根节点,基于非根节点的局部位姿矩阵和该非根节点的父节点的全局位姿矩阵计算得到该非根节点的全局位姿矩阵。
③、基于各个骨骼节点的全局位姿矩阵计算各个骨骼节点的全局变换矩阵。
如图8所示,计算公式为:
Derform(j)=currentNode(j)Global*initNode(j)Global-1;
其中,Derform(j)是骨骼节点j的全局变换矩阵,initNode(j)Global是骨骼节点j的初始全局位姿矩阵,即制作蒙皮骨骼模型时的全局位姿矩阵。
④、基于各个骨骼节点的全局变换矩阵,对蒙皮骨骼模型的各个顶点的位置坐标进行变换。
计算公式为:
其中,Vertexi是顶点i的变换前的位置坐标;Vertex'i是顶点i的变换后的位置坐标;α(i,j)是骨骼节点j对顶点i的作用权重,即蒙皮权重,m是对顶点i具有作用的骨骼节点的个数。
因此,可以结合图7所示的示意图,将VertexBi作为更新前的位置坐标,经过上述计算后得到更新后的位置坐标VertexB'i,从经过计算后得到第三位置坐标VertexB'i。
510、根据根据第一位置坐标和所述第三位置坐标计算误差值。
误差值比如为第一位置坐标VertexAi与第三位置坐标VertexB'i之间的均方误差值。
511、判断误差值是否收敛,若是,执行512,否则重复执行及其503及其后续步骤。
512、将此时的骨骼驱动系数作为当前骨骼驱动系数。
上述以基于误差值判定结束条件为例,还可以是基于更新次数判定,在此不再详述。
通过判定结束条件,可以及时得到当前骨骼驱动系数。
本实施例中,通过最优刚性变换求解,可以计算得到最优具备位姿矩阵;通过设置并更新回传缓存矩阵,可以将子节点的优化结果作用到父节点,提高各个节点的骨骼驱动系数的计算准确度;通过将蒙皮总权重比值作用到IK解算器的权重,可以提高解算结果的准确度;通过基于源值和目标值更新骨骼驱动系数,可以提高骨骼驱动系数的计算准确度;通过判定结束条件,可以及时得到当前骨骼驱动系数。
图9是根据本公开第九实施例的示意图。本实施例提供一种虚拟形象的生成装置,如图9所示,该装置900包括:获取单元901、确定单元902和发送单元903。
获取单元901用于获取图像的网格模型,以及预置的基底蒙皮骨骼模型,所述基底蒙皮骨骼模型包括至少一个骨骼节点,所述网格模型和所述基底蒙皮骨骼模型具有相同的拓扑结构;确定单元902用于根据所述网格模型和所述基底蒙皮骨骼模型,确定所述至少一个骨骼节点中各个骨骼节点的当前骨骼驱动系数;发送单元903用于将所述当前骨骼驱动系数发送给客户端,以使所述客户端根据所述当前骨骼驱动系数生成所述图像对应的虚拟形象。
本实施例中,通过根据网格模型和基底蒙皮骨骼模型确定当前骨骼驱动系数,可以自动确定出当前骨骼驱动系数,进而可以基于当前骨骼驱动系数生成虚拟形象,从而提高虚拟形象生成的自动化程度。进一步地,骨骼驱动系数的数据量较小,如上分析,一般为9个值,因此可以降低数据量,进而可以实现轻量化部署,便于在用户终端上实际实施。
一些实施例中,参见图10,提供另一种虚拟形象的生成装置1000,该装置1000包括获取单元1001、确定单元1002和发送单元1003。
所述确定单元1002包括:计算模块10021、缓存更新模块10022、归一化模块10023、系数更新模块10024和确定模块10025。
计算模块10021用于将所述各个骨骼节点分别作为当前节点,根据所述网格模型和所述基底蒙皮骨骼模型,计算所述当前节点的更新前的回传缓存矩阵;缓存更新模块10022用于采用IK解算器,计算所述当前节点所在IK链上各级父节点的IK位姿矩阵,并根据所述父节点的IK位姿矩阵更新所述更新前的回传缓存矩阵,以得到所述各个骨骼节点的更新后的回传缓存矩阵;归一化模块10023用于对所述各个骨骼节点的更新后的回传缓存矩阵进行归一化,以得到所述各个骨骼节点的归一化后的回传缓存矩阵;系数更新模块10024用于根据所述各个骨骼节点的归一化后的回传缓存矩阵,更新所述各个骨骼节点的骨骼驱动系数,直至达到预设的结束条件;确定模块10025用于将达到所述结束条件时的骨骼驱动系数,确定为所述待采用骨骼驱动系数。
一些实施例中,所述计算模块10021具体用于:根据所述网格模型和所述基底蒙皮骨骼模型,计算所述当前节点的最优局部位姿矩阵;将所述最优局部位姿矩阵累加到预置的回传缓存矩阵中,以得到累加后的回传缓存矩阵,将所述累加后的回传缓存矩阵作为所述更新前的回传缓存矩阵。
一些实施例中,所述缓存更新模块10022具体用于:计算所述父节点的蒙皮总权重比值,所述比值为第一蒙皮总权重与第二蒙皮总权重的比值,所述第一蒙皮总权重为所述当前节点的蒙皮总权重,所述第二蒙皮总权重为所述父节点在所述IK链上的蒙皮总权重;根据所述蒙皮总权重比值、预设的全局回传系数和所述父节点的IK位姿矩阵,计算加权位姿矩阵;将所述加权位姿矩阵累加到所述更新前的回传缓存矩阵中。
一些实施例中,所述计算模块10021进一步具体用于:获取第一组点云和第二组点云,所述第二组点云包括一组第二顶点,所述一组第二顶点为所述当前节点在所述基底蒙皮骨骼模型中作用的蒙皮区域包括的第二顶点,所述第一组点云包括一组第一顶点,所述一组第一顶点为所述网格模型中与所述蒙皮区域的位置对应的区域包括的第一顶点;求解最优的刚性变换矩阵,使得采用所述最优的刚性变换矩阵对所述第二组点云变换后的点云,与所述第一组点云的误差最小;将所述最优的刚性变换矩阵作为所述最优局部位姿矩阵。
一些实施例中,所述归一化后的回传缓存矩阵为局部位姿矩阵,所述系数更新模块10025具体用于:获取所述各个骨骼节点的更新前的骨骼驱动系数对应的源值,所述更新前的骨骼驱动系数的初始值为所述基底蒙皮骨骼模型对应的骨骼驱动系数;根据所述各个骨骼节点的局部位姿矩阵,确定所述各个骨骼节点的目标值;对应所述各个骨骼节点,计算所述目标值与所述源值的差值,并用所述差值乘以预设步长,以得到乘积值,再用所述乘积值加上所述源值,以得到所述各个骨骼节点的结果值;将所述各个骨骼节点的结果值对应的骨骼驱动系数,作为所述各个骨骼节点的更新后的骨骼驱动系数。
一些实施例中,所述确定模块10026还用于:在所述骨骼驱动系数的更新次数达到预设次数时,确定达到所述结束条件;和/或,根据更新后的骨骼驱动系数更新第二位置坐标,以得到第三位置坐标;以及,根据第一位置坐标和所述第三位置坐标计算误差值,在所述误差值收敛时,确定达到所述结束条件;所述第一位置坐标为所述第一顶点的位置坐标,所述第二位置坐标为所述第二顶点的位置坐标。
一些实施例中,所述发送单元1003具体用于:在所述各个骨骼节点的当前骨骼驱动系数中,选择出满足预设选择条件的骨骼节点的当前骨骼驱动系数,以得到选择后的当前骨骼驱动系数;将所述选择后的当前骨骼驱动系数发送给客户端,以使所述客户端根据所述选择后的当前骨骼驱动系数生成当前蒙皮骨骼驱动模型,并将所述当前蒙皮骨骼驱动模型作为所述虚拟形象。
本实施例中,通过服务端对当前骨骼驱动系数进行筛选,可以进一步降低数据量,进而降低网络流程开销,降低对移动终端的资源占用,便于在移动终端上部署。通过最优刚性变换求解,可以计算得到最优具备位姿矩阵;通过设置并更新回传缓存矩阵,可以将子节点的优化结果作用到父节点,提高各个节点的骨骼驱动系数的计算准确度;通过将蒙皮总权重比值作用到IK解算器的权重,可以提高解算结果的准确度;通过基于源值和目标值更新骨骼驱动系数,可以提高骨骼驱动系数的计算准确度;通过判定结束条件,可以及时得到当前骨骼驱动系数。
可以理解的是,本公开的不同实施例中相同或相应的内容可以相互参考,实施例中未做详细说明的内容,可以参见其他实施例的相关内容。
根据本公开的实施例,本公开还提供了一种电子设备、一种可读存储介质和一种计算机程序产品。
图11示出了可以用来实施本公开的实施例的示例电子设备1100的示意性框图。电子设备旨在表示各种形式的数字计算机,诸如,膝上型计算机、台式计算机、工作台、服务器、刀片式服务器、大型计算机、和其它适合的计算机。电子设备还可以表示各种形式的移动装置,诸如,个人数字助理、蜂窝电话、智能电话、可穿戴设备和其它类似的计算装置。本文所示的部件、它们的连接和关系、以及它们的功能仅仅作为示例,并且不意在限制本文中描述的和/或者要求的本公开的实现。
如图11所示,电子设备1100包括计算单元1101,其可以根据存储在只读存储器(ROM)1102中的计算机程序或者从存储单元1108加载到随机访问存储器(RAM)1103中的计算机程序,来执行各种适当的动作和处理。在RAM 1103中,还可存储电子设备1100操作所需的各种程序和数据。计算单元1101、ROM 1102以及RAM 1103通过总线1104彼此相连。输入/输出(I/O)接口1105也连接至总线1104。
电子设备1100中的多个部件连接至I/O接口1105,包括:输入单元1106,例如键盘、鼠标等;输出单元1107,例如各种类型的显示器、扬声器等;存储单元1108,例如磁盘、光盘等;以及通信单元1109,例如网卡、调制解调器、无线通信收发机等。通信单元1109允许电子设备1100通过诸如因特网的计算机网络和/或各种电信网络与其他设备交换信息/数据。
计算单元1101可以是各种具有处理和计算能力的通用和/或专用处理组件。计算单元1101的一些示例包括但不限于中央处理单元(CPU)、图形处理单元(GPU)、各种专用的人工智能(AI)计算芯片、各种运行机器学习模型算法的计算单元、数字信号处理器(DSP)、以及任何适当的处理器、控制器、微控制器等。计算单元1101执行上文所描述的各个方法和处理,例如虚拟形象的生成方法。例如,在一些实施例中,虚拟形象的生成方法可被实现为计算机软件程序,其被有形地包含于机器可读介质,例如存储单元1108。在一些实施例中,计算机程序的部分或者全部可以经由ROM 1102和/或通信单元1109而被载入和/或安装到电子设备1100上。当计算机程序加载到RAM 1103并由计算单元1101执行时,可以执行上文描述的虚拟形象的生成方法的一个或多个步骤。备选地,在其他实施例中,计算单元1101可以通过其他任何适当的方式(例如,借助于固件)而被配置为执行虚拟形象的生成方法。
本文中以上描述的***和技术的各种实施方式可以在数字电子电路***、集成电路***、场可编程门阵列(FPGA)、专用集成电路(ASIC)、专用标准产品(ASSP)、芯片上***的***(SOC)、负载可编程逻辑设备(CPLD)、计算机硬件、固件、软件、和/或它们的组合中实现。这些各种实施方式可以包括:实施在一个或者多个计算机程序中,该一个或者多个计算机程序可在包括至少一个可编程处理器的可编程***上执行和/或解释,该可编程处理器可以是专用或者通用可编程处理器,可以从存储***、至少一个输入装置、和至少一个输出装置接收数据和指令,并且将数据和指令传输至该存储***、该至少一个输入装置、和该至少一个输出装置。
用于实施本公开的方法的程序代码可以采用一个或多个编程语言的任何组合来编写。这些程序代码可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器或控制器,使得程序代码当由处理器或控制器执行时使流程图和/或框图中所规定的功能/操作被实施。程序代码可以完全在机器上执行、部分地在机器上执行,作为独立软件包部分地在机器上执行且部分地在远程机器上执行或完全在远程机器或服务器上执行。
在本公开的上下文中,机器可读介质可以是有形的介质,其可以包含或存储以供指令执行***、装置或设备使用或与指令执行***、装置或设备结合地使用的程序。机器可读介质可以是机器可读信号介质或机器可读储存介质。机器可读介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体***、装置或设备,或者上述内容的任何合适组合。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或快闪存储器)、光纤、便捷式紧凑盘只读存储器(CD-ROM)、光学储存设备、磁储存设备、或上述内容的任何合适组合。
为了提供与用户的交互,可以在计算机上实施此处描述的***和技术,该计算机具有:用于向用户显示信息的显示装置(例如,CRT(阴极射线管)或者LCD(液晶显示器)监视器);以及键盘和指向装置(例如,鼠标或者轨迹球),用户可以通过该键盘和该指向装置来将输入提供给计算机。其它种类的装置还可以用于提供与用户的交互;例如,提供给用户的反馈可以是任何形式的传感反馈(例如,视觉反馈、听觉反馈、或者触觉反馈);并且可以用任何形式(包括声输入、语音输入或者、触觉输入)来接收来自用户的输入。
可以将此处描述的***和技术实施在包括后台部件的计算***(例如,作为数据服务器)、或者包括中间件部件的计算***(例如,应用服务器)、或者包括前端部件的计算***(例如,具有图形用户界面或者网络浏览器的用户计算机,用户可以通过该图形用户界面或者该网络浏览器来与此处描述的***和技术的实施方式交互)、或者包括这种后台部件、中间件部件、或者前端部件的任何组合的计算***中。可以通过任何形式或者介质的数字数据通信(例如,通信网络)来将***的部件相互连接。通信网络的示例包括:局域网(LAN)、广域网(WAN)和互联网。
计算机***可以包括客户端和服务器。客户端和服务器一般远离彼此并且通常通过通信网络进行交互。通过在相应的计算机上运行并且彼此具有客户端-服务器关系的计算机程序来产生客户端和服务器的关系。服务器可以是云服务器,又称为云计算服务器或云主机,是云计算服务体系中的一项主机产品,以解决了传统物理主机与VPS服务("Virtual Private Server",或简称"VPS")中,存在的管理难度大,业务扩展性弱的缺陷。服务器也可以为分布式***的服务器,或者是结合了区块链的服务器。
应该理解,可以使用上面所示的各种形式的流程,重新排序、增加或删除步骤。例如,本发公开中记载的各步骤可以并行地执行也可以顺序地执行也可以不同的次序执行,只要能够实现本公开公开的技术方案所期望的结果,本文在此不进行限制。
上述具体实施方式,并不构成对本公开保护范围的限制。本领域技术人员应该明白的是,根据设计要求和其他因素,可以进行各种修改、组合、子组合和替代。任何在本公开的精神和原则之内所作的修改、等同替换和改进等,均应包含在本公开保护范围之内。
Claims (19)
1.一种虚拟形象的生成方法,包括:
获取图像的网格模型,以及预置的基底蒙皮骨骼模型,所述基底蒙皮骨骼模型包括至少一个骨骼节点,所述网格模型和所述基底蒙皮骨骼模型具有相同的拓扑结构;
根据所述网格模型和所述基底蒙皮骨骼模型,确定所述至少一个骨骼节点中各个骨骼节点的当前骨骼驱动系数;
将所述当前骨骼驱动系数发送给客户端,以使所述客户端根据所述当前骨骼驱动系数生成所述图像对应的虚拟形象。
2.根据权利要求1所述的方法,其中,所述根据所述网格模型和所述基底蒙皮骨骼模型,确定所述至少一个骨骼节点中各个骨骼节点的当前骨骼驱动系数,包括:
将所述各个骨骼节点分别作为当前节点,根据所述网格模型和所述基底蒙皮骨骼模型,计算所述当前节点的更新前的回传缓存矩阵;
采用反向运动IK解算器,计算所述当前节点所在IK链上各级父节点的IK位姿矩阵,并根据所述父节点的IK位姿矩阵更新所述更新前的回传缓存矩阵,以得到所述各个骨骼节点的更新后的回传缓存矩阵;
对所述各个骨骼节点的更新后的回传缓存矩阵进行归一化,以得到所述各个骨骼节点的归一化后的回传缓存矩阵;
根据所述各个骨骼节点的归一化后的回传缓存矩阵,更新所述各个骨骼节点的骨骼驱动系数,直至达到预设的结束条件;
将达到所述结束条件时的骨骼驱动系数,确定为所述待采用骨骼驱动系数。
3.根据权利要求2所述的方法,其中,所述根据所述网格模型和所述基底蒙皮骨骼模型,计算所述当前节点的更新前的回传缓存矩阵,包括:
根据所述网格模型和所述基底蒙皮骨骼模型,计算所述当前节点的最优局部位姿矩阵;
将所述最优局部位姿矩阵累加到预置的回传缓存矩阵中,以得到累加后的回传缓存矩阵,将所述累加后的回传缓存矩阵作为所述更新前的回传缓存矩阵。
4.根据权利要求2所述的方法,其中,所述根据所述父节点的IK位姿矩阵更新所述更新前的回传缓存矩阵,包括:
计算所述父节点的蒙皮总权重比值,所述比值为第一蒙皮总权重与第二蒙皮总权重的比值,所述第一蒙皮总权重为所述当前节点的蒙皮总权重,所述第二蒙皮总权重为所述父节点在所述IK链上的蒙皮总权重;
根据所述蒙皮总权重比值、预设的全局回传系数和所述父节点的IK位姿矩阵,计算加权位姿矩阵;
将所述加权位姿矩阵累加到所述更新前的回传缓存矩阵中。
5.根据权利要求3所述的方法,其中,所述网格模型包括至少一个第一顶点,所述基底蒙皮骨骼模型包括至少一个第二顶点,所述根据所述网格模型和所述基底蒙皮骨骼模型,计算所述当前节点的最优局部位姿矩阵,包括:
获取第一组点云和第二组点云,所述第二组点云包括一组第二顶点,所述一组第二顶点为所述当前节点在所述基底蒙皮骨骼模型中作用的蒙皮区域包括的第二顶点,所述第一组点云包括一组第一顶点,所述一组第一顶点为所述网格模型中与所述蒙皮区域的位置对应的区域包括的第一顶点;
求解最优的刚性变换矩阵,使得采用所述最优的刚性变换矩阵对所述第二组点云变换后的点云,与所述第一组点云的误差最小;
将所述最优的刚性变换矩阵作为所述最优局部位姿矩阵。
6.根据权利要求2所述的方法,其中,所述归一化后的回传缓存矩阵为局部位姿矩阵,所述根据所述各个骨骼节点的归一化后的回传缓存矩阵,更新所述各个骨骼节点的骨骼驱动系数,包括:
获取所述各个骨骼节点的更新前的骨骼驱动系数对应的源值,所述更新前的骨骼驱动系数的初始值为所述基底蒙皮骨骼模型对应的骨骼驱动系数;
根据所述各个骨骼节点的局部位姿矩阵,确定所述各个骨骼节点的目标值;
对应所述各个骨骼节点,计算所述目标值与所述源值的差值,并用所述差值乘以预设步长,以得到乘积值,再用所述乘积值加上所述源值,以得到所述各个骨骼节点的结果值;
将所述各个骨骼节点的结果值对应的骨骼驱动系数,作为所述各个骨骼节点的更新后的骨骼驱动系数。
7.根据权利要求2所述的方法,其中,还包括:
在所述骨骼驱动系数的更新次数达到预设次数时,确定达到所述结束条件;和/或,
根据更新后的骨骼驱动系数更新第二位置坐标,以得到第三位置坐标;以及,根据第一位置坐标和所述第三位置坐标计算误差值,在所述误差值收敛时,确定达到所述结束条件;所述第一位置坐标为所述第一顶点的位置坐标,所述第二位置坐标为所述第二顶点的位置坐标。
8.根据权利要求1-7任一项所述的方法,其中,还包括:
在所述各个骨骼节点的当前骨骼驱动系数中,选择出满足预设选择条件的骨骼节点的当前骨骼驱动系数,以得到选择后的当前骨骼驱动系数;
将所述选择后的当前骨骼驱动系数发送给客户端,以使所述客户端根据所述选择后的当前骨骼驱动系数生成当前蒙皮骨骼驱动模型,并将所述当前蒙皮骨骼驱动模型作为所述虚拟形象。
9.一种虚拟形象的生成装置,包括:
获取单元,用于获取图像的网格模型,以及预置的基底蒙皮骨骼模型,所述基底蒙皮骨骼模型包括至少一个骨骼节点,所述网格模型和所述基底蒙皮骨骼模型具有相同的拓扑结构;
确定单元,用于根据所述网格模型和所述基底蒙皮骨骼模型,确定所述至少一个骨骼节点中各个骨骼节点的当前骨骼驱动系数;
发送单元,用于将所述当前骨骼驱动系数发送给客户端,以使所述客户端根据所述当前骨骼驱动系数生成所述图像对应的虚拟形象。
10.根据权利要求9所述的装置,其中,所述确定单元包括:
计算模块,用于将所述各个骨骼节点分别作为当前节点,根据所述网格模型和所述基底蒙皮骨骼模型,计算所述当前节点的更新前的回传缓存矩阵;
缓存更新模块,用于采用反向运动IK解算器,计算所述当前节点所在IK链上各级父节点的IK位姿矩阵,并根据所述父节点的IK位姿矩阵更新所述更新前的回传缓存矩阵,以得到所述各个骨骼节点的更新后的回传缓存矩阵;
归一化模块,用于对所述各个骨骼节点的更新后的回传缓存矩阵进行归一化,以得到所述各个骨骼节点的归一化后的回传缓存矩阵;
系数更新模块,用于根据所述各个骨骼节点的归一化后的回传缓存矩阵,更新所述各个骨骼节点的骨骼驱动系数,直至达到预设的结束条件;
确定模块,用于将达到所述结束条件时的骨骼驱动系数,确定为所述待采用骨骼驱动系数。
11.根据权利要求10所述的装置,其中,所述计算模块具体用于:
根据所述网格模型和所述基底蒙皮骨骼模型,计算所述当前节点的最优局部位姿矩阵;
将所述最优局部位姿矩阵累加到预置的回传缓存矩阵中,以得到累加后的回传缓存矩阵,将所述累加后的回传缓存矩阵作为所述更新前的回传缓存矩阵。
12.根据权利要求10所述的装置,其中,所述缓存更新模块具体用于:
计算所述父节点的蒙皮总权重比值,所述比值为第一蒙皮总权重与第二蒙皮总权重的比值,所述第一蒙皮总权重为所述当前节点的蒙皮总权重,所述第二蒙皮总权重为所述父节点在所述IK链上的蒙皮总权重;
根据所述蒙皮总权重比值、预设的全局回传系数和所述父节点的IK位姿矩阵,计算加权位姿矩阵;
将所述加权位姿矩阵累加到所述更新前的回传缓存矩阵中。
13.根据权利要求11所述的装置,其中,所述网格模型包括至少一个第一顶点,所述基底蒙皮骨骼模型包括至少一个第二顶点,所述计算模块进一步具体用于:
获取第一组点云和第二组点云,所述第二组点云包括一组第二顶点,所述一组第二顶点为所述当前节点在所述基底蒙皮骨骼模型中作用的蒙皮区域包括的第二顶点,所述第一组点云包括一组第一顶点,所述一组第一顶点为所述网格模型中与所述蒙皮区域的位置对应的区域包括的第一顶点;
求解最优的刚性变换矩阵,使得采用所述最优的刚性变换矩阵对所述第二组点云变换后的点云,与所述第一组点云的误差最小;
将所述最优的刚性变换矩阵作为所述最优局部位姿矩阵。
14.根据权利要求10所述的装置,其中,所述归一化后的回传缓存矩阵为局部位姿矩阵,所述系数更新模块具体用于:
获取所述各个骨骼节点的更新前的骨骼驱动系数对应的源值,所述更新前的骨骼驱动系数的初始值为所述基底蒙皮骨骼模型对应的骨骼驱动系数;
根据所述各个骨骼节点的局部位姿矩阵,确定所述各个骨骼节点的目标值;
对应所述各个骨骼节点,计算所述目标值与所述源值的差值,并用所述差值乘以预设步长,以得到乘积值,再用所述乘积值加上所述源值,以得到所述各个骨骼节点的结果值;
将所述各个骨骼节点的结果值对应的骨骼驱动系数,作为所述各个骨骼节点的更新后的骨骼驱动系数。
15.根据权利要求10所述的装置,其中,所述确定模块还用于:
在所述骨骼驱动系数的更新次数达到预设次数时,确定达到所述结束条件;和/或,
根据更新后的骨骼驱动系数更新第二位置坐标,以得到第三位置坐标;以及,根据第一位置坐标和所述第三位置坐标计算误差值,在所述误差值收敛时,确定达到所述结束条件;所述第一位置坐标为所述第一顶点的位置坐标,所述第二位置坐标为所述第二顶点的位置坐标。
16.根据权利要求9-15任一项所述的装置,其中,所述发送单元具体用于:
在所述各个骨骼节点的当前骨骼驱动系数中,选择出满足预设选择条件的骨骼节点的当前骨骼驱动系数,以得到选择后的当前骨骼驱动系数;
将所述选择后的当前骨骼驱动系数发送给客户端,以使所述客户端根据所述选择后的当前骨骼驱动系数生成当前蒙皮骨骼驱动模型,并将所述当前蒙皮骨骼驱动模型作为所述虚拟形象。
17.一种电子设备,包括:
至少一个处理器;以及
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行权利要求1-8中任一项所述的方法。
18.一种存储有计算机指令的非瞬时计算机可读存储介质,其中,所述计算机指令用于使所述计算机执行根据权利要求1-8中任一项所述的方法。
19.一种计算机程序产品,包括计算机程序,所述计算机程序在被处理器执行时实现根据权利要求1-8中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110111064.9A CN112819971B (zh) | 2021-01-26 | 2021-01-26 | 虚拟形象的生成方法、装置、设备和介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110111064.9A CN112819971B (zh) | 2021-01-26 | 2021-01-26 | 虚拟形象的生成方法、装置、设备和介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112819971A true CN112819971A (zh) | 2021-05-18 |
CN112819971B CN112819971B (zh) | 2022-02-25 |
Family
ID=75859678
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110111064.9A Active CN112819971B (zh) | 2021-01-26 | 2021-01-26 | 虚拟形象的生成方法、装置、设备和介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112819971B (zh) |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113209625A (zh) * | 2021-05-21 | 2021-08-06 | 珠海金山网络游戏科技有限公司 | 数据处理方法及装置 |
CN115049799A (zh) * | 2022-06-14 | 2022-09-13 | 北京百度网讯科技有限公司 | 3d模型和虚拟形象的生成方法和装置 |
CN115147523A (zh) * | 2022-07-07 | 2022-10-04 | 北京百度网讯科技有限公司 | 虚拟形象驱动方法及装置、设备、介质和程序产品 |
CN115222899A (zh) * | 2022-09-21 | 2022-10-21 | 湖南草根文化传媒有限公司 | 虚拟数字人生成方法、***、计算机设备及存储介质 |
CN115359171A (zh) * | 2022-10-21 | 2022-11-18 | 北京百度网讯科技有限公司 | 虚拟形象处理方法、装置、电子设备和存储介质 |
WO2022242038A1 (zh) * | 2021-05-19 | 2022-11-24 | 深圳市慧鲤科技有限公司 | 动画迁移方法和装置、设备、存储介质和计算机程序产品 |
CN116310000A (zh) * | 2023-03-16 | 2023-06-23 | 北京百度网讯科技有限公司 | 蒙皮数据生成方法、装置、电子设备及存储介质 |
WO2023216646A1 (zh) * | 2022-05-13 | 2023-11-16 | 阿里巴巴(中国)有限公司 | 三维虚拟模型的驱动处理方法、装置、设备和存储介质 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1885348A (zh) * | 2005-06-21 | 2006-12-27 | 中国科学院计算技术研究所 | 一种基于骨骼的任意拓扑结构虚拟角色的驱动方法 |
CN103745491A (zh) * | 2013-12-27 | 2014-04-23 | 江苏如意通动漫产业有限公司 | 软骨骼动画生成方法 |
GB201601790D0 (en) * | 2016-02-01 | 2016-03-16 | Naturalmotion Ltd | Animating a virtual object in a virtual world |
CN108876815A (zh) * | 2018-04-28 | 2018-11-23 | 深圳市瑞立视多媒体科技有限公司 | 骨骼姿态计算方法、人物虚拟模型驱动方法及存储介质 |
CN108961369A (zh) * | 2018-07-11 | 2018-12-07 | 厦门幻世网络科技有限公司 | 生成3d动画的方法和装置 |
CN110766777A (zh) * | 2019-10-31 | 2020-02-07 | 北京字节跳动网络技术有限公司 | 虚拟形象的生成方法、装置、电子设备及存储介质 |
WO2020070812A1 (ja) * | 2018-10-03 | 2020-04-09 | 株式会社ソニー・インタラクティブエンタテインメント | スケルトンモデル更新装置、スケルトンモデル更新方法及びプログラム |
CN112184921A (zh) * | 2020-10-30 | 2021-01-05 | 北京百度网讯科技有限公司 | 虚拟形象驱动方法、装置、设备和介质 |
-
2021
- 2021-01-26 CN CN202110111064.9A patent/CN112819971B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1885348A (zh) * | 2005-06-21 | 2006-12-27 | 中国科学院计算技术研究所 | 一种基于骨骼的任意拓扑结构虚拟角色的驱动方法 |
CN103745491A (zh) * | 2013-12-27 | 2014-04-23 | 江苏如意通动漫产业有限公司 | 软骨骼动画生成方法 |
GB201601790D0 (en) * | 2016-02-01 | 2016-03-16 | Naturalmotion Ltd | Animating a virtual object in a virtual world |
CN108876815A (zh) * | 2018-04-28 | 2018-11-23 | 深圳市瑞立视多媒体科技有限公司 | 骨骼姿态计算方法、人物虚拟模型驱动方法及存储介质 |
CN108961369A (zh) * | 2018-07-11 | 2018-12-07 | 厦门幻世网络科技有限公司 | 生成3d动画的方法和装置 |
WO2020070812A1 (ja) * | 2018-10-03 | 2020-04-09 | 株式会社ソニー・インタラクティブエンタテインメント | スケルトンモデル更新装置、スケルトンモデル更新方法及びプログラム |
CN110766777A (zh) * | 2019-10-31 | 2020-02-07 | 北京字节跳动网络技术有限公司 | 虚拟形象的生成方法、装置、电子设备及存储介质 |
CN112184921A (zh) * | 2020-10-30 | 2021-01-05 | 北京百度网讯科技有限公司 | 虚拟形象驱动方法、装置、设备和介质 |
Non-Patent Citations (3)
Title |
---|
J. HUANG.ETC: ""Inverse k inematics using d ynamic joint p arameters:inverse k inematics animation synthesis learn t f ro m sub-divided motion micro-segments"", 《THE VISUAL COMPUTER 》 * |
宋晓等: ""一种虚拟人动作及面部表情的驱动机制"", 《中国传媒大学学报自然科学版》 * |
高峰等编著: "《3ds Max 2013中文版从入门到精通》", 31 January 2013, 中国青年出版社 * |
Cited By (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2022242038A1 (zh) * | 2021-05-19 | 2022-11-24 | 深圳市慧鲤科技有限公司 | 动画迁移方法和装置、设备、存储介质和计算机程序产品 |
CN113209625A (zh) * | 2021-05-21 | 2021-08-06 | 珠海金山网络游戏科技有限公司 | 数据处理方法及装置 |
WO2023216646A1 (zh) * | 2022-05-13 | 2023-11-16 | 阿里巴巴(中国)有限公司 | 三维虚拟模型的驱动处理方法、装置、设备和存储介质 |
CN115049799A (zh) * | 2022-06-14 | 2022-09-13 | 北京百度网讯科技有限公司 | 3d模型和虚拟形象的生成方法和装置 |
CN115049799B (zh) * | 2022-06-14 | 2024-01-09 | 北京百度网讯科技有限公司 | 3d模型和虚拟形象的生成方法和装置 |
CN115147523A (zh) * | 2022-07-07 | 2022-10-04 | 北京百度网讯科技有限公司 | 虚拟形象驱动方法及装置、设备、介质和程序产品 |
CN115222899A (zh) * | 2022-09-21 | 2022-10-21 | 湖南草根文化传媒有限公司 | 虚拟数字人生成方法、***、计算机设备及存储介质 |
CN115222899B (zh) * | 2022-09-21 | 2023-02-21 | 湖南草根文化传媒有限公司 | 虚拟数字人生成方法、***、计算机设备及存储介质 |
CN115359171A (zh) * | 2022-10-21 | 2022-11-18 | 北京百度网讯科技有限公司 | 虚拟形象处理方法、装置、电子设备和存储介质 |
CN115359171B (zh) * | 2022-10-21 | 2023-04-07 | 北京百度网讯科技有限公司 | 虚拟形象处理方法、装置、电子设备和存储介质 |
CN116310000A (zh) * | 2023-03-16 | 2023-06-23 | 北京百度网讯科技有限公司 | 蒙皮数据生成方法、装置、电子设备及存储介质 |
CN116310000B (zh) * | 2023-03-16 | 2024-05-14 | 北京百度网讯科技有限公司 | 蒙皮数据生成方法、装置、电子设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN112819971B (zh) | 2022-02-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112819971B (zh) | 虚拟形象的生成方法、装置、设备和介质 | |
CN110288681B (zh) | 角色模型的蒙皮方法、装置、介质及电子设备 | |
CN112862933B (zh) | 用于优化模型的方法、装置、设备以及存储介质 | |
CN112785674A (zh) | 纹理贴图的生成方法、渲染方法、装置、设备及存储介质 | |
CN113658309B (zh) | 三维重建方法、装置、设备以及存储介质 | |
CN111868738B (zh) | 跨设备监控计算机视觉*** | |
CN114677572B (zh) | 对象描述参数的生成方法、深度学习模型的训练方法 | |
CN115861498A (zh) | 动作捕捉的重定向方法和装置 | |
CN117152208A (zh) | 虚拟形象的生成方法、深度学习模型的训练方法及装置 | |
CN112562043B (zh) | 图像处理方法、装置和电子设备 | |
CN115775300B (zh) | 人体模型的重建方法、人体重建模型的训练方法及装置 | |
CN116092120B (zh) | 基于图像的动作确定方法、装置、电子设备及存储介质 | |
CN116524165A (zh) | 三维表情模型的迁移方法、装置、设备和存储介质 | |
CN113610856B (zh) | 训练图像分割模型和图像分割的方法和装置 | |
CN114581586A (zh) | 一种模型基底的生成方法、装置、电子设备及存储介质 | |
CN113593047B (zh) | 动作序列迁移的方法、装置及电子设备 | |
CN110135340A (zh) | 基于点云的3d手部姿态估计方法 | |
CN116228939B (zh) | 数字人驱动方法、装置、电子设备及存储介质 | |
CN115937373B (zh) | 虚拟形象驱动方法、装置、设备以及存储介质 | |
CN116206035B (zh) | 人脸重建方法、装置、电子设备以及存储介质 | |
JP7391127B2 (ja) | 点群データ処理方法、装置、電子デバイス、記憶媒体、及びプログラム | |
CN113610992B (zh) | 骨骼驱动系数确定方法、装置、电子设备及可读存储介质 | |
CN114820908B (zh) | 虚拟形象生成方法、装置、电子设备和存储介质 | |
CN114842122B (zh) | 模型渲染方法、装置、设备及存储介质 | |
CN115830640B (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |