CN114565705A - 一种虚拟人物的仿真、直播方法、装置、设备及存储介质 - Google Patents
一种虚拟人物的仿真、直播方法、装置、设备及存储介质 Download PDFInfo
- Publication number
- CN114565705A CN114565705A CN202210187061.8A CN202210187061A CN114565705A CN 114565705 A CN114565705 A CN 114565705A CN 202210187061 A CN202210187061 A CN 202210187061A CN 114565705 A CN114565705 A CN 114565705A
- Authority
- CN
- China
- Prior art keywords
- constraint
- cloth
- distance
- target point
- angle
- 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 68
- 238000004088 simulation Methods 0.000 title claims description 30
- 239000004744 fabric Substances 0.000 claims abstract description 193
- 230000009471 action Effects 0.000 claims abstract description 23
- 238000009877 rendering Methods 0.000 claims abstract description 17
- 230000002596 correlated effect Effects 0.000 claims description 44
- 238000004590 computer program Methods 0.000 claims description 20
- 239000003086 colorant Substances 0.000 claims description 17
- 230000000875 corresponding effect Effects 0.000 claims description 14
- 230000015654 memory Effects 0.000 claims description 13
- 239000000463 material Substances 0.000 claims description 12
- 238000005452 bending Methods 0.000 claims description 7
- 210000000988 bone and bone Anatomy 0.000 claims description 7
- 230000001133 acceleration Effects 0.000 claims description 5
- 238000013016 damping Methods 0.000 claims description 5
- 230000010354 integration Effects 0.000 claims description 3
- 230000000694 effects Effects 0.000 description 21
- 230000006870 function Effects 0.000 description 12
- 238000010586 diagram Methods 0.000 description 11
- 238000012545 processing Methods 0.000 description 11
- 238000013507 mapping Methods 0.000 description 10
- 238000004891 communication Methods 0.000 description 8
- 230000008569 process Effects 0.000 description 6
- 238000004364 calculation method Methods 0.000 description 4
- 238000004422 calculation algorithm Methods 0.000 description 3
- 238000011161 development Methods 0.000 description 3
- 230000003993 interaction Effects 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 239000002245 particle Substances 0.000 description 3
- 210000000697 sensory organ Anatomy 0.000 description 3
- 210000001015 abdomen Anatomy 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 2
- 230000000007 visual effect Effects 0.000 description 2
- 230000006978 adaptation Effects 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 238000013473 artificial intelligence Methods 0.000 description 1
- 230000003190 augmentative effect Effects 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000004040 coloring Methods 0.000 description 1
- 230000000052 comparative effect Effects 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 230000009977 dual effect Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 239000011521 glass Substances 0.000 description 1
- 230000005484 gravity Effects 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000010801 machine learning Methods 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 238000005259 measurement Methods 0.000 description 1
- 239000000203 mixture Substances 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 239000011435 rock Substances 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000001953 sensory effect Effects 0.000 description 1
- 230000003997 social interaction Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 239000000126 substance Substances 0.000 description 1
- 238000012360 testing method 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
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是根据本申请实施例一提供的一种对比仿真效果的示例图;
图4A与图4B是根据本申请实施例一提供的一种角度约束的示例图;
图5是根据本申请实施例一提供的一种弹性物体的示例图;
图6A与图6B是根据本申请实施例一提供的并行计算约束的示例图;
图7是根据本申请实施例二提供的一种虚拟人物的仿真方法的流程图;
图8是根据本申请实施例二提供的一种约束强度的示例图;
图9是根据本申请实施例三提供的一种直播方法的流程图;
图10是根据本申请实施例四提供的一种虚拟人物的仿真装置的结构示意图;
图11是根据本申请实施例五提供的一种装置的结构示意图;
图12是实现本申请实施例的虚拟人物的仿真方法的电子设备的结构示意图。
具体实施方式
为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分的实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。
需要说明的是,本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
实施例一
图1为本申请实施例一提供的一种虚拟人物的仿真方法的流程图,本实施例可适用于使用布料搭建虚拟人物时,对布料添加角度、距离上的约束,提高虚拟人物的真实度的情况,该方法可以由虚拟人物的仿真装置来执行,该虚拟人物的仿真装置可以采用硬件和/或软件的形式实现,该虚拟人物的仿真装置可配置于电子设备中。如图1所示,该方法包括:
步骤101、加载虚拟人物及虚拟人物穿着的布料。
在直播、社交等场景中,用户可以预先选定或构建虚拟人物,该虚拟人物与用户之间存在相关性。
一般情况下,该虚拟人物具有两种形态,一种为真人数字人,一种是卡通数字人,其中,真人数字人的形象目标是虚拟人物与用户自己的形象越像越好,而卡通数字人的形象目标是与用户保持一定的ID信息,但卡通画一些,美观一些。
此外,在游戏、导航等场景中,用户也可以选定或构建与场景适配的虚拟人物,如游戏角色等,该虚拟人物与用户没有相关性。
对于虚拟人物,可以初始化NvCloth布料库,或者Flex,PhysX等物理引擎,对虚拟人物创建其穿着的布料,即衣服、裤子等衣物,布料通常是以粒子进行模拟计算的,布料中的粒子组成网格,可将这些粒子记为网格顶点。
在初始化布料库时,会分配CPU(central processing unit,中央处理器)及GPU(graphics processing unit,图形处理器)上的内存,创建求解器,创建布料的结构数据。
为使本领域技术人员更好地理解本实施例,在本实施例中,将NvCloth作为布料库的一种示例进行说明。
如图2所示,对于使用NvCloth布料库创建的布料,自身会携带结构力、剪刀、弯曲力等约束,来保证最基础的布料的仿真效果,其中,约束是指PDB(位置动力学,可以提供实时的、近似的物理仿真效果)中参与仿真的网格顶点应满足的一系列条件。
布料库自带的约束在三维空间上的稳定性较差,难以保持体积近似不变、维持原本的物体形状等特性。而虚拟人物的人体是具有一定弹性的,因此,如果仅使用布料来实现虚拟人物的仿真,尤其在虚拟人物发生晃动时,容易在布料表面出现凹凸不平的现象(图3中左侧布料中的圆圈)。
步骤102、对布料添加角度约束。
在本实施例中,可以根据业务的规范对于部分或全部布料添加角度约束Bend,其中,角度约束属于一种约束,用于约束三个网格顶点组成的角度,可以让仿真的布料保持初始时的角度的特征,使得布料的表面在视觉上保持光滑。
对于对部分布料添加角度约束的情况,该部分布料可以为虚拟人物中指定部位对应的布料,例如,手部穿着的布料、脚部穿着的布料、腹部穿着的布料、胸部穿着的布料,等等。
在本申请的一个实施例中,步骤102可以包括如下步骤:
步骤1021、在布料中确定第一目标点、第二目标点与第三目标点。
对于布料中的每一个网格顶点,均可以创建邻接表,该邻接表用于记录与当前网格顶点邻接的其他网格顶点。
遍历布料中的每一个网格顶点,为便于区分,对于当前遍历所至的网格顶点可以记为第一目标点,即第一目标点为任一网格顶点。
在确定第一目标点的情况下,在第一目标点邻接表中遍历每一个网格顶点,为便于区分,对于当前遍历所至的当前网格顶点可以记为第二目标点,即第二目标点为任一邻接第一目标点的网格顶点。
在确定第一目标点、第二目标点的情况下,在第一目标点邻接表中遍历除第二目标点之外的其他网格顶点,寻找满足角度条件的网格顶点,记为第三目标点,即,第三目标点为邻接第一目标点的网格顶点,且角度条件为第二目标点、第一目标点与第三目标点之间连接的夹角最大,这样子,第一目标点、第二目标点与第三目标点可以建立一个角度约束的索引。
其中,所谓第二目标点、第一目标点与第三目标点之间连接的夹角最大,是指第二目标点、第一目标点与第三目标点之间连接的夹角在角度范围内最大,该角度范围包含第二目标点、第一目标点与除第二目标点外其他任一邻接第一目标点的网格顶点之间连接的夹角。
对于同一个网格顶点,在存在多个邻接的网格节点的情况下,可以建立多个角度约束的索引。
例如,如图4A所示,对于网格顶点v创建邻接表,邻接表中记录邻接网格顶点v的网格顶点分别为b0、b1、b2、b3、b4、b5、b6,在选定网格顶点v为第一目标点的情况下,选定网格顶点b0为第二目标点,将v、b0分别与b1、b2、b3、b4、b5、b6组成夹角,其中,v、b0与b1组成的夹角(b0-v-b1)最大,此时,b1为第三目标点,建立一个角度约束的索引{v,b0,b1},同理,针对网格顶点v建立其他角度约束的索引{v,b2,b3}、{v,b4,b5}等。
步骤1022、在第一目标点、第二目标点与第三目标点组成的三角形中,确定质心。
在布料库中,对于每一个网格顶点均可以设置默认的重量,网格顶点之间的重量可以相同、也可以不同,如全部网格顶点的重量为1,本实施例对此不加以限制。
将第一目标点、第二目标点与第三目标点组成三角形,在初始化角度约束的数据时,在该三角形中寻找质心,即,该三角形的重量中心。
例如,如图4A与图4B所示,对于角度约束的索引{v,b0,b1},可建立三角形vb0b1,寻找质心为点c。
步骤1023、分别约束第一目标点与质心的第一向量、第二目标点与质心的第二向量、第三目标点与质心的第三向量在第一向量上投影的向量移动的幅度,作为角度约束。
分别对第一目标点与质心构建第一向量、对第二目标点与质心构建第二向量上、对第三目标点与质心构建第三向量,分别约束第一向量在第一向量上投影的向量移动的幅度,约束第二向量在第一向量上投影的向量移动的幅度,约束第三向量在第一向量上投影的向量移动的幅度,从而形成角度约束,该角度约束可以约束第一目标点、第二目标点与第三目标点之间组成的夹角,保持该夹角的角度近似不变。
例如,如图4B所示,构建v-c向量(第一向量)、b0-c向量(第二向量)、b1-c向量(第三向量),约束v-c向量、b0-c向量、b1-c向量在v-c向量上投影的向量移动的幅度,可形成角度约束。
在具体实现中,分别对第一目标点的质量计算倒数,作为第一反质量,对第二目标点的质量计算倒数,作为第二反质量,对第三目标点的质量计算倒数,作为第三反质量。
将第一反质量、第二反质量与第三反质量线性融合为第一总反质量。
将第一目标点减去质心,获得第一距离。
约束第一目标点与质心的第一向量在第一向量上投影的向量移动的幅度为第一偏差值,第一偏差值与第一质量比负相关、第一偏差值与第一距离负相关、第一偏差值与曲率比正相关,第一质量比为第一反质量与第一总反质量之间的比值。
约束第二目标点与质心的第二向量在第一向量上投影的向量移动的幅度为第二偏差值,第二偏差值与第二质量比正相关、第二偏差值与第一距离正相关、第二偏差值与曲率比负相关,第二质量比为第二反质量与第一总反质量之间的比值。
约束第三目标点与质心的第三向量在第一向量上投影的向量移动的幅度为第三偏差值,第三偏差值与第三质量比正相关、第三偏差值与第一距离正相关、第三偏差值与曲率比负相关,第三质量比为第三反质量与第一总反质量之间的比值。
曲率比为初始值与第一距离的模长之间的比值,初始值为第一向量在初始时的模长与预设的弯曲系数之间的和值。
例如,如图4B所示,角度约束可以表示为:
其中,Δb0为第二偏差值,为第二反质量,Δb1为第三偏差值,为第三反质量,Δv为第一偏差值,wv为第一反质量,||||表示取模长,n1、n2、n3均为常数,如n1为2、n2为2、n3为4等,k为第一向量在初始时的模长,h0为弯曲系数,α、β、γ均为常数,如α为1、β为1、γ为2等。
步骤103、对布料添加距离约束。
虚拟人物具有骨骼,该骨骼上的节点可记为骨骼节点,如图5所示,对于每个骨骼节点(实心圆形),可以预先建立骨骼节点与附近相邻的多个(如4个)网格顶点(空心圆形)之间的绑定关系,一个骨骼节点分别连接多个网格节点,两两网格节点之间连接,使得一个骨骼节点与相邻的多个网格顶点可以组成一个多面体,这个多面体的角点为骨骼节点、多个网格顶点,在两两角点之间的距离变化时,这个多面体可以实现伸缩,从而具有一定的弹性,可记为弹性物体(又称软性物体)。
在本实施例中,可以根据业务的规范对于部分或全部布料添加距离约束Tether,其中,距离约束属于一种约束,用于在骨骼关节点与多个网格顶点作为角点组成弹性物体时、约束两两角点之间的距离,可以让弹性物体保持形状。
这样将单纯的布料的距离约束求解转化成了一个个多面体(如四面体)的距离约束求解,将面的数据转化成体的数据,成功地使用布料表达为特殊的弹性物体。
对于对部分布料添加距离约束的情况,该部分布料可以为虚拟人物中指定部位对应的布料,例如,手部穿着的布料、脚部穿着的布料、腹部穿着的布料、胸部穿着的布料,等等。
一般情况下,添加角度约束的部分布料与添加距离约束的部分布料相同。
在本申请的一个实施例中,步骤103可以包括如下步骤:
步骤1031、在布料中分别选择骨骼关节点作为弹性物体中固定的角点、选择多个网格顶点作为弹性物体中活动的角点。
在本实施例中,可以查询存在绑定关系的骨骼节点(以ID等标识表示)与多个网格顶点(以ID等标识表示),在布料中选定相应的骨骼节点与多个网格顶点组成弹性物体。
其中,骨骼节点为弹性物体中固定的角点,而多个网格顶点为弹性物体中活动的角点,所谓固定是指在弹性物体中,骨骼节点相对于网格基点固定,在虚拟人物移动的过程中,骨骼节点的绝对位置依然是会发生变化。
步骤1032、对两两角点约束移动的幅度,作为距离约束。
如图5所示,约束网格节点(角点)在骨骼节点(角点)与网格节点(角点)之间路径(实线)上移动的幅度、约束网格节点(角点)在网格节点(角点)与网格节点(角点)之间路径(虚线)移动的幅度,从而形成距离约束,保持骨骼节点(角点)与网格节点(角点)组成的弹性物体的形状近似不变。
在具体实现中,在弹性物体中选择任意两个角点,作为第四目标点、第五目标点。
分别对第四目标点的质量计算倒数,作为第四反质量,对第五目标点的质量计算倒数,作为第五反质量。
计算第四反质量与第五反质量之间的和值,作为第二总反质量。
将第四目标点减去第五目标点,获得第二距离。
对第四目标点约束移动的幅度为第四偏差值,第四偏差值与第四质量比负相关、第四偏差值与距离差负相关、第四偏差值与距离比负相关,第四质量比为第四反质量与第二总反质量之间的比值。
对第五目标点约束移动的幅度为第五偏差值,第五偏差值与第五质量比正相关、第五偏差值与距离差正相关、第五偏差值与距离比正相关,第五质量比为第五反质量与第二总反质量之间的比值。
距离差为第二距离的模长与初始长度之间的差值,初始长度为第四目标点与第五目标点之间在初始时的长度,距离比为第二距离与第二距离的模长之间的比值。
骨骼关节点在弹性物体中固定,可以认为骨骼关节点的质量趋向无穷大,因此,质量的倒数趋向零,其移动的幅度趋向零。
在存在骨骼关节点的情况下,第四目标点一般定义为骨骼关节点,第五目标点一般定义为网格顶点。
示例性地,距离约束可以表示为:
其中,p1为第四目标点,p2为第五目标点,Δp1为第四偏差值,Δp2为第五偏差值,w1为第四反质量,w2为第五反质量,d为初始长度,||||表示取模长。
步骤104、在布料受外力作用的条件下,更新网格顶点的位置,作为原始位置。
布料会受到不同外力(如重力等)作用的影响,在渲染虚拟人物时,可以模拟布料所受的外力作用,在每次迭代刷新时,更新网格顶点的位置,记为原始位置。
在具体实现中,可以查询网格顶点在上一帧中的位置,作为第一参考位置,以及,网格顶点在前两帧中的位置,作为第二参考位置。
计算第一参考位置与第二参考位置之间的差值,作为第一偏移量。
计算第一偏移量与移动系数之间的乘积,作为第二偏移量,其中,移动系数为一减去阻尼系数之间的差值。
在时间上对布料所受外力作用的加速度进行二次积分,获得第三偏移量。
将第一参考位置与第二偏移量、第三偏移量之间的和值设置为网格顶点在本帧中的位置,作为原始位置。
那么,网格顶点的原始位置更新如下:
pi=pi-1+(pi-1-pi-2)*(1-damping)+a*dt*dt
其中,pi为第i帧的位置(即原始位置),pi-1为第i-1帧的位置(即第一参考位置),pi-2为第i-2帧的位置(即第二参考位置),damping为阻尼系数,a为加速度(如重力加速度),dt为帧间的时间间隔。
步骤105、更新网格顶点的原始位置为目标位置,以至少满足角度约束与距离约束。
若完成更新网格顶点的原始位置,则可以进一步在角度约束与距离约束的约束下,更新网格顶点的原始位置,更新后的位置记为目标位置,从而使得使目标位置至少满足角度约束与距离约束。
进一步地,对于使用NvCloth布料库创建的布料,自身会携带结构力、剪刀、弯曲力等约束,此时,在更新网格顶点的原始位置为目标位置的过程中,除了满足角度约束与距离约束之外,还满足这些约束。
在本申请的一个实施例中,步骤105可以包括如下步骤:
步骤1051、对角度约束或距离约束分成多个批次。
步骤1052、并行按照每个批次中的角度约束或距离约束对原始位置进行调节,得到目标位置。
为了提高实时性,角度约束、距离约束与其他约束的计算可以统一由GPU上的ComputeShader(计算管线)并行计算,每种类型的约束独立并行计算。
由于在后的约束会对在先的约束造成破坏,因此,可以根据约束的效果设置计算约束的顺序,按照顺序对所有的约束进行计算,调整原始位置,从而得到目标位置,提高了求解的速度,从而加快了显示的响应速度。
其中,对于角度约束、距离约束,可以先计算角度约束,再计算距离约束,保持良好的调节效果。
为了避免数据的冲突,本实施例可以采用图着色算法对待求解的约束划分多个批次,每个批次中的角度约束或距离约束并未产生冲突,即,使每一批约中的角度约束或距离约束均可以并行计算,并不在数据上产生冲突。
示例性地,对于使用NvCloth布料库创建的布料,将不同类型的约束(如结构力、剪力、弯曲力、角度约束、距离约束等)用Phase(阶段)表示,每次着色时对Phase相同的一类约束进行着色。
在两个角度约束或两个距离约束之间公用同一网格顶点时,将约束作为图节点,在两个图节点之间生成边,这个边表示网格顶点。
对图节点填充颜色,其中,颜色相同的图节点之间没有边,从而将颜色相同的图节点划分至同一个批次中,那么,相同颜色的约束可以并行计算。
例如,如图6A所示,设网格顶点分别为v0、v1、v2、v3,网格顶点v0、v1、v2、v3之间的约束分别为C0、C1、C2、C3、C4、C5。
如图6B所示,将约束C0、C1、C2、C3、C4、C5当做图节点,对图节点C0、C1、C2、C3、C4、C5中任意两个图节点公用同一个网格顶点时,在这两个图节点之间生成一条边,此时,对C0、C1填充同一种颜色(如红色),对C2、C3填充同一种颜色(如蓝色),对C4、C5填充同一种颜色(如绿色),即,C0、C1可以并行计算,C2、C3可以并行计算,C4、C5可以并行计算。
进一步地,对于同一个网格顶点的多个角度约束之间包含相同的网格顶点,会存在冲突,因此,针对同一网格顶点的角度约束,对每个角度约束对应的图节点填充一种独立的颜色。
在针对当前图节点填充新的颜色时,选择未填充颜色、与当前图节点未产生冲突的其他图节点,对其他图节点填充新的颜色,未产生冲突为当前图节点对应的网格顶点与其他节点对应的网格顶点均不相同,其他节点对应的网格顶点之间均不相同。
步骤106、按照目标位置渲染网格顶点,显示虚拟人物穿着布料。
若根据约束更新布料中各个网格顶点的目标位置,则可以将目标位置输入给渲染管线渲染网格顶点,从而在电视设备屏幕上绘制、显示虚拟人物穿着布料。
如图3所示的右侧布料,在加入角度约束、距离约束之后,消除了凹陷,表面更加平滑,符合用户对于人体的视觉感官,虚拟人体身上的弹性肢体会随着人物的移动、旋转而产生真实的物理形变。
经测试,在A11芯片及以上的iOS设备、中高端的Android设备中可以运行本实施例中的方案。
在本实施例中,加载虚拟人物及虚拟人物穿着的布料,虚拟人物具有骨骼关节点,布料具有网格顶点;对布料添加角度约束,角度约束用于约束三个网格顶点组成的角度;对布料添加距离约束,距离约束用于在骨骼关节点与多个网格顶点作为角点组成弹性物体时、约束两两角点之间的距离;在布料受外力作用的条件下,更新网格顶点的位置,作为原始位置;更新网格顶点的原始位置为目标位置,以至少满足角度约束与距离约束;按照目标位置渲染网格顶点,显示虚拟人物穿着布料。本实施例对布料添加角度约束可以让网格顶点保持初始的角度的特征,使得布料在视觉上更加平滑,对布料添加距离约束可以保持弹性物体的形状,从而减缓或消除了布料上明显的凹凸不平的现象,在视觉上符合用户对于人体的感官,保证了虚拟人物的真实性。
其次,本实施例并未额外引入弹性物体的仿真框架,而约束的计算量少,极大地降低了实现的难度,降低了开发量。
此外,本实施例还可以实现更多可能的效果,可扩展性强,例如,改善复杂布料褶皱的仿真效果,实现简单的弹性物体形变,等等。
实施例二
图7为本申请实施例二提供的一种虚拟人物的仿真方法的流程图,本实施例在上述实施例的基础上增加了约束强度的操作。如图7所示,该方法包括:
步骤701、加载虚拟人物及虚拟人物穿着的布料。
其中,虚拟人物具有骨骼关节点,布料具有网格顶点。
步骤702、对布料添加角度约束。
其中,角度约束用于约束三个网格顶点组成的角度。
步骤703、对布料添加距离约束。
其中,距离约束用于在骨骼关节点与多个网格顶点作为角点组成弹性物体时、约束两两角点之间的距离。
步骤704、获取对虚拟人物配置的参考图像数据。
在不同的业务场景中,对于不同虚拟人物甚至是同一虚拟人物的不同部位添加的角度约束、距离约束会有所不同,从而达到更佳的显示效果。
在本实施例中,可以预先对虚拟人物制作与之适配的参考图像数据,所谓适配,可以指该参考图像数据中的像素点绑定了虚拟人物穿着的布料的UV坐标。
参考图像数据为灰度图,灰度图中的灰度为原始约束强度,这样子,在设计虚拟人物阶段,美术人员可以根据业务场景的需求,方便地对部分或全部布料的原始约束强度进行自定义,从而观察渲染的效果调节部分或全部布料的原始约束强度,例如,如图8所示,右侧为参考图像数据,左侧为根据原始约束强度调节角度约束和/或距离约束后渲染的效果图,美术人员可以在后续根据原始约束强度调节角度约束和/或距离约束的效果,提高了对虚拟人物渲染布料的灵活性,提高虚拟人物穿着布料时的真实性。
步骤705、根据原始约束强度调节角度约束和/或距离约束。
从参考图像数据中读取布料中各个网格顶点的原始约束强度,从而按照该原始约束强度调节角度约束和/或距离约束。
一般情况下,角度约束的效果与原始约束强度正相关,即,原始约束强度越大,角度约束的效果越强,反之,原始约束强度越小,角度约束的效果越弱,同理,距离约束的效果与原始约束强度正相关,即,原始约束强度越大,距离约束的效果越强,反之,原始约束强度越小,距离约束的效果越弱。
对于角度约束,可以查询对角度约束配置线性或非线性的第一映射函数,将原始约束强度输入第一映射函数中处理,输出第一目标约束强度,计算第一目标约束强度与角度约束(如第一偏差值、第二偏差值、第三偏差值)之间的乘积,以调节角度约束。
对于距离约束,可以查询对距离约束配置线性或非线性的第二映射函数,第一映射函数与第二映射函数一般并不相同,将原始约束强度输入第二映射函数中处理,输出第二目标约束强度,计算第二目标约束强度与距离约束(如第四偏差值、第五偏差值)之间的乘积,以调节距离约束。
步骤706、在布料受外力作用的条件下,更新网格顶点的位置,作为原始位置。
步骤707、更新网格顶点的原始位置为目标位置,以至少满足角度约束与距离约束。
步骤708、按照目标位置渲染网格顶点,显示虚拟人物穿着布料。
实施例三
图9为本申请实施例三提供的一种直播方法的流程图,本实施例可适用于在主播端使用布料搭建虚拟主播时,对布料添加角度、距离上的约束,提高虚拟主播的真实度的情况,该方法可以由直播装置来执行,该直播装置可以采用硬件和/或软件的形式实现,该直播装置可配置于电子设备中。如图9所示,该方法包括:
步骤901、加载虚拟主播及虚拟主播穿着的布料。
在本实施例中,角色为主播的用户(即主播用户)可以在直播平台上开设直播间,该直播间可以为虚拟的空间,承载主播用户支持的直播节目,并对外开放,供角色为观众的用户(即观众用户)或其他主播用户进内观看。
主播用户构建虚拟人物,记为虚拟主播,即,使用虚拟主播表示主播用户,主播用户主持直播节目是一个动态性的过程,虚拟主播通常并非静止状态,而是处于运动状态,那么,虚拟主播具备动作,虚拟主播的动作可以是根据直播的业务需求设定的,也可以是主播用户的动作,本实施例对此不加以限制。
其中,对于主播用户的动作,在主播用户登录的电子设备上传的视频数据中通过DT(密集轨迹)算法、TSN(Two Stream Network,时空双流网络结构主播用户)及其衍生网络等方式检测主播用户的动作,或者,主播用户在肢体上佩戴IMU(Inertial MeasurementUnit,惯性测量单元)等传感器,直接上传传感器检测到用户的动作。
在本实施例中,虚拟主播具有骨骼关节点,布料具有网格顶点。
步骤902、对布料添加角度约束。
其中,角度约束用于约束三个网格顶点组成的角度。
在本申请的一个实施例中,步骤902包括:
在布料中确定第一目标点、第二目标点与第三目标点,第一目标点为任一网格顶点,第二目标点为任一邻接第一目标点的网格顶点,第三目标点为邻接第一目标点的网格顶点,且第二目标点、第一目标点与第三目标点之间连接的夹角最大。
在第一目标点、第二目标点与第三目标点组成的三角形中,确定质心。
分别约束第一目标点与质心的第一向量、第二目标点与质心的第二向量、第三目标点与质心的第三向量在第一向量上投影的向量移动的幅度,作为角度约束。
进一步地,约束移动的辅导时:
分别对第一目标点的质量计算倒数,作为第一反质量,对第二目标点的质量计算倒数,作为第二反质量,对第三目标点的质量计算倒数,作为第三反质量。
将第一反质量、第二反质量与第三反质量线性融合为第一总反质量。
将第一目标点减去质心,获得第一距离。
约束第一目标点与质心的第一向量在第一向量上投影的向量移动的幅度为第一偏差值,第一偏差值与第一质量比负相关、第一偏差值与第一距离负相关、第一偏差值与曲率比正相关,第一质量比为第一反质量与第一总反质量之间的比值。
约束第二目标点与质心的第二向量在第一向量上投影的向量移动的幅度为第二偏差值,第二偏差值与第二质量比正相关、第二偏差值与第一距离正相关、第二偏差值与曲率比负相关,第二质量比为第二反质量与第一总反质量之间的比值。
约束第三目标点与质心的第三向量在第一向量上投影的向量移动的幅度为第三偏差值,第三偏差值与第三质量比正相关、第三偏差值与第一距离正相关、第三偏差值与曲率比负相关,第三质量比为第三反质量与第一总反质量之间的比值。
曲率比为初始值与第一距离的模长之间的比值,初始值为第一向量在初始时的模长与预设的弯曲系数之间的和值。
步骤903、对布料添加距离约束。
其中,距离约束用于在骨骼关节点与多个网格顶点作为角点组成弹性物体时、约束两两角点之间的距离。
在本申请的一个实施例中,步骤903包括:
在布料中分别选择骨骼关节点作为弹性物体中固定的角点、选择多个网格顶点作为弹性物体中活动的角点。
对两两角点约束移动的幅度,作为距离约束。
进一步地,约束移动的幅度时:
在弹性物体中选择两个角点,作为第四目标点、第五目标点。
分别对第四目标点的质量计算倒数,作为第四反质量,对第五目标点的质量计算倒数,作为第五反质量。
计算第四反质量与第五反质量之间的和值,作为第二总反质量。
将第四目标点减去第五目标点,获得第二距离。
对第四目标点约束移动的幅度为第四偏差值,第四偏差值与第四质量比负相关、第四偏差值与距离差负相关、第四偏差值与距离比负相关,第四质量比为第四反质量与第二总反质量之间的比值。
对第五目标点约束移动的幅度为第五偏差值,第五偏差值与第五质量比正相关、第五偏差值与距离差正相关、第五偏差值与距离比正相关,第五质量比为第五反质量与第二总反质量之间的比值。
距离差为第二距离的模长与初始长度之间的差值,初始长度为第四目标点与第五目标点之间在初始时的长度,距离比为第二距离与第二距离的模长之间的比值。
步骤904、在布料受外力作用的条件下,在每帧视频数据中更新网格顶点的位置,作为原始位置。
在具体实现中,查询网格顶点在上一帧视频数据中的位置,作为第一参考位置,以及,网格顶点在前两帧视频数据中的位置,作为第二参考位置。
计算第一参考位置与第二参考位置之间的差值,作为第一偏移量。
计算第一偏移量与移动系数之间的乘积,作为第二偏移量,移动系数为一减去阻尼系数之间的差值。
在时间上对布料所受外力作用的加速度进行二次积分,获得第三偏移量。
将第一参考位置与第二偏移量、第三偏移量之间的和值设置为网格顶点在本帧视频数据中的位置,作为原始位置。
进一步地,该方法还可以包括:
获取对所述虚拟主播配置的参考图像数据,参考图像数据的灰度为原始约束强度。
根据原始约束强度调节角度约束和/或距离约束。
在具体实现中,查询对角度约束配置第一映射函数。
将原始约束强度输入第一映射函数中处理,输出第一目标约束强度。
计算第一目标约束强度与角度约束之间的乘积,以调节角度约束。
和/或,
查询对距离约束配置第二映射函数。
将原始约束强度输入第二映射函数中处理,输出第二目标约束强度。
计算第二目标约束强度与距离约束之间的乘积,以调节距离约束。
步骤905、在每帧视频数据中更新网格顶点的原始位置为目标位置,以至少满足角度约束与距离约束。
在本申请的一个实施例中,步骤905包括:
在每帧视频数据中对角度约束或距离约束分成多个批次,每个批次中的角度约束或距离约束并未产生冲突。
并行按照每个批次中的角度约束或距离约束对原始位置进行调节,得到目标位置。
其中,在划分批次时:
在两个角度约束或两个距离约束之间公用同一网格顶点时,将约束作为图节点,在两个图节点之间生成边。
对图节点填充颜色,其中,颜色相同的图节点之间没有边。
将颜色相同的图节点划分至同一个批次中。
进一步地,在填充颜色时:
针对同一网格顶点的角度约束,对每个角度约束对应的图节点填充一种独立的颜色。
在针对当前图节点填充新的颜色时,选择未填充颜色、与当前图节点未产生冲突的其他图节点,对其他图节点填充新的颜色,未产生冲突为当前图节点对应的网格顶点与其他节点对应的网格顶点均不相同,其他节点对应的网格顶点之间均不相同。
步骤906、在每帧视频数据中按照目标位置渲染网格顶点,显示虚拟主播穿着布料。
步骤907、将视频数据发布至为虚拟主播开设的直播间。
在本实施例中,可以根据直播的业务需求,将虚拟主播渲染至视频数据中,从而将视频数据发送至直播平台,直播平台将该视频数据分布至为虚拟主播开设的直播间中,进入该直播间的观众用户、其他主播用户可观看到虚拟主播。
进一步而言,若直播为AR(Augmented Reality,增强现实)直播,则主播用户所登录的电子设备持续采集并上传视频数据至直播间,主播用户可以控制是否开启卡通形象,如果主播用户开启卡通形象,可以在上传视频数据之前,将虚拟主播渲染至该视频数据中,进入该直播间的观众用户、其他主播用户可下载该视频数据,观看到虚拟主播。
若直播为VR(Virtual Reality,虚拟现实)直播,则可以生成虚拟环境,此时,将虚拟主播渲染至该虚拟环境中,从而形成视频数据并上传视频数据至直播间,进入该直播间的观众用户、其他主播用户可下载该视频数据,观看到虚拟主播。
在本实施例中,由于布料仿真的方法与实施例一的应用基本相似,所以描述的比较简单,相关之处参见实施例一的部分说明即可,本实施例在此不加以详述。
在本实施例中,加载虚拟主播及虚拟主播穿着的布料,虚拟主播具有骨骼关节点,布料具有网格顶点;对布料添加角度约束,角度约束用于约束三个网格顶点组成的角度;对布料添加距离约束,距离约束用于在骨骼关节点与多个网格顶点作为角点组成弹性物体时、约束两两角点之间的距离;在布料受外力作用的条件下,在每帧视频数据中更新网格顶点的位置,作为原始位置;在每帧视频数据中更新网格顶点的原始位置为目标位置,以至少满足角度约束与所述距离约束;在每帧视频数据中按照目标位置渲染网格顶点,显示虚拟主播穿着布料;将视频数据发布至为虚拟主播开设的直播间。本实施例对布料添加角度约束可以让网格顶点保持初始的角度的特征,使得布料在视觉上更加平滑,对布料添加距离约束可以保持弹性物体的形状,从而减缓或消除了布料上明显的凹凸不平的现象,在视觉上符合用户对于人体的感官,保证了虚拟主播的真实性。
其次,本实施例并未额外引入弹性物体的仿真框架,而约束的计算量少,极大地降低了实现的难度,降低了开发量。
此外,本实施例还可以实现更多可能的效果,可扩展性强,例如,改善复杂布料褶皱的仿真效果,实现简单的弹性物体形变,等等。
实施例四
图10为本申请实施例四提供的一种虚拟人物的仿真装置的结构示意图。如图10所示,该装置包括:
虚拟加载模块1001,用于加载虚拟人物及所述虚拟人物穿着的布料,所述虚拟人物具有骨骼关节点,所述布料具有网格顶点;
角度约束添加模块1002,用于对所述布料添加角度约束,所述角度约束用于约束三个所述网格顶点组成的角度;
距离约束添加模块1003,用于对所述布料添加距离约束,所述距离约束用于在所述骨骼关节点与多个所述网格顶点作为角点组成弹性物体时、约束两两所述角点之间的距离;
原始位置更新模块1004,用于在所述布料受外力作用的条件下,更新所述网格顶点的位置,作为原始位置;
目标位置更新模块1005,用于更新所述网格顶点的所述原始位置为目标位置,以至少满足所述角度约束与所述距离约束;
虚拟渲染模块1006,用于按照所述目标位置渲染所述网格顶点,显示所述虚拟人物穿着所述布料。
在本申请的一个实施例中,还包括:
约束强度获取模块,用于获取对所述虚拟人物配置的参考图像数据,所述参考图像数据的灰度为原始约束强度;
约束调节模块,用于根据所述原始约束强度调节所述角度约束和/或所述距离约束。
本申请实施例所提供的虚拟人物的仿真装置可执行本申请任意实施例所提供的虚拟人物的仿真方法,具备执行虚拟人物的仿真方法相应的功能模块和有益效果。
实施例五
图11为本申请实施例五提供的一种直播装置的结构示意图。如图11所示,该装置包括:
虚拟加载模块1101,用于加载虚拟主播及所述虚拟主播穿着的布料,所述虚拟主播具有骨骼关节点,所述布料具有网格顶点;
角度约束添加模块1102,用于对所述布料添加角度约束,所述角度约束用于约束三个所述网格顶点组成的角度;
距离约束添加模块1103,用于对所述布料添加距离约束,所述距离约束用于在所述骨骼关节点与多个所述网格顶点作为角点组成弹性物体时、约束两两所述角点之间的距离;
原始位置更新模块1104,用于在所述布料受外力作用的条件下,在每帧视频数据中更新所述网格顶点的位置,作为原始位置;
目标位置更新模块1105,用于在每帧所述视频数据中更新所述网格顶点的所述原始位置为目标位置,以至少满足所述角度约束与所述距离约束;
虚拟渲染模块1106,用于在每帧所述视频数据中按照所述目标位置渲染所述网格顶点,显示所述虚拟主播穿着所述布料;
直播发布模块1107,用于将所述视频数据发布至为所述虚拟主播开设的直播间。
在本申请的一个实施例中,还包括:
约束强度获取模块,用于获取对所述虚拟主播配置的参考图像数据,所述参考图像数据的灰度为原始约束强度;
约束调节模块,用于根据所述原始约束强度调节所述角度约束和/或所述距离约束。
本申请实施例所提供的直播装置可执行本申请任意实施例所提供的直播方法,具备执行直播方法相应的功能模块和有益效果。
实施例六
图12示出了可以用来实施本申请的实施例的电子设备10的结构示意图。电子设备旨在表示各种形式的数字计算机,诸如,膝上型计算机、台式计算机、工作台、个人数字助理、服务器、刀片式服务器、大型计算机、和其它适合的计算机。电子设备还可以表示各种形式的移动装置,诸如,个人数字处理、蜂窝电话、智能电话、可穿戴设备(如头盔、眼镜、手表等)和其它类似的计算装置。本文所示的部件、它们的连接和关系、以及它们的功能仅仅作为示例,并且不意在限制本文中描述的和/或者要求的本申请的实现。
如图12所示,电子设备10包括至少一个处理器11,以及与至少一个处理器11通信连接的存储器,如只读存储器(ROM)12、随机访问存储器(RAM)13等,其中,存储器存储有可被至少一个处理器执行的计算机程序,处理器11可以根据存储在只读存储器(ROM)12中的计算机程序或者从存储单元18加载到随机访问存储器(RAM)13中的计算机程序,来执行各种适当的动作和处理。在RAM 13中,还可存储电子设备10操作所需的各种程序和数据。处理器11、ROM 12以及RAM 13通过总线14彼此相连。输入/输出(I/O)接口15也连接至总线14。
电子设备10中的多个部件连接至I/O接口15,包括:输入单元16,例如键盘、鼠标等;输出单元17,例如各种类型的显示器、扬声器等;存储单元18,例如磁盘、光盘等;以及通信单元19,例如网卡、调制解调器、无线通信收发机等。通信单元19允许电子设备10通过诸如因特网的计算机网络和/或各种电信网络与其他设备交换信息/数据。
处理器11可以是各种具有处理和计算能力的通用和/或专用处理组件。处理器11的一些示例包括但不限于中央处理单元(CPU)、图形处理单元(GPU)、各种专用的人工智能(AI)计算芯片、各种运行机器学习模型算法的处理器、数字信号处理器(DSP)、以及任何适当的处理器、控制器、微控制器等。处理器11执行上文所描述的各个方法和处理,例如虚拟人物的仿真方法或直播方法。
在一些实施例中,虚拟人物的仿真方法或直播方法可被实现为计算机程序,其被有形地包含于计算机可读存储介质,例如存储单元18。在一些实施例中,计算机程序的部分或者全部可以经由ROM 12和/或通信单元19而被载入和/或安装到电子设备10上。当计算机程序加载到RAM 13并由处理器11执行时,可以执行上文描述的虚拟人物的仿真方法或直播方法的一个或多个步骤。备选地,在其他实施例中,处理器11可以通过其他任何适当的方式(例如,借助于固件)而被配置为执行虚拟人物的仿真方法或直播方法。
本文中以上描述的系统和技术的各种实施方式可以在数字电子电路系统、集成电路系统、场可编程门阵列(FPGA)、专用集成电路(ASIC)、专用标准产品(ASSP)、芯片上系统的系统(SOC)、负载可编程逻辑设备(CPLD)、计算机硬件、固件、软件、和/或它们的组合中实现。这些各种实施方式可以包括:实施在一个或者多个计算机程序中,该一个或者多个计算机程序可在包括至少一个可编程处理器的可编程系统上执行和/或解释,该可编程处理器可以是专用或者通用可编程处理器,可以从存储系统、至少一个输入装置、和至少一个输出装置接收数据和指令,并且将数据和指令传输至该存储系统、该至少一个输入装置、和该至少一个输出装置。
用于实施本申请的方法的计算机程序可以采用一个或多个编程语言的任何组合来编写。这些计算机程序可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器,使得计算机程序当由处理器执行时使流程图和/或框图中所规定的功能/操作被实施。计算机程序可以完全在机器上执行、部分地在机器上执行,作为独立软件包部分地在机器上执行且部分地在远程机器上执行或完全在远程机器或服务器上执行。
在本申请的上下文中,计算机可读存储介质可以是有形的介质,其可以包含或存储以供指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合地使用的计算机程序。计算机可读存储介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体系统、装置或设备,或者上述内容的任何合适组合。备选地,计算机可读存储介质可以是机器可读信号介质。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或快闪存储器)、光纤、便捷式紧凑盘只读存储器(CD-ROM)、光学储存设备、磁储存设备、或上述内容的任何合适组合。
为了提供与用户的交互,可以在电子设备上实施此处描述的系统和技术,该电子设备具有:用于向用户显示信息的显示装置(例如,CRT(阴极射线管)或者LCD(液晶显示器)监视器);以及键盘和指向装置(例如,鼠标或者轨迹球),用户可以通过该键盘和该指向装置来将输入提供给电子设备。其它种类的装置还可以用于提供与用户的交互;例如,提供给用户的反馈可以是任何形式的传感反馈(例如,视觉反馈、听觉反馈、或者触觉反馈);并且可以用任何形式(包括声输入、语音输入或者、触觉输入)来接收来自用户的输入。
可以将此处描述的系统和技术实施在包括后台部件的计算系统(例如,作为数据服务器)、或者包括中间件部件的计算系统(例如,应用服务器)、或者包括前端部件的计算系统(例如,具有图形用户界面或者网络浏览器的用户计算机,用户可以通过该图形用户界面或者该网络浏览器来与此处描述的系统和技术的实施方式交互)、或者包括这种后台部件、中间件部件、或者前端部件的任何组合的计算系统中。可以通过任何形式或者介质的数字数据通信(例如,通信网络)来将系统的部件相互连接。通信网络的示例包括:局域网(LAN)、广域网(WAN)、区块链网络和互联网。
计算系统可以包括客户端和服务器。客户端和服务器一般远离彼此并且通常通过通信网络进行交互。通过在相应的计算机上运行并且彼此具有客户端-服务器关系的计算机程序来产生客户端和服务器的关系。服务器可以是云服务器,又称为云计算服务器或云主机,是云计算服务体系中的一项主机产品,以解决了传统物理主机与VPS服务中,存在的管理难度大,业务扩展性弱的缺陷。
Claims (15)
1.一种虚拟人物的仿真方法,其特征在于,包括:
加载虚拟人物及所述虚拟人物穿着的布料,所述虚拟人物具有骨骼关节点,所述布料具有网格顶点;
对所述布料添加角度约束,所述角度约束用于约束三个所述网格顶点组成的角度;
对所述布料添加距离约束,所述距离约束用于在所述骨骼关节点与多个所述网格顶点作为角点组成弹性物体时、约束两两所述角点之间的距离;
在所述布料受外力作用的条件下,更新所述网格顶点的位置,作为原始位置;
更新所述网格顶点的所述原始位置为目标位置,以至少满足所述角度约束与所述距离约束;
按照所述目标位置渲染所述网格顶点,显示所述虚拟人物穿着所述布料。
2.根据权利要求1所述的方法,其特征在于,所述对所述布料添加角度约束,包括:
在所述布料中确定第一目标点、第二目标点与第三目标点,所述第一目标点为任一所述网格顶点,所述第二目标点为任一邻接所述第一目标点的所述网格顶点,所述第三目标点为邻接所述第一目标点的所述网格顶点,且所述第二目标点、所述第一目标点与所述第三目标点之间连接的夹角最大;
在所述第一目标点、所述第二目标点与所述第三目标点组成的三角形中,确定质心;
分别约束所述第一目标点与所述质心的第一向量、所述第二目标点与所述质心的第二向量、所述第三目标点与所述质心的第三向量在所述第一向量上投影的向量移动的幅度,作为角度约束。
3.根据权利要求2所述的方法,其特征在于,所述分别约束所述第一目标点与所述质心的第一向量、所述第二目标点与所述质心的第二向量、所述第三目标点与所述质心的第三向量在所述第一向量上投影的向量移动的幅度,作为角度约束,包括:
分别对所述第一目标点的质量计算倒数,作为第一反质量,对所述第二目标点的质量计算倒数,作为第二反质量,对所述第三目标点的质量计算倒数,作为第三反质量;
将所述第一反质量、所述第二反质量与所述第三反质量线性融合为第一总反质量;
将所述第一目标点减去所述质心,获得第一距离;
约束所述第一目标点与所述质心的第一向量在所述第一向量上投影的向量移动的幅度为第一偏差值,所述第一偏差值与第一质量比负相关、所述第一偏差值与所述第一距离负相关、所述第一偏差值与曲率比正相关,所述第一质量比为所述第一反质量与所述第一总反质量之间的比值;
约束所述第二目标点与所述质心的第二向量在所述第一向量上投影的向量移动的幅度为第二偏差值,所述第二偏差值与第二质量比正相关、所述第二偏差值与所述第一距离正相关、所述第二偏差值与曲率比负相关,所述第二质量比为所述第二反质量与所述第一总反质量之间的比值;
约束所述第三目标点与所述质心的第三向量在所述第一向量上投影的向量移动的幅度为第三偏差值,所述第三偏差值与第三质量比正相关、所述第三偏差值与所述第一距离正相关、所述第三偏差值与曲率比负相关,所述第三质量比为所述第三反质量与所述第一总反质量之间的比值;
所述曲率比为初始值与所述第一距离的模长之间的比值,所述初始值为所述第一向量在初始时的模长与预设的弯曲系数之间的和值。
4.根据权利要求1所述的方法,其特征在于,所述对所述布料添加距离约束,包括:
在所述布料中分别选择所述骨骼关节点作为弹性物体中固定的角点、选择多个所述网格顶点作为弹性物体中活动的角点;
对两两所述角点约束移动的幅度,作为距离约束。
5.根据权利要求4所述的方法,其特征在于,所述对两两所述角点约束移动的幅度,作为距离约束,包括:
在所述弹性物体中选择两个角点,作为第四目标点、第五目标点;
分别对所述第四目标点的质量计算倒数,作为第四反质量,对所述第五目标点的质量计算倒数,作为第五反质量;
计算所述第四反质量与所述第五反质量之间的和值,作为第二总反质量;
将所述第四目标点减去所述第五目标点,获得第二距离;
对所述第四目标点约束移动的幅度为第四偏差值,所述第四偏差值与第四质量比负相关、所述第四偏差值与距离差负相关、所述第四偏差值与距离比负相关,所述第四质量比为所述第四反质量与所述第二总反质量之间的比值;
对所述第五目标点约束移动的幅度为第五偏差值,所述第五偏差值与第五质量比正相关、所述第五偏差值与距离差正相关、所述第五偏差值与距离比正相关,所述第五质量比为所述第五反质量与所述第二总反质量之间的比值;
所述距离差为所述第二距离的模长与初始长度之间的差值,所述初始长度为所述第四目标点与所述第五目标点之间在初始时的长度,所述距离比为所述第二距离与所述第二距离的模长之间的比值。
6.根据权利要求1所述的方法,其特征在于,所述在所述布料受外力作用的条件下,更新所述网格顶点的位置,作为原始位置,包括:
查询所述网格顶点在上一帧中的位置,作为第一参考位置,以及,所述网格顶点在前两帧中的位置,作为第二参考位置;
计算所述第一参考位置与所述第二参考位置之间的差值,作为第一偏移量;
计算所述第一偏移量与移动系数之间的乘积,作为第二偏移量,所述移动系数为一减去阻尼系数之间的差值;
在时间上对所述布料所受外力作用的加速度进行二次积分,获得第三偏移量;
将所述第一参考位置与所述第二偏移量、所述第三偏移量之间的和值设置为所述网格顶点在本帧中的位置,作为原始位置。
7.根据权利要求1-6中任一项所述的方法,其特征在于,所述更新所述网格顶点的所述原始位置为目标位置,以至少满足所述角度约束与所述距离约束,包括:
对所述角度约束或所述距离约束分成多个批次,每个所述批次中的所述角度约束或所述距离约束并未产生冲突;
并行按照每个所述批次中的所述角度约束或所述距离约束对所述原始位置进行调节,得到目标位置。
8.根据权利要求7所述的方法,其特征在于,所述对所述角度约束或所述距离约束分成多个批次,包括:
在两个所述角度约束或两个所述距离约束之间公用同一所述网格顶点时,将所述约束作为图节点,在两个所述图节点之间生成边;
对所述图节点填充颜色,其中,所述颜色相同的所述图节点之间没有边;
将所述颜色相同的所述图节点划分至同一个批次中。
9.根据权利要求8所述的方法,其特征在于,所述对所述图节点填充颜色,包括:
针对同一所述网格顶点的所述角度约束,对每个所述角度约束对应的所述图节点填充一种独立的颜色;
在针对当前所述图节点填充新的所述颜色时,选择未填充颜色、与当前所述图节点未产生冲突的其他所述图节点,对其他所述图节点填充新的所述颜色,所述未产生冲突为当前所述图节点对应的所述网格顶点与其他所述节点对应的所述网格顶点均不相同,其他所述节点对应的所述网格顶点之间均不相同。
10.根据权利要求1-6中任一项所述的方法,其特征在于,还包括:
获取对所述虚拟人物配置的参考图像数据,所述参考图像数据的灰度为原始约束强度;
根据所述原始约束强度调节所述角度约束和/或所述距离约束。
11.一种直播方法,其特征在于,包括:
加载虚拟主播及所述虚拟主播穿着的布料,所述虚拟主播具有骨骼关节点,所述布料具有网格顶点;
对所述布料添加角度约束,所述角度约束用于约束三个所述网格顶点组成的角度;
对所述布料添加距离约束,所述距离约束用于在所述骨骼关节点与多个所述网格顶点作为角点组成弹性物体时、约束两两所述角点之间的距离;
在所述布料受外力作用的条件下,在每帧视频数据中更新所述网格顶点的位置,作为原始位置;
在每帧所述视频数据中更新所述网格顶点的所述原始位置为目标位置,以至少满足所述角度约束与所述距离约束;
在每帧所述视频数据中按照所述目标位置渲染所述网格顶点,显示所述虚拟主播穿着所述布料;
将所述视频数据发布至为所述虚拟主播开设的直播间。
12.一种虚拟人物的仿真装置,其特征在于,包括:
虚拟加载模块,用于加载虚拟人物及所述虚拟人物穿着的布料,所述虚拟人物具有骨骼关节点,所述布料具有网格顶点;
角度约束添加模块,用于对所述布料添加角度约束,所述角度约束用于约束三个所述网格顶点组成的角度;
距离约束添加模块,用于对所述布料添加距离约束,所述距离约束用于在所述骨骼关节点与多个所述网格顶点作为角点组成弹性物体时、约束两两所述角点之间的距离;
原始位置更新模块,用于在所述布料受外力作用的条件下,更新所述网格顶点的位置,作为原始位置;
目标位置更新模块,用于更新所述网格顶点的所述原始位置为目标位置,以至少满足所述角度约束与所述距离约束;
虚拟渲染模块,用于按照所述目标位置渲染所述网格顶点,显示所述虚拟人物穿着所述布料。
13.一种直播装置,其特征在于,包括:
虚拟加载模块,用于加载虚拟主播及所述虚拟主播穿着的布料,所述虚拟主播具有骨骼关节点,所述布料具有网格顶点;
角度约束添加模块,用于对所述布料添加角度约束,所述角度约束用于约束三个所述网格顶点组成的角度;
距离约束添加模块,用于对所述布料添加距离约束,所述距离约束用于在所述骨骼关节点与多个所述网格顶点作为角点组成弹性物体时、约束两两所述角点之间的距离;
原始位置更新模块,用于在所述布料受外力作用的条件下,在每帧视频数据中更新所述网格顶点的位置,作为原始位置;
目标位置更新模块,用于在每帧所述视频数据中更新所述网格顶点的所述原始位置为目标位置,以至少满足所述角度约束与所述距离约束;
虚拟渲染模块,用于在每帧所述视频数据中按照所述目标位置渲染所述网格顶点,显示所述虚拟主播穿着所述布料;
直播发布模块,用于将所述视频数据发布至为所述虚拟主播开设的直播间。
14.一种电子设备,其特征在于,所述电子设备包括:
至少一个处理器;以及
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的计算机程序,所述计算机程序被所述至少一个处理器执行,以使所述至少一个处理器能够执行权利要求1-10中任一项所述的虚拟人物的仿真方法或者权利要求11所述的直播方法。
15.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机程序,所述计算机程序用于使处理器执行时实现权利要求1-10中任一项所述的虚拟人物的仿真方法或者权利要求11所述的直播方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210187061.8A CN114565705A (zh) | 2022-02-28 | 2022-02-28 | 一种虚拟人物的仿真、直播方法、装置、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210187061.8A CN114565705A (zh) | 2022-02-28 | 2022-02-28 | 一种虚拟人物的仿真、直播方法、装置、设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114565705A true CN114565705A (zh) | 2022-05-31 |
Family
ID=81715979
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210187061.8A Pending CN114565705A (zh) | 2022-02-28 | 2022-02-28 | 一种虚拟人物的仿真、直播方法、装置、设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114565705A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116168131A (zh) * | 2022-12-09 | 2023-05-26 | 北京百度网讯科技有限公司 | 布料的渲染处理方法、装置、电子设备及存储介质 |
WO2024067320A1 (zh) * | 2022-09-29 | 2024-04-04 | 北京字跳网络技术有限公司 | 虚拟物体的渲染方法、装置、设备及存储介质 |
-
2022
- 2022-02-28 CN CN202210187061.8A patent/CN114565705A/zh active Pending
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2024067320A1 (zh) * | 2022-09-29 | 2024-04-04 | 北京字跳网络技术有限公司 | 虚拟物体的渲染方法、装置、设备及存储介质 |
CN116168131A (zh) * | 2022-12-09 | 2023-05-26 | 北京百度网讯科技有限公司 | 布料的渲染处理方法、装置、电子设备及存储介质 |
CN116168131B (zh) * | 2022-12-09 | 2023-11-21 | 北京百度网讯科技有限公司 | 布料的渲染处理方法、装置、电子设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20180225858A1 (en) | Apparatus and method to generate realistic rigged three dimensional (3d) model animation for view-point transform | |
CN114565705A (zh) | 一种虚拟人物的仿真、直播方法、装置、设备及存储介质 | |
US9928643B2 (en) | Hierarchical continuous level of detail for three-dimensional meshes | |
WO2018095273A1 (zh) | 图像合成方法、装置以及匹配实现方法、装置 | |
US6937240B2 (en) | Methods and apparatus for transforming three-dimensional objects in video games | |
CN113785330A (zh) | 使用相异的目标动画数据来训练人物的强化学习 | |
JPH0962864A (ja) | 高速描画方法および装置 | |
US10713850B2 (en) | System for reconstructing three-dimensional (3D) human body model using depth data from single viewpoint | |
CN109064487B (zh) | 一种基于Kinect骨骼节点位置追踪的人体姿势比较方法 | |
US10062197B2 (en) | Animating a virtual object in a virtual world | |
US20190213975A1 (en) | Image processing system, image processing method, and computer program | |
US9984488B2 (en) | Animating a virtual object in a virtual world | |
CN106780707B (zh) | 模拟场景中全局光照的方法和装置 | |
US11238667B2 (en) | Modification of animated characters | |
CN106504315A (zh) | 模拟全局光照的方法和装置 | |
US20180276870A1 (en) | System and method for mass-animating characters in animated sequences | |
CN108986227B (zh) | 粒子特效程序文件包的生成及粒子特效生成方法与装置 | |
CN108379841B (zh) | 游戏特效的处理方法、装置和终端 | |
US9652879B2 (en) | Animation of a virtual object | |
US20180144531A1 (en) | Animating a virtual object in a virtual world | |
CN112827169A (zh) | 游戏图像处理方法和装置、存储介质及电子设备 | |
US20230298297A1 (en) | Layered clothing that conforms to an underlying body and/or clothing layer | |
US20230120883A1 (en) | Inferred skeletal structure for practical 3d assets | |
CN112843704B (zh) | 动画模型处理方法、装置、设备及存储介质 | |
CN113313796B (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 |