CN111028320B - 布料动画的生成方法、装置、计算机可读存储介质 - Google Patents
布料动画的生成方法、装置、计算机可读存储介质 Download PDFInfo
- Publication number
- CN111028320B CN111028320B CN201911268404.8A CN201911268404A CN111028320B CN 111028320 B CN111028320 B CN 111028320B CN 201911268404 A CN201911268404 A CN 201911268404A CN 111028320 B CN111028320 B CN 111028320B
- Authority
- CN
- China
- Prior art keywords
- grid
- physical
- mesh
- vertex
- rendering
- 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.)
- Active
Links
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
- G06T2210/00—Indexing scheme for image generation or computer graphics
- G06T2210/16—Cloth
Landscapes
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Processing Or Creating Images (AREA)
Abstract
本申请涉及一种布料动画的生成方法、装置、计算机可读存储介质和计算机设备,所述方法包括:获取虚拟对象的布料模型的物理网格;根据物理网格的布料约束确定各个网格顶点的着色标记量;根据网格顶点的着色标记量将物理网格分割为多个子物理网格;并行计算各子物理网格上网格顶点的渲染位置坐标;根据物理网格上的各个网格顶点的渲染位置坐标,获取渲染网格上网格顶点的位置坐标;根据渲染网格上网格顶点的位置坐标,生成虚拟对象的布料动画。本申请提供的方案可以实现大大缩短布料动画模拟计算时间,能够广泛应用在动画角色、游戏角色的服饰衣物等柔性材质的表现上。
Description
技术领域
本申请涉及计算机技术领域,特别是涉及一种布料动画的生成方法、装置、计算机可读存储介质和计算机设备。
背景技术
随着计算机技术的发展,布料动画模拟技术被广泛应用于动画电影、游戏等领域中,例如,在武侠类动画中,当虚拟拟人物角色在进行奔跑、跳跃等动作时,通过布料动画模拟技术获取虚拟人物角色身上的衣物的形变和飘动等效果,以表现丰富的运动细节,增加动画的真实感。但是,为了获得细腻、真实的布料动画效果,往往需要构建高精度的布料模型,而高精度的布料模型的网格大,网格顶点数量很多,导致布料动画模拟计算的开销大,耗时长。
发明内容
基于此,有必要针对高精度的布料模型的网格大、网格顶点数量多而导致布料动画模拟计算的开销大、耗时长的技术问题,提供一种布料动画的生成方法、装置、计算机可读存储介质和计算机设备。
一种布料动画的生成方法,包括:
获取虚拟对象的布料模型的物理网格;
根据所述物理网格的布料约束确定各个网格顶点的着色标记量;
根据所述网格顶点的着色标记量将所述物理网格分割为多个子物理网格;
并行计算各所述子物理网格上网格顶点的渲染位置坐标;
根据所述物理网格上的各个网格顶点的渲染位置坐标,获取渲染网格上网格顶点的位置坐标;
根据所述渲染网格上网格顶点的位置坐标,生成所述虚拟对象的布料动画。
一种布料动画的生成装置,其特征在于,所述装置包括:
布料模型获取模块,用于获取虚拟对象的布料模型的物理网格;
网格顶点着色模块,用于根据所述物理网格的布料约束确定各个网格顶点的着色标记量;
物理网格获取模块,用于根据所述网格顶点的着色标记量将所述物理网格分割为多个子物理网格;
位置坐标转换模块,用于并行计算各所述子物理网格上网格顶点的渲染位置坐标;
渲染网格获取模块,用于根据所述物理网格上的各个网格顶点的渲染位置坐标,获取渲染网格上网格顶点的位置坐标;
布料动画生成模块,用于根据所述渲染网格上网格顶点的位置坐标,生成所述虚拟对象的布料动画。
在一个实施例中,所述装置还包括动作幅度确定模块,用于:获取所述虚拟对象的动作幅度;根据所述虚拟对象的动作幅度确定所述第一子物理网格的渲染状态;
所述位置坐标转换模块,用于在所述渲染状态为纯物理状态时,并行对所述第一子物理网格中的第一网格顶点进行物理模拟计算,得到所述第一网格顶点的渲染位置坐标;在所述渲染状态为纯动画状态时,并行对所述第一子物理网格中的第一网格顶点进行蒙皮计算,得到所述第一网格顶点的渲染位置坐标。
一种计算机可读存储介质,存储有计算机程序,所述计算机程序被处理器执行时,使得所述处理器执行如下步骤:
获取虚拟对象的布料模型的物理网格;
根据所述物理网格的布料约束确定各个网格顶点的着色标记量;
根据所述网格顶点的着色标记量将所述物理网格分割为多个子物理网格;
并行计算各所述子物理网格上网格顶点的渲染位置坐标;
根据所述物理网格上的各个网格顶点的渲染位置坐标,获取渲染网格上网格顶点的位置坐标;
根据所述渲染网格上网格顶点的位置坐标,生成所述虚拟对象的布料动画。
一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述计算机程序被所述处理器执行时,使得所述处理器执行如下步骤:
获取虚拟对象的布料模型的物理网格;
根据所述物理网格的布料约束确定各个网格顶点的着色标记量;
根据所述网格顶点的着色标记量将所述物理网格分割为多个子物理网格;
并行计算各所述子物理网格上网格顶点的渲染位置坐标;
根据所述物理网格上的各个网格顶点的渲染位置坐标,获取渲染网格上网格顶点的位置坐标;
根据所述渲染网格上网格顶点的位置坐标,生成所述虚拟对象的布料动画。
上述布料动画的生成、装置、计算机可读存储介质和计算机设备,在获取到虚拟对象的布料模型的物理网格后,根据物理网格的布料约束确定各个网格顶点的着色标记量,然后根据网格顶点的着色标记量将物理网格分割为多个子物理网格,进而并行计算各子物理网格上网格顶点的渲染位置坐标,得到物理网格上各个网格顶点的渲染位置坐标,最后根据物理网格上的各个网格顶点的渲染位置坐标,获取渲染网格上网格顶点的位置坐标,并根据渲染网格上网格顶点的位置坐标生成虚拟对象的布料动画,本方法实现将物理网格分割为多个子物理网格,实现将耗时长、运算量大的物理网格上网格顶点的位置信息计算任务,分割为多个可并行执行的子物理网格上网格顶点的位置信息计算任务,大大缩短布料动画模拟计算时间,能够广泛应用在动画角色、游戏角色的服饰衣物等柔性材质的表现上。
附图说明
图1为本申请一个实施例中布料动画的生成方法的应用环境图;
图2为本申请一个实施例中布料动画的生成方法的流程示意图;
图3为本申请一个实施例中虚拟对象的示意图;
图4为本申请一个实施例中根据物理网格的布料约束确定各个网格顶点的着色标记量步骤的流程示意图;
图5a为本申请一个实施例中虚拟对象的布料模型的物理网格的示意图;
图5b为本申请一个实施例中虚拟对象的布料模型的物理网格上网格顶点间的连通性的示意图;
图6为本申请一个实施例中利用多个处理器并行计算第一子物理网格上第一网格顶点的渲染位置坐标以及对第二子物理网格上的第二网格顶点的渲染位置坐标步骤的流程示意图;
图7为本申请一个实施例中利用多个处理器并行计算第一子物理网格上第一网格顶点的渲染位置坐标步骤的流程示意图;
图8为本申请一个实施例中并行计算各子物理网格上网格顶点的渲染位置坐标步骤的流程示意图;
图9为本申请一个实施例中根据物理网格上的各个网格顶点的渲染位置坐标,获取渲染网格上网格顶点的位置坐标步骤的流程示意图;
图10为本申请一个实施例中布料动画的生成方法的流程框图;
图11为本申请一个实施例中布料动画的生成装置的结构框图;
图12为本申请一个实施例中计算机设备的结构框图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
随着计算机图像技术的发展,3D游戏和动画电影越来越普遍,而对于现实世界中各种角色和场景的动态模拟是构建3D游戏和动画电影的重要内容,而虚拟对象,例如人物角色的建模是必不可少的一环。其中,虚拟角色的建模包括骨骼层、皮肤层和服饰层,其中,本申请可应用于对虚拟角色的服饰层的布料动画的生成。虚拟角色的骨骼层由骨架组成,包括一系列骨骼,每个骨骼其实就是一个坐标系,骨架包含了虚拟角色对应模型的结构信息,负责物体模型变形的控制。而皮肤层以及服饰层都是由三角面片网格组成的,三角面片网格包括网格顶点和三角片面,表征了物体模型的外观信息,负责虚拟角色对应模型的渲染。
其中,对于服饰层布料模型的三角面片网格,通过获取三角面片网格中网格顶点的位置信息,实现布料模型面片的变形,从而实现模拟服饰层的布料动画。其中,网格顶点可以是由物理驱动的,通过物理模拟计算更新网格顶点的位置信息,也可以是由骨骼层的骨骼(也就是动画)驱动的,通过蒙皮计算更新网格顶点的位置信息。
图1为一个实施例中布料动画的生成方法的应用环境图。参照图1,该布料动画的生成方法应用于一种计算机设备。该计算机设备可以是包括终端或服务器。如图1所示,以该计算机设备是终端102为例,终端102获取虚拟对象的布料模型的物理网格,根据物理网格的布料约束确定各个网格顶点的着色标记量,根据网格顶点的着色标记量将物理网格分割为多个子物理网格;并行计算各子物理网格上网格顶点的渲染位置坐标,并根据物理网格上的各个网格顶点的渲染位置坐标,获取渲染网格上网格顶点的位置坐标;根据渲染网格上网格顶点的位置坐标,生成虚拟对象的布料动画。终端102在获得虚拟对象的布料动画后,可通过显示终端显示虚拟对象。
比如,在一个示例性的应用场景中,布料动画的生成方法可应用于电子游戏中,其中,虚拟对象可以是该电子游戏中的一个虚拟的用于代表用户的虚拟形象,也可以是该虚拟场景中的一个虚拟的用于代表与用户交互的角色的虚拟形象。布料动画可以指电子游戏场景中的柔性物体,包括但不限于人物角色类的虚拟对象的服饰衣物、头发,或动物角色类的虚拟对象的毛发等。用户可以提前在终端设备上下载电子游戏,并在终端设备上登陆该电子游戏,此时终端设备获取虚拟对象的布料模型的物理网格,将物理网格划分为多个子物理网格,从而并行计算各个子物理网格上各个网格顶点的渲染位置坐标,并根据物理网格上各个网格顶点的渲染位置坐标计算获取渲染网格上网格顶点的位置坐标,从而将渲染网格上网格顶点的位置坐标作为渲染数据,输出至渲染器中,以渲染生成用于代表用户的虚拟对象上的布料动画,如图1中的图像104所示,并通过终端设备的显示装置进行显示。
进一步地,用户可以在终端设备上进行操作,该终端设备检测到触控操作后确定该触控操作对应的游戏数据,该游戏数据可以是虚拟场景中虚拟对象的行为信息,终端设备根据虚拟对象的行为信息,并行更新虚拟对象的布料模型的各个子物理网格上网格顶点的渲染位置坐标,并根据物理网格上各个网格顶点的渲染位置坐标,计算获取渲染网格上网格顶点的位置坐标,从而将渲染网格上网格顶点的位置坐标作为渲染数据,输出至渲染器中,以渲染生成最终的虚拟对象。
如图2所示,在一个实施例中,提供了一种布料动画的生成方法。本实施例主要以该方法应用于上述图1中的终端102来举例说明。参照图2,该布料动画的生成方法具体包括如下步骤:
步骤S202,获取虚拟对象的布料模型的物理网格。
其中,虚拟对象是指在动画生成过程中的具体对象。布料模型的物理网格是指在虚拟对象对应的布料资源渲染过程中进行物理控制计算的三角面片网格,包括有多个网格顶点,其中,布料模型可是指柔性体对应的模型;例如,在电子游戏场景中,布料模型包括但不限于虚拟对象的头发、衣服、饰品等对应的模型。
具体地,以电子游戏场景为例,虚拟对象可以是指在游戏场景中用于代表用户的人物角色,布料模型是指在人物角色身上的服饰,因而服务器获取虚拟对象(即电子游戏中的人物角色)上服饰所对应的布料模型的物理网格。
步骤S204,根据物理网格的布料约束确定各个网格顶点的着色标记量。
其中,布料约束是指对布料模型的物理网格上网格顶点在位置移动距离、移动速度等方面的限制,可以理解的是,布料约束包括受约束的网格顶点的集合以及约束条件。布料约束的种类基于不同的布料算法而不同,例如,在Apex布料系统中,布料约束一般包括Tether约束和Fabric约束。
以电子游戏场景为例,游戏中的虚拟对象(例如人物角色)进行运动时,例如走路、跑步、跳跃等运动,虚拟对象的运动会给服饰的布料模型传递一定的运动量,如图3所示,服饰布料例如披风、衣服下摆应有飘动等动态效果,此时,为了增加服饰对应的布料动画的真实性,布料模型的物理网格上网格顶点不仅仅由骨骼驱动的,还需要增加对布料模型的物理网格的布料约束,例如弹性约束,通过布料约束辅助计算布料模型的物理网格对应的位置坐标,实现布料模拟的物理模拟计算,使得服饰达到真实的动态运动效果,而不会以刚性的方式跟随虚拟对象的移动或者运动幅度过大而造成服饰穿透虚拟对象。
其中,着色标记量是指网格顶点的一个标记值,可以是用颜色标识,也可以是用数字标识。着色标记量可用于对网格顶点进行分类,对网格顶点标记着色标记量的过程可以看作是对网格顶点的分类过程。
具体地,根据物理网格的布料约束确定各个网格顶点的着色标记量,具体可以是根据物理网格的布料约束,将具有同一布料约束的网格顶点标记为同一着色标记量。比如,以着色标记量为颜色标识为例,当布料模型的物理网格中的部分网格顶点间受同一布料约束的控制,则对这部分网格顶点标记同一种颜色标识,例如,当布料网格的物理网格中,一部分顶点网格都受弹性约束的限制,此时,对这部分的网格顶点都标记为红色。
步骤S206,根据网格顶点的着色标记量将物理网格分割为多个子物理网格。
其中,子物理网格是布料模型的物理网格的一部分;在获取到各个网格顶点的着色标记量后,根据各个网格顶点的着色标记量对物理网格进行分割,以获取多个子物理网格。
具体地,根据网格顶点的着色标记量将物理网格分割为多个子物理网格,具体可以是将着色标记量相同的网格顶点划分为同一个子物理网格;如上,根据物理网格的布料约束,将具有同一布料约束的网格顶点标记为同一着色标记量着色标记量后,将同一着色标记量的网格顶点分割为同一个子物理网格,实现在进行物理网格分割的过程中,将属于受同一类型的布料约束的网格顶点划分为一个子物理网格,也就是说在每一个子物理网格中,所有的网格顶点受同一布料约束控制,其位置信息是相互联系相互影响的,而不同子物理网格上的网格顶点的位置信息是没有具体联系互不影响。
步骤S208,并行计算各子物理网格上网格顶点的渲染位置坐标。
其中,渲染位置坐标是指各个网格顶点的在屏幕输出时所在的位置坐标。在将物理网格划分为多个子物理网格后,可分别计算各个子物理网格上所有网格顶点的渲染位置坐标,得到物理网格上各个网格顶点的渲染位置坐标,其中,各个子物理网格上网格顶点的渲染位置坐标的计算是并行执行的。由于在同一个子物理网格中的网格顶点是受同一布料约束控制的,而不同子物理网格上的网格顶点的位置信息是不受布料约束的控制的、互不影响的,因此,不同子物理网格上各个网格顶点位置信息的计算可以并行执行的,有效缩减网格模拟计算的时间,缩短布料动画模拟计算的时间。
具体地,可以利用多个独立的处理器并行计算各个子物理网格上网格顶点的渲染位置坐标;可以利用一个多核处理器,并行计算各个子物理网格上网格顶点的渲染位置坐标;还可以建立多个布料模拟计算线程,并行计算各个子物理网格上网格顶点的渲染位置坐标。
步骤S210,根据物理网格上的各个网格顶点的渲染位置坐标,获取渲染网格上网格顶点的位置坐标。
其中,渲染网格是在虚拟对象对应的布料资源渲染过程中进行美术渲染所依据的三角形面片网格,是输出最终布料动画投影到屏幕上时所依据的资源;渲染网格上网格顶点的投影位置坐标是指具体输入至渲染器中的渲染数据。
具体地,物理网格可以通过预设的映射算法控制渲染网格,在获取到各个子物理网格的渲染位置坐标后,可根据物理网格与渲染网格间的映射关系,利用物理网格的渲染位置坐标计算渲染网格上各个网格顶点的位置坐标。
进一步地,渲染网格还包括不参与物理模拟的部分网格顶点,这一部分的网格顶点与物理网格的网格顶点无映射关系,此时,可以对渲染网格中不参与物理模拟的网格顶点进行蒙皮计算,获取其位置坐标。可以理解的是,渲染网格中不参与物理模拟的网格顶点的蒙皮计算可以是独立执行的,可以与前述的计算各子物理网格上网格顶点的渲染位置坐标步骤并行执行。
步骤S212,根据渲染网格上网格顶点的位置坐标,生成虚拟对象的布料动画。
在得到渲染网格上的网格顶点的位置坐标后,可将渲染网格上的网格顶点的位置坐标输入至渲染器中,使得渲染器根据渲染网格的网格信息,在对应的位置坐标渲染生成布料动画。
上述布料动画的生成方法,在获取到虚拟对象的布料模型的物理网格后,根据物理网格的布料约束确定各个网格顶点的着色标记量,然后根据网格顶点的着色标记量将物理网格分割为多个子物理网格,进而并行计算各子物理网格上网格顶点的渲染位置坐标,得到物理网格上各个网格顶点的渲染位置坐标,最后根据物理网格上的各个网格顶点的渲染位置坐标,获取渲染网格上网格顶点的位置坐标,并根据渲染网格上网格顶点的位置坐标生成虚拟对象的布料动画,本方法实现将物理网格分割为多个子物理网格,实现将耗时长、运算量大的物理网格上网格顶点的位置信息计算任务,分割为多个可并行执行的子物理网格上网格顶点的位置信息计算任务,大大缩短计算时间,能够广泛应用在动画角色、游戏角色的服饰衣物等柔性材质的表现上,而且,即使部署在处理器算力不足的移动设备上也能获得较为真实连续的布料动画效果。
在一个实施例中,如图4所示,根据物理网格的布料约束确定各个网格顶点的着色标记量的步骤,包括:
步骤S402:根据布料约束确定物理网格上不同网格顶点间的连通性。
其中,布料约束是指对布料模型的物理网格上网格顶点在位置移动距离、移动速度等方面的限制,布料约束包括受约束的网格顶点集合以及约束条件;其中,布料约束对应的网格顶点集合中各个网格顶点是相互连通的。
具体地,可以通过遍历各个布料约束的网格顶点集合,以获取物理网格上网格顶点间的连通性。
步骤S404:根据不同网格顶点间的连通性连接各网格顶点,得到无向有环图。
其中,在获取到布料模型的物理网格上不同网格顶点间的连通性后,将各个网格顶点确定为无向有环图中的节点,并根据不同网格顶点间的连通性,在两两连通的网格顶点对应的节点之间加上连线,以获取无向有环图,得到物理网格上网格顶点间的无向有环图。应该理解的是,任意两个连线的网格顶点间的连线无具体方向指向的。
步骤S406:识别无向有环图中的连通子图,对属于同一连通子图上的第一网格顶点标记相同的着色标记量,其中,不同的连通子图上的第一网格顶点的着色标记量不同。
其中,在得到无向有环图后,识别无向有环图中的连通子图,为连通子图中的各个第一网格顶点都标记同一着色标记量。其中,着色标记量是指网格顶点的一个标记值,可以是用颜色标识,也可以是用数字标识。
具体地,可利用深度优先搜索算法获取无向有环图中的连通子图,在获得连通子图后,标记连通子图中的各个第一网格顶点为同样的着色标记量,直至每个连通子图中的第一网格顶点都被标记为唯一的着色标记量。其中,不同的连通子图上的第一网格顶点的着色标记量不同,以此区分参与到不同布料约束的第一网格顶点。
可以理解的是,在不同连通子图上的第一网格顶点都是受到不同布料约束的网格顶点,即这些第一网格顶点都是参与物理运动的网格顶点,当虚拟对象进行运动时,运动动量会传递到第一网格顶点上,第一网格顶点需要进行物理模拟计算以更新其位置信息的。
例如,以着色标记为数字标识为例,在获得无向有环图后,通过深度优先算法识别无向有环图中的连通子图,并对识别到的连通子图中的网格顶点标记为数值为“1”的着色标记量;继续利用深度优先算法识别无向有环图中连通子图,并对第二次识别到的连通子图中的网格顶点标记为数值为“2”的着色标记量,如此类推,直至无向有环图中所有的连通子图上的网格顶点都标记有着色标记量。
以电子游戏场景为例,如图5a所示,图5a为电子游戏场景中的一个虚拟对象的布料模型的物理网格的示意图,在获得游戏人物角色(虚拟对象)上布料模型的物理网格后,获取布料模型的物理网格的布料约束,通过遍历各个布料约束的网格顶点集合,以获取物理网格上网格顶点间的连通性,如图5b所示,图5b为该虚拟对象的布料模型的物理网格的布料约束示意图,其中,图5b中被粗线条连接的网格顶点具有连通性。在得到物理网格上网格顶点间的连通性后,根据不同网格顶点间的连通性,在两两连通的网格顶点对应的节点之间加上连线,以获取无向有环图,得到物理网格上网格顶点间的无向有环图,然后,利用深度优先搜索算法获取无向有环图中的连通子图,在获得连通子图后,标记连通子图中的各个网格顶点为同样的着色标记量,直至每个连通子图中的网格顶点都被标记为唯一的着色标记量。
进一步地,在一个实施例中,对属于同一连通子图上的第一网格顶点标记相同的着色标记量的步骤之后,还包括:获取物理网格中未标记着色标记量的第二网格顶点,对第二网格顶点标记相同的着色标记量,其中,第二网格顶点的着色标记量与第一网格顶点的着色标记量不同。
其中,物理网格中未标记着色标记量的第二网格顶点,是指物理网格中未参与到任何布料约束中的网格顶点。
具体地,在对布料模型的物理网格中的网格顶点的标记着色标记量的过程中,是根据布料模型的物理网格中网格顶点间布料约束进行标记的,而对于布料模型的物理网格中未参与到任何布料约束的第二网格顶点,将第二网格顶点单独标记为一个着色标记量,其中,第二网格顶点的着色标记量与任意一个第一网格顶点的着色标记量都是不同的,以此区分参与到布料约束的第一网格顶点以及未参与到布料约束的网格顶点。
在一个实施例中,根据网格顶点的着色标记量将物理网格分割为多个子物理网格的步骤,包括:将着色标记量相同的网格顶点划分为同一子物理网格,得到多个第一子物理网格以及第二子物理网格;其中,第一子物理网格包括着色标记量相同的第一网格顶点,第二子物理网格包括着色标记量相同的第二网格顶点;
并行计算各子物理网格上网格顶点的渲染位置坐标的步骤,包括:利用多个处理器并行计算第一子物理网格上第一网格顶点的渲染位置坐标以及第二子物理网格上的第二网格顶点的渲染位置坐标。
其中,对布料模型的物理网格上各个网格顶点进行着色标记量的标记后,获得参与到不同布料约束的第一网格顶点以及未参与到布料约束的第二网格顶点,而根据网格顶点的着色标记量将物理网格分割为多个子物理网格的步骤,具体可以是将着色标记量相同的第一网格顶点划分为一个第一子物理网格,将着色标记量相同的第二网格顶点划分为一个第二子物理网格。在一个实施例中,第一子物理网格的数量是多个的,而第二子物理网格的数量为一个。
在对物理网格划分为第一子物理网格以及第二子物理网格后,对第一子物理网格上第一网格顶点的渲染位置坐标以及对第二子物理网格上的第二网格顶点的渲染位置坐标进行并行计算,其中,第一网格点的渲染位置坐标的,实现将耗时长、运算量大的物理网格上网格顶点的位置信息计算任务,分割为多个可并行执行的子物理网格上网格顶点的位置信息计算任务,大大缩短计算时间。
在一个实施例中,如图6所示,利用多个处理器并行计算第一子物理网格上第一网格顶点的渲染位置坐标以及对第二子物理网格上的第二网格顶点的渲染位置坐标的步骤,包括:
步骤S602,对第一子物理网格中的第一网格顶点进行物理模拟计算,得到第一网格顶点的渲染位置坐标;
步骤S604,对第二子物理网格中的第二网格顶点进行蒙皮计算,得到第二网格顶点的渲染位置坐标;
其中,物理模拟计算以及蒙皮计算是在多个处理器上并行执行的。
其中,第一网格顶点是受到不同布料约束的网格顶点,即这些第一网格顶点都是参与物理运动的网格顶点,当虚拟对象进行运动时,运动动量会传递到第一网格顶点上,第一网格顶点是由物理驱动的,需要通过物理模拟计算以获取网格顶点的位置信息。而第二网格顶点是不受布料约束的网格顶点,即这些第二网格顶点是不参与物理运动的网格顶点,当虚拟对象进行运动时,第二网格顶点是由虚拟对象的骨骼驱动的,通过蒙皮计算即可获取网格顶点的位置信息。
具体地,在将着色标记量相同的第一网格顶点划分为一个第一子物理网格,以及将着色标记量相同的第二网格顶点划分为一个第二子物理网格,得到多个第一子物理网格以及第二子物理网格后,对各个第一子物理网格进行物理模拟计算,以获取各个第一子物理网格上的第一网格顶点的位置坐标,并对第二子物理网格进行蒙皮计算,以获取第二子物理网格上第二网格顶点的位置坐标。其中,不同第一子物理网格的物理模拟计算与第二子物理网格的蒙皮计算可以是多个独立的处理器上并行执行。
在一个实施例中,如图7所示,利用多个处理器并行计算第一子物理网格上第一网格顶点的渲染位置坐标的步骤,包括:
步骤S702,获取虚拟对象的动作幅度。
其中,虚拟对象的运动幅度是指虚拟对象的动作所产生的幅度信息,具体可以是根据虚拟对象的动作信息的运动状态、运动速度进行测定的。
步骤S704,根据虚拟对象的动作幅度确定第一子物理网格的渲染状态,当渲染状态为纯物理状态,执行步骤S706,当渲染状态为纯动画状态,执行步骤S708。
步骤S706,并行对第一子物理网格中的第一网格顶点进行物理模拟计算,得到第一网格顶点的渲染位置坐标;
步骤S708,并行对第一子物理网格中的第一网格顶点进行蒙皮计算,得到第一网格顶点的渲染位置坐标。
其中,渲染状态是指在对各个第一子物理网格进行布料模拟计算过程中,第一子物理网格的渲染位置坐标的计算方式。
具体地,可预先生成虚拟对象的运动控制表,其中,运动控制表中包括虚拟对象的运动幅度与网格渲染状态的映射关系。例如,当虚拟对象的动作幅度为大幅度动作,则将第一子物理网格的渲染状态确定为纯动画状态,此时,对于第一子物理网格上各个网格顶点是由动画驱动的,在对各个第一子物理网格进行布料模拟计算时,对第一子物理网格进行蒙皮计算获取各个网格顶点的渲染位置坐标,避免由于虚拟对象的动作幅度过大而造成布料模拟的物理网格上的网格顶点的位置变化过大,布料动画乱飘而产生穿透虚拟对象的现象;当虚拟对象的动作幅度为和缓的小幅度动作,则将第一子物理网格的渲染状态确定为纯物理状态,此时,对于第一子物理网格上各个网格顶点是由物理驱动的,在对各个第一子物理网格进行布料模拟计算时,对第一子物理网格进行物理模拟计算获取各个网格顶点的渲染位置坐标,提高布料模拟的真实性。针对虚拟对象不同的运动幅度,对第一子物理网格的布料模拟计算进行实施的控制,使得参与物理运动的第一子物理网格在保持较低的运算量的同时,提高布料动画所呈现的效果。
进一步的,在一个实施例中,渲染状态还包括混合状态,此时,对于第一子物理网格上各个网格顶点是由动画以及物理以预设的权重进行混合驱动的,在对各个第一子物理网格进行布料模拟计算时,对第一子物理网格进行蒙皮计算获取各个网格顶点的第一渲染位置坐标,并对第一子物理网格进行物理模拟计算获取各个网格顶点的第二渲染位置坐标,然后根据动画驱动的权重以及物理驱动的权重,对第一渲染位置坐标以及第二渲染位置坐标进行加权获取目标渲染位置坐标。
以电子游戏场景为例,对本实施例进行进一步的说明,其中,可预先设置虚拟对象的运动控制表,运动控制表如下所示:
虚拟对象的运动幅度 | 布料运动自由度 | 渲染状态 |
和缓的动作(如:走路) | 平移+旋转 | 纯物理 |
稳定的激烈动作(如:跑步) | 仅旋转 | 部分物理+部分动画 |
大幅动作(如:轻功起跳) | 无自由度 | 纯动画 |
其中,运动控制表中包括虚拟对象的运动幅度与网格渲染状态的映射关系,比如,对于动作幅度较为稳定的激烈动作,例如跑步动作,此时对于第一子物理网格上各个网格顶点控制为由动画以及物理以预设的权重进行混合驱动的;对于动作幅度为幅度较大的动作,例如轻功起跳动作,此时对于第一子物理网格上各个网格顶点控制为由动画进行驱动;对于动作幅度为幅度较小的和缓动作,例如走路动作,此时对于第一子物理网格上各个网格顶点控制为由物理进行驱动。通过对第一子物理网格的布料模拟计算进行改变,通过将参与物理运动的第一子物理网格控制改变为不参与物理运动,来达到控制布料动画模拟的目标。
进一步的,对不同动作幅度对应提供不同的自由度限制,如运动控制表格所示,对于动作幅度为幅度较小的和缓动作,例如走路动作,此时对于第一子物理网格上各个网格顶点的运动自由度不进行限制,即提供水平方向的位移动量,也提供垂直方向的旋转动量;对于动作幅度较为稳定的激烈动作,例如跑步动作,此时对于第一子物理网格上各个网格顶点关闭水平方向的位移动量对布料物理模拟的影响;对于动作幅度为幅度较大的动作,例如轻功起跳动作,此时对于第一子物理网格上各个网格顶点不提供任何方向上的动量。
在一个实施例中,如图8所示,根据网格顶点的着色标记量将物理网格分割为多个子物理网格,并行计算各子物理网格上网格顶点的渲染位置坐标的步骤,包括:
步骤S802,根据布料约束确定物理网格上不同网格顶点间的连通性;
步骤S804,根据不同网格顶点间的连通性连接各网格顶点,得到无向有环图;
步骤S806,识别无向有环图中的连通子图,对属于同一连通子图上的第一网格顶点标记相同的着色标记量,其中,不同的连通子图上的第一网格顶点的着色标记量不同;
步骤S808,获取物理网格中未标记着色标记量的第二网格顶点,对第二网格顶点标记相同的着色标记量,其中,第二网格顶点的着色标记量与第一网格顶点的着色标记量不同;
步骤S810,将着色标记量相同的网格顶点划分为同一子物理网格,得到多个第一子物理网格以及第二子物理网格;其中,第一子物理网格包括着色标记量相同的第一网格顶点,第二子物理网格包括着色标记量相同的第二网格顶点;
步骤S812,获取虚拟对象的动作幅度;根据虚拟对象的动作幅度确定物理网格上各网格顶点的渲染状态;
步骤S814,当渲染状态为纯物理状态,并行对第一子物理网格中的第一网格顶点进行物理模拟计算,得到第一网格顶点的渲染位置坐标;
步骤S816,当渲染状态为纯动画状态,并行对第一子物理网格中的第一网格顶点进行蒙皮计算,得到第一网格顶点的渲染位置坐标。
步骤S818,并行对第二子物理网格中的第二网格顶点进行蒙皮计算,得到第二网格顶点的渲染位置坐标。
本实施例中,通过遍历各个布料约束的网格顶点集合,以获取物理网格上网格顶点间的连通性;在获取到布料模型的物理网格上不同网格顶点间的连通性后,将各个网格顶点确定为无向有环图中的节点,并根据不同网格顶点间的连通性,在两两连通的网格顶点对应的节点之间加上连线,以获取无向有环图,得到物理网格上网格顶点间的无向有环图。可利用深度优先搜索算法获取无向有环图中的连通子图,在获得连通子图后,标记连通子图中的各个第一网格顶点为同样的着色标记量,直至每个连通子图中的第一网格顶点都被标记为唯一的着色标记量。而对于布料模型的物理网格中未参与到任何布料约束的第二网格顶点,将第二网格顶点单独标记为一个着色标记量,其中,第二网格顶点的着色标记量与任意一个第一网格顶点的着色标记量都是不同的,
获得参与到不同布料约束的第一网格顶点以及未参与到布料约束的第二网格顶点,将着色标记量相同的第一网格顶点划分为一个第一子物理网格,将着色标记量相同的第二网格顶点划分为一个第二子物理网格。对第一子物理网格上第一网格顶点的渲染位置坐标以及对第二子物理网格上的第二网格顶点的渲染位置坐标进行并行计算。
在一个实施例中,如图9所示,根据物理网格上的各个网格顶点的渲染位置坐标,获取渲染网格上网格顶点的位置坐标的步骤,包括:
步骤S902:获取物理网格与渲染网格间的映射关系;
步骤S904:根据映射关系,将物理网格上各网格顶点的渲染位置坐标映射为渲染网格上网格顶点的位置坐标。
其中,布料模型的物理网格是指在虚拟对象对应的布料资源渲染过程中进行物理控制计算的三角面片网格,而渲染网格是在虚拟对象对应的布料资源渲染过程中进行美术渲染所依据的三角形面片网格;其中,渲染网格的精度远高于物理网格,物理网格上的网格顶点和渲染网格上的网格顶点具有对应的映射关系,通过物理网格上某个网格顶点,可控制渲染网格上与该网格顶点具有映射关系的多个网格顶点。
具体地,在获取到各个子物理网格的渲染位置坐标后,获取角网格上的网格顶点和渲染网格上的网格顶点间的映射关系,利用物理网格各个网格顶点的渲染位置坐标,对应计算渲染网格上各个网格顶点的位置坐标。由于渲染网格的精度远高于物理网格,因而在精度较低的物理网格上进行布料模拟计算,获取物理网格的渲染位置坐标,后续通过物理网格上各个网格顶点与渲染网格上各个网格顶点间的映射关系,映射获取渲染网格上各个网格顶点的位置坐标,并依据高精度的渲染网格渲染生成布料动画,实现在保持高精度、真实的布料动画效果的同时,显著缩短布料模拟计算的开销,降低物理模拟运算时间。
在一个实施例中,布料动画的生成方法,包括:
1、获取虚拟对象的布料模型的物理网格。
2、根据物理网格的布料约束确定各个网格顶点的着色标记量。
2-1、根据布料约束确定物理网格上不同网格顶点间的连通性。
2-2、根据不同网格顶点间的连通性连接各网格顶点,得到无向有环图。
2-3、识别无向有环图中的连通子图,对属于同一连通子图上的第一网格顶点标记相同的着色标记量,其中,不同的连通子图上的第一网格顶点的着色标记量不同。
2-4、获取物理网格中标记着色标记量的第二网格顶点,对第二网格顶点标记相同的着色标记量,其中,第二网格顶点的着色标记量与第一网格顶点的着色标记量不同。
3、根据网格顶点的着色标记量将物理网格分割为多个子物理网格。
3-1、将着色标记量相同的网格顶点划分为同一子物理网格,得到多个第一子物理网格以及第二子物理网格;其中,第一子物理网格包括着色标记量相同的第一网格顶点,第二子物理网格包括着色标记量相同的第二网格顶点。
4、并行计算各子物理网格上网格顶点的渲染位置坐标。
4-1、利用处理器计算第二子物理网格上的第二网格顶点的渲染位置坐标。
4-1-1、对第二子物理网格中的第二网格顶点进行蒙皮计算,得到第二网格顶点的渲染位置坐标。
4-2、利用处理器计算第一子物理网格上所述第一网格顶点的渲染位置坐标。
4-2-1、获取虚拟对象的角色的动作幅度。
4-2-2、根据虚拟对象的动作幅度确定第一子物理网格的渲染状态。
4-2-3a、当渲染状态为纯物理状态,并行对所述第一子物理网格中的第一网格顶点进行物理模拟计算,得到所述第一网格顶点的渲染位置坐标。
4-2-3b、当渲染状态为纯动画状态,并行对所述第一子物理网格中的第一网格顶点进行蒙皮计算,得到所述第一网格顶点的渲染位置坐标。
其中,步骤4-1以及步骤4-2是在多个处理器上并行执行的。
5、根据物理网格上的各个网格顶点的渲染位置坐标,获取渲染网格上网格顶点的位置坐标;
5-1、获取物理网格与渲染网格间的映射关系;
5-2、根据映射关系,将物理网格上各网格顶点的渲染位置坐标映射为渲染网格上网格顶点的位置坐标。
6、根据渲染网格上网格顶点的位置坐标,生成虚拟对象的布料动画。
结合图10,对上述布料动画的生成方法进行进一步说明,图10中,每个椭圆表示一个计算任务,连线表示依赖关系,没有依赖关系的计算任务能够在多个处理器上或一个多核处理器上同时执行。具体的,在将物理网格划分为多个子第一子物理网格以及第二子物理网格后,对所述第二子物理网格中的第二网格顶点进行蒙皮计算,得到所述第二网格顶点的渲染位置坐标,分别对各个第一子物理网格中的第一网格顶点进行物理模拟计算,得到第一网格顶点的渲染位置坐标;其中,如图10所示,第二子物理网格的蒙皮计算可以作为一个单独的计算任务,任意一个第一子物理网格的物理模拟计算作为一个单独的计算任务,第二子物理网格的蒙皮计算、任意一个第一子物理网格的物理模拟计算之间是没有依赖关系的,可以在多个处理器上或一个多核处理器上同时执行,以节省布料动画模拟计算时间。
在得到第一子物理网格以及第二子物理网格上各个网格顶点的渲染位置坐标后,根据各个网格顶点的渲染位置坐标获取渲染网格上参与物理模拟的各个网格顶点的位置坐标;在得到渲染网格上各个网格顶点的位置坐标后,将渲染网格上各个网格顶点的位置坐标作为最终的渲染数据输入至渲染器中,渲染布料动画。
进一步地,渲染网格还包括不参与物理模拟的部分网格顶点,这一部分的网格顶点与物理网格的网格顶点无映射关系,此时,可以对渲染网格中不参与物理模拟的网格顶点进行蒙皮计算,获取其位置坐标。可以理解的是,渲染网格中不参与物理模拟的网格顶点的蒙皮计算可以是独立执行的,可以与其他任意一个椭圆所表示的计算任务并行执行的。
应该理解的是,虽然上述流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,上述流程图中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
在一个实施例中,如图11所示,提供了一种布料动画的生成装置1100,该装置包括:布料模型获取模块1102、网格顶点着色模块1104、物理网格获取模块1106、位置坐标转换模块1108、渲染网格获取模块1110以及布料动画生成模块1112,其中:
布料模型获取模块,用于获取虚拟对象的布料模型的物理网格;
网格顶点着色模块,用于根据物理网格的布料约束确定各个网格顶点的着色标记量;
物理网格获取模块,用于根据网格顶点的着色标记量将物理网格分割为多个子物理网格;
位置坐标转换模块,用于并行计算各子物理网格上网格顶点的渲染位置坐标;
渲染网格获取模块,用于根据物理网格上的各个网格顶点的渲染位置坐标,获取渲染网格上网格顶点的位置坐标;
布料动画生成模块,用于根据渲染网格上网格顶点的位置坐标,生成虚拟对象的布料动画。
在一个实施例中,网格顶点着色模块包括:
约束确定模块,用于根据布料约束确定物理网格上不同网格顶点间的连通性;
顶点连接模块,用于根据不同网格顶点间的连通性连接各网格顶点,得到无向有环图;
第一顶点着色模块,用于识别无向有环图中的连通子图,对属于同一连通子图上的第一网格顶点标记相同的着色标记量,其中,不同的连通子图上的第一网格顶点的着色标记量不同。
在一个实施例中,网格顶点着色模块,还包括:
第二顶点着色模块,用于获取物理网格中未标记着色标记量的第二网格顶点,对第二网格顶点标记相同的着色标记量,其中,第二网格顶点的着色标记量与第一网格顶点的着色标记量不同。
在一个实施例中,物理网格获取模块,用于:将着色标记量相同的网格顶点划分为同一子物理网格,得到多个第一子物理网格以及第二子物理网格;其中,第一子物理网格包括着色标记量相同的第一网格顶点,第二子物理网格包括着色标记量相同的第二网格顶点;
位置坐标转换模块,用于:利用多个处理器并行计算第一子物理网格上第一网格顶点的渲染位置坐标以及第二子物理网格上的第二网格顶点的渲染位置坐标。
在一个实施例中,位置坐标转换模块,包括:
物理模拟计算模块,用于对第一子物理网格中的第一网格顶点进行物理模拟计算,得到第一网格顶点的渲染位置坐标;
蒙皮计算模块,用于对第二子物理网格中的第二网格顶点进行蒙皮计算,得到第二网格顶点的渲染位置坐标;
其中,物理模拟计算以及蒙皮计算是在多个处理器上并行执行的。
在一个实施例中,渲染网格获取模块,用于:获取物理网格与渲染网格间的映射关系;根据映射关系,将物理网格上各网格顶点的渲染位置坐标映射为渲染网格上网格顶点的位置坐标。
在一个实施例中,布料动画的生成装置还包括动作幅度确定模块,用于:获取虚拟对象的动作幅度;根据虚拟对象的动作幅度确定第一子物理网格的渲染状态;
位置坐标转换模块,用于在渲染状态为纯物理状态时,并行对第一子物理网格中的第一网格顶点进行物理模拟计算,得到第一网格顶点的渲染位置坐标;在渲染状态为纯动画状态时,并行对第一子物理网格中的第一网格顶点进行蒙皮计算,得到第一网格顶点的渲染位置坐标。
图12示出了一个实施例中计算机设备的内部结构图。该计算机设备具体可以是图1中的终端102。如图12所示,该计算机设备包括该计算机设备包括通过系统总线连接的处理器、存储器、网络接口、输入装置和显示屏。其中,存储器包括非易失性存储介质和内存储器。该计算机设备的非易失性存储介质存储有操作系统,还可存储有计算机程序,该计算机程序被处理器执行时,可使得处理器实现布料动画的生成方法。该内存储器中也可储存有计算机程序,该计算机程序被处理器执行时,可使得处理器执行布料动画的生成方法。计算机设备的显示屏可以是液晶显示屏或者电子墨水显示屏,计算机设备的输入装置可以是显示屏上覆盖的触摸层,也可以是计算机设备外壳上设置的按键、轨迹球或触控板,还可以是外接的键盘、触控板或鼠标等。
本领域技术人员可以理解,图12中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
在一个实施例中,本申请提供的布料动画的生成装置可以实现为一种计算机程序的形式,计算机程序可在如图12所示的计算机设备上运行。计算机设备的存储器中可存储组成该布料动画的生成装置的各个程序模块,比如,图11所示的布料模型获取模块1102、网格顶点着色模块1104、物理网格获取模块1106、位置坐标转换模块1108、渲染网格获取模块1110以及布料动画生成模块1112。各个程序模块构成的计算机程序使得处理器执行本说明书中描述的本申请各个实施例的布料动画的生成方法中的步骤。
例如,图12所示的计算机设备可以通过如图11所示的布料动画的生成装置中的布料模型获取模块1102执行步骤S202。计算机设备可通过网格顶点着色模块1104执行步骤S204。计算机设备可通过物理网格获取模块1106执行步骤S206。计算机设备可通过位置坐标转换模块1108执行步骤S208。计算机设备可通过渲染网格获取模块1110执行步骤S210。计算机设备可通过布料动画生成模块1112执行步骤S212。
在一个实施例中,提供了一种计算机设备,包括存储器和处理器,存储器存储有计算机程序,计算机程序被处理器执行时,使得处理器执行上述布料动画的生成方法的步骤。此处布料动画的生成方法的步骤可以是上述各个实施例的布料动画的生成方法中的步骤。
在一个实施例中,提供了一种计算机可读存储介质,存储有计算机程序,计算机程序被处理器执行时,使得处理器执行上述布料动画的生成方法的步骤。此处布料动画的生成方法的步骤可以是上述各个实施例布料动画的生成方法中的步骤。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一非易失性计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器(RAM)或者外部高速缓冲存储器。作为说明而非局限,RAM以多种形式可得,诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双数据率SDRAM(DDRSDRAM)、增强型SDRAM(ESDRAM)、同步链路(Synchlink)DRAM(SLDRAM)、存储器总线(Rambus)直接RAM(RDRAM)、直接存储器总线动态RAM(DRDRAM)、以及存储器总线动态RAM(RDRAM)等。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本申请专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。
Claims (16)
1.一种布料动画的生成方法,包括:
获取虚拟对象的布料模型的物理网格;
根据所述物理网格的布料约束确定各个网格顶点的着色标记量;
根据所述网格顶点的着色标记量将所述物理网格分割为多个子物理网格;
并行计算各所述子物理网格上网格顶点的渲染位置坐标;
根据所述物理网格上的各个网格顶点的渲染位置坐标,获取渲染网格上网格顶点的位置坐标;
根据所述渲染网格上网格顶点的位置坐标,生成所述虚拟对象的布料动画。
2.根据权利要求1所述的方法,其特征在于,所述根据所述物理网格的布料约束确定各个网格顶点的着色标记量的步骤,包括:
根据所述布料约束确定所述物理网格上不同网格顶点间的连通性;
根据不同网格顶点间的连通性连接各所述网格顶点,得到无向有环图;
识别所述无向有环图中的连通子图,对属于同一连通子图上的第一网格顶点标记相同的着色标记量,其中,不同的连通子图上的第一网格顶点的着色标记量不同。
3.根据权利要求2所述的方法,其特征在于,所述对属于同一连通子图上的第一网格顶点标记相同的着色标记量的步骤之后,还包括:
获取所述物理网格中未标记着色标记量的第二网格顶点,对所述第二网格顶点标记相同的着色标记量,其中,所述第二网格顶点的着色标记量与第一网格顶点的着色标记量不同。
4.根据权利要求3所述的方法,其特征在于,所述根据所述网格顶点的着色标记量将所述物理网格分割为多个子物理网格的步骤,包括:
将着色标记量相同的网格顶点划分为同一子物理网格,得到第二子物理网格以及多个第一子物理网格;其中,所述第一子物理网格包括着色标记量相同的第一网格顶点,所述第二子物理网格包括着色标记量相同的第二网格顶点;
所述并行计算各所述子物理网格上网格顶点的渲染位置坐标的步骤,包括:
利用多个处理器并行计算所述第一子物理网格上所述第一网格顶点的渲染位置坐标以及所述第二子物理网格上的第二网格顶点的渲染位置坐标。
5.根据权利要求4所述的方法,其特征在于,所述利用多个处理器并行计算所述第一子物理网格上所述第一网格顶点的渲染位置坐标以及所述第二子物理网格上的第二网格顶点的渲染位置坐标的步骤,包括:
对所述第一子物理网格中的第一网格顶点进行物理模拟计算,得到所述第一网格顶点的渲染位置坐标;
对所述第二子物理网格中的第二网格顶点进行蒙皮计算,得到所述第二网格顶点的渲染位置坐标;
其中,物理模拟计算以及蒙皮计算是在多个处理器上并行执行的。
6.根据权利要求4所述的方法,其特征在于,所述方法还包括:
获取所述虚拟对象的动作幅度;
根据所述虚拟对象的动作幅度确定所述第一子物理网格的渲染状态;
所述利用多个处理器并行计算所述第一子物理网格上所述第一网格顶点的渲染位置坐标的步骤,包括:
当所述渲染状态为纯物理状态,并行对所述第一子物理网格中的第一网格顶点进行物理模拟计算,得到所述第一网格顶点的渲染位置坐标;
当所述渲染状态为纯动画状态,并行对所述第一子物理网格中的第一网格顶点进行蒙皮计算,得到所述第一网格顶点的渲染位置坐标。
7.根据权利要求1所述的方法,其特征在于,根据所述物理网格上的各个网格顶点的渲染位置坐标,获取渲染网格上网格顶点的位置坐标的步骤,包括:
获取所述物理网格与所述渲染网格间的映射关系;
根据所述映射关系,将所述物理网格上各所述网格顶点的渲染位置坐标映射为所述渲染网格上网格顶点的位置坐标。
8.一种布料动画的生成装置,其特征在于,所述装置包括:
布料模型获取模块,用于获取虚拟对象的布料模型的物理网格;
网格顶点着色模块,用于根据所述物理网格的布料约束确定各个网格顶点的着色标记量;
物理网格获取模块,用于根据所述网格顶点的着色标记量将所述物理网格分割为多个子物理网格;
位置坐标转换模块,用于并行计算各所述子物理网格上网格顶点的渲染位置坐标;
渲染网格获取模块,用于根据所述物理网格上的各个网格顶点的渲染位置坐标,获取渲染网格上网格顶点的位置坐标;
布料动画生成模块,用于根据所述渲染网格上网格顶点的位置坐标,生成所述虚拟对象的布料动画。
9.根据权利要求8所述的装置,其特征在于,所述网格顶点着色模块包括:
约束确定模块,用于根据所述布料约束确定所述物理网格上不同网格顶点间的连通性;
顶点连接模块,用于根据不同网格顶点间的连通性连接各所述网格顶点,得到无向有环图;
第一顶点着色模块,用于识别所述无向有环图中的连通子图,对属于同一连通子图上的第一网格顶点标记相同的着色标记量,其中,不同的连通子图上的第一网格顶点的着色标记量不同。
10.根据权利要求9所述的装置,其特征在于,所述网格顶点着色模块,还包括:
第二顶点着色模块,用于获取所述物理网格中未标记着色标记量的第二网格顶点,对所述第二网格顶点标记相同的着色标记量,其中,所述第二网格顶点的着色标记量与第一网格顶点的着色标记量不同。
11.根据权利要求10所述的装置,其特征在于,所述物理网格获取模块,用于:将着色标记量相同的网格顶点划分为同一子物理网格,得到第二子物理网格以及多个第一子物理网格;其中,所述第一子物理网格包括着色标记量相同的第一网格顶点,所述第二子物理网格包括着色标记量相同的第二网格顶点;
所述位置坐标转换模块,用于:利用多个处理器并行计算所述第一子物理网格上所述第一网格顶点的渲染位置坐标以及所述第二子物理网格上的第二网格顶点的渲染位置坐标。
12.根据权利要求11所述的装置,其特征在于,所述位置坐标转换模块,包括:
物理模拟计算模块,用于对所述第一子物理网格中的第一网格顶点进行物理模拟计算,得到所述第一网格顶点的渲染位置坐标;
蒙皮计算模块,用于对所述第二子物理网格中的第二网格顶点进行蒙皮计算,得到所述第二网格顶点的渲染位置坐标;
其中,物理模拟计算以及蒙皮计算是在多个处理器上并行执行的。
13.根据权利要求11所述的装置,其特征在于,
所述装置还包括:动作幅度确定模块,用于:获取所述虚拟对象的动作幅度;根据所述虚拟对象的动作幅度确定所述第一子物理网格的渲染状态;
所述位置坐标转换模块,用于当所述渲染状态为纯物理状态,并行对所述第一子物理网格中的第一网格顶点进行物理模拟计算,得到所述第一网格顶点的渲染位置坐标;当所述渲染状态为纯动画状态,并行对所述第一子物理网格中的第一网格顶点进行蒙皮计算,得到所述第一网格顶点的渲染位置坐标。
14.根据权利要求8所述的装置,其特征在于,所述渲染网格获取模块,用于:获取所述物理网格与所述渲染网格间的映射关系;根据所述映射关系,将所述物理网格上各所述网格顶点的渲染位置坐标映射为所述渲染网格上网格顶点的位置坐标。
15.一种计算机可读存储介质,存储有计算机程序,所述计算机程序被处理器执行时,使得所述处理器执行如权利要求1至7中任一项所述方法的步骤。
16.一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述计算机程序被所述处理器执行时,使得所述处理器执行如权利要求1至7中任一项所述方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911268404.8A CN111028320B (zh) | 2019-12-11 | 2019-12-11 | 布料动画的生成方法、装置、计算机可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911268404.8A CN111028320B (zh) | 2019-12-11 | 2019-12-11 | 布料动画的生成方法、装置、计算机可读存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111028320A CN111028320A (zh) | 2020-04-17 |
CN111028320B true CN111028320B (zh) | 2021-12-03 |
Family
ID=70205907
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911268404.8A Active CN111028320B (zh) | 2019-12-11 | 2019-12-11 | 布料动画的生成方法、装置、计算机可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111028320B (zh) |
Families Citing this family (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111773719A (zh) * | 2020-06-23 | 2020-10-16 | 完美世界(北京)软件科技发展有限公司 | 虚拟对象的渲染方法和装置、存储介质、电子装置 |
CN111773690B (zh) * | 2020-06-30 | 2021-11-09 | 完美世界(北京)软件科技发展有限公司 | 任务的处理方法和装置、存储介质、电子装置 |
CN111739135B (zh) * | 2020-07-30 | 2023-03-21 | 腾讯科技(深圳)有限公司 | 虚拟角色的模型处理方法、装置及可读存储介质 |
CN111773707A (zh) * | 2020-08-11 | 2020-10-16 | 网易(杭州)网络有限公司 | 一种渲染处理的方法及装置、电子设备、存储介质 |
CN112581601B (zh) * | 2020-12-09 | 2023-11-03 | 北京维盛视通科技有限公司 | 服饰纽扣的动态模拟方法、装置,电子设备及存储介质 |
US11321916B1 (en) * | 2020-12-30 | 2022-05-03 | Beijing Wodong Tianjun Information Technology Co., Ltd. | System and method for virtual fitting |
CN113554760B (zh) * | 2021-08-05 | 2024-02-13 | 网易(杭州)网络有限公司 | 一种换装方法、装置、计算机设备和存储介质 |
CN114170354B (zh) * | 2021-11-03 | 2022-08-26 | 完美世界(北京)软件科技发展有限公司 | 虚拟角色服饰制作方法、装置、设备、程序和可读介质 |
CN114053696B (zh) * | 2021-11-15 | 2023-01-10 | 完美世界(北京)软件科技发展有限公司 | 图像渲染处理方法、装置及电子设备 |
CN114187397B (zh) * | 2021-12-06 | 2023-03-21 | 完美世界(北京)软件科技发展有限公司 | 虚拟毛发渲染方法、装置、介质、电子设备及程序产品 |
CN116168131B (zh) * | 2022-12-09 | 2023-11-21 | 北京百度网讯科技有限公司 | 布料的渲染处理方法、装置、电子设备及存储介质 |
CN116543093B (zh) * | 2023-07-04 | 2024-04-02 | 腾讯科技(深圳)有限公司 | 柔体对象渲染方法、装置、计算机设备和存储介质 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7463265B2 (en) * | 2005-08-02 | 2008-12-09 | Sony Computer Entertainment America Inc. | Constraint schemes for computer simulation of cloth and other materials |
TWI355619B (en) * | 2007-12-04 | 2012-01-01 | Inst Information Industry | System, method and recording medium for multi-leve |
CN102324108B (zh) * | 2011-09-30 | 2013-08-28 | 北京航空航天大学 | 一种面向无拉伸布料仿真的质点-弹簧模型约束方法 |
EP2808811B1 (en) * | 2013-05-30 | 2019-09-18 | Dassault Systèmes | Simulation of an assembly of fabric pieces |
CN107424202A (zh) * | 2017-05-16 | 2017-12-01 | 山东师范大学 | 基于pbrt的大规模三维群体表演动画并行渲染方法 |
CN107886562B (zh) * | 2017-12-05 | 2021-08-31 | 北京像素软件科技股份有限公司 | 水面渲染方法、装置及可读存储介质 |
CN110544291B (zh) * | 2019-09-11 | 2023-05-09 | 珠海金山数字网络科技有限公司 | 一种图像渲染方法及装置 |
-
2019
- 2019-12-11 CN CN201911268404.8A patent/CN111028320B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN111028320A (zh) | 2020-04-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111028320B (zh) | 布料动画的生成方法、装置、计算机可读存储介质 | |
CN105787865B (zh) | 基于游戏引擎和gpu并行处理的分形图生成与渲染方法 | |
CN110827383B (zh) | 三维模型的姿态模拟方法、装置、存储介质和电子设备 | |
CN105354879A (zh) | 基于质点弹簧结构的通用服装三维模型仿真方法及系统 | |
US10062197B2 (en) | Animating a virtual object in a virtual world | |
KR100914869B1 (ko) | 실시간 직물 시뮬레이션 시스템 및 방법 | |
US20170221251A1 (en) | Animating a virtual object in a virtual world | |
CN103310478B (zh) | 一种多样化虚拟人群生成的方法 | |
Kavan et al. | Fast collision detection for skeletally deformable models | |
CN111773688B (zh) | 柔性对象的渲染方法和装置、存储介质、电子装置 | |
CN111773719A (zh) | 虚拟对象的渲染方法和装置、存储介质、电子装置 | |
US10410393B2 (en) | Animating a virtual object in a virtual world | |
US20180144531A1 (en) | Animating a virtual object in a virtual world | |
CN115170701A (zh) | 布料处理方法、装置、电子设备及可读存储介质 | |
Faryabi | Data-oriented Design approach for processor intensive games | |
CN114882153A (zh) | 一种动画生成的方法及装置 | |
Carrascosa et al. | Consensus-Based Learning for MAS: Definition, Implementation and Integration in IVEs | |
CN113313796A (zh) | 场景生成方法、装置、计算机设备和存储介质 | |
CN107609631B (zh) | Unity中实现群集AI的方法、存储介质 | |
Bai et al. | Automated shape composition based on cell biology and distributed genetic programming | |
Aguilera et al. | Out-of-core real-time haptic interaction on very large models | |
Kang et al. | Real-time cloud modelling and rendering approach based on L-system for flight simulation | |
CN117392358B (zh) | 碰撞检测方法、装置、计算机设备和存储介质 | |
CN116543093B (zh) | 柔体对象渲染方法、装置、计算机设备和存储介质 | |
Zhao et al. | A new K-DOPs collision detection algorithms improved by GA |
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 | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: DE Ref document number: 40022213 Country of ref document: HK |
|
GR01 | Patent grant | ||
GR01 | Patent grant |