CN111773688B - 柔性对象的渲染方法和装置、存储介质、电子装置 - Google Patents

柔性对象的渲染方法和装置、存储介质、电子装置 Download PDF

Info

Publication number
CN111773688B
CN111773688B CN202010621479.6A CN202010621479A CN111773688B CN 111773688 B CN111773688 B CN 111773688B CN 202010621479 A CN202010621479 A CN 202010621479A CN 111773688 B CN111773688 B CN 111773688B
Authority
CN
China
Prior art keywords
vertex
speed
cache
posture information
information
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
Application number
CN202010621479.6A
Other languages
English (en)
Other versions
CN111773688A (zh
Inventor
徐峰
何文峰
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Perfect World Beijing Software Technology Development Co Ltd
Original Assignee
Perfect World Beijing Software Technology Development Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Perfect World Beijing Software Technology Development Co Ltd filed Critical Perfect World Beijing Software Technology Development Co Ltd
Priority to CN202010621479.6A priority Critical patent/CN111773688B/zh
Publication of CN111773688A publication Critical patent/CN111773688A/zh
Application granted granted Critical
Publication of CN111773688B publication Critical patent/CN111773688B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/50Controlling the output signals based on the game progress
    • A63F13/52Controlling the output signals based on the game progress involving aspects of the displayed game scene
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/55Controlling game characters or game objects based on the game progress
    • A63F13/57Simulating properties, behaviour or motion of objects in the game world, e.g. computing tyre load in a car race game
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/544Buffers; Shared memory; Pipes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/20Processor architectures; Processor configuration, e.g. pipelining

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Human Computer Interaction (AREA)
  • Processing Or Creating Images (AREA)

Abstract

本申请公开了一种柔性对象的渲染方法和装置、存储介质、电子装置。其中,该方法包括:将目标模型的多个姿态信息写入图形处理器的第一缓存,目标模型用于表示虚拟场景中的柔性对象,每个姿态信息用于表示目标模型中一个骨骼的骨骼姿态,第一缓存用于保存待处理的信息;调用图形处理器的多个线程对第一缓存中的多个姿态信息进行处理,并将处理得到的多个顶点的顶点位置保存至第二缓存,每个顶点的位置信息是线程对至少一个姿态信息进行处理得到的,多个顶点为目标模型的第一网格的顶点,第二缓存用于保存待渲染的数据;调用图形处理器按照第二缓存保存的顶点位置渲染出柔性对象。本申请解决了相关技术中数据处理效率较低的技术问题。

Description

柔性对象的渲染方法和装置、存储介质、电子装置
技术领域
本申请涉及游戏领域,具体而言,涉及一种柔性对象的渲染方法和装置、存储介质、电子装置。
背景技术
随着时代的发展和移动设备硬件性能的提升,物理引擎被越来越多的移动游戏所使用。物理引擎处理的对象主要可以分为刚体(Rigid Bodies)和柔体(Soft Bodies)两大部分,刚体主要应用在物理碰撞、破碎、布娃娃等系统中,而柔体最为重要的应用代表就是布料系统。
在物理引擎中,通过物理计算来模拟布料效果的系统可以称之为布料系统。实时布料模拟作为一个关键特性,可以广泛应用在角色服装,场景柔体等诸多情景下,既可改善传统骨骼动画表现僵硬、细节粗糙的不足,也能解决顶点动画无法交互、存贮量大的问题,从而大幅提升游戏的真实感体验。虽然名为布料系统,但并不仅仅用于表现角色衣服的布料效果,而且可以应用于毛发、坠饰,甚至人体的某些柔软部位。
在实时布料模拟的过程中,需要对所有顶点依次进行模拟运算,处理过程效率较低。
针对上述的问题,目前尚未提出有效的解决方案。
发明内容
本申请实施例提供了一种柔性对象的渲染方法和装置、存储介质、电子装置,以至少解决相关技术中数据处理效率较低的技术问题。
根据本申请实施例的一个方面,提供了一种柔性对象的渲染方法,包括:将目标模型的多个姿态信息写入图形处理器的第一缓存,其中,目标模型用于表示虚拟场景中的柔性对象,每个姿态信息用于表示目标模型中一个骨骼的骨骼姿态,第一缓存用于保存待处理的信息;调用图形处理器的多个线程对第一缓存中的多个姿态信息进行处理,并将处理得到的多个顶点的顶点位置保存至第二缓存,其中,每个顶点的位置信息是线程对至少一个姿态信息进行处理得到的,多个顶点为目标模型的第一网格的顶点,第二缓存用于保存待渲染的数据;调用图形处理器按照第二缓存保存的顶点位置渲染出柔性对象。
根据本申请实施例的另一方面,还提供了一种柔性对象的渲染装置,包括:保存单元,用于将目标模型的多个姿态信息写入图形处理器的第一缓存,其中,目标模型用于表示虚拟场景中的柔性对象,每个姿态信息用于表示目标模型中一个骨骼的骨骼姿态,第一缓存用于保存待处理的信息;处理单元,用于调用图形处理器的多个线程对第一缓存中的多个姿态信息进行处理,并将处理得到的多个顶点的顶点位置保存至第二缓存,其中,每个顶点的位置信息是线程对至少一个姿态信息进行处理得到的,多个顶点为目标模型的第一网格的顶点,第二缓存用于保存待渲染的数据;渲染单元,用于调用图形处理器按照第二缓存保存的顶点位置渲染出柔性对象。
根据本申请实施例的另一方面,还提供了一种存储介质,该存储介质包括存储的程序,程序运行时执行上述的方法。
根据本申请实施例的另一方面,还提供了一种电子装置,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器通过计算机程序执行上述的方法。
在本申请实施例中,将目标模型的多个姿态信息写入图形处理器的第一缓存,调用所述图形处理器的多个线程对所述第一缓存中的所述多个姿态信息进行处理,并将处理得到的多个顶点的顶点位置保存至第二缓存,调用所述图形处理器按照所述第二缓存保存的顶点位置渲染出所述柔性对象,相较于传统的处理器单线程处理的方式(如利用CPU处理基于Dynamic Bone的顶点动画算法),本方案采用了多线程的方式并行处理数据(如将原先在CPU中处理的Dynamic Bone相关的数据转到GPU中并行处理),利用了图形处理器GPU并行处理性能优异的特点,可以解决相关技术中数据处理效率较低的技术问题,进而达到提高数据处理效率的技术效果。
附图说明
此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
图1是根据本申请实施例的柔性对象的渲染方法的硬件环境的示意图;
图2是根据本申请实施例的一种可选的柔性对象的渲染方法的流程图;
图3是根据本申请实施例的一种可选的柔性对象的渲染示意图;
图4是根据本申请实施例的一种可选的网格的示意图;
图5是根据本申请实施例的一种可选的对象渲染方案的示意图;
图6是根据本申请实施例的一种可选的弹簧质点模型的示意图;
图7是根据本申请实施例的一种可选的柔性对象的渲染示意图;
图8是根据本申请实施例的一种可选的柔性对象的渲染示意图;
图9是根据本申请实施例的一种可选的顶点定位方案的示意图;
图10是根据本申请实施例的一种可选的柔性对象的渲染示意图;
图11是根据本申请实施例的一种可选的网格的示意图;
图12是根据本申请实施例的一种可选的柔性对象的渲染示意图;
图13是根据本申请实施例的一种可选的柔性对象的渲染装置的示意图;以及,
图14是根据本申请实施例的一种终端的结构框图。
具体实施方式
为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分的实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。
需要说明的是,本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
根据本申请实施例的一方面,提供了一种柔性对象的渲染方法的方法实施例。
可选地,在本实施例中,上述柔性对象的渲染方法可以应用于如图1所示的由终端101和服务器103所构成的硬件环境中。如图1所示,服务器103通过网络与终端101进行连接,可用于为终端或终端上安装的客户端提供服务(如游戏服务、应用服务等),可在服务器上或独立于服务器设置数据库105,用于为服务器103提供数据存储服务,上述网络包括但不限于:广域网、城域网或局域网,终端101并不限定于PC、手机、平板电脑等。
本申请实施例的柔性对象的渲染方法可以由终端101来执行,还可以是由服务器103和终端101共同执行。其中,终端101执行本申请实施例的柔性对象的渲染方法也可以是由安装在其上的客户端来执行。图2是根据本申请实施例的一种可选的柔性对象的渲染方法的流程图,如图2所示,该方法可以包括以下步骤:
步骤S202,将目标模型的多个姿态信息写入图形处理器的第一缓存,目标模型用于表示虚拟场景中的柔性对象,每个姿态信息用于表示目标模型中一个骨骼的骨骼姿态,第一缓存用于保存待处理的信息,即该缓存是图形处理器GPU专用的保存待处理信息的缓存。
上述柔性对象为布料模拟的对象,如角色服饰、树叶等场景柔体,角色身上柔软的部分等;该对象的模型具有骨骼系统,该骨骼系统具有多根骨骼,其中每个骨骼存在对应的骨骼姿态(该姿态可以用矩阵表示)。
步骤S204,调用图形处理器的多个线程对第一缓存中的多个姿态信息进行处理,并将处理得到的多个顶点的顶点位置保存至第二缓存,每个顶点的位置信息是线程对至少一个姿态信息进行处理得到的,多个顶点为目标模型的第一网格的顶点,第二缓存用于保存待渲染的数据,即该缓存是图形处理器专用的保存待渲染数据的缓存。
本方案采用骨骼动画(Skeletal Animation),是模型动画的一种(模型动画有2种,顶点动画和骨骼动画),包含了骨骼(Bone)和蒙皮(Skinned Mesh)两部分数据,互相连接的骨骼组成骨架结构,通过改变骨骼的朝向和位置来生成动画,蒙皮是指把Mesh的顶点附着(绑定)在骨骼上,并且每个顶点可以被多个骨骼控制,即顶点受所绑定骨骼的姿态信息的影响。
顶点的蒙皮信息包含了顶点受哪些骨骼影响以及这些骨骼影响该顶点的权重,有了蒙皮信息,只要骨骼正常运动,就可以根据骨骼的姿态信息确定各个顶点的顶点位置,进而蒙皮便会跟着骨骼一起动起来。
步骤S206,调用图形处理器按照第二缓存保存的顶点位置渲染出柔性对象。
通过上述步骤S202至步骤S206,将目标模型的多个姿态信息写入图形处理器的第一缓存,调用图形处理器的多个线程对第一缓存中的多个姿态信息进行处理,并将处理得到的多个顶点的顶点位置保存至第二缓存,调用图形处理器按照第二缓存保存的顶点位置渲染出柔性对象,相较于传统的处理器单线程处理的方式,由于采用了多线程的方式并行处理数据,利用了图形处理器并行处理性能优异的特点,可以解决相关技术中数据处理效率较低的技术问题,进而达到提高数据处理效率的技术效果。
在上述方案中,调用图形处理器的多个线程对第一缓存中的多个姿态信息进行处理包括按照如下步骤1-步骤2进行处理得到每个顶点的顶点位置:
步骤1,获取第一顶点的关联关系,第一顶点为待确定顶点位置的顶点,关联关系用于指示第一顶点与多个姿态信息之间的关联关系。
步骤2,按照关联关系、多个姿态信息以及第一顶点位置确定第二顶点位置,第一顶点位置为第一顶点在第一时间的顶点位置,第二顶点位置为第一顶点在第二时间的顶点位置,第二时间晚于第一时间。
在一个可选的实施方案中,本申请的蒙皮Mesh可以采用弹簧质点模型,Mesh网格的顶点行列规则排列,将每个顶点抽象成弹簧质点,第一行质点受骨骼控制,其余质点受相邻顶点的弹力影响,此时,上述步骤2的按照关联关系、多个姿态信息以及第一顶点位置确定第二顶点位置可以包括:
步骤21,在第一顶点为位置位于第一行的顶点的情况下,按照第一关联关系对多个姿态信息和第一顶点位置进行处理,得到第二顶点位置,第一关联关系用于表示第一顶点与多个姿态信息之间的关联关系,第一网格中任意两行顶点之间的行间距相同且任意两列顶点之间的列间距相同。
Figure BDA0002563169490000061
其中,n表示与顶点关联的骨骼的个数,si表示第i个骨骼的由姿态确定的位置,ri表示相应的权重,S0表示顶点的原始位置(即第一顶点位置),St即第二顶点位置。
步骤22,在第一顶点为位置位于第一行之后的顶点的情况下,按照第二关联关系对第二顶点的顶点位置和第一顶点位置进行处理,得到第二顶点位置,第二顶点为第一网格上与第一顶点位于同一行且相邻、或者与第一顶点位于同一列且相邻的顶点,第二关联关系用于表示第一顶点与顶点间距之间的关联关系,顶点间距为第一顶点与第二顶点之间的间距。
Figure BDA0002563169490000062
n表示与顶点关联的顶点的个数,Si表示第i个顶点的位置,Ri表示相应的权重。
在又一个可选的实施方案中,还可以采用动态Dynamic布料Cloth方案,该方案将网格顶点规则排列,将网格的每一列都当成一条骨骼链进行计算,并且在计算时,只对顶点的位置进行模拟,而忽略旋转因素。此时,步骤2的按照关联关系、多个姿态信息以及第一顶点位置确定第二顶点位置包括如下步骤:
步骤21,在第一顶点为位置位于第一行的顶点的情况下,按照第一关联关系对多个姿态信息和第一顶点位置进行处理,得到第二顶点位置,第一关联关系用于表示第一顶点与多个姿态信息之间的关联关系,第一网格中任意两行顶点之间的行间距相同且任意两列顶点之间的列间距相同。
步骤22,在第一顶点为位置位于第一行之后的顶点的情况下,按照第三关联关系对第三顶点的顶点位置和第一顶点位置进行处理,得到第二顶点位置,第三顶点为蒙皮上与第一顶点位于同一列且相邻的顶点,第三关联关系用于表示第一顶点与第三顶点之间的关联关系。
第三顶点为第一顶点之前且位于同一列上的顶点,第一顶点主要受到两个因素的影响,其一是按照用于表示与第三点之间的约束关系的第三关联关系(如第三顶点相对于前一时刻行进的距离即第一顶点行进的距离),其二是始终保持与相邻骨链之间的距离,基于此对第一顶点的位置进行修正。
在又一个可选的实施方案中,本方案还可以采用子节点跟随父节点的阻尼Damping方案,该方案用目标位置计算一个速度,然后将该速度与上一次顶点的移动速度进行混合得到当前速度,最后利用该速度计算出新的顶点位置。此时,步骤2的按照关联关系、多个姿态信息以及第一顶点位置确定第二顶点位置包括如下步骤:
步骤21,获取第一速度和第二速度,第一速度是利用第一顶点在目标位置和与到达目标位置之间的时间确定的目标速度,第二速度是第一顶点在第一时间的速度,目标位置是根据多个姿态信息确定的位置。
步骤22,对第一速度和第二速度进行混合得到当前的第三速度,第三速度为第一顶点在第一时间和第二时间之间的速度。
在对第一速度和第二速度进行混合得到第三速度时,可获取第一速度与间隔时间之间的乘积为第四速度;将第四速度与第二速度相加得到第三速度。
步骤23,按照第一顶点位置、第三速度和间隔时间确定第二顶点位置,其中,间隔时间为第一时间和第二时间之间的间隔时间。
在又一个可选的实施方案中,考虑到以上三种顶点动画都要求网格顶点排列规则,实际游戏中不可能无法满足这样严格的要求,本申请还提供了一种方案,该方案制作两个网格,一个网格的顶点排列规则,用于计算顶点动画,称为计算网格,另一个网格的顶点基本上在同一平面上,顶点的排列和组成的形状没有要求,用于渲染,称为渲染网格,在运行时,计算网格使用上述的顶点动画方案模拟飘带运动效果,渲染网格附着在计算网格上一起运动,显示最终的飘带效果。此时,步骤2的按照关联关系、多个姿态信息以及第一顶点位置确定第二顶点位置包括如下步骤:
步骤21,利用多个姿态信息确定第二网格上顶点的顶点位置,第二网格中任意两行顶点之间的行间距相同且任意两列顶点之间的列间距相同,第一网格的形状与柔性对象匹配且与第二网格上的顶点之间的映射关系为根据需求配置的。
上述第二网格上顶点的顶点位置可以采用以上描述的三种方案或者其他方案实现,第一网格上的顶点可以与第二网格上的一个或者多个点关联,
Figure BDA0002563169490000081
n表示与顶点关联的顶点的个数,S′i表示第二网格上与第一网格上顶点关联的第i个顶点的位置,Ri表示相应的权重。
步骤22,利用第二网格上顶点的顶点位置确定第一网格上顶点的第二顶点位置。
作为一种可选的实施例,下面结合具体的应用场景进一步详述本申请的技术方案。
在有些游戏中,主角精彩会搭配有飘逸的大红飘带,为了实现模拟飘带的效果,如采用动态Dynamic骨骼Bone(Dynamic Bone是CPU版的骨骼动画算法)实现飘带,用DynamicBone来模拟飘带,将飘带绑定到10多根骨骼上,这10多根骨骼用Dynamic Bone算法模拟运动,图3是Dynamic Bone模拟飘带的效果。
使用Dynamic Bone能模拟出角色运动的效果,但效果比较僵硬,因为骨骼通过权重控制周围顶点,权重平滑过渡,所以无法简单地通过骨骼实现图4中右图中的褶皱效果。
为了实现更细致的效果,本方案需要对每个顶点进行模拟,因此设计了一套Compute Shader顶点动画框架,该框架结构如图5所示,CPU负责将骨骼矩阵信息写入指定Buffer中,GPU负责从Buffer中读取骨骼矩阵进行蒙皮,然后将蒙皮结果写入指定Buffer,顶点动画核函数从Buffer中取出数据计算顶点位置并计算结果写入指定Buffer,最后渲染器将Buffer中的顶点渲染出来,本方案的改进点之一是将在CPU中处理的数据DB转移到在GPU中处理,利用GPU并行计算加快计算效率,该框架能充分发挥GPU同时计算大量顶点的优势。搭建完框架后,本方案采用如下几种顶点动画算法来模拟飘带效果。
第一种是弹簧质点模型,如图6所示,弹簧质点模型是一种经典的布料模拟算法,将网格顶点行列规则排列,将每个顶点抽象成弹簧质点,第一行质点受骨骼控制,其余质点受相邻顶点的弹力影响,例如,当计算到质点a时,会根据a与b的当前距离和初始距离改变a和b的位置,同样的,根据a与c的当前距离与初始距离改变a和c的位置。图7是弹簧质点模型的效果图。
第二种是采用Dynamic Cloth算法,从图7可以看出弹簧质点模型虽然比DynamicBone版的飘带更柔顺,但很难通过参数调节出更满意的效果,同时存在数值稳定性问题,因此,本方案提供了一套基于Dynamic Bone的顶点动画算法,将其称之为Dynamic Cloth算法,该算法将网格顶点规则排列,将网格的每一列都当成一条骨骼链进行计算,并且在计算时,只对顶点的位置进行模拟,而忽略旋转因素。该算法的效果如图8所示。
第三种是Damping算法,除了上述两种顶点动画算法外,本申请还尝试了一种更简单的顶点动画算法,子节点跟随父节点的Damping算法,图9给出了damping算法的示意图,该算利用目标位置(targetPos)计算一个速度(v),然后将该速度与上一次顶点的移动速度(preV)进行混合得到当前速度(curV),最后利用该速度计算出新的顶点位置(pos),该算法的效果如图10所示。
第四种是Adhere Mesh,上述三种顶点动画算法要求网格顶点排列规则,实际游戏中可能不能满足这样严格的要求,因此,采用了Adhere Mesh方案,该方案要制作两个网格,如图11所示,一个网格的顶点排列规则,用于计算顶点动画,称为计算网格,如图11中的深色网格,另一个网格的顶点基本上在同一平面上,顶点的排列和组成的形状没有要求,用于渲染,称为渲染网格,如图11中的浅色网格。在运行时,计算网格使用上述的顶点动画方案模拟飘带运动效果,渲染网格附着在计算网格上一起运动,显示最终的飘带效果。
图12展示了四种方案的最终效果,从图12中可以看出最原始的Dynamic Bone版飘带效果比较僵硬,后面的三种顶点动画更加柔和些。其中弹簧质点效果较难控制,从飘带拉长到恢复的速度更慢,而且容易往中间收缩,Dynamic Cloth和Damping都能很好地模拟出飘带的柔顺感。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请并不受所描述的动作顺序的限制,因为依据本申请,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本申请所必须的。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到根据上述实施例的方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本申请各个实施例所述的方法。
根据本申请实施例的另一个方面,还提供了一种用于实施上述柔性对象的渲染方法的柔性对象的渲染装置。图13是根据本申请实施例的一种可选的柔性对象的渲染装置的示意图,如图13所示,该装置可以包括:
保存单元1301,用于将目标模型的多个姿态信息写入图形处理器的第一缓存,其中,目标模型用于表示虚拟场景中的柔性对象,每个姿态信息用于表示目标模型中一个骨骼的骨骼姿态,第一缓存用于保存待处理的信息;
处理单元1303,用于调用图形处理器的多个线程对第一缓存中的多个姿态信息进行处理,并将处理得到的多个顶点的顶点位置保存至第二缓存,其中,每个顶点的位置信息是线程对至少一个姿态信息进行处理得到的,多个顶点为目标模型的第一网格的顶点,第二缓存用于保存待渲染的数据;
渲染单元1305,用于调用图形处理器按照第二缓存保存的顶点位置渲染出柔性对象。
需要说明的是,该实施例中的保存单元1301可以用于执行本申请实施例中的步骤S202,该实施例中的处理单元1303可以用于执行本申请实施例中的步骤S204,该实施例中的渲染单元1305可以用于执行本申请实施例中的步骤S206。
此处需要说明的是,上述模块与对应的步骤所实现的示例和应用场景相同,但不限于上述实施例所公开的内容。需要说明的是,上述模块作为装置的一部分可以运行在如图1所示的硬件环境中,可以通过软件实现,也可以通过硬件实现。
通过上述模块,将目标模型的多个姿态信息写入图形处理器的第一缓存,调用所述图形处理器的多个线程对所述第一缓存中的所述多个姿态信息进行处理,并将处理得到的多个顶点的顶点位置保存至第二缓存,调用所述图形处理器按照所述第二缓存保存的顶点位置渲染出所述柔性对象,相较于传统的处理器单线程处理的方式,由于采用了多线程的方式并行处理数据,利用了图形处理器并行处理性能优异的特点,可以解决相关技术中数据处理效率较低的技术问题,进而达到提高数据处理效率的技术效果。
可选地,处理单元包括:获取模块,用于获取第一顶点的关联关系,其中,第一顶点为待确定顶点位置的顶点,关联关系用于指示第一顶点与多个姿态信息之间的关联关系;处理模块,用于按照关联关系、多个姿态信息以及第一顶点位置确定第二顶点位置,其中,第一顶点位置为第一顶点在第一时间的顶点位置,第二顶点位置为第一顶点在第二时间的顶点位置,第二时间晚于第一时间。
可选地,处理模块还用于:在第一顶点为位置位于第一行的顶点的情况下,按照第一关联关系对多个姿态信息和第一顶点位置进行处理,得到第二顶点位置,其中,第一关联关系用于表示第一顶点与多个姿态信息之间的关联关系,第一网格中任意两行顶点之间的行间距相同且任意两列顶点之间的列间距相同。
可选地,处理模块还用于:在第一顶点为位置位于第一行之后的顶点的情况下,按照第二关联关系对第二顶点的顶点位置和第一顶点位置进行处理,得到第二顶点位置,其中,第二顶点为第一网格上与第一顶点位于同一行且相邻、或者与第一顶点位于同一列且相邻的顶点,第二关联关系用于表示第一顶点与顶点间距之间的关联关系,顶点间距为第一顶点与第二顶点之间的间距。
可选地,处理模块还用于:在第一顶点为位置位于第一行之后的顶点的情况下,按照第三关联关系对第三顶点的顶点位置和第一顶点位置进行处理,得到第二顶点位置,其中,第三顶点为蒙皮上与第一顶点位于同一列且相邻的顶点,第三关联关系用于表示第一顶点与第三顶点之间的关联关系。
可选地,处理模块还用于:获取第一速度和第二速度,其中,第一速度是利用第一顶点在目标位置和与到达目标位置之间的时间确定的速度,第二速度是第一顶点在第一时间的速度,目标位置是根据多个姿态信息确定的位置;对第一速度和第二速度进行混合得到第三速度,其中,第三速度为第一顶点在第一时间和第二时间之间的速度;按照第一顶点位置、第三速度和间隔时间确定第二顶点位置,其中,间隔时间为第一时间和第二时间之间的间隔时间。
可选地,处理模块还用于:获取第一速度与间隔时间之间的乘积为第四速度;将第四速度与第二速度相加得到第三速度。
可选地,处理模块还用于:利用多个姿态信息确定第二网格上顶点的顶点位置,其中,第二网格中任意两行顶点之间的行间距相同且任意两列顶点之间的列间距相同,第一网格的形状与柔性对象匹配且与第二网格上的顶点之间的映射关系为根据需求配置的;利用第二网格上顶点的顶点位置确定第一网格上顶点的第二顶点位置。
此处需要说明的是,上述模块与对应的步骤所实现的示例和应用场景相同,但不限于上述实施例所公开的内容。需要说明的是,上述模块作为装置的一部分可以运行在如图1所示的硬件环境中,可以通过软件实现,也可以通过硬件实现,其中,硬件环境包括网络环境。
根据本申请实施例的另一个方面,还提供了一种用于实施上述柔性对象的渲染方法的服务器或终端。
图14是根据本申请实施例的一种终端的结构框图,如图14所示,该终端可以包括:一个或多个(图14中仅示出一个)处理器1401、存储器1403、以及传输装置1405,如图14所示,该终端还可以包括输入输出设备1407。
其中,存储器1403可用于存储软件程序以及模块,如本申请实施例中的柔性对象的渲染方法和装置对应的程序指令/模块,处理器1401通过运行存储在存储器1403内的软件程序以及模块,从而执行各种功能应用以及数据处理,即实现上述的柔性对象的渲染方法。存储器1403可包括高速随机存储器,还可以包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器1403可进一步包括相对于处理器1401远程设置的存储器,这些远程存储器可以通过网络连接至终端。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
上述的传输装置1405用于经由一个网络接收或者发送数据,还可以用于处理器与存储器之间的数据传输。上述的网络具体实例可包括有线网络及无线网络。在一个实例中,传输装置1405包括一个网络适配器(Network Interface Controller,NIC),其可通过网线与其他网络设备与路由器相连从而可与互联网或局域网进行通讯。在一个实例中,传输装置1405为射频(Radio Frequency,RF)模块,其用于通过无线方式与互联网进行通讯。
其中,具体地,存储器1403用于存储应用程序。
处理器1401可以通过传输装置1405调用存储器1403存储的应用程序,以执行下述步骤:
将目标模型的多个姿态信息写入图形处理器的第一缓存,其中,目标模型用于表示虚拟场景中的柔性对象,每个姿态信息用于表示目标模型中一个骨骼的骨骼姿态,第一缓存用于保存待处理的信息;
调用图形处理器的多个线程对第一缓存中的多个姿态信息进行处理,并将处理得到的多个顶点的顶点位置保存至第二缓存,其中,每个顶点的位置信息是线程对至少一个姿态信息进行处理得到的,多个顶点为目标模型的第一网格的顶点,第二缓存用于保存待渲染的数据;
调用图形处理器按照第二缓存保存的顶点位置渲染出柔性对象。
处理器1401还用于执行下述步骤:
获取第一速度和第二速度,其中,第一速度是利用第一顶点在目标位置和与到达目标位置之间的时间确定的速度,第二速度是第一顶点在第一时间的速度,目标位置是根据多个姿态信息确定的位置;
对第一速度和第二速度进行混合得到第三速度,其中,第三速度为第一顶点在第一时间和第二时间之间的速度;
按照第一顶点位置、第三速度和间隔时间确定第二顶点位置,其中,间隔时间为第一时间和第二时间之间的间隔时间。
采用本申请实施例,将目标模型的多个姿态信息写入图形处理器的第一缓存,调用所述图形处理器的多个线程对所述第一缓存中的所述多个姿态信息进行处理,并将处理得到的多个顶点的顶点位置保存至第二缓存,调用所述图形处理器按照所述第二缓存保存的顶点位置渲染出所述柔性对象,相较于传统的处理器单线程处理的方式,由于采用了多线程的方式并行处理数据,利用了图形处理器并行处理性能优异的特点,可以解决相关技术中数据处理效率较低的技术问题,进而达到提高数据处理效率的技术效果。
可选地,本实施例中的具体示例可以参考上述实施例中所描述的示例,本实施例在此不再赘述。
本领域普通技术人员可以理解,图14所示的结构仅为示意,终端可以是智能手机(如Android手机、iOS手机等)、平板电脑、掌上电脑以及移动互联网设备(Mobile InternetDevices,MID)、PAD等终端设备。图14其并不对上述电子装置的结构造成限定。例如,终端还可包括比图14中所示更多或者更少的组件(如网络接口、显示装置等),或者具有与图14所示不同的配置。
本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令终端设备相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质可以包括:闪存盘、只读存储器(Read-Only Memory,ROM)、随机存取器(RandomAccess Memory,RAM)、磁盘或光盘等。
本申请的实施例还提供了一种存储介质。可选地,在本实施例中,上述存储介质可以用于执行柔性对象的渲染方法的程序代码。
可选地,在本实施例中,上述存储介质可以位于上述实施例所示的网络中的多个网络设备中的至少一个网络设备上。
可选地,在本实施例中,存储介质被设置为存储用于执行以下步骤的程序代码:
将目标模型的多个姿态信息写入图形处理器的第一缓存,其中,目标模型用于表示虚拟场景中的柔性对象,每个姿态信息用于表示目标模型中一个骨骼的骨骼姿态,第一缓存用于保存待处理的信息;
调用图形处理器的多个线程对第一缓存中的多个姿态信息进行处理,并将处理得到的多个顶点的顶点位置保存至第二缓存,其中,每个顶点的位置信息是线程对至少一个姿态信息进行处理得到的,多个顶点为目标模型的第一网格的顶点,第二缓存用于保存待渲染的数据;
调用图形处理器按照第二缓存保存的顶点位置渲染出柔性对象。
可选地,存储介质还被设置为存储用于执行以下步骤的程序代码:
获取第一速度和第二速度,其中,第一速度是利用第一顶点在目标位置和与到达目标位置之间的时间确定的速度,第二速度是第一顶点在第一时间的速度,目标位置是根据多个姿态信息确定的位置;
对第一速度和第二速度进行混合得到第三速度,其中,第三速度为第一顶点在第一时间和第二时间之间的速度;
按照第一顶点位置、第三速度和间隔时间确定第二顶点位置,其中,间隔时间为第一时间和第二时间之间的间隔时间。
可选地,本实施例中的具体示例可以参考上述实施例中所描述的示例,本实施例在此不再赘述。
可选地,在本实施例中,上述存储介质可以包括但不限于:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
上述本申请实施例序号仅仅为了描述,不代表实施例的优劣。
上述实施例中的集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在上述计算机可读取的存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在存储介质中,包括若干指令用以使得一台或多台计算机设备(可为个人计算机、服务器或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。
在本申请的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
在本申请所提供的几个实施例中,应该理解到,所揭露的客户端,可通过其它的方式实现。其中,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,单元或模块的间接耦合或通信连接,可以是电性或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
以上所述仅是本申请的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本申请的保护范围。

Claims (10)

1.一种柔性对象的渲染方法,其特征在于,包括:
将目标模型的多个姿态信息写入图形处理器的第一缓存,其中,所述目标模型用于表示虚拟场景中的柔性对象,每个所述姿态信息用于表示所述目标模型中一个骨骼的骨骼姿态,所述第一缓存用于保存待处理的信息;
调用所述图形处理器的多个线程对所述第一缓存中的所述多个姿态信息进行处理,并将处理得到的多个顶点的顶点位置保存至第二缓存,其中,每个顶点的位置信息是线程对至少一个姿态信息进行处理得到的,所述多个顶点为所述目标模型的第一网格的顶点,所述第二缓存用于保存待渲染的数据,其中,调用所述图形处理器的多个线程对所述第一缓存中的所述多个姿态信息进行处理包括按照如下方式进行处理得到每个顶点的顶点位置:获取第一顶点的关联关系,所述第一顶点为待确定顶点位置的顶点,所述关联关系用于指示所述第一顶点与所述多个姿态信息之间的关联关系;按照所述关联关系、所述多个姿态信息以及第一顶点位置确定第二顶点位置,所述第一顶点位置为所述第一顶点在第一时间的顶点位置,所述第二顶点位置为所述第一顶点在第二时间的顶点位置,所述第二时间晚于所述第一时间;
调用所述图形处理器按照所述第二缓存保存的顶点位置渲染出所述柔性对象。
2.根据权利要求1所述的方法,其特征在于,按照所述关联关系、所述多个姿态信息以及第一顶点位置确定第二顶点位置包括:
在所述第一顶点为位置位于第一行的顶点的情况下,按照第一关联关系对所述多个姿态信息和所述第一顶点位置进行处理,得到所述第二顶点位置,其中,所述第一关联关系用于表示所述第一顶点与所述多个姿态信息之间的关联关系,所述第一网格中任意两行顶点之间的行间距相同且任意两列顶点之间的列间距相同。
3.根据权利要求2所述的方法,其特征在于,按照所述关联关系、所述多个姿态信息以及第一顶点位置确定第二顶点位置包括:
在所述第一顶点为位置位于第一行之后的顶点的情况下,按照第二关联关系对第二顶点的顶点位置和所述第一顶点位置进行处理,得到所述第二顶点位置,其中,所述第二顶点为所述第一网格上与所述第一顶点位于同一行且相邻、或者与所述第一顶点位于同一列且相邻的顶点,所述第二关联关系用于表示所述第一顶点与顶点间距之间的关联关系,所述顶点间距为所述第一顶点与所述第二顶点之间的间距。
4.根据权利要求2所述的方法,其特征在于,按照所述关联关系、所述多个姿态信息以及第一顶点位置确定第二顶点位置包括:
在所述第一顶点为位置位于第一行之后的顶点的情况下,按照第三关联关系对第三顶点的顶点位置和所述第一顶点位置进行处理,得到所述第二顶点位置,其中,所述第三顶点为所述第一网格上与所述第一顶点位于同一列且相邻的顶点,所述第三关联关系用于表示所述第一顶点与所述第三顶点之间的关联关系。
5.根据权利要求1所述的方法,其特征在于,按照所述关联关系、所述多个姿态信息以及第一顶点位置确定第二顶点位置包括:
获取第一速度和第二速度,其中,所述第一速度是利用所述第一顶点在目标位置和与到达所述目标位置之间的时间确定的速度,所述第二速度是所述第一顶点在第一时间的速度,所述目标位置是根据所述多个姿态信息确定的位置;
对所述第一速度和所述第二速度进行混合得到第三速度,其中,所述第三速度为所述第一顶点在所述第一时间和所述第二时间之间的速度;
按照所述第一顶点位置、所述第三速度和间隔时间确定所述第二顶点位置,其中,所述间隔时间为所述第一时间和所述第二时间之间的间隔时间。
6.根据权利要求5所述的方法,其特征在于,对所述第一速度和所述第二速度进行混合得到第三速度包括:
获取所述第一速度与所述间隔时间之间的乘积为第四速度;
将所述第四速度与所述第二速度相加得到所述第三速度。
7.根据权利要求1所述的方法,其特征在于,按照所述关联关系、所述多个姿态信息以及第一顶点位置确定第二顶点位置包括:
利用所述多个姿态信息确定第二网格上顶点的顶点位置,其中,所述第二网格中任意两行顶点之间的行间距相同且任意两列顶点之间的列间距相同,所述第一网格的形状与所述柔性对象匹配且与所述第二网格上的顶点之间的映射关系为根据需求配置的;
利用所述第二网格上顶点的顶点位置确定所述第一网格上顶点的第二顶点位置。
8.一种柔性对象的渲染装置,其特征在于,包括:
保存单元,用于将目标模型的多个姿态信息写入图形处理器的第一缓存,其中,所述目标模型用于表示虚拟场景中的柔性对象,每个所述姿态信息用于表示所述目标模型中一个骨骼的骨骼姿态,所述第一缓存用于保存待处理的信息;
处理单元,用于调用所述图形处理器的多个线程对所述第一缓存中的所述多个姿态信息进行处理,并将处理得到的多个顶点的顶点位置保存至第二缓存,其中,每个顶点的位置信息是线程对至少一个姿态信息进行处理得到的,所述多个顶点为所述目标模型的第一网格的顶点,所述第二缓存用于保存待渲染的数据,其中,所述处理单元还用于按照如下方式进行处理得到每个顶点的顶点位置:获取第一顶点的关联关系,所述第一顶点为待确定顶点位置的顶点,所述关联关系用于指示所述第一顶点与所述多个姿态信息之间的关联关系;按照所述关联关系、所述多个姿态信息以及第一顶点位置确定第二顶点位置,所述第一顶点位置为所述第一顶点在第一时间的顶点位置,所述第二顶点位置为所述第一顶点在第二时间的顶点位置,所述第二时间晚于所述第一时间;
渲染单元,用于调用所述图形处理器按照所述第二缓存保存的顶点位置渲染出所述柔性对象。
9.一种存储介质,其特征在于,所述存储介质包括存储的程序,其中,所述程序运行时执行上述权利要求1至7任一项中所述的方法。
10.一种电子装置,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,其特征在于,所述处理器通过所述计算机程序执行上述权利要求1至7任一项中所述的方法。
CN202010621479.6A 2020-06-30 2020-06-30 柔性对象的渲染方法和装置、存储介质、电子装置 Active CN111773688B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010621479.6A CN111773688B (zh) 2020-06-30 2020-06-30 柔性对象的渲染方法和装置、存储介质、电子装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010621479.6A CN111773688B (zh) 2020-06-30 2020-06-30 柔性对象的渲染方法和装置、存储介质、电子装置

Publications (2)

Publication Number Publication Date
CN111773688A CN111773688A (zh) 2020-10-16
CN111773688B true CN111773688B (zh) 2021-11-16

Family

ID=72761057

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010621479.6A Active CN111773688B (zh) 2020-06-30 2020-06-30 柔性对象的渲染方法和装置、存储介质、电子装置

Country Status (1)

Country Link
CN (1) CN111773688B (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114020355B (zh) * 2021-11-01 2024-01-30 上海米哈游天命科技有限公司 基于缓存空间的对象加载方法及装置
CN115712580B (zh) * 2022-11-25 2024-01-30 格兰菲智能科技有限公司 内存地址分配方法、装置、计算机设备和存储介质
CN116543093B (zh) * 2023-07-04 2024-04-02 腾讯科技(深圳)有限公司 柔体对象渲染方法、装置、计算机设备和存储介质

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109237999B (zh) * 2018-09-19 2020-09-08 中国电子科技集团公司第二十八研究所 一种批量三维态势目标尾迹实时绘制方法和系统
CN109671141B (zh) * 2018-11-21 2023-04-18 深圳市腾讯信息技术有限公司 图像的渲染方法和装置、存储介质、电子装置
CN110102050B (zh) * 2019-04-30 2022-02-18 腾讯科技(深圳)有限公司 虚拟对象显示方法、装置、电子设备及存储介质

Also Published As

Publication number Publication date
CN111773688A (zh) 2020-10-16

Similar Documents

Publication Publication Date Title
CN111773688B (zh) 柔性对象的渲染方法和装置、存储介质、电子装置
US9934602B2 (en) System, method and device for three-dimensional modeling
WO2020220915A1 (zh) 虚拟对象显示方法、装置、电子设备及存储介质
CN111773690B (zh) 任务的处理方法和装置、存储介质、电子装置
CN112241993B (zh) 游戏图像处理方法、装置及电子设备
CN115641375B (zh) 虚拟对象的毛发处理方法、装置、设备及存储介质
CN111028317B (zh) 虚拟对象的动画生成方法、装置、设备及存储介质
CN111773719A (zh) 虚拟对象的渲染方法和装置、存储介质、电子装置
CN111714880A (zh) 画面的显示方法和装置、存储介质、电子装置
US20240037839A1 (en) Image rendering
CN111738935B (zh) 残影渲染方法和装置、存储介质和电子装置
CN110930484B (zh) 动画配置方法和装置、存储介质及电子装置
CN111968204A (zh) 一种骨骼模型的运动展示方法和装置
CN112843704B (zh) 动画模型处理方法、装置、设备及存储介质
CN116115995A (zh) 图像渲染处理方法、装置及电子设备
US6670954B2 (en) Three-dimensional skeleton data error absorbing apparatus
KR100632535B1 (ko) 이동통신단말기용 삼차원 그래픽 엔진 및 그래픽 제공 방법
CN114882153A (zh) 一种动画生成的方法及装置
CN114399580A (zh) 一种图像渲染方法、装置、设备、存储介质及程序产品
CN113034651A (zh) 互动动画的播放方法、装置、设备及存储介质
CN109712245A (zh) 三维场景中蝴蝶行为的模拟方法及装置
CN118229852A (zh) 头发动效的处理方法及装置、电子设备、存储介质
Strand et al. Particle-Oriented Bounding Box Skeletal Animation in real-time applications
CN118160008A (zh) 实用3d资产的推断的骨骼结构
CN115601478A (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