模型动画的生成方法、装置、设备及存储介质与流程
未命名
08-27
阅读:118
评论:0
1.本发明涉及计算机图形处理技术领域,尤其涉及一种模型动画的生成方法、装置、设备及存储介质。
背景技术:
2.随着游戏行业的发展,游戏爱好者越来越多。为了提升游戏玩家的游戏体验,游戏制作越来越趋势于场景真实化。尤其是游戏角色的动画实现,目前主要是使用骨骼蒙皮技术来实现。
3.在游戏中,由于角色需要有丰富的动画表现(走,跑等),需要对角色进行骨骼蒙皮,利用骨骼驱动角色模型顶点,实现动画效果。而在现有技术中,对相似或者相同的骨骼的动画处理方案,利用了lod技术和dcc软件完成蒙皮制作,得到多个模型与骨骼或者是多个模型一套骨骼,然后一起输入到引擎,引擎基于输入的模型和骨骼进行形变信息的计算,这样的方式同时需要对每个模型和骨骼计算,存在过多的相同计算过程,因此对于游戏运行时而言,多增加一套骨骼,就会增添一份完整的骨骼计算负担,导致游戏卡顿与机器发热,其消耗设备的性能开销过大。
技术实现要素:
4.本发明的主要目的在于解决现有的动画生成方案中存在过多的模型和骨骼信息且计算内容重复,导致动画生成效率低,占用过多的性能,影响用户体验的问题。
5.本发明第一方面提供了一种模型动画的生成方法,所述模型动画的生成方法包括:
6.获取第一目标模型对应的第一蒙皮模型文件和第二目标模型对应的第二蒙皮模型文件;
7.其中,所述第一蒙皮模型文件包括所述第一目标模型、第一骨骼以及所述第一目标模型和所述第一骨骼之间的对应关系,所述第二模型文件包括所述第二目标模型、第二骨骼以及所述第二目标模型和所述第二骨骼之间的对应关系,所述第一骨骼和所述第二骨骼为相同的骨骼;
8.将所述第一目标模型和所述第一骨骼之间的对应关系存储为第一对应关系信息,将所述第二目标模型和所述第二骨骼之间的对应关系存储为第二对应关系信息;
9.根据预存的动画关键帧数据,计算获得所述第一骨骼的第一骨骼动画信息;
10.响应针对所述第二目标模型的动画驱动事件,根据所述第一对应关系信息、所述第二对应关系信息以及所述第一骨骼动画信息,计算获得所述第二骨骼的第二骨骼动画信息,并基于所述第二骨骼动画信息,生成所述第二目标模型的动画。
11.本发明第二方面提供了一种模型动画的生成装置,所述模型动画的生成装置包括:
12.获取模块,用于获取第一目标模型对应的第一蒙皮模型文件和第二目标模型对应
的第二蒙皮模型文件;
13.其中,所述第一蒙皮模型文件包括所述第一目标模型、第一骨骼以及所述第一目标模型和所述第一骨骼之间的对应关系,所述第二模型文件包括所述第二目标模型、第二骨骼以及所述第二目标模型和所述第二骨骼之间的对应关系,所述第一骨骼和所述第二骨骼为相同的骨骼;
14.存储模块,用于将所述第一目标模型和所述第一骨骼之间的对应关系存储为第一对应关系信息,将所述第二目标模型和所述第二骨骼之间的对应关系存储为第二对应关系信息;
15.计算模块,用于根据预存的动画关键帧数据,计算获得所述第一骨骼的第一骨骼动画信息;
16.生成模块,用于响应针对所述第二目标模型的动画驱动事件,根据所述第一对应关系信息、所述第二对应关系信息以及所述第一骨骼动画信息,计算获得所述第二骨骼的第二骨骼动画信息,并基于所述第二骨骼动画信息,生成所述第二目标模型的动画。
17.本发明第三方面提供了一种模型动画的生成设备,包括:存储器和至少一个处理器,所述存储器中存储有指令,所述存储器和所述至少一个处理器通过线路互连;所述至少一个处理器调用所述存储器中的所述指令,以使得所述模型动画的生成设备执行上述的模型动画的生成方法的各个步骤。
18.本发明的第四方面提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述的模型动画的生成方法的各个步骤。
19.上述模型动画的生成方法、装置、设备及存储介质,通过获取第一目标模型对应的第一蒙皮模型文件和第二目标模型对应的第二蒙皮模型文件;其中,第一蒙皮模型文件包括第一目标模型、第一骨骼以及第一目标模型和第一骨骼之间的对应关系,第二模型文件包括第二目标模型、第二骨骼以及第二目标模型和第二骨骼之间的对应关系,第一骨骼和第二骨骼为相同的骨骼;将第一目标模型和第一骨骼之间的对应关系存储为第一对应关系信息,将第二目标模型和第二骨骼之间的对应关系存储为第二对应关系信息;根据预存的动画关键帧数据,计算获得第一骨骼的第一骨骼动画信息;响应针对第二目标模型的动画驱动事件,根据第一对应关系信息、第二对应关系信息以及第一骨骼动画信息,计算获得第二骨骼的第二骨骼动画信息,并基于第二骨骼动画信息,生成第二目标模型的动画。本技术通过对应关系信息来记录模型与骨骼之间的关系,使得在多模型的动画制作时只需要计算一次骨骼信息即可,节约了大量的骨骼计算,避免了额外的性能开销,可以提升了数据处理效率和游戏的整体流畅度。
20.本发明的其他特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点在说明书、权利要求书以及附图中所特别指出的结构来实现和获得。
21.为使本发明的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。
附图说明
22.图1为本发明实施例中模型动画的生成方法的第一个实施例示意图;
23.图2为本发明实施例中模型动画的生成方法的第二个实施例示意图;
24.图3为本发明实施例中模型动画的生成方法的第三个实施例示意图;
25.图4为本发明实施例中生成骨骼关系信息的示意图;
26.图5为本发明实施例中游戏角色骨骼结构示意图;
27.图6为本发明实施例中游戏角色中的骨骼信息示意图;
28.图7为本发明实施例中预制文件的示意图;
29.图8为本发明实施例中模型动画的生成装置的一个实施例示意图;
30.图9为本发明实施例中模型动画的生成设备的一个实施例示意图。
具体实施方式
31.本发明实施例提供一种模型动画的生成方法、装置、设备及存储介质,通过利用相似或者相同的模型之间对骨骼的复用性,只保留一个骨骼信息,然后计算各模型与对应的骨骼的骨骼节点的对应关系信息,基于该对应关系信息来记录骨骼的相关信息,从而减少引擎在导入模型数据时对骨骼的计算量,实现骨骼信息的复用,避免了额外的性能开销,可以提升了数据处理效率和游戏的整体流畅度。
32.本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”、“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的实施例能够以除了在这里图示或描述的内容以外的顺序实施。此外,术语“包括”或“具有”及其任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
33.为便于理解,下面对本发明实施例的具体流程进行描述,请参阅图1,本发明实施例中模型动画的生成方法的第一个实施例包括:
34.101、获取第一目标模型对应的第一蒙皮模型文件和第二目标模型对应的第二蒙皮模型文件,第一蒙皮模型文件和第二蒙皮模型文件中存储有与目标模型对应的对应关系信息。
35.该步骤中,所述第一蒙皮模型文件包括所述第一目标模型、第一骨骼以及所述第一目标模型和所述第一骨骼之间的对应关系,所述第二模型文件包括所述第二目标模型、第二骨骼以及所述第二目标模型和所述第二骨骼之间的对应关系,所述第一骨骼和所述第二骨骼为相同的骨骼。
36.在本实施例中,所述第一蒙皮模型文件和第二蒙皮模型文件为通过dcc软件基于各目标模型的预置文件解析预先构建的用于针对目标模型动画制作而生成的动画文件。
37.即是将第一目标模型和第二目标模型输入至dcc软件中,通过dcc软件对两个目标模型的骨骼进行解析,以生成对应的骨骼结构,并建立两个目标模型与对应的骨骼结构之间的对应关系,并存储在同一个文件中,以供引擎进行读取并进行动画生成。
38.102、将第一目标模型和第一骨骼之间的对应关系存储为第一对应关系信息,将第
二目标模型和第二骨骼之间的对应关系存储为第二对应关系信息。
39.本实施例中,在通过dcc软件分别对第一目标模型和第二目标模型构建出对应的蒙皮模型文件后,基于蒙皮模型文件进行信息的简化处理,即是识别第一目标模型和第二目标模型的骨骼是否相同,优选的可以通过识别第一目标模型和第二目标模型的相似性来判断对蒙皮模型文件是否需要简化处理,若两个目标模型相似或者相同,则确定骨骼也相同,而骨骼相同则模型必然相似或者相同。
40.本实施例中,在存储所述第一对应关系信息和所述第二对应关系信息之后,将所述第二骨骼从所述第二蒙皮模型文件中删除。
41.即是当确定第一目标模型和第二目标模型为相似或者相同时,则提取两个目标模型对应的蒙皮模型文件,并提取两蒙皮模型文件中的对应关系和骨骼,然后删除两蒙皮模型文件中的其中一个的骨骼,然后将两者的对应关系存储为对应关系信息并更新至删除骨骼的蒙皮模型文件中,以得到新的蒙皮模型文件。例如:第一蒙皮模型文件为f1,第一目标模型为m1,第一骨骼为b1,第一目标模型和第一骨骼之间的对应关系为r1,第二蒙皮模型文件为f2,第二目标模型为m2,第二骨骼为b2,第二目标模型和第二骨骼之间的对应关系为r2,其中,第一骨骼和第二骨骼相同,第一目标模型与第二目标模型相同或者相似,调整后对应的蒙皮模型文件为f1=m1+b+r(r为m1与b的对应关系信息),f2=m1+m2+b+r1+r2(r1为m1与b的对应关系信息,r2是m2与b的对应关系信息),这两种都是符合规范的蒙皮模型文件结构,在导入引擎时,引擎即可根据模型m与骨骼b的关系生成r数据。
42.103、根据预存的动画关键帧数据,计算获得第一骨骼的第一骨骼动画信息。
43.本实施例中,在删除第二蒙皮模型文件中的第二骨骼后,采集第一目标模型的动画关键帧数据,基于该动画关键帧数据计算出第一目标模型的骨骼结构中的各骨骼节点在该动画中的形变,以得到第一骨骼动画信息。
44.104、响应针对第二目标模型的动画驱动事件,根据第一对应关系信息、第二对应关系信息以及第一骨骼动画信息,计算获得第二骨骼的第二骨骼动画信息,并基于第二骨骼动画信息,生成第二目标模型的动画。
45.本实施例中,在计算第二骨骼动画信息时,具体是通过响应针对所述第二目标模型的动画驱动事件,提取所述第一骨骼动画信息中的第一骨骼形变信息;基于所述第一对应关系信息和所述第二对应关系信息,将所述第一骨骼形变信息复用至所述第二骨骼上,获得所述第二骨骼的第二骨骼动画信息。
46.在实际应用中,对于上述提及到的第一对应关系信息和第二对应关系信息实际上是在将目标模型导入到dcc软件后生成的蒙皮模型文件,只是本技术从dcc软件输出的蒙皮模型文件中只有第一目标模型的蒙皮模型文件中存储储有骨骼的信息,其他与第一目标模型相同或者相似的目标模型对应的蒙皮模型文件均不在存储有骨骼的信息,只存储有目标模型和对应关系信息。
47.在以第一目标模型和第二目标模型为例,对生成第二目标模型的动画的过程进行说明:
48.在接收到生成第二目标模型的动画的触发操作时,即是确定虚拟角色模型后,游戏引擎会从导入的蒙皮模型文件中查询与虚拟角色模型匹配的骨骼和对应关系信息,即是从第一目标模型的蒙皮模型文件中获取第一目标模型的第一骨骼,以及从第一目标模型的
动画数据中获取第一骨骼的第一骨骼动画信息。
49.在本实施例中,该虚拟角色模型指的是游戏角色本身,也可以是使用与游戏角色相同的骨骼结构的模型,如服装模型等,对于一个游戏角色来说,其会适配有多套衣服,而衣服在游戏角色上的动态设置,则是基于角色的骨骼结构来实现动态的控制。
50.在实际应用中,查询时可以是从预设的文件库中查询,即是文件库存储有与第二目标模型相同或者相似的目标模型的相关信息,在确定了第二目标模型后,即是确定待生成骨骼动画的模型后,基于模型与角色之间的绑定关系或者是适配关系,从动画制作的文件库中匹配出对应的骨骼信息,即是基于绑定关系或者适配关系从文件库中确定该第二目标模型的类型,然后基于类型从文件库中继续查询对应的第一骨骼以及第一骨骼与第一目标模型相关的对应关系信息,第一目标模型与第二目标模型相同或者相似。
51.进一步的,该对应关系信息包括与第二目标模型相同或者相似的模型的骨骼和骨骼与模型的对应关系信息。
52.在得到对应关系信息和骨骼后,基于对应关系信息和骨骼计算出第一目标模型的骨骼动画信息,基于骨骼动画信息复用至第二目标模型上,得到对应的动画。
53.在本实施例中,基于第一目标模型的对应关系信息和第一骨骼计算出模型的骨骼动画后,利用第二目标模型的对应关系信息对计算出的第一目标模型的骨骼动画进行调整,得到目标骨骼信息,即是所述虚拟角色模型的骨骼信息,这里的调整可以理解为是删除骨骼节点或者调整骨骼节点,从而得到第二骨骼的第二骨骼动画信息。
54.基于第二骨骼动画信息对第二目标模型进行渲染,输出对应的动画。
55.本实施例中,根据第二骨骼动画信息,驱动模型发生变形,从而产生模型运动的效果。具体的,利用上述计算得到的骨骼动画,结合骨骼蒙皮信息(即各个骨骼关节点与模型顶点的对应关系信息),再次加权计算得到虚拟角色模型上各个顶点的变形信息,从而输出角色动画。
56.综上,根据预存的动画关键帧数据,计算获得第一骨骼的第一骨骼动画信息;响应针对第二目标模型的动画驱动事件,根据第一对应关系信息、第二对应关系信息以及第一骨骼动画信息,计算获得第二骨骼的第二骨骼动画信息,并基于第二骨骼动画信息,生成第二目标模型的动画。本方式中,通过对应关系信息和第一骨骼来计算出第二目标模型对应的骨骼动画信息,即是利用对应关系信息代替了模型的骨骼信息,以避免了模型的单独计算完整骨骼信息的流程,这样的信息记录,不仅减少了信息存储所占用的空间,并且从骨骼关系信息计算骨骼信息的计算量少,占用设备的性能资源也少,大大提升了游戏的流畅度。
57.参照图2-6,为本发明提供的模型动画的生成方法的第二个实施例,下面以同一游戏角色上的不同服装模型为例对上述提供的方法进行详细说明,该方法具体包括以下步骤:
58.201、获取角色的预制文件,并提取预制文件中各模型的骨骼信息。
59.该步骤中,通过获取角色的多细节层次结构,并解析所述多细节层次结构中的所有模型;解析各所述模型的骨骼根节点和骨骼子节点,基于所述骨骼根节点和所述骨骼子节点确定骨骼信息,即是确定骨骼结构。
60.202、确定各模型与对应的骨骼结构中骨骼节点的对应关系,并构建模型文件,其中,模型文件包括至少一个模型、至少一个对应关系和一个骨骼。
61.本实施例中,该预制文件可以理解为是针对角色设置的多细节层次结构,该结构中包含有与该角色相关的所有服装模型的骨骼节点形变控制信息,然后通过dcc软件对多细节层次结构进行处理,得到蒙皮模型文件,这里的蒙皮模型文件包括模型、对应关系和骨骼。
62.具体的,获取各角色模型,并提取各所述角色模型的骨骼;基于骨骼的相似度对各所述角色模型进行归类,并确定同一类别中角色模型与对应的骨骼的骨骼节点之间的映射关系;基于各所述角色模型和各所述对应关系构建模型文件。
63.如图5和6所示,图中的游戏角色的骨骼结构,其同时关联有两个骨骼,如图6中左边的lod低精度模型的骨骼(b1),右边的lod高精度模型的骨骼(b),对应的在预制文件中,设置有两层级模型的骨骼节点,在进行动画制作时,先根据动画曲线中存储的动画关键帧数据,插值计算出当前时刻整套骨骼中每个骨骼节点的仿射矩阵(包含位置、朝向以及缩放信息),这些矩阵在动画的不同时刻会形成不同的矩阵链。然后根据骨骼信息,驱动模型发生变形,从而产生模型运动的效果。这需要将上一步的计算结果,结合骨骼蒙皮信息(即各个骨骼关节点与模型顶点的对应关系信息),再次加权计算得到模型上各个顶点的变形信息。
64.为了便于导入和计算,本实施例通过使用骨骼与各个模型的对应关系r来记录动画曲线中动画关键帧数据的计算,这一对应关系,需要在dcc软件中制作,并随模型文件与骨骼一起导入。
65.203、获取第一目标模型对应的第一蒙皮模型文件和第二目标模型对应的第二蒙皮模型文件。
66.该步骤中,所述第一蒙皮模型文件包括所述第一目标模型、第一骨骼以及所述第一目标模型和所述第一骨骼之间的对应关系,所述第二模型文件包括所述第二目标模型、第二骨骼以及所述第二目标模型和所述第二骨骼之间的对应关系,所述第一骨骼和所述第二骨骼为相同的骨骼。
67.204、将第一目标模型和第一骨骼之间的对应关系存储为第一对应关系信息,将第二目标模型和第二骨骼之间的对应关系存储为第二对应关系信息。
68.该步骤中,通过提取解析各蒙皮模型文件后,对骨骼相同的目标模型的蒙皮模型文件中的骨骼进行删除,并调整对应关系,得到新的蒙皮模型文件,这时处理后的蒙皮模型文件的内容为f1=m1+b+r1,f2=m2+r2,相比于步骤203中的蒙皮模型文件,其f2中少了骨骼b。即是通过计算模型与骨骼之间的骨骼节点的动画形变信息,以生成骨骼数据的使用关键信息,例如骨骼节点和骨骼节点的形变等等,在实际动画制作时,通过对应关系信息来复用骨骼信息,从而直接跳转至蒙皮的处理。
69.在本实施例中,在将对应关系存储为对应关系信息时,具体根据不同的引擎需要进行数据格式的转换,即是确定当前使用的引擎类型,基于所述引擎类型确定对应关系信息的解析格式;将所述第一目标模型和所述第一骨骼之间的对应关系,以及所述第二目标模型和所述第二骨骼之间的对应关系,分别转换为与所述解析格式对应的有序数组,并存储,得到对应的第一对应关系信息和第二对应关系信息。
70.在实际应用中,在计算出对应关系信息后,将所有的对应关系信息r记录成数组,以unity为例,在unity中,r信息是由string数组(有序)来存储的,在导入时,unity会将多
维度的骨骼层次处理为一维信息存入各自模型资产的string数组,由于转换时的骨骼顺序与模型蒙皮信息有关,因此同样的骨骼结构,转换为string数组后,顺序不一定相同,但内容相同。内容相同的多维度骨骼被转换为一维信息,可能会出现不同的结果,如图4所示。
71.在实际应用中,如图3所示,上述构建模型文件的具体实现为:
72.首先,获取角色的prefab层级内容,prefab层级内容包括character和character_lod01两个模型的骨骼信息,其中character是高精度模型的根节点,character_lod01是低精度lod模型的根节点,两个模型各骨骼信息中都有bip001骨骼节点,并且两个bip001是各自模型所对应的骨骼根节点,其子物体包含了一整套骨骼。而character_skinmesh(m1)和character_skinmesh_lod1(m2)则分别为不同精度的角色模型,具体如图7所示。
73.基于图7中的结构,在构建模型文件,具体是结合character_lod01下的bip001骨骼节点(b1),以及character下的bip001骨骼节点(b),得到映射关系r1、r2并保存起来,完成上述步骤后,即可将character_lod01下的bip001骨骼节点(b1)删除,而相关数据r1、r2则已被编写的代码所保存。在游戏运行时,使用保存的r1、r2信息,结合当前动画的b信息,转换为b1应得的结果,再传递给character_lod01的蒙皮模型节点(m2)。由此,即实现了通过复用骨骼b的运动,同时驱动m1和m2两个不同模型的效果。由于b1的计算结果是通过b、r1、r2计算得到,而非单独计算,原本存在的b1相关骨骼计算就被节约下来,降低了游戏运行时的性能开销。
74.205、根据预存的动画关键帧数据,计算获得第一骨骼的第一骨骼动画信息。
75.206、响应针对第二目标模型的动画驱动事件,提取第一骨骼动画信息中的第一骨骼形变信息。
76.207、基于第一对应关系信息和第二对应关系信息,将第一骨骼形变信息复用至第二骨骼上,获得第二骨骼的第二骨骼动画信息。
77.208、基于第二骨骼动画信息,生成第二目标模型的动画。
78.具体的,基于所述第一骨骼形变信息和所述第一对应关系信息确定所述第二骨骼的骨骼结构,其中,所述骨骼结构由多个骨骼节点组成;
79.基于所述第二对应关系信息,计算出所述骨骼结构中各骨骼节点的形变信息,并基于所述形变信息和所述骨骼结构生成所述第二骨骼的第二骨骼动画信息。其中,基于所述第二对应关系信息,计算出所述骨骼结构中各骨骼节点的形变信息通过基于所述第二对应关系信息
,
对所述骨骼节点结构中各骨骼节点进行加权计算,得到形变信息。
80.例如,在文件中同时存储有两个相同或者相似的模型(m1,m2)的信息,即是在每个独立的文件中至少存放一个骨骼,例如f1=m1+b+r(r为m1与b的关系信息),f2=m1+m2+b+r1+r2(r1为m1与b的关系信息,r2是m2与b的关系信息),这两种都是符合规范的蒙皮模型文件结构,在导入引擎时,引擎即可根据模型m与骨骼b的关系生成r数据。
81.在实际应用中,在查询时,如果文件中没有包含骨骼b,就无法产生模型m与骨骼b的关系信息r,例如(f1=m1,f2=m1+m2),这样的文件结构导入的模型只能是静态模型,它无法根据动画发生变化。因此,为了兼顾文件内容的灵活与游戏性能,先按照通常的做法导入,再单独记录骨骼与模型之间的关系数据,最后将冗余的骨骼数据删除。
82.在本实施例中,在查询对应关系信息时,分别查询与服装模型的骨骼相似的的第一骨骼和第一目标模型的对应关系信息。
83.即是通过r1、r2将b转换为b1。基于b1进行后续的蒙皮处理,得到角色动画。
84.综上,通过将多个相同的骨骼转换为对应关系信息,基于对应关系信息来记录制作动画时骨骼的关键帧数据,在制作动画时,直接基于对应关系信息来计算骨骼和蒙皮处理,从而生成角色动画。基于这样的方式节约了大量的骨骼计算,避免了额外的性能开销,可以提升游戏流畅度。
85.上面对本发明实施例中模型动画的生成方法进行了描述,下面对本发明实施例中模型动画的生成装置进行描述,请参阅图8,本发明实施例中模型动画的生成装置一个实施例包括:
86.获取模块810,用于获取第一目标模型对应的第一蒙皮模型文件和第二目标模型对应的第二蒙皮模型文件;
87.其中,所述第一蒙皮模型文件包括所述第一目标模型、第一骨骼以及所述第一目标模型和所述第一骨骼之间的对应关系,所述第二模型文件包括所述第二目标模型、第二骨骼以及所述第二目标模型和所述第二骨骼之间的对应关系,所述第一骨骼和所述第二骨骼为相同的骨骼;
88.存储模块820,用于将所述第一目标模型和所述第一骨骼之间的对应关系存储为第一对应关系信息,将所述第二目标模型和所述第二骨骼之间的对应关系存储为第二对应关系信息;
89.计算模块830,用于根据预存的动画关键帧数据,计算获得所述第一骨骼的第一骨骼动画信息;
90.生成模块840,用于响应针对所述第二目标模型的动画驱动事件,根据所述第一对应关系信息、所述第二对应关系信息以及所述第一骨骼动画信息,计算获得所述第二骨骼的第二骨骼动画信息,并基于所述第二骨骼动画信息,生成所述第二目标模型的动画。
91.上述存储模块820还用于:
92.在存储所述第一对应关系信息和所述第二对应关系信息之后,将所述第二骨骼从所述第二蒙皮模型文件中删除。
93.上述所述第一目标模型和所述第二目标模型为结构相同或相似的模型。
94.上述生成模块840具体用于:
95.响应针对所述第二目标模型的动画驱动事件,提取所述第一骨骼动画信息中的第一骨骼形变信息;
96.基于所述第一对应关系信息和所述第二对应关系信息,将所述第一骨骼形变信息复用至所述第二骨骼上,获得所述第二骨骼的第二骨骼动画信息。
97.上述生成模块840具体用于:
98.基于所述第一骨骼形变信息和所述第一对应关系信息确定所述第二骨骼的骨骼结构,其中,所述骨骼结构由多个骨骼节点组成;
99.基于所述第二对应关系信息,计算出所述骨骼结构中各骨骼节点的形变信息,并基于所述形变信息和所述骨骼结构生成所述第二骨骼的第二骨骼动画信息。
100.上述生成模块840具体用于:
101.基于所述第二对应关系信息,对所述骨骼节点结构中各骨骼节点进行加权计算,得到形变信息。
102.上述存储模块820具体用于:
103.确定当前使用的引擎类型,基于所述引擎类型确定对应关系信息的解析格式;
104.将所述第一目标模型和所述第一骨骼之间的对应关系,以及所述第二目标模型和所述第二骨骼之间的对应关系,分别转换为与所述解析格式对应的有序数组,并存储,得到对应的第一对应关系信息和第二对应关系信息。
105.本发明实施例中,所述模型动画的生成装置运行上述模型动画的生成方法,以通过获取第一目标模型和第二目标模型对应的蒙皮模型文件,并将蒙皮模型文件中的各目标模型和对应骨骼之间的对应关系存储为对应关系信息;在生成模型动画时,根据预存的动画关键帧数据,计算获得第一骨骼的第一骨骼动画信息,根据第一对应关系信息、第二对应关系信息以及第一骨骼动画信息,计算获得第二骨骼的第二骨骼动画信息,以生成第二目标模型的动画。本技术通过对应关系信息来记录模型与骨骼之间的关系,使得在多模型的动画制作时只需要计算一次骨骼信息即可,节约了大量的骨骼计算,避免了额外的性能开销,可以提升了数据处理效率和游戏的整体流畅度。
106.本实施例还提供一种模型动画的生成设备,包括处理器和存储器,存储器存储有能够被处理器执行的机器可执行指令,处理器执行机器可执行指令以实现上述模型动画的生成方法。该模型动画的生成设备可以是服务器,也可以是终端设备。
107.参见图9所示,该模型动画的生成设备包括处理器900和存储器9101,该存储器901存储有能够被处理器900执行的机器可执行指令,该处理器900执行机器可执行指令以实现上述模型动画的生成方法。
108.进一步地,图9所示的模型动画的生成设备还包括总线902和通信接口903,处理器900、通信接口903和存储器901通过总线902连接。
109.其中,存储器901可能包含高速随机存取存储器(ram,random access memory),也可能还包括非不稳定的存储器(non-volatile memory),例如至少一个磁盘存储器。通过至少一个通信接口903(可以是有线或者无线)实现该系统网元与至少一个其他网元之间的通信连接,可以使用互联网,广域网,本地网,城域网等。总线902可以是isa总线、pci总线或eisa总线等。所述总线可以分为地址总线、数据总线、控制总线等。为便于表示,图9中仅用一个双向箭头表示,但并不表示仅有一根总线或一种类型的总线。
110.处理器900可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器900中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器900可以是通用处理器,包括中央处理器(central processing unit,简称cpu)、网络处理器(network processor,简称np)等;还可以是数字信号处理器(digital signal processor,简称dsp)、专用集成电路(application specific integrated circuit,简称asic)、现场可编程门阵列(field-programmable gate array,简称fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本发明实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本发明实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器901,处理器900读取存储器
901中的信息,结合其硬件完成如下步骤:
111.获取第一目标模型对应的第一蒙皮模型文件和第二目标模型对应的第二蒙皮模型文件;
112.其中,所述第一蒙皮模型文件包括所述第一目标模型、第一骨骼以及所述第一目标模型和所述第一骨骼之间的对应关系,所述第二模型文件包括所述第二目标模型、第二骨骼以及所述第二目标模型和所述第二骨骼之间的对应关系,所述第一骨骼和所述第二骨骼为相同的骨骼;
113.将所述第一目标模型和所述第一骨骼之间的对应关系存储为第一对应关系信息,将所述第二目标模型和所述第二骨骼之间的对应关系存储为第二对应关系信息;
114.根据预存的动画关键帧数据,计算获得所述第一骨骼的第一骨骼动画信息;
115.响应针对所述第二目标模型的动画驱动事件,根据所述第一对应关系信息、所述第二对应关系信息以及所述第一骨骼动画信息,计算获得所述第二骨骼的第二骨骼动画信息,并基于所述第二骨骼动画信息,生成所述第二目标模型的动画。
116.上述模型动画的生成方法还包括:
117.在存储所述第一对应关系信息和所述第二对应关系信息之后,将所述第二骨骼从所述第二蒙皮模型文件中删除。
118.上述第一目标模型和所述第二目标模型为结构相同或相似的模型。
119.上述响应针对所述第二目标模型的动画驱动事件,根据所述第一对应关系信息、所述第二对应关系信息以及所述第一骨骼动画信息,计算获得所述第二骨骼的第二骨骼动画信息,包括:
120.响应针对所述第二目标模型的动画驱动事件,提取所述第一骨骼动画信息中的第一骨骼形变信息;
121.基于所述第一对应关系信息和所述第二对应关系信息,将所述第一骨骼形变信息复用至所述第二骨骼上,获得所述第二骨骼的第二骨骼动画信息。
122.上述基于所述第一对应关系信息和所述第二对应关系信息,将所述第一骨骼形变信息复用至所述第二骨骼上,获得所述第二骨骼的第二骨骼动画信息,包括:
123.基于所述第一骨骼形变信息和所述第一对应关系信息确定所述第二骨骼的骨骼结构,其中,所述骨骼结构由多个骨骼节点组成;
124.基于所述第二对应关系信息,计算出所述骨骼结构中各骨骼节点的形变信息,并基于所述形变信息和所述骨骼结构生成所述第二骨骼的第二骨骼动画信息。
125.上述基于所述第二对应关系信息,计算出所述骨骼结构中各骨骼节点的形变信息,包括:
126.基于所述第二对应关系信息,对所述骨骼节点结构中各骨骼节点进行加权计算,得到形变信息。
127.上述将所述第一目标模型和所述第一骨骼之间的对应关系存储为第一对应关系信息,将所述第二目标模型和所述第二骨骼之间的对应关系存储为第二对应关系信息,包括:
128.确定当前使用的引擎类型,基于所述引擎类型确定对应关系信息的解析格式;
129.将所述第一目标模型和所述第一骨骼之间的对应关系,以及所述第二目标模型和
所述第二骨骼之间的对应关系,分别转换为与所述解析格式对应的有序数组,并存储,得到对应的第一对应关系信息和第二对应关系信息。
130.综上,获取第一目标模型和第二目标模型对应的蒙皮模型文件,并将蒙皮模型文件中的各目标模型和对应骨骼之间的对应关系存储为对应关系信息;在生成模型动画时,根据预存的动画关键帧数据,计算获得第一骨骼的第一骨骼动画信息,根据第一对应关系信息、第二对应关系信息以及第一骨骼动画信息,计算获得第二骨骼的第二骨骼动画信息,以生成第二目标模型的动画。本方式中,通过对应关系信息和骨骼来计算出第二目标模型的骨骼相关信息,即是利用对应关系信息代替了模型的骨骼,以避免了模型的单独计算完整骨骼信息的流程,这样的信息记录,不仅减少了信息存储所占用的空间,并且从对应关系信息计算骨骼信息的计算量少,占用设备的性能资源也少,大大提升了游戏的流畅度。
131.本实施例还提供一种机器可读存储介质,机器可读存储介质存储有机器可执行指令,机器可执行指令在被处理器调用和执行时,机器可执行指令促使处理器实现如下步骤:
132.获取第一目标模型对应的第一蒙皮模型文件和第二目标模型对应的第二蒙皮模型文件;
133.其中,所述第一蒙皮模型文件包括所述第一目标模型、第一骨骼以及所述第一目标模型和所述第一骨骼之间的对应关系,所述第二模型文件包括所述第二目标模型、第二骨骼以及所述第二目标模型和所述第二骨骼之间的对应关系,所述第一骨骼和所述第二骨骼为相同的骨骼;
134.将所述第一目标模型和所述第一骨骼之间的对应关系存储为第一对应关系信息,将所述第二目标模型和所述第二骨骼之间的对应关系存储为第二对应关系信息;
135.根据预存的动画关键帧数据,计算获得所述第一骨骼的第一骨骼动画信息;
136.响应针对所述第二目标模型的动画驱动事件,根据所述第一对应关系信息、所述第二对应关系信息以及所述第一骨骼动画信息,计算获得所述第二骨骼的第二骨骼动画信息,并基于所述第二骨骼动画信息,生成所述第二目标模型的动画。
137.上述模型动画的生成方法还包括:
138.在存储所述第一对应关系信息和所述第二对应关系信息之后,将所述第二骨骼从所述第二蒙皮模型文件中删除。
139.上述第一目标模型和所述第二目标模型为结构相同或相似的模型。
140.上述响应针对所述第二目标模型的动画驱动事件,根据所述第一对应关系信息、所述第二对应关系信息以及所述第一骨骼动画信息,计算获得所述第二骨骼的第二骨骼动画信息,包括:
141.响应针对所述第二目标模型的动画驱动事件,提取所述第一骨骼动画信息中的第一骨骼形变信息;
142.基于所述第一对应关系信息和所述第二对应关系信息,将所述第一骨骼形变信息复用至所述第二骨骼上,获得所述第二骨骼的第二骨骼动画信息。
143.上述基于所述第一对应关系信息和所述第二对应关系信息,将所述第一骨骼形变信息复用至所述第二骨骼上,获得所述第二骨骼的第二骨骼动画信息,包括:
144.基于所述第一骨骼形变信息和所述第一对应关系信息确定所述第二骨骼的骨骼结构,其中,所述骨骼结构由多个骨骼节点组成;
145.基于所述第二对应关系信息,计算出所述骨骼结构中各骨骼节点的形变信息,并基于所述形变信息和所述骨骼结构生成所述第二骨骼的第二骨骼动画信息。
146.上述基于所述第二对应关系信息,计算出所述骨骼结构中各骨骼节点的形变信息,包括:
147.基于所述第二对应关系信息,对所述骨骼节点结构中各骨骼节点进行加权计算,得到形变信息。
148.上述将所述第一目标模型和所述第一骨骼之间的对应关系存储为第一对应关系信息,将所述第二目标模型和所述第二骨骼之间的对应关系存储为第二对应关系信息,包括:
149.确定当前使用的引擎类型,基于所述引擎类型确定对应关系信息的解析格式;
150.将所述第一目标模型和所述第一骨骼之间的对应关系,以及所述第二目标模型和所述第二骨骼之间的对应关系,分别转换为与所述解析格式对应的有序数组,并存储,得到对应的第一对应关系信息和第二对应关系信息。
151.综上,通过利用相似或者相同的模型之间对骨骼的复用性,只保留一个骨骼信息,然后计算各模型与对应的骨骼的骨骼节点关系信息,来记录骨骼的相关信息,从而减少引擎在导入模型数据时对骨骼的计算量,实现骨骼信息的复用,避免了额外的性能开销,可以提升了数据处理效率和游戏的整体流畅度。
152.本发明实施例所提供的模型动画的生成方法及相关设备的计算机程序产品,包括存储了程序代码的计算机可读存储介质,所述程序代码包括的指令可用于执行前面方法实施例中所述的方法,具体实现可参见方法实施例,在此不再赘述。
153.所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统和装置的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
154.另外,在本发明实施例的描述中,除非另有明确的规定和限定,术语“安装”、“相连”、“连接”应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通。对于本领域技术人员而言,可以具体情况理解上述术语在本发明中的具体含义。
155.所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-only memory)、随机存取存储器(ram,random access memory)、磁碟或者光盘等各种可以存储程序代码的介质。
156.在本发明的描述中,需要说明的是,术语“中心”、“上”、“下”、“左”、“右”、“竖直”、“水平”、“内”、“外”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。此外,术语“第一”、“第二”、“第三”仅用于描述目的,而不能理解为指示或暗示相对重要性。
157.最后应说明的是:以上实施例,仅为本发明的具体实施方式,用以说明本发明的技术方案,而非对其限制,本发明的保护范围并不局限于此,尽管参照前述实施例对本发明进行了详细的说明,本领域技术人员应当理解:任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,其依然可以对前述实施例所记载的技术方案进行修改或可轻易想到变化,或者对其中部分技术特征进行等同替换;而这些修改、变化或者替换,并不使相应技术方案的本质脱离本发明实施例技术方案的精神和范围,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。
技术特征:
1.一种模型动画的生成方法,其特征在于,所述模型动画的生成方法包括:获取第一目标模型对应的第一蒙皮模型文件和第二目标模型对应的第二蒙皮模型文件;其中,所述第一蒙皮模型文件包括所述第一目标模型、第一骨骼以及所述第一目标模型和所述第一骨骼之间的对应关系,所述第二模型文件包括所述第二目标模型、第二骨骼以及所述第二目标模型和所述第二骨骼之间的对应关系,所述第一骨骼和所述第二骨骼为相同的骨骼;将所述第一目标模型和所述第一骨骼之间的对应关系存储为第一对应关系信息,将所述第二目标模型和所述第二骨骼之间的对应关系存储为第二对应关系信息;根据预存的动画关键帧数据,计算获得所述第一骨骼的第一骨骼动画信息;响应针对所述第二目标模型的动画驱动事件,根据所述第一对应关系信息、所述第二对应关系信息以及所述第一骨骼动画信息,计算获得所述第二骨骼的第二骨骼动画信息,并基于所述第二骨骼动画信息,生成所述第二目标模型的动画。2.根据权利要求1所述的模型动画的生成方法,其特征在于,所述模型动画的生成方法还包括:在存储所述第一对应关系信息和所述第二对应关系信息之后,将所述第二骨骼从所述第二蒙皮模型文件中删除。3.根据权利要求1所述的模型动画的生成方法,其特征在于,所述第一目标模型和所述第二目标模型为结构相同或相似的模型。4.根据权利要求1所述的模型动画的生成方法,其特征在于,所述响应针对所述第二目标模型的动画驱动事件,根据所述第一对应关系信息、所述第二对应关系信息以及所述第一骨骼动画信息,计算获得所述第二骨骼的第二骨骼动画信息,包括:响应针对所述第二目标模型的动画驱动事件,提取所述第一骨骼动画信息中的第一骨骼形变信息;基于所述第一对应关系信息和所述第二对应关系信息,将所述第一骨骼形变信息复用至所述第二骨骼上,获得所述第二骨骼的第二骨骼动画信息。5.根据权利要求4所述的模型动画的生成方法,其特征在于,所述基于所述第一对应关系信息和所述第二对应关系信息,将所述第一骨骼形变信息复用至所述第二骨骼上,获得所述第二骨骼的第二骨骼动画信息,包括:基于所述第一骨骼形变信息和所述第一对应关系信息确定所述第二骨骼的骨骼结构,其中,所述骨骼结构由多个骨骼节点组成;基于所述第二对应关系信息,计算出所述骨骼结构中各骨骼节点的形变信息,并基于所述形变信息和所述骨骼结构生成所述第二骨骼的第二骨骼动画信息。6.根据权利要求5所述的模型动画的生成方法,其特征在于,所述基于所述第二对应关系信息,计算出所述骨骼结构中各骨骼节点的形变信息,包括:基于所述第二对应关系信息
,
对所述骨骼节点结构中各骨骼节点进行加权计算,得到形变信息。7.根据权利要求1-6中任一项所述的模型动画的生成方法,其特征在于,所述将所述第一目标模型和所述第一骨骼之间的对应关系存储为第一对应关系信息,将所述第二目标模
型和所述第二骨骼之间的对应关系存储为第二对应关系信息,包括:确定当前使用的引擎类型,基于所述引擎类型确定对应关系信息的解析格式;将所述第一目标模型和所述第一骨骼之间的对应关系,以及所述第二目标模型和所述第二骨骼之间的对应关系,分别转换为与所述解析格式对应的有序数组,并存储,得到对应的第一对应关系信息和第二对应关系信息。8.一种模型动画的生成装置,其特征在于,所述模型动画的生成装置包括:获取模块,用于获取第一目标模型对应的第一蒙皮模型文件和第二目标模型对应的第二蒙皮模型文件;其中,所述第一蒙皮模型文件包括所述第一目标模型、第一骨骼以及所述第一目标模型和所述第一骨骼之间的对应关系,所述第二模型文件包括所述第二目标模型、第二骨骼以及所述第二目标模型和所述第二骨骼之间的对应关系,所述第一骨骼和所述第二骨骼为相同的骨骼;存储模块,用于将所述第一目标模型和所述第一骨骼之间的对应关系存储为第一对应关系信息,将所述第二目标模型和所述第二骨骼之间的对应关系存储为第二对应关系信息;计算模块,用于根据预存的动画关键帧数据,计算获得所述第一骨骼的第一骨骼动画信息;生成模块,用于响应针对所述第二目标模型的动画驱动事件,根据所述第一对应关系信息、所述第二对应关系信息以及所述第一骨骼动画信息,计算获得所述第二骨骼的第二骨骼动画信息,并基于所述第二骨骼动画信息,生成所述第二目标模型的动画。9.一种模型动画的生成设备,其特征在于,所述模型动画的生成设备包括:存储器和至少一个处理器,所述存储器中存储有指令;所述至少一个处理器调用所述存储器中的所述指令,以使得所述模型动画的生成设备执行如权利要求1-7中任一项所述的模型动画的生成方法的各个步骤。10.一种计算机可读存储介质,所述计算机可读存储介质上存储有指令,其特征在于,所述指令被处理器执行时实现如权利要求1-7中任一项所述模型动画的生成方法的各个步骤。
技术总结
本发明提供了一种模型动画的生成方法、装置、设备及存储介质,该方法通过获取第一目标模型和第二目标模型对应的蒙皮模型文件,并将蒙皮模型文件中的各目标模型和对应骨骼之间的对应关系存储为对应关系信息;在生成模型动画时,根据预存的动画关键帧数据,计算获得第一骨骼的第一骨骼动画信息,根据第一对应关系信息、第二对应关系信息以及第一骨骼动画信息,计算获得第二骨骼的第二骨骼动画信息,以生成第二目标模型的动画。本申请通过对应关系信息来记录模型与骨骼之间的关系,使得在多模型的动画制作时只需要计算一次骨骼信息即可,节约了大量的骨骼计算,避免了额外的性能开销,可以提升了数据处理效率和游戏的整体流畅度。度。度。
技术研发人员:陈志超 贺一慧
受保护的技术使用者:网易(杭州)网络有限公司
技术研发日:2023.04.10
技术公布日:2023/8/24
版权声明
本文仅代表作者观点,不代表航空之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)
飞行汽车 https://www.autovtol.com/
