任务的处理方法和装置、存储介质、电子装置转让专利
申请号 : CN202010630525.9
文献号 : CN111773690B
文献日 : 2021-11-09
发明人 : 徐峰 , 何文峰
申请人 : 完美世界(北京)软件科技发展有限公司
摘要 :
权利要求 :
1.一种任务的处理方法,其特征在于,包括:确定目标模型的多个节点,其中,所述目标模型用于表示虚拟场景中的柔性对象,所述多个节点中的每个节点用于表示所述目标模型的一个骨骼;
生成所述多个节点的模拟运算任务,其中,所述模拟运算任务用于根据节点在第一时间的物理状态模拟出节点在第二时间的物理状态,所述第二时间晚于所述第一时间;
对所述多个节点的模拟运算任务进行并行处理,包括:确定所述多个节点中的多个第二节点,其中,任意两个所述第二节点所表示的骨骼不属于同一个动画,所述第二节点的节点数量不大于所述多个节点的节点数量;通过多个线程的多个第二线程运行所述多个第二节点的模拟运算任务,其中,所述第二线程的线程数量不大于所述多个线程的线程数量、且不大于所述第二节点的节点数量。
2.根据权利要求1所述的方法,其特征在于,对所述多个节点的模拟运算任务进行并行处理包括按照如下方式为多个线程中的每个线程分配模拟运算任务:通过管理工具监控第一线程的运行状态,其中,所述管理工具为预先创建的用于根据线程的运行状态分发模拟运算任务的工具,所述运行状态用于表示所述第一线程当前是否有正在处理的模拟运算任务,所述第一线程为所述多个线程中的任意一个线程;
在所述运行状态表明所述第一线程当前没有正在处理的模拟运算任务的情况下,通过所述管理工具将目标模拟运算任务分发给所述第一线程进行处理,其中,所述目标模拟运算任务为所述多个节点的模拟运算任务中未处理的模拟运算任务。
3.根据权利要求2所述的方法,其特征在于,在通过所述管理工具将目标模拟运算任务分发给所述第一线程进行处理之后,所述方法还包括:在所述第一线程完成所述目标模拟运算任务的情况下,将第一节点的物理状态更新为所述第一线程处理得到的物理状态,其中,所述目标模拟运算任务属于所述第一节点。
4.根据权利要求1所述的方法,其特征在于,对所述多个节点的模拟运算任务进行并行处理包括:
在通过所述多个线程的多个第二线程运行所述多个第二节点的模拟运算任务之前,通过多个读线程中的每个读线程从一个所述第二节点读取待处理的物理状态,并将读取的待处理的物理状态传递给一个所述第二线程,其中,所述多个读线程为并行运行的读线程,任意两个所述读线程所读取物理状态来源的所述第二节点不同,任意两个所述读线程将读取的物理状态所传递至的所述第二线程不同。
5.根据权利要求1所述的方法,其特征在于,对所述多个节点的模拟运算任务进行并行处理包括:
在通过所述多个线程的多个第二线程运行所述多个第二节点的模拟运算任务之后,通过多个写线程中的每个写线程从一个所述第二线程获取得到的物理状态,并将得到的物理状态写入一个所述第二节点,以对所述第二节点保存的物理状态进行更新,其中,所述多个写线程为并行运行的写线程,任意两个所述写线程所获取物理状态的所述第二线程不同,任意两个所述写线程将获取的物理状态所写入的所述第二节点不同。
6.根据权利要求1至5中任意一项所述的方法,其特征在于,生成所述多个节点的模拟运算任务包括:
为所述多个节点中的每个节点创建包括如下操作的模拟运算任务:外力模拟、惯性模拟、弹性模拟、刚性模拟、碰撞处理以及保持父子节点之间的长度。
7.一种任务的处理装置,其特征在于,包括:确定单元,用于确定目标模型的多个节点,其中,所述目标模型用于表示虚拟场景中的柔性对象,所述多个节点中的每个节点用于表示所述目标模型的一个骨骼;
生成单元,用于生成所述多个节点的模拟运算任务,其中,所述模拟运算任务用于根据节点在第一时间的物理状态模拟出节点在第二时间的物理状态,所述第二时间晚于所述第一时间;
处理单元,用于对所述多个节点的模拟运算任务进行并行处理;所述处理单元还用于:确定所述多个节点中的多个第二节点,其中,任意两个所述第二节点所表示的骨骼不属于同一个动画,所述第二节点的节点数量不大于所述多个节点的节点数量;通过多个线程的多个第二线程运行所述多个第二节点的模拟运算任务,其中,所述第二线程的线程数量不大于所述多个线程的线程数量、且不大于所述第二节点的节点数量。
8.一种存储介质,其特征在于,所述存储介质包括存储的程序,其中,所述程序运行时执行上述权利要求1至6任一项中所述的方法。
9.一种电子装置,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,其特征在于,所述处理器通过所述计算机程序执行上述权利要求1至6任一项中所述的方法。
说明书 :
任务的处理方法和装置、存储介质、电子装置
技术领域
背景技术
部分,刚体主要应用在物理碰撞、破碎、布娃娃等系统中,而柔体最为重要的应用代表就是
布料系统。
传统骨骼动画表现僵硬、细节粗糙的不足,也能解决顶点动画无法交互、存贮量大的问题,
从而大幅提升游戏的真实感体验。虽然名为布料系统,但并不仅仅用于表现角色衣服的布
料效果,而且可以应用于毛发、坠饰,甚至人体的某些柔软部位。
发明内容
目标模型的一个骨骼;生成多个节点的模拟运算任务,其中,模拟运算任务用于根据节点在
第一时间的物理状态模拟出节点在第二时间的物理状态,第二时间晚于第一时间;对多个
节点的模拟运算任务进行并行处理。
中的每个节点用于表示目标模型的一个骨骼;生成单元,用于生成多个节点的模拟运算任
务,其中,模拟运算任务用于根据节点在第一时间的物理状态模拟出节点在第二时间的物
理状态,第二时间晚于第一时间;处理单元,用于对多个节点的模拟运算任务进行并行处
理。
法。
据处理效率较低的技术问题,进而达到提高数据处理效率的技术效果。
附图说明
具体实施方式
本申请一部分的实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人
员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范
围。
的数据在适当情况下可以互换,以便这里描述的本申请的实施例能够以除了在这里图示或
描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆
盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于
清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品
或设备固有的其它步骤或单元。
用于为终端或终端上安装的客户端提供服务(如游戏服务、应用服务等),可在服务器上或
独立于服务器设置数据库105,用于为服务器103提供数据存储服务,上述网络包括但不限
于:广域网、城域网或局域网,终端101并不限定于PC、手机、平板电脑等。
其上的客户端来执行。图2是根据本申请实施例的一种可选的任务的处理方法的流程图,如
图2所示,该方法可以包括以下步骤:
骼一一对应。
是利用多个线程进行并行处理,后续以线程级别的并行处理为例进行说明。
术中数据处理效率较低的技术问题,进而达到提高数据处理效率的技术效果。下文结合图2
所示的步骤进一步详述本申请的技术方案。
的模拟运算任务进行并行处理时,按照如下步骤1‑步骤3为多个线程中的每个线程分配模
拟运算任务:
行状态用于表示第一线程当前是否有正在处理的模拟运算任务。
的模拟运算任务中未处理的模拟运算任务。
空闲线程执行Job,最后等待Job完成并将模拟结果写入骨骼中进行更新。
优化的解决方案,即对多个节点的模拟运算任务进行并行处理时,可以通过如下步骤1‑步
骤4实现:
理的物理状态传递给一个第二线程,多个读线程为并行运行的读线程,任意两个读线程所
读取物理状态的第二节点不同,即读线程可以读取至少一个物理状态且任意一个物理状态
不会被重复读取,任意两个读线程将读取的物理状态所传递至的第二线程不同,即每个第
二线程至少处理一个物理状态且任意一个物理状态不会被重复处理。
态写入一个第二节点,以对第二节点保存的物理状态进行更新,多个写线程为并行运行的
写线程,任意两个写线程所获取物理状态的第二线程不同,任意两个写线程将获取的物理
状态所写入的第二节点不同,即写线程可以写入至少一个物理状态且任意一个物理状态不
会被重复写入。
实际上不会发生变化。比起弹簧,父子节点之间的相对运动更接近串联的单摆。
程。Dynamic Bone的整体流程是当物体原本移动完成后,首先根据运动的当前结果模拟弹
性运动,再根据模拟结果修正各节点的旋转并且将模拟结果同步到实际节点上。下面结合
图3进行描述:
示意图,第一阶段计算重力等外力对粒子的影响,以及模拟惯性效果,第二阶段进行弹性模
拟,刚性模拟,碰撞处理以及保持父子节点的长度。
远不够。为了满足手机等移动端实际项目的需求,采用本申请的技术方案能够从性能和效
果上对Dynamic Bone进行了一番升级改造。
优化的目标代码,使Job更高效的执行。
景中所有Dynamic Bone组件,管理类负责在每一帧的LateUpdate阶段读取骨骼位置,批量
生成和派发Job,高效地利用Work线程(如Work Thread 0、Work Thread 1等)执行Job,最后
等待Job完成并将粒子模拟结果写入骨骼中。
作业的一半,从而可以提高工作效率。
1,会使你在线程之间的工作分配更平均。它会带来一些额外的开销,所以有时增加每批次
数量会是更好的选择。从每批次数量为1开始,然后慢慢增加这个数量直到性能不再提升是
一个合理的策略。
如图5所示,数据的时间单位为毫秒ms,采用本方案实现Dynamic Bone,在帧更新的Update
个LateUpdate阶段皆有优化,优化幅度达到36.62%。
到ParallelForTransform Job中,使之并行读写骨骼,但是通过实践发现如果场景中
Dynamic Bone有共同的祖先节点的话,同一时间只能读写一个骨骼,如图6左侧图所示,无
法同时读写下节点4与节点5,基于此,本申请还提供了下文描述的方案二。
同,就可以在动画Animation作业Job中同时读写,如图6中右图所示,节点4与节点5分属于
动画0和动画1,所属动画不同,就可以通过动画Animation作业Job进行并行读写。
段创建并设置Playable Graph,图7是设置Playable Graph的示意图,Playable Graph生成
动画输出Animation Output,设置数据来源,调用动画脚本Animation Script生成动态骨
骼的动画作业,在设置之后的每帧中Playable Graph都会自动管理对应的动画作业Job。
案有了65.77%的优化幅度,也远高于方案一的优化幅度。
计50个这样的女主角,得到测试结果如图9所示(时间单位为毫秒ms),方案二相对于原始方
案有了69.78%的优化幅度,也远高于方案一的优化幅度。
依据本申请,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知
悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本申请
所必须的。
情况下前者是更佳的实施方式。基于这样的理解,本申请的技术方案本质上或者说对现有
技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储
介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算
机,服务器,或者网络设备等)执行本申请各个实施例所述的方法。
10所示,该装置可以包括:
骼一一对应。
的处理单元1005可以用于执行本申请实施例中的步骤S206。
图1所示的硬件环境中,可以通过软件实现,也可以通过硬件实现。
率较低的技术问题,进而达到提高数据处理效率的技术效果。
一线程当前是否有正在处理的模拟运算任务,第一线程为多个线程中的任意一个线程;在
运行状态表明第一线程当前没有正在处理的模拟运算任务的情况下,通过管理工具将目标
模拟运算任务分发给第一线程进行处理,其中,目标模拟运算任务为多个节点的模拟运算
任务中未处理的模拟运算任务。
为第一线程处理得到的物理状态,其中,目标模拟运算任务属于第一节点。
节点数量;处理模块,用于通过多个线程的多个第二线程运行多个第二节点的模拟运算任
务,其中,第二线程的线程数量不大于多个线程的线程数量、且不大于第二节点的节点数
量。
态,并将读取的待处理的物理状态传递给一个第二线程,其中,多个读线程为并行运行的读
线程,任意两个读线程所读取物理状态的第二节点不同,任意两个读线程将读取的物理状
态所传递至的第二线程不同。
态,并将得到的物理状态写入一个第二节点,以对第二节点保存的物理状态进行更新,其
中,多个写线程为并行运行的写线程,任意两个写线程所获取物理状态的第二线程不同,任
意两个写线程将获取的物理状态所写入的第二节点不同。
度。
远不够。为了满足手机等移动端实际项目的需求,采用本申请的技术方案能够从性能和效
果上对Dynamic Bone进行了一番升级改造。
优化的目标代码,使Job更高效的执行。
animator不同,就可以在动画Animation作业Job中同时读写,如两个节点分属于动画0和动
画1,所属动画不同,就可以通过动画Animation作业Job进行并行读写。
置Playable Graph,在设置之后的每帧中Playable Graph都会自动管理对应的动画作业
Job。
图1所示的硬件环境中,可以通过软件实现,也可以通过硬件实现,其中,硬件环境包括网络
环境。
该终端还可以包括输入输出设备1107。
序以及模块,从而执行各种功能应用以及数据处理,即实现上述的任务的处理方法。存储器
1103可包括高速随机存储器,还可以包括非易失性存储器,如一个或者多个磁性存储装置、
闪存、或者其他非易失性固态存储器。在一些实例中,存储器1103可进一步包括相对于处理
器1101远程设置的存储器,这些远程存储器可以通过网络连接至终端。上述网络的实例包
括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
传输装置1105包括一个网络适配器(Network Interface Controller,NIC),其可通过网线
与其他网络设备与路由器相连从而可与互联网或局域网进行通讯。在一个实例中,传输装
置1105为射频(Radio Frequency,RF)模块,其用于通过无线方式与互联网进行通讯。
两个读线程所读取物理状态的第二节点不同,任意两个读线程将读取的物理状态所传递至
的第二线程不同;
为并行运行的写线程,任意两个写线程所获取物理状态的第二线程不同,任意两个写线程
将获取的物理状态所写入的第二节点不同。
理效率较低的技术问题,进而达到提高数据处理效率的技术效果。
Devices,MID)、PAD等终端设备。图11其并不对上述电子装置的结构造成限定。例如,终端还
可包括比图11中所示更多或者更少的组件(如网络接口、显示装置等),或者具有与图11所
示不同的配置。
中,存储介质可以包括:闪存盘、只读存储器(Read‑Only Memory,ROM)、随机存取器(Random
Access Memory,RAM)、磁盘或光盘等。
两个读线程所读取物理状态的第二节点不同,任意两个读线程将读取的物理状态所传递至
的第二线程不同;
为并行运行的写线程,任意两个写线程所获取物理状态的第二线程不同,任意两个写线程
将获取的物理状态所写入的第二节点不同。
光盘等各种可以存储程序代码的介质。
术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软
件产品的形式体现出来,该计算机软件产品存储在存储介质中,包括若干指令用以使得一
台或多台计算机设备(可为个人计算机、服务器或者网络设备等)执行本申请各个实施例所
述方法的全部或部分步骤。
种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者
可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之
间的耦合或直接耦合或通信连接可以是通过一些接口,单元或模块的间接耦合或通信连
接,可以是电性或其它的形式。
网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目
的。
元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
视为本申请的保护范围。