一种虚拟服装渲染方法及装置与流程

文档序号:32517212发布日期:2022-12-13 16:43阅读:35来源:国知局
一种虚拟服装渲染方法及装置与流程

1.本公开涉及图形技术领域,尤其涉及一种虚拟服装渲染方法及装置。


背景技术:

2.虚拟服装渲染在日常生活中的应用已非常广泛。例如:基于虚拟服装渲染技术实现的虚拟试衣可以通过图像集采装置实时捕捉用户姿态,并将虚拟服装渲染到用户身上,无需用户进行繁琐的脱穿衣物操作,即实现试衣,进而极大的提升了试衣效率。
3.为了提升渲染出的虚拟服装的真实感,虚拟服装需要跟随用户的姿态变化而相应变化。现有技术中使虚拟服装跟随用户的姿态变化而变化的实现方案主要包括两种,一种为:采用骨骼动画驱动虚拟服装跟随用户的姿态变化而变化,另一种为:采用物理仿真技术虚拟服装跟随用户的姿态变化而变化。然而,采用骨骼动画驱动虚拟服装跟随用户的姿态变化而变化的方式仅可以使虚拟服装整体姿态随用户的姿态变化,但无法动态的使虚拟服装随用户的姿态变化而产生应有的褶皱,真实仍然感较差。采用物理仿真技术使虚拟服装跟随用户的姿态变化而变化虽然可以使虚拟服装随用户的姿态变化而产生应有的褶皱,但这种方式计算量过大,对设备的性能要求很高,很容易出现卡顿等问题。


技术实现要素:

4.有鉴于此,本公开实施例提供了一种虚拟服装渲染方法及装置,用于在使虚拟服装可以随用户的姿态变化而产生褶皱效果的同时,减少虚拟服装渲染的计算量。
5.为了实现上述目的,本公开实施例提供技术方案如下:
6.第一方面,本公开的实施例提供了一种虚拟服装渲染方法,包括:
7.获取目标对象的姿态信息;
8.根据所述姿态信息获取虚拟服装的各个网格顶点的目标位置,所述虚拟服装的各个网格顶点的目标位置包括根据所述姿态信息对所述虚拟服装进行形变后所述虚拟服装的各个网格顶点的位置;
9.根据所述虚拟服装的各个网格顶点的目标位置获取所述虚拟服装的各个位置的法线方向;
10.根据所述虚拟服装的各个位置的法线方向对所述虚拟服装进行渲染,并输出所述虚拟服装的渲染效果图像。
11.作为本公开实施例一种可选的实施方式,所述根据所述姿态信息获取虚拟服装的各个网格顶点的目标位置,包括:
12.根据所述姿态信息获取所述目标对象的骨骼模型中的所述至少一个骨骼的骨骼变换矩阵,任一骨骼的骨骼变换矩阵为将该骨骼由初始位置变换至所述姿态信息对应的位置的矩阵;
13.根据所述至少一个骨骼的骨骼变换矩阵和所述至少一个骨骼的蒙皮信息,计算所述虚拟服装的各个网格顶点的目标位置;任一骨骼的蒙皮信息包括该骨骼对所述虚拟服装
的各个网格顶点的影响权重。
14.作为本公开实施例一种可选的实施方式,所述根据所述至少一个骨骼的骨骼变换矩阵和所述至少一个骨骼的蒙皮信息,计算所述虚拟服装的各个网格顶点的目标位置,包括:
15.获取所述至少一个骨骼中的各个骨骼对所述虚拟服装的各个网格顶点的影响值,任一骨骼对任一网格顶点的影响值包括该骨骼对该网格顶点的影响权重、该骨骼的骨骼变换矩阵以及该网格顶点的初始位置的乘积;
16.分别对所述至少一个骨骼中的各个骨骼对所述虚拟服装的同一网格顶点的影响值求和,获取所述虚拟服装的各个网格顶点的目标位置。
17.作为本公开实施例一种可选的实施方式,在根据所述姿态信息获取所述目标对象的骨骼模型中的所述至少一个骨骼的骨骼变换矩阵之前,所述方法还包括:
18.获取目标图像,所述目标图像包括所述目标对象;
19.根据所述目标图像提取所述目标对象的骨骼模型。
20.作为本公开实施例一种可选的实施方式,所述根据所述虚拟服装的各个网格顶点的目标位置获取所述虚拟服装的各个位置的法线方向,包括:
21.根据所述虚拟服装的各个网格顶点的目标位置、所述虚拟服装的各个网格顶点的初始位置、所述虚拟服装的各个网格顶点的各个相邻网格顶点的目标位置以及所述虚拟服装的各个网格顶点的各个相邻网格顶点的初始位置,获取所述虚拟服装的各个网格顶点的压缩率和压缩方向;
22.根据所述虚拟服装的各个网格顶点的压缩率和压缩方向,生成所述虚拟服装形成的褶皱高度场;
23.根据所述褶皱高度场获取所述虚拟服装的各个位置的法线方向。
24.作为本公开实施例一种可选的实施方式,所述根据所述虚拟服装的各个网格顶点的目标位置、所述虚拟服装的各个网格顶点的初始位置、所述虚拟服装的各个网格顶点的各个相邻网格顶点的目标位置以及所述虚拟服装的各个网格顶点的各个相邻网格顶点的初始位置,获取所述虚拟服装的各个网格顶点的压缩率和压缩方向,包括:
25.获取各个网格顶点与各个相邻网格顶点的第一位置差,任一网格顶点与任一相邻网格顶点的第一位置差为该相邻网格顶点的目标位置与该网格顶点的目标位置的差值;
26.获取各个网格顶点与各个相邻网格顶点的第二位置差,任一网格顶点与任一相邻网格顶点的第二位置差为该相邻网格顶点的初始位置与该网格顶点的初始位置的差值;
27.获取各个网格顶点的各个相邻网格顶点对应的第一矩阵,任一网格顶点的任一相邻网格顶点对应的第一矩阵为该网格顶点与该相邻网格顶点的第一位置差和第二位置差的张量积;
28.获取各个网格顶点的第一特征矩阵,任一网格顶点的第一特征矩阵为该网格顶点的各个相邻网格顶点对应的第一矩阵的和;
29.获取各个网格顶点的各个相邻网格顶点对应的第二矩阵,任一网格顶点的任一相邻网格顶点对应的第二矩阵为该网格顶点与该相邻网格顶点的第二位置差和第二位置差的张量积;
30.获取各个网格顶点的第二特征矩阵,任一网格顶点的第二特征矩阵为该网格顶点
的各个相邻网格顶点对应的第二矩阵的和;
31.获取各个网格顶点的第三特征矩阵,任一网格顶点的第三特征矩阵为该网格顶点的第一特征矩阵和该网格顶点的第二特征矩阵的逆矩阵的乘积;
32.获取各个网格顶点的第四特征矩阵,任一网格顶点的第四特征矩阵为该网格顶点的第三特征矩阵的转置矩阵与该网格顶点的第三特征矩阵的乘积;
33.获取各个网格顶点的第四特征矩阵的最小特征值和特征向量,并将所述最小特征值和所述特征向量分别作为各个网格顶点的压缩率和压缩方向。
34.作为本公开实施例一种可选的实施方式,所述根据所述虚拟服装的各个网格顶点的压缩率和压缩方向,生成所述虚拟服装形成的褶皱高度场,包括:
35.根据所述虚拟服装的各个网格顶点的压缩率获取所述虚拟服装的各个网格顶点的高度值,任一网格顶点的高度值为第一常数与该网格顶点对应的第一计算值的乘积,任一网格顶点对应的第一计算值为第二常数与该网格顶点的压缩率的差值;
36.获取所述虚拟服装的各个位置的影响值,任一位置的影响值包括该位置所属网格的各个网格顶点对该位置的影响值,任一网格顶点对任一位置的影响值包括该网格顶点的高度值与对应的高度保持率的乘积,任一位置对任一网格顶点的高度保持率为该网格顶点的压缩方向与对应的位置差的余弦值,任一位置与任一网格顶点的位置差为该位置与该网格顶点的目标位置的位置差;
37.根据所述虚拟服装的各个位置的影响值,获取所述虚拟服装的各个位置的高度;
38.根据所述虚拟服装上各位置的高度获取所述虚拟服装形成的褶皱高度场。
39.作为本公开实施例一种可选的实施方式,所述根据所述褶皱高度场获取所述虚拟服装的各个位置的法线方向,包括:
40.根据所述褶皱高度场获取所述虚拟服装的各个位置的梯度;
41.对所述虚拟服装的各个位置的初始法线方向和所述虚拟服装的各个位置的梯度作差,获取所述虚拟服装的各个位置的法线方向。
42.作为本公开实施例一种可选的实施方式,在根据所述姿态信息获取虚拟服装的各个网格顶点的目标位置之前,所述方法还包括:
43.合并所述虚拟服装的网格顶点中位置相同的网格顶点,生成拓扑完全相连的所述虚拟服装。
44.第二方面,本公开实施例提供一种虚拟服装渲染装置,包括:
45.获取单元,用于获取目标对象的姿态信息;
46.驱动单元,用于根据所述姿态信息获取虚拟服装的各个网格顶点的目标位置,所述虚拟服装的各个网格顶点的目标位置包括根据所述姿态信息对所述虚拟服装进行形变后所述虚拟服装的各个网格顶点的位置;
47.处理单元,用于根据所述虚拟服装的各个网格顶点的目标位置获取所述虚拟服装的各个位置的法线方向;
48.渲染单元,用于根据所述虚拟服装的各个位置的法线方向对所述虚拟服装进行渲染,并输出所述虚拟服装的渲染效果图像。
49.作为本公开实施例一种可选的实施方式,所述驱动单元,具体用于根据所述姿态信息获取所述目标对象的骨骼模型中的所述至少一个骨骼的骨骼变换矩阵;根据所述至少
一个骨骼的骨骼变换矩阵和所述至少一个骨骼的蒙皮信息,计算所述虚拟服装的各个网格顶点的目标位置;
50.其中,任一骨骼的骨骼变换矩阵为将该骨骼由初始位置变换至所述姿态信息对应的位置的矩阵,任一骨骼的蒙皮信息包括该骨骼对所述虚拟服装的各个网格顶点的影响权重。
51.作为本公开实施例一种可选的实施方式,所述驱动单元,具体用于获取所述至少一个骨骼中的各个骨骼对所述虚拟服装的各个网格顶点的影响值,分别对所述至少一个骨骼中的各个骨骼对所述虚拟服装的同一网格顶点的影响值求和,获取所述虚拟服装的各个网格顶点的目标位置;
52.其中,任一骨骼对任一网格顶点的影响值包括该骨骼对该网格顶点的影响权重、该骨骼的骨骼变换矩阵以及该网格顶点的初始位置的乘积。
53.作为本公开实施例一种可选的实施方式,所述装置还包括:
54.提取单元,用于所述驱动单元根据所述姿态信息获取所述目标对象的骨骼模型中的所述至少一个骨骼的骨骼变换矩阵之前,获取目标图像,根据所述目标图像提取所述目标对象的骨骼模型;
55.其中,所述目标图像包括所述目标对象。
56.作为本公开实施例一种可选的实施方式,所述处理单元,具体用于根据所述虚拟服装的各个网格顶点的目标位置、所述虚拟服装的各个网格顶点的初始位置、所述虚拟服装的各个网格顶点的各个相邻网格顶点的目标位置以及所述虚拟服装的各个网格顶点的各个相邻网格顶点的初始位置,获取所述虚拟服装的各个网格顶点的压缩率和压缩方向;根据所述虚拟服装的各个网格顶点的压缩率和压缩方向,生成所述虚拟服装形成的褶皱高度场;根据所述褶皱高度场获取所述虚拟服装的各个位置的法线方向。
57.作为本公开实施例一种可选的实施方式,所述处理单元,具体用于获取各个网格顶点与各个相邻网格顶点的第一位置差,任一网格顶点与任一相邻网格顶点的第一位置差为该相邻网格顶点的目标位置与该网格顶点的目标位置的差值;获取各个网格顶点与各个相邻网格顶点的第二位置差,任一网格顶点与任一相邻网格顶点的第二位置差为该相邻网格顶点的初始位置与该网格顶点的初始位置的差值;获取各个网格顶点的各个相邻网格顶点对应的第一矩阵,任一网格顶点的任一相邻网格顶点对应的第一矩阵为该网格顶点与该相邻网格顶点的第一位置差和第二位置差的张量积;获取各个网格顶点的第一特征矩阵,任一网格顶点的第一特征矩阵为该网格顶点的各个相邻网格顶点对应的第一矩阵的和;获取各个网格顶点的各个相邻网格顶点对应的第二矩阵,任一网格顶点的任一相邻网格顶点对应的第二矩阵为该网格顶点与该相邻网格顶点的第二位置差和第二位置差的张量积;获取各个网格顶点的第二特征矩阵,任一网格顶点的第二特征矩阵为该网格顶点的各个相邻网格顶点对应的第二矩阵的和;获取各个网格顶点的第三特征矩阵,任一网格顶点的第三特征矩阵为该网格顶点的第一特征矩阵和该网格顶点的第二特征矩阵的逆矩阵的乘积;获取各个网格顶点的第四特征矩阵,任一网格顶点的第四特征矩阵为该网格顶点的第三特征矩阵的转置矩阵与该网格顶点的第三特征矩阵的乘积;获取各个网格顶点的第四特征矩阵的最小特征值和特征向量,并将所述最小特征值和所述特征向量分别作为各个网格顶点的压缩率和压缩方向。
58.作为本公开实施例一种可选的实施方式,所述处理单元,具体用于根据所述虚拟服装的各个网格顶点的压缩率获取所述虚拟服装的各个网格顶点的高度值,任一网格顶点的高度值为第一常数与该网格顶点对应的第一计算值的乘积,任一网格顶点对应的第一计算值为第二常数与该网格顶点的压缩率的差值;获取所述虚拟服装的各个位置的影响值,任一位置的影响值包括该位置所属网格的各个网格顶点对该位置的影响值,任一网格顶点对任一位置的影响值包括该网格顶点的高度值与对应的高度保持率的乘积,任一位置对任一网格顶点的高度保持率为该网格顶点的压缩方向与对应的位置差的余弦值,任一位置与任一网格顶点的位置差为该位置与该网格顶点的目标位置的位置差;根据所述虚拟服装的各个位置的影响值,获取所述虚拟服装的各个位置的高度;根据所述虚拟服装上各位置的高度获取所述虚拟服装形成的褶皱高度场。
59.作为本公开实施例一种可选的实施方式,所述处理单元,具体用于根据所述褶皱高度场获取所述虚拟服装的各个位置的梯度;
60.对所述虚拟服装的各个位置的初始法线方向和所述虚拟服装的各个位置的梯度作差,获取所述虚拟服装的各个位置的法线方向。
61.作为本公开实施例一种可选的实施方式,所述装置还包括:
62.生成单元,用于在所述驱动单元根据所述姿态信息获取虚拟服装的各个网格顶点的目标位置之前,合并所述虚拟服装的网格顶点中位置相同的网格顶点,生成拓扑完全相连的所述虚拟服装。
63.第三方面,本公开实施例提供一种电子设备,包括:存储器和处理器,所述存储器用于存储计算机程序;所述处理器用于在执行计算机程序时,使得所述电子设备实现上述任一实施例所述的虚拟服装渲染方法。
64.第四方面,本公开实施例提供一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,当所述计算机程序被计算设备执行时,使得所述计算设备实现上述任一实施例所述的虚拟服装渲染方法。
65.第五方面,本公开实施例提供一种计算机程序产品,当所述计算机程序产品在计算机上运行时,使得所述计算机实现上述任一实施例所述的虚拟服装渲染方法。
66.本公开实施例提供的虚拟服装渲染方法在进行虚拟服装渲染方法时,先获取目标对象的姿态信息,然后获取根据所述姿态信息对所述虚拟服装进行形变后所述虚拟服装的各个网格顶点的目标位置,再根据所述虚拟服装的各个网格顶点的目标位置获取所述虚拟服装的各个位置的法线方向,然后根据所述虚拟服装的各个位置的法线方向渲染并输出虚拟服装的渲染效果图像。一方面,由于本公开实施例可以获取虚拟服装的各个位置的法线方向,并根据所述虚拟服装的各个位置的法线方向渲染并输出虚拟服装的渲染效果图像,而各个位置的法线方向可以影响虚拟服装各个位置的亮度,因此本公开实施例可以在虚拟服装的渲染效果图像中渲染出虚拟服装的褶皱的阴影,从而使虚拟服装可以随用户的姿态变化而产生褶皱效果,进而使虚拟服装更加逼真。另一方面,由于本公开实施中只是利用虚拟服装上各位置的法线方向对虚拟服装上各位置的亮度进行控制,并不生成实际的褶皱,因此本公开实施例可以减少虚拟服装渲染时的计算量。综上,本公开实施例可以在使虚拟服装可以随用户的姿态变化而产生褶皱效果的同时,减少虚拟服装渲染的计算量。
附图说明
67.此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理。
68.为了更清楚地说明本公开实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
69.图1为本公开实施例提供的虚拟服装渲染方法的步骤流程图之一;
70.图2为本公开实施例提供的法线方向示意图;
71.图3为本公开实施例提供的虚拟服装渲染方法的步骤流程图之二;
72.图4为本公开实施例提供的相邻网格顶点的示意图;
73.图5为本公开实施例提供的虚拟服装上的位置的法线方向示意图;
74.图6为本公开实施例提供的虚拟服装渲染装置的结构示意图之一;
75.图7为本公开实施例提供的虚拟服装渲染装置的结构示意图之二;
76.图8为本公开实施例提供的电子设备的硬件结构示意图。
具体实施方式
77.为了能够更清楚地理解本公开的上述目的、特征和优点,下面将对本公开的方案进行进一步描述。需要说明的是,在不冲突的情况下,本公开的实施例及实施例中的特征可以相互组合。
78.在下面的描述中阐述了很多具体细节以便于充分理解本公开,但本公开还可以采用其他不同于在此描述的方式来实施;显然,说明书中的实施例只是本公开的一部分实施例,而不是全部的实施例。
79.在本公开实施例中,“示例性的”或者“例如”等词用于表示作例子、例证或说明。本公开实施例中被描述为“示例性的”或者“例如”的任何实施例或设计方案不应被解释为比其它实施例或设计方案更优选或更具优势。确切而言,使用“示例性的”或者“例如”等词旨在以具体方式呈现相关概念。此外,在本公开实施例的描述中,除非另有说明,“多个”的含义是指两个或两个以上。
80.本公开实施例提供了一种虚拟服装渲染方法,参照图1所示,该虚拟服装渲染方法包括如下步骤:
81.s11、获取目标对象的姿态信息。
82.在一些示例实施例中,可以通过图像采集设备对目标对象进行图像采集获取目标对象的图像,并在获取的图像中识别目标对象,从而获取目标对象的姿态信息。示例性的,目标对象的姿态信息可以包括目标对象的头部动作、上肢动作、下肢动作等。
83.本公开实施例中的目标对象可以包括生成的虚拟服装渲染效果图像中穿着虚拟服装的对象,目标对象具体可以包括人、动物、虚拟模型、实体模型等,本公开实施例中对目标对象的具体类型不做限定。
84.s12、根据所述姿态信息获取虚拟服装的各个网格顶点的目标位置。
85.其中,所述虚拟服装的各个网格顶点的目标位置包括根据所述姿态信息对所述虚拟服装进行形变后所述虚拟服装的各个网格顶点的位置。
86.具体的,本公开中的虚拟服装可以指以采用多个相互连接的多边形(网格)近似表示真实服装的网格模型(mesh model),虚拟服装的各个网格顶点可以指该表示真实服装的网格模型中各个多边形的顶点。其中,多边形可以包括三角形、平行四边形、矩形等,本公开实施例对网格形状不做限定。
87.可选的,根据所述姿态信息获取虚拟服装的各个网格顶点的目标位置的过程可以包括:首先根据姿态信息对目标对象的骨骼模型的姿态进行变换,获取根据姿态信息变换后目标对象的骨骼模型的中各个骨骼的位置信息,再根据姿态信息变换后目标对象的骨骼模型的中各个骨骼的位置信息驱动虚拟服装形变,从而获取虚拟服装的各个网格顶点的目标位置。
88.s13、根据所述虚拟服装的各个网格顶点的目标位置获取所述虚拟服装的各个位置的法线方向。
89.本公开实施例中虚拟服装上任一位置的法线方向是垂直于虚拟服装上该位置的切面的方向。示例性的,参照图2所示,虚拟服装21上的点211的切面为面22,方向f为垂直于面22的方向,因此虚拟服装21上的点211的位置的法线方向为f。
90.s14、根据所述虚拟服装的各个位置的法线方向对所述虚拟服装进行渲染,并输出所述虚拟服装渲染效果图像。
91.具体的,可以根据所述虚拟服装的各个位置的法线方向,生成虚拟服装的法线贴图,并根据虚拟服装的法线贴图计算虚拟服装上各个位置因为法线方向与光源方向的角度而产生的亮度变化,从而使虚拟服装表面拥有褶皱阴影分布的渲染效果。
92.本公开实施例提供的虚拟服装渲染方法在进行虚拟服装渲染方法时,先获取目标对象的姿态信息,然后获取根据所述姿态信息对所述虚拟服装进行形变后所述虚拟服装的各个网格顶点的目标位置,再根据所述虚拟服装的各个网格顶点的目标位置获取所述虚拟服装的各个位置的法线方向,然后根据所述虚拟服装的各个位置的法线方向渲染并输出虚拟服装的渲染效果图像。一方面,由于本公开实施例可以获取虚拟服装的各个位置的法线方向,并根据所述虚拟服装的各个位置的法线方向渲染并输出虚拟服装的渲染效果图像,而各个位置的法线方向可以影响虚拟服装各个位置的亮度,因此本公开实施例可以在虚拟服装的渲染效果图像中渲染出虚拟服装的褶皱的阴影,从而使虚拟服装可以随用户的姿态变化而产生褶皱效果,进而使虚拟服装更加逼真。另一方面,由于本公开实施中只是利用虚拟服装上各位置的法线方向对虚拟服装上各位置的亮度进行控制,并不生成实际的褶皱,因此本公开实施例可以减少虚拟服装渲染时的计算量。综上,本公开实施例可以在使虚拟服装可以随用户的姿态变化而产生褶皱效果的同时,减少虚拟服装渲染的计算量。
93.作为对上述实施例的扩展和细化,本公开实施例提供了另一种虚拟服装渲染方法,参照图3所示,该虚拟服装渲染方法包括如下步骤:
94.s301、获取目标图像。
95.其中,所述目标图像包括目标对象。
96.即,对目标对象进行图像采样,获取包括目标对象的目标图像。该图像可以为平面图像,也可以为包含深度信息的深度图像。
97.s302、根据所述目标图像提取所述目标对象的骨骼模型。
98.具体的,根据所述目标图像提取所述目标对象的骨骼模型的实现方式可以包括:
先根据目标对象的类型获取预先建立的骨骼模型,然后再根据目标对象的各个关键点的位置信息对预先建立的骨骼模型进行修正从而获取目标对象的骨骼模型。例如:目标对象为人,则首先获取预先建立的人体骨骼模型,然后再根据目标对象的各个关键点(手肘、手腕、膝盖、肩膀等)的位置信息对预先建立的人体骨骼模型的各个骨骼的长度、骨骼数量等信息进行修正,从而获取目标对象的骨骼模型。
99.为实现虚拟服装的渲染,在获取目标对象的骨骼模型后,还需生成虚拟服装,本发明实施例中可以通过如下步骤s303实现虚拟服装的生成。
100.s303、合并所述虚拟服装的网格顶点中位置相同的网格顶点,生成拓扑完全相连的虚拟服装。
101.具体的,虚拟服装可以是由多个多边形组成的3d网格模型,该多个多边形是相互独立的,且很多多边形的很多顶点位于同一位置,为了方便后续处理可以将位置相同的网格顶点合并,从而生成拓扑完全相连的虚拟服装。
102.需要说明的是的,本公开实施例中不限定提取所述目标对象的骨骼模型(步骤s301和s302)和生成拓扑完全相连的虚拟服装(步骤s303)的先后顺序,可以先提取所述目标对象的骨骼模型,再生成拓扑完全相连的虚拟服装,也可以先生成拓扑完全相连的虚拟服装,再提取所述目标对象的骨骼模型,还可以两个同时进行。
103.s304、获取目标对象的姿态信息。
104.如上所述,可以通过图像采集设备对目标对象进行图像采集获取目标对象的图像,并在获取的图像中识别目标对象,从而获取目标对象的姿态信息。
105.s305、根据所述姿态信息获取所述目标对象的骨骼模型中的所述至少一个骨骼的骨骼变换矩阵(transform matrix)。
106.其中,任一骨骼的骨骼变换矩阵为将该骨骼由初始位置变换至所述姿态信息对应的位置的矩阵。
107.具体的,可以根据所述姿态信息更新步骤s302中提取的骨骼模型中各个骨骼的位置及朝向,从而获取所述目标对象的骨骼模型中的所述至少一个骨骼的骨骼变换矩阵。
108.s306、根据所述至少一个骨骼的骨骼变换矩阵和所述至少一个骨骼的蒙皮信息,计算所述虚拟服装的各个网格顶点的目标位置。
109.其中,任一骨骼的蒙皮信息包括该骨骼对所述虚拟服装的各个网格顶点的影响权重。
110.具体的,可以将虚拟服装的各个网格顶点与目标对象的骨骼模型中的至少一个骨骼绑定,并配置骨骼对各个网格顶点的影响权重,从而生成所述骨骼模型中的至少一个骨骼的蒙皮信息。本公开实施例中可以将虚拟服装与目标对象的骨骼模型中的各个骨骼绑定。
111.可选的,根据所述至少一个骨骼的骨骼变换矩阵和所述至少一个骨骼的蒙皮信息,计算所述虚拟服装的各个网格顶点的目标位置的实现方式可以包括如下步骤306a和步骤306b:
112.步骤306a、获取所述至少一个骨骼中的各个骨骼对所述虚拟服装的各个网格顶点的影响值。
113.任一骨骼对任一网格顶点的影响值包括该骨骼对该网格顶点的影响权重、该骨骼
的骨骼变换矩阵以及该网格顶点的初始位置的乘积。
114.设:骨骼k的骨骼变换矩阵为tk,骨骼k对网格顶点i的影响权重为网格顶点i初始位置为骨骼k对网格顶点i的影响值为则有:
[0115][0116]
步骤306b、分别对所述至少一个骨骼中的各个骨骼对所述虚拟服装的同一网格顶点的影响值求和,获取所述虚拟服装的各个网格顶点的目标位置。
[0117]
设:网格顶点i目标位置为xi,所述至少一个骨骼包括n个骨骼,则有:
[0118][0119]
s307、根据所述虚拟服装的各个网格顶点的目标位置、所述虚拟服装的各个网格顶点的初始位置、所述虚拟服装的各个网格顶点的各个相邻网格顶点的目标位置以及所述虚拟服装的各个网格顶点的各个相邻网格顶点的初始位置,获取所述虚拟服装的各个网格顶点的压缩率和压缩方向。
[0120]
具体的,本公开实施例中任一网格顶点的各个相邻网格顶点是指与该网格顶点属于同一网格的网格顶点,或者说对于任意两个网格顶点,若该两个网格顶点之间具有相互连接的网格线,则该两个网格顶互为相邻网格顶点,若该两个网格顶点之间不具有相互连接的网格线,则该两个网格顶不为相邻网格顶点。参照图4所示,与网格顶点a属于同一网格(即,与网格顶点a之间具有相互连接的网格线)的网格顶点包括:网格顶点b、网格顶点c、网格顶点d、网格顶点e、网格顶点f、网格顶点g,因此网格顶点a的邻网格顶点包括:网格顶点b、网格顶点c、网格顶点d、网格顶点e、网格顶点f、网格顶点g。
[0121]
本公开实施例中可以在上述步骤s303(生成拓扑完全相连的虚拟服装)中预先获取各个网格顶点的各个相邻网格顶点,并将各个网格顶点的各个相邻网格顶点的索引存储到预设位置,以便步骤s307中直接读取网格顶点的相邻网格顶点。
[0122]
进一步的,任一网格顶点的压缩率用于表征以该网格顶点为顶点的网格在虚拟服装形变前后的平均面积的比值。
[0123]
示例性的,参照图4所示,图4中以虚拟服装的网格为三角形为例示出,以网格顶点a顶点的网格包括:

abc、

acd、

ade、

aef、

afg、

agb,若在虚拟服装形变前,

abc、

acd、

ade、

aef、

afg、

agb分别为:s11、s12、s13、s14、s15、s16,在虚拟服装形变后,

abc、

acd、

ade、

aef、

afg、

agb分别为:s21、s22、s23、s24、s25、s26,则网格顶点a的压缩率cr可以用下式的计算结果表征:
[0124]
cr=(21+s22+s23+s24+s25+s26)/(s11+s12+s13+s14+s15+s16)
[0125]
可选的,上述步骤s307(根据所述虚拟服装的各个网格顶点的目标位置、所述虚拟服装的各个网格顶点的初始位置、所述虚拟服装的各个网格顶点的各个相邻网格顶点的目标位置以及所述虚拟服装的各个网格顶点的各个相邻网格顶点的初始位置,获取所述虚拟服装的各个网格顶点的压缩率和压缩方向)可以包括如下步骤307a至步骤307i:
[0126]
步骤307a、获取各个网格顶点与各个相邻网格顶点的第一位置差。
[0127]
其中,任一网格顶点与任一相邻网格顶点的第一位置差为该相邻网格顶点的目标位置与该网格顶点的目标位置的差值。
[0128]
设:网格顶点j的目标位置为xj,网格顶点j的相邻网格顶点n的目标位置为xn,网格顶点j与网格顶点j的相邻网格顶点n的第一位置差为e
jn
,则有:
[0129]ejn
=x
jn-xj[0130]
步骤307b、获取各个网格顶点与各个相邻网格顶点的第二位置差。
[0131]
其中,任一网格顶点与任一相邻网格顶点的第二位置差为该相邻网格顶点的初始位置与该网格顶点的初始位置的差值。
[0132]
设:网格顶点j的初始位置为网格顶点j的相邻网格顶点n的目标位置为网格顶点j与网格顶点j的相邻网格顶点n的第二位置差为则有:
[0133][0134]
步骤307c、获取各个网格顶点的各个相邻网格顶点对应的第一矩阵。
[0135]
其中,任一网格顶点的任一相邻网格顶点对应的第一矩阵为该网格顶点与该相邻网格顶点的第一位置差和第二位置差的张量积。
[0136]
设:网格顶点j的相邻网格顶点n对应的第一矩阵为p
jn
,则有:
[0137][0138]
步骤307d、获取各个网格顶点的第一特征矩阵。
[0139]
其中,任一网格顶点的第一特征矩阵为该网格顶点的各个相邻网格顶点对应的第一矩阵的和。
[0140]
设:网格顶点j共有m个相邻网格顶点,网格顶点j的第一特征矩阵为qj,则有:
[0141][0142]
步骤307e、获取各个网格顶点的各个相邻网格顶点对应的第二矩阵。
[0143]
任一网格顶点的任一相邻网格顶点对应的第二矩阵为该网格顶点与该相邻网格顶点的第二位置差和第二位置差的张量积。
[0144]
设:网格顶点j的相邻网格顶点n对应的第二矩阵为x
jn
,则有:
[0145][0146]
步骤307f、获取各个网格顶点的第二特征矩阵。
[0147]
其中,任一网格顶点的第二特征矩阵为该网格顶点的各个相邻网格顶点对应的第二矩阵的和。
[0148]
设:网格顶点j共有m个相邻网格顶点,网格顶点j的第二特征矩阵为yj,则有:
[0149][0150]
步骤307g、获取各个网格顶点的第三特征矩阵。
[0151]
其中,任一网格顶点的第三特征矩阵为该网格顶点的第一特征矩阵和该网格顶点的第二特征矩阵的逆矩阵的乘积。
[0152]
设:网格顶点j的第三特征矩阵为mj,则有:
[0153][0154]
步骤307h、获取各个网格顶点的第四特征矩阵。
[0155]
其中,任一网格顶点的第四特征矩阵为该网格顶点的第三特征矩阵的转置矩阵与该网格顶点的第三特征矩阵的乘积。
[0156]
设:网格顶点j的第三特征矩阵为aj,则有:
[0157][0158]
步骤307i、获取各个网格顶点的第四特征矩阵的最小特征值和特征向量,并将该最小特征值和特征向量分别作为各个网格顶点的压缩率和压缩方向。
[0159]
即,获取各个网格顶点对应的第二矩阵的最小特征值作为各个网格顶点对应的压缩率,获取与各个网格顶点对应的第二矩阵的最小特征值相应的特征向量作为各个网格顶点对应的压缩方向。
[0160]
s308、根据所述虚拟服装的各个网格顶点的压缩率和压缩方向,生成所述虚拟服装形成的褶皱高度场。
[0161]
可选的,上述步骤s308(根据所述虚拟服装的各个网格顶点的压缩率和压缩方向,生成所述虚拟服装形成的褶皱高度场)的实现方式可以包括如下步骤308a至步骤308d:
[0162]
步骤308a、根据所述虚拟服装的各个网格顶点的压缩率获取所述虚拟服装的各个网格顶点的高度值。
[0163]
其中,任一网格顶点的高度值为第一常数与该网格顶点对应的第一计算值的乘积,任一网格顶点对应的第一计算值为第二常数与该网格顶点的压缩率的差值。
[0164]
设:网格顶点k的压缩率为ck,第一常数为a、第二常数为b网格顶点k对应的第一计算值为lk,网格顶点k的高度值为hk,则有:
[0165]hk
=alk=a(b-ck)
[0166]
示例性的,第二常数可以为1。
[0167]
步骤308b、获取所述虚拟服装的各个位置的影响值。
[0168]
其中,任一位置的影响值包括该位置所属网格的各个网格顶点对该位置的影响值,任一网格顶点对任一位置的影响值包括该网格顶点的高度值与对应的高度保持率的乘积,任一位置对任一网格顶点的高度保持率为该网格顶点的压缩方向与对应的位置差的余弦值,任一位置与任一网格顶点的位置差为该位置与该网格顶点的目标位置的位置差。
[0169]
设:网格顶点k的压缩方向为dk,位置q的位置坐标为y,网格顶点k的目标位置为xk,位置d对网格顶点k的高度保持率为h
kq
,则有:
[0170]hkq
=cos[dk·
(y-xk)]
[0171]
示例性的,以下以虚拟服装的网格为三角形网格,获取位于三角形网格abc内的位置d的影响值为例对上述步骤308b的实现方式进行说明。由于任一位置的影响值包括该位
置所属网格的各个网格顶点对该位置的影响值,因此位置d的影响值包括网格顶点a对位置d的影响值、网格顶点b对位置d的影响值以及网格顶点c对位置d的影响值。
[0172]
设:位置d的位置坐标为y,网格顶点a对位置d的影响值为h
ad
、网格顶点a对位置d的影响值为h
bd
、网格顶点c对位置d的影响值为h
cd
、网格顶点a的高度值为ha、网格顶点b的高度值为hb、网格顶点c的高度值为hc、网格顶点a的压缩方向为da、网格顶点b的压缩方向为db、网格顶点c的压缩方向为dc、网格顶点a的目标位置为xa、网格顶点b的目标位置为xb、网格顶点c的目标位置为xc,则:
[0173]had
=ha*cos[da·
(y-xa)]
[0174]hbd
=hb*cos[db·
(y-xb)]
[0175]hcd
=hd*cos[dc·
(y-xc)]
[0176]
步骤308c、根据所述虚拟服装的各个位置的影响值,获取所述虚拟服装的各个位置的高度。
[0177]
承上所述,根据h
ad
、h
bd
以及h
cd
获取所述虚拟服装的位置d的高度。
[0178]
示例性的,根据所述虚拟服装的各个位置的影响值,获取所述虚拟服装的各个位置的高度可以包括:根据各个位置在网格中的相对位置对网格顶点的影响值进行线性差值,获取虚拟服装的各个位置的高度。
[0179]
步骤308d、根据所述虚拟服装上各位置的高度获取所述虚拟服装形成的褶皱高度场。
[0180]
s309、根据所述褶皱高度场获取所述虚拟服装的各个位置的法线方向。
[0181]
可选的,上述步骤s309根据所述褶皱高度场获取所述虚拟服装的各个位置的法线方向)包括如下步骤s309a和s309b:
[0182]
步骤s309a、根据所述褶皱高度场获取所述虚拟服装的各个位置的梯度。
[0183]
设:位置y的位置坐标为y,位置y的高度为h(y),位置y的梯度为hy,则有:
[0184][0185]
步骤s309b、对所述虚拟服装的各个位置的初始法线方向和所述虚拟服装的各个位置的梯度作差,获取所述虚拟服装的各个位置的法线方向。
[0186]
设:位置y的初始法线方向为位置y的法线方向为ny,则有:
[0187][0188]
具体的,虚拟服装上的任一位置的法线方向即为垂直于该位置的切面的方向。例如:如图5所示,垂直于虚拟服装上的位置a的切面的方向为fa,垂直于虚拟服装上的位置b的切面的方向为fb,因此虚拟服装上的位置a的法线方向为fa,虚拟服装上的位置a的法线方向为fb。
[0189]
s310、根据所述虚拟服装的各个位置的法线方向对所述虚拟服装进行渲染,并输出所述虚拟服装的渲染效果图像。
[0190]
本公开实施提供的虚拟服装渲染方法在进行虚拟服装渲染方法时,先获取目标对象的姿态信息,然后获取根据所述姿态信息对所述虚拟服装进行形变后所述虚拟服装的各
个网格顶点的目标位置,再根据所述虚拟服装的各个网格顶点的目标位置获取所述虚拟服装的各个位置的法线方向,然后根据所述虚拟服装的各个位置的法线方向渲染并输出虚拟服装的渲染效果图像。一方面,由于本公开实施例可以获取虚拟服装的各个位置的法线方向,并根据所述虚拟服装的各个位置的法线方向渲染并输出虚拟服装的渲染效果图像,而各个位置的法线方向可以影响虚拟服装各个位置的亮度,因此本公开实施例可以在虚拟服装的渲染效果图像中渲染出虚拟服装的褶皱的阴影,从而使虚拟服装可以随用户的姿态变化而产生褶皱效果,进而使虚拟服装更加逼真。另一方面,由于本公开实施中只是利用虚拟服装上各位置的法线方向对虚拟服装上各位置的亮度进行控制,并不生成实际的褶皱,因此本公开实施例可以减少虚拟服装渲染时的计算量。综上,本公开实施例可以在使虚拟服装可以随用户的姿态变化而产生褶皱效果的同时,减少虚拟服装渲染的计算量。
[0191]
基于同一发明构思,作为对上述方法的实现,本公开实施例还提供了一种虚拟服装渲染装置,该装置实施例与前述方法实施例对应,为便于阅读,本装置实施例不再对前述方法实施例中的细节内容进行逐一赘述,但应当明确,本实施例中的虚拟服装渲染装置能够对应实现前述方法实施例中的全部内容。
[0192]
本公开实施例提供了一种虚拟服装渲染装置。图6为该虚拟服装渲染装置的结构示意图,如图6所示,该虚拟服装渲染装置600包括:
[0193]
获取单元61,用于获取目标对象的姿态信息;
[0194]
驱动单元62,用于根据所述姿态信息获取虚拟服装的各个网格顶点的目标位置,所述虚拟服装的各个网格顶点的目标位置包括根据所述姿态信息对所述虚拟服装进行形变后所述虚拟服装的各个网格顶点的位置;
[0195]
处理单元63,用于根据所述虚拟服装的各个网格顶点的目标位置获取所述虚拟服装的各个位置的法线方向;
[0196]
渲染单元64,用于根据所述虚拟服装的各个位置的法线方向对所述虚拟服装进行渲染,并输出所述虚拟服装的渲染效果图像。
[0197]
作为本公开实施例一种可选的实施方式,所述驱动单元62,具体用于根据所述姿态信息获取所述目标对象的骨骼模型中的所述至少一个骨骼的骨骼变换矩阵;根据所述至少一个骨骼的骨骼变换矩阵和所述至少一个骨骼的蒙皮信息,计算所述虚拟服装的各个网格顶点的目标位置;
[0198]
其中,任一骨骼的骨骼变换矩阵为将该骨骼由初始位置变换至所述姿态信息对应的位置的矩阵,任一骨骼的蒙皮信息包括该骨骼对所述虚拟服装的各个网格顶点的影响权重。
[0199]
作为本公开实施例一种可选的实施方式,所述驱动单元62,具体用于获取所述至少一个骨骼中的各个骨骼对所述虚拟服装的各个网格顶点的影响值,分别对所述至少一个骨骼中的各个骨骼对所述虚拟服装的同一网格顶点的影响值求和,获取所述虚拟服装的各个网格顶点的目标位置;
[0200]
其中,任一骨骼对任一网格顶点的影响值包括该骨骼对该网格顶点的影响权重、该骨骼的骨骼变换矩阵以及该网格顶点的初始位置的乘积。
[0201]
作为本公开实施例一种可选的实施方式,参照图7所示,所述虚拟服装渲染装置600还包括:
[0202]
提取单元65,用于所述驱动单元根据所述姿态信息获取所述目标对象的骨骼模型中的所述至少一个骨骼的骨骼变换矩阵之前,获取目标图像,根据所述目标图像提取所述目标对象的骨骼模型;
[0203]
其中,所述目标图像包括所述目标对象。
[0204]
作为本公开实施例一种可选的实施方式,所述处理单元63,具体用于根据所述虚拟服装的各个网格顶点的目标位置、所述虚拟服装的各个网格顶点的初始位置、所述虚拟服装的各个网格顶点的各个相邻网格顶点的目标位置以及所述虚拟服装的各个网格顶点的各个相邻网格顶点的初始位置,获取所述虚拟服装的各个网格顶点的压缩率和压缩方向;根据所述虚拟服装的各个网格顶点的压缩率和压缩方向,生成所述虚拟服装形成的褶皱高度场;根据所述褶皱高度场获取所述虚拟服装的各个位置的法线方向。
[0205]
作为本公开实施例一种可选的实施方式,所述处理单元63,具体用于获取各个网格顶点与各个相邻网格顶点的第一位置差,任一网格顶点与任一相邻网格顶点的第一位置差为该相邻网格顶点的目标位置与该网格顶点的目标位置的差值;获取各个网格顶点与各个相邻网格顶点的第二位置差,任一网格顶点与任一相邻网格顶点的第二位置差为该相邻网格顶点的初始位置与该网格顶点的初始位置的差值;获取各个网格顶点的各个相邻网格顶点对应的第一矩阵,任一网格顶点的任一相邻网格顶点对应的第一矩阵为该网格顶点与该相邻网格顶点的第一位置差和第二位置差的张量积;获取各个网格顶点的第一特征矩阵,任一网格顶点的第一特征矩阵为该网格顶点的各个相邻网格顶点对应的第一矩阵的和;获取各个网格顶点的各个相邻网格顶点对应的第二矩阵,任一网格顶点的任一相邻网格顶点对应的第二矩阵为该网格顶点与该相邻网格顶点的第二位置差和第二位置差的张量积;获取各个网格顶点的第二特征矩阵,任一网格顶点的第二特征矩阵为该网格顶点的各个相邻网格顶点对应的第二矩阵的和;获取各个网格顶点的第三特征矩阵,任一网格顶点的第三特征矩阵为该网格顶点的第一特征矩阵和该网格顶点的第二特征矩阵的逆矩阵的乘积;获取各个网格顶点的第四特征矩阵,任一网格顶点的第四特征矩阵为该网格顶点的第三特征矩阵的转置矩阵与该网格顶点的第三特征矩阵的乘积;获取各个网格顶点的第四特征矩阵的最小特征值和特征向量,并将所述最小特征值和所述特征向量分别作为各个网格顶点的压缩率和压缩方向。
[0206]
作为本公开实施例一种可选的实施方式,所述处理单元63,具体用于根据所述虚拟服装的各个网格顶点的压缩率获取所述虚拟服装的各个网格顶点的高度值,任一网格顶点的高度值为第一常数与该网格顶点对应的第一计算值的乘积,任一网格顶点对应的第一计算值为第二常数与该网格顶点的压缩率的差值;获取所述虚拟服装的各个位置的影响值,任一位置的影响值包括该位置所属网格的各个网格顶点对该位置的影响值,任一网格顶点对任一位置的影响值包括该网格顶点的高度值与对应的高度保持率的乘积,任一位置对任一网格顶点的高度保持率为该网格顶点的压缩方向与对应的位置差的余弦值,任一位置与任一网格顶点的位置差为该位置与该网格顶点的目标位置的位置差;根据所述虚拟服装的各个位置的影响值,获取所述虚拟服装的各个位置的高度;根据所述虚拟服装上各位置的高度获取所述虚拟服装形成的褶皱高度场。
[0207]
作为本公开实施例一种可选的实施方式,所述处理单元63,具体用于根据所述褶皱高度场获取所述虚拟服装的各个位置的梯度;
[0208]
对所述虚拟服装的各个位置的初始法线方向和所述虚拟服装的各个位置的梯度作差,获取所述虚拟服装的各个位置的法线方向。
[0209]
作为本公开实施例一种可选的实施方式,参照图7所示,所述虚拟服装渲染装置600还包括:
[0210]
生成单元66,用于在所述驱动单元62根据所述姿态信息获取虚拟服装的各个网格顶点的目标位置之前,合并所述虚拟服装的网格顶点中位置相同的网格顶点,生成拓扑完全相连的所述虚拟服装。
[0211]
本公开实施例提供的虚拟服装渲染装置可以执行上述实施例提供的虚拟服装渲染方法的全部内容,且可以实现与上述虚拟服装渲染方法相似的技术效果。
[0212]
基于同一发明构思,本公开实施例还提供了一种电子设备。图8为本公开实施例提供的电子设备的结构示意图,如图8所示,本实施例提供的电子设备包括:存储器81和处理器82,所述存储器81用于存储计算机程序;所述处理器82用于在执行计算机程序时,使得所述电子设备实现上述实施例提供的虚拟服装渲染方法。
[0213]
本公开实施例还提供一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,当所述计算机程序被计算设备执行时,使得所述计算设备实现上述实施例提供的虚拟服装渲染方法。
[0214]
本公开实施例还提供一种计算机程序产品,当所述计算机程序产品在计算机上运行时,使得所述计算机实现上述实施例提供的虚拟服装渲染方法。
[0215]
本领域技术人员应明白,本公开的实施例可提供为方法、系统、或计算机程序产品。因此,本公开可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本公开可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质上实施的计算机程序产品的形式。
[0216]
处理器可以是中央处理单元(central processing unit,cpu),还可以是其他通用处理器、数字信号处理器(digital signal processor,dsp)、专用集成电路(application specific integrated circuit,asic)、现成可编程门阵列(field-programmable gate array,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
[0217]
存储器可能包括计算机可读介质中的非永久性存储器,随机存取存储器(ram)和/或非易失性内存等形式,如只读存储器(rom)或闪存(flash ram)。存储器是计算机可读介质的示例。
[0218]
计算机可读介质包括永久性和非永久性、可移动和非可移动存储介质。存储介质可以由任何方法或技术来实现信息存储,信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(pram)、静态随机存取存储器(sram)、动态随机存取存储器(dram)、其他类型的随机存取存储器(ram)、只读存储器(rom)、电可擦除可编程只读存储器(eeprom)、快闪记忆体或其他内存技术、只读光盘只读存储器(cd-rom)、数字多功能光盘(dvd)或其他光学存储、磁盒式磁带,磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。根据本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信
号和载波。
[0219]
最后应说明的是:以上各实施例仅用以说明本公开的技术方案,而非对其限制;尽管参照前述各实施例对本公开进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本公开各实施例技术方案的范围。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1