角色绘制方法、装置、设备及计算机可读存储介质与流程

文档序号:19421689发布日期:2019-12-14 01:34阅读:167来源:国知局
角色绘制方法、装置、设备及计算机可读存储介质与流程
本公开涉及画面渲染技术,尤其涉及一种角色绘制方法、装置、设备及计算机可读存储介质。
背景技术
:目前,为了提高游戏中角色的动态效果,很多游戏软件中都通过骨骼模型绘制游戏角色。在需要批量绘制角色时,可以使用一个骨骼模型批量实现。这种方式中,模拟出的角色行为和步调都是相同的。还可以使用骨骼模型正常模型,这种方式中,每个角色都是一个独立的骨骼模型,从而实现不同角色能够有独立的显示效果。但是,若采用同一个骨骼进行批量绘制角色,则会导致绘制后的角色行为相同,这种实现方式的显示效果不好。若采用多个骨骼模型批量绘制,则性能开销较大,当需要绘制角色较多时,对设备性能需求较大。技术实现要素:本公开提供一种角色绘制方法、装置、设备及计算机可读存储介质,以解决现有技术中在批量绘制角色时性能开销过大的问题。本公开的第一个方面是提供一种角色绘制方法,包括:获取画面中播放的模型动画的帧标识;根据所述模型动画的帧标识获取模型对应的预设骨骼矩阵集合;根据所述预设骨骼矩阵集合、所述模型的静态贴图绘制所述模型对应的模型角色。本公开的另一个方面是提供一种角色绘制装置,包括:帧标识获取模块,用于获取画面中播放的模型动画的帧标识;矩阵获取模块,根据所述模型动画的帧标识获取模型对应的预设骨骼矩阵集合;绘制模块,用于根据所述预设骨骼矩阵集合、所述模型的静态贴图绘制所述模型对应的模型角色。本公开的又一个方面是提供一种角色绘制设备,包括:存储器;处理器;以及计算机程序;其中,所述计算机程序存储在所述存储器中,并配置为由所述处理器执行以实现如上述第一方面所述的角色绘制方法。本公开的又一个方面是提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行以实现如上述第一方面所述的角色绘制方法。本公开提供的角色绘制方法、装置、设备及计算机可读存储介质的技术效果是:本公开提供的角色绘制方法、装置、设备及计算机可读存储介质,包括:获取画面中播放的模型动画的帧标识;根据模型动画的帧标识获取模型对应的预设骨骼矩阵集合;根据预设骨骼矩阵集合、模型的静态贴图绘制模型对应的模型角色。本公开提供的方法、装置、设备及计算机可读存储介质,通过将模型动画分割为多个画面帧,并预先存储每帧画面模型对应的预设骨骼矩阵集合,从而可以根据当前需要播放的帧标识,获取模型对应的预设骨骼矩阵集合,并直接使用获取的矩阵集合绘制模型对应的角色,无需实时计算模型的骨骼状态,再基于计算结果绘制模型对应的角色,从而能够降低角色绘制过程中的性能开销。附图说明图1为本发明一示例性实施例示出的角色绘制方法的流程图;图2为本发明另一示例性实施例示出的角色绘制方法的流程图;图3为本发明一示例性实施例示出的角色绘制装置的结构图;图4为本发明另一示例性实施例示出的角色绘制装置的结构图;图5为本发明一示例性实施例示出的角色绘制设备的结构图。具体实施方式目前,很多游戏软件都通过骨骼模型绘制游戏中的角色。一般情况下,游戏角色还可以有对应的蒙皮,蒙皮中包括多个顶点,这些顶点可以受到骨骼模型中骨骼的影响。为了实现游戏中每个角色都能独立行动,可以针对每个角色都设置一个骨骼模型。骨骼模型具有互相连接的“骨骼”组成的骨架结构,通过改变骨骼的朝向和位置来为模型生成动画。若需要绘制相同形象的角色,且使这些角色间的行为互不干扰,现有技术中需要设置每个角色对应的骨骼模型,并对其分别进行绘制,这就导致设备性能开销较大的问题。本发明实施例提供的方案,预先设置有一模型每帧动画对应的骨骼矩阵集合,在绘制该模型对应的角色时,可以直接根据当前播放的模型帧标识,直接获取对应的骨骼矩阵集合,并基于该骨骼矩阵集合对角色进行渲染,从而对其进行绘制。例如,需要绘制两个相同的角色,但是这两个角色的动作不一致,此时,可以直接根据角色模型对应的帧标识,获取不同的骨骼矩阵集合,并进行角色绘制。无需现有技术中,为了实现各个角色之间的行为互相不干扰,需要针对每个角色设置对应的模型,在绘制时,需要根据每一根骨骼在父骨骼坐标系中的变换矩阵,可以实时计算子骨骼的位置和朝向,并根据计算结果绘制角色,进而导致设备开销较大的问题。图1为本发明一示例性实施例示出的角色绘制方法的流程图。如图1所示,本实施例提供的角色绘制方法包括:步骤101,获取画面中播放的模型动画的帧标识。其中,本实施例提供的方法可以由具备计算功能的电子设备执行,例如手机、计算机等。本实施例提供的方法可以应用在需要绘制动态模型的应用场景中,例如需要绘制游戏角色,或者绘制三维动画中的角色等。具体的,本实施例提供的方法中,将一模型动画分割为多帧画面。例如,一角色被攻击动画共持续3秒,每秒可以包括30帧画面,则该角色被攻击对应的动画共可以包括90帧画面。进一步的,可以针对每帧模型动画设置帧标识,角色被攻击动画包括90帧,则各个画面的帧标识可以是1-90。实际应用时,可以根据当前播放的信息,获取画面中模型的帧标识。例如,一角色被攻击后,需要播放该角色的模型被攻击的动画,因此,获取画面中该模型的帧标识为1。可以根据该帧标识对模型进行渲染,从而绘制角色。其中,还可以继续根据模型动画获取帧标识,例如,在绘制完第一帧画面中的角色后,需要继续绘制第二帧画面中的角色,因此,可以获取需要播放的模型动画的第二帧画面的标识。具体的,电子设备可以响应用户的操作获取模型动画的帧标识。例如,用户可以操作电子设备,控制一游戏角色行走,则电子设备可以获取该角色模型对应的行走动画的帧标识,如标识1,并基于该标识对模型进行渲染,然后继续获取行走动画的其他帧标识;若在行走过程中,又控制该角色跳起,则电子设备可以基于这一操作获取角色对应的跳动动画的帧标识。进一步的,若需要在画面中展现多个角色的相同动画效果,但是角色间的动作不同步,则可以获取每个角色对应的模型动画的帧标识,从根据该帧标识渲染出不同的动作效果。例如,需要显示多个士兵被攻击的画面,这些士兵的展示效果可以是同一个模型动画。此时,可以获取每个士兵对应的模型动画的帧标识,例如在同一时刻,第一个士兵的模型动画帧标识是2,第二个士兵的模型动画帧标识是5等。实际应用时,可以根据展示效果需要设置相同时刻不同士兵对应的模型动画的帧标识,例如,根据技能施放到各个士兵上的角度、时机等设置。步骤102,根据模型动画的帧标识获取模型对应的预设骨骼矩阵集合。实际应用时,本实施例提供的方法设置有模型对应的多个预设骨骼矩阵集合,预设骨骼矩阵集合中包括模型中每个骨骼的矩阵,基于这些矩阵,能够得到对应的模型动画在帧标识对应的画面中,模型的骨骼状态。其中,例如一模型具有b根骨骼,那么在一帧画面中,就可以存储b个骨骼矩阵,分别对应于b根骨骼。若该模型对应的一模型动画持续a秒,每秒包括c帧画面,则可以共存储a*b*c个矩阵,当需要对画面进行渲染时,可以直接获取当前需要播放的模型动画的帧标识,并获取相应的预设骨骼矩阵集合。现有技术中,实现角色动作的方案是实时计算角色的骨骼模型,具体根据模型中父骨骼的状态计算子骨骼状态。这就导致实现动画效果时,需要大量的计算模型的骨骼状态。而本实施例提供的方法中,将模型动画切分为多个帧画面,并确定每个帧画面对应的骨骼矩阵集合,从而在播放模型动画时,可以直接对应的预设骨骼矩阵集合,无需再进行骨骼状态的计算。此外,当需要批量绘制角色时,若希望这些角色之间的动作互不干扰,则需要绘制大量的角色模型,并对每个角色都进行骨骼状态计算的步骤,这就导致设备性能开销过的问题。例如,当需要绘制1000个士兵动作的情况,若针对每个士兵都设置一骨骼模型,并进行骨骼状态计算,很容易引起由于性能需求大造成设备无法正常运行的情况。而本实施例提供的方法,则可以针对每个角色的状态获取相应的模型动画帧标识,并获取对应的预设骨骼矩阵集合,能够避免计算骨骼状态引起的性能开销大的问题。步骤103,根据预设骨骼矩阵集合、模型的静态贴图绘制模型对应的模型角色。其中,模型的静态贴图与预设骨骼矩阵集合关联,可以通过预设骨骼矩阵集合确定静态贴图中各顶点的位置,进而根据顶点位置对画面进行渲染,使得画面达到动起来的效果。具体的,静态贴图可以认为是模型角色的皮肤,其附着在模型的骨骼之上,能够规定角色的外观。可以关联静态贴图中每个顶点与骨骼,从而能够通过骨骼的状态确定顶点位置。进一步的,每个顶点可以受到至少一个骨骼的影响,也可以受到多个骨骼的影响,例如,一个顶点p可以受到3根骨骼的影响,此时,可以认为顶点p的位置与骨骼a、b、c关联。实际应用时,还可以设置顶点对应的关联骨骼权重值。例如,顶点p的关联骨骼a、b、c的权重值分别是0.5、0.3、0.2,从而结合骨骼状态以及权重值共同确定顶点p的位置。其中,确定出顶点位置后,可以基于顶点位置对静态贴图进行渲染,使得画面动起来,即角色能够根据预设骨骼矩阵集合运动。本实施例提供的方法用于绘制角色,该方法由设置有本实施例提供的方法的设备执行,该设备通常以硬件和/或软件的方式来实现。本实施例提供的角色绘制方法,包括:获取画面中播放的模型动画的帧标识;根据模型动画的帧标识获取模型对应的预设骨骼矩阵集合;根据预设骨骼矩阵集合、模型的静态贴图绘制模型对应的模型角色。本实施例提供的方法,通过将模型动画分割为多个画面帧,并预先存储每帧画面模型对应的预设骨骼矩阵集合,从而可以根据当前需要播放的帧标识,获取模型对应的预设骨骼矩阵集合,并直接使用获取的矩阵集合绘制模型对应的角色,无需实时计算模型的骨骼状态,再基于计算结果绘制模型对应的角色,从而能够降低角色绘制过程中的性能开销。图2为本发明另一示例性实施例示出的角色绘制方法的流程图。如图2所示,本实施例提供的角色绘制方法,包括:步骤201,根据模型动画确定模型的帧标识对应的预设骨骼矩阵集合,其中,预设骨骼矩阵集合包括模型中每个骨骼标识对应的骨骼矩阵。其中,本实施例提供的方法,预先对模型动画进行分帧,得到每个帧画面,并确定帧画面对应的预设骨骼矩阵集合。例如,可以将一个模型动画分为90帧画面,比如一角色行走时的动画可以被分为90个帧画面。若角色具有10个骨骼,则每帧画面都可以确定10个骨骼矩阵。其中,预设骨骼矩阵集合包括模型中每个骨骼标识对应的骨骼矩阵。模型中的每个骨骼还设置有标识,例如id1-id10,分别代表模型中的10根骨骼。在每个预设骨骼矩阵集合中,即每帧画面对应的预设骨骼矩阵集合中,都包括每个骨骼标识对应的骨骼矩阵。例如,帧标识为1时,预设骨骼矩阵集合中包括id1-id10这十根骨骼对应的矩阵,帧标识为2时,预设骨骼矩阵集合中也包括id1-id10这十根骨骼对应的矩阵。步骤202,确定静态贴图中各顶点关联的骨骼标识以及所述骨骼标识对应的骨骼对顶点产生影响的权重值。具体的,骨骼矩阵用于用来对静态贴图中顶点做位移变换,具体一个顶点位置乘以一个矩阵,能够得到新的顶点位置。因此,可以预先确定每个顶点关联的骨骼标识,以及所述骨骼标识对应的骨骼对顶点产生影响的权重值。从而可以根据对顶点产生影响的骨骼的矩阵,确定顶点的新位置。例如,静态贴图中的顶点p,其受到骨骼id1、id2、id3影响,权重值分别是0.5、0.3、0.2。进一步的,对于同一顶点来说,影响其位置的各个骨骼标识的权重值之和为1。实际应用时,可以将与一顶点关联的骨骼标识,及其权重值存储在贴图中。即一个顶点对应于一组骨骼标识u,每个骨骼标识具有对应的权重值v。例如,一顶点p具有如下表所述的关联信息:骨骼标识权重值id10.5id20.3id30.2步骤201、202的执行时序不做限制。步骤203,获取画面中播放的模型动画的帧标识。步骤203与步骤101的具体原理和实现方式类似,此处不再赘述。步骤204,根据模型动画的帧标识获取模型中每个骨骼标识对应的预设骨骼矩阵。实际应用时,在步骤201中,可以存储模型动画中一帧画面对应的预设骨骼矩阵集合,并且将每个矩阵集合与对应的帧标识关联,从而能够根据帧标识获取对应的预设骨骼矩阵集合。其中,电子设备具体可以获取帧标识对应的预设骨骼矩阵集合中包括的每个骨骼矩阵,这些骨骼矩阵具有骨骼标识。且这些骨骼矩阵属于需要展示的角色模型。例如,模型中包括骨骼id1-id10,则可以根据帧标识获取包括id1-id10这十根骨骼对应的矩阵。步骤205,在预设骨骼矩阵集合中,根据模型的静态贴图中每个顶点对应的关联骨骼标识获取每个顶点的关联骨骼矩阵,并获取关联骨骼标识对顶点产生影响的权重值。其中,在步骤204中可以获取每个骨骼标识对应的预设骨骼矩阵,进而得到预设骨骼矩阵集合。具体的,在步骤202中,预先设置有静态贴图中每个顶点关联的骨骼标识,这些骨骼标识对应的骨骼会对其关联的顶点产生影响,使得顶点位置发生改变。因此,在绘制角色时,可以获取静态贴图中每个顶点的关联骨骼标识,并根据骨骼标识确定对应的关联骨骼矩阵。例如,一顶点p的关联骨骼标识为id1、id2、id3,则可以获取id1、id2、id3对应的关联骨骼矩阵。进一步的,由于一顶点在同时受到多个骨骼影响时,为了能够更准确的确定顶点位置,还可以获取骨骼对顶点产生影响的权重值。例如,还可以分别获取id1、id2、id3对顶点p产生影响的权重值,0.5、0.3、0.2。步骤206,根据关联骨骼矩阵、权重值确定顶点的当前位置,并根据当前位置绘制画面中对应的模型角色。其中,静态贴图中的顶点是根据模型对应的骨骼模型预先设置的。可以使用程序工具将骨骼模型的顶点位置等信息提取出来,并存在对应的静态模型中。具体可以如步骤202所记载的,可以记录静态模型中的影响各顶点位置的预设骨骼标识。实际应用时,可以根据一个顶点的关联骨骼矩阵,以及该关联骨骼矩阵对顶点产生影响的权重值,确定顶点的当前位置。其中,顶点还具有一预设位置,该预设位置可以是初始位置,还可以是需要确定的当前位置的上一个位置,例如,预设位置可以是获取的帧标识对应的上一帧画面中顶点的位置。具体的,可以通过下式确定顶点的当前位置:p=p0*id1*v1+p0*id2*v2..+p0*idx*vx其中,p是需要确定的当前位置,id是对顶点产生影响的骨骼的标识,p0是顶点的预设位置,v是骨骼id对顶点产生影响的权重值。具体的,可以根据顶点在帧标识对应的画面中的当前位置,对贴图进行渲染,从而实现需要的画面效果。本实施例提供的方案可以应用在同时绘制多个角色的场景中,多个角色可以使用同一个骨骼模型,从而避免为了实现多个角色之间动作不干扰,需要设置多个角色对应的骨骼模型,并需要对每个骨骼模型进行状态计算,导致性能开销较大的问题。例如,若游戏界面中设置有1000个站立的士兵,这些士兵在被攻击时,界面中可以显示士兵被攻击的动画。此时,可以针对每个士兵获取相应的受攻击模型动画的帧标识,例如前排士兵先受到攻击,则可以根据帧标识1绘制前排士兵,而未受到攻击的士兵继续保持站立。针对前排士兵,可以随着时间获取其他帧标识,并对其进行绘制。玩家继续攻击士兵,导致第二排士兵受到攻击,此时,则可以根据帧标识1绘制前第二排士兵,而针对前排士兵,则可以继续获取其他帧标识对角色进行绘制,例如,针对第一排士兵已经绘制了8帧受攻击画面,则可以根据帧标识9继续对其进行渲染,此时,可能根据帧标识1对第二排士兵进行渲染,即角色间的行为互不干扰。图3为本发明一示例性实施例示出的角色绘制装置的结构图。如图3所示,本实施例提供的角色绘制装置,包括:帧标识获取模块31,用于获取画面中播放的模型动画的帧标识;矩阵获取模块32,根据所述模型动画的帧标识获取模型对应的预设骨骼矩阵集合;绘制模块33,用于根据所述预设骨骼矩阵集合、所述模型的静态贴图绘制所述模型对应的模型角色。本实施例提供的角色绘制装置,包括:帧标识获取模块,用于获取画面中播放的模型动画的帧标识;矩阵获取模块,根据模型动画的帧标识获取模型对应的预设骨骼矩阵集合;绘制模块,用于根据预设骨骼矩阵集合、模型的静态贴图绘制模型对应的模型角色。本实施例提供的装置,通过将模型动画分割为多个画面帧,并预先存储每帧画面模型对应的预设骨骼矩阵集合,从而可以根据当前需要播放的帧标识,获取模型对应的预设骨骼矩阵集合,并直接使用获取的矩阵集合绘制模型对应的角色,无需实时计算模型的骨骼状态,再基于计算结果绘制模型对应的角色,从而能够降低角色绘制过程中的性能开销。本实施例提供的角色绘制装置的具体原理和实现方式均与图1所示的实施例类似,此处不再赘述。图4为本发明另一示例性实施例示出的角色绘制装置的结构图。如图4所示,在上述实施例的基础上,本实施例提供的角色绘制装置,可选的,所述矩阵获取模块32具体用于:根据所述模型动画的帧标识获取所述模型中每个骨骼标识对应的骨骼矩阵。可选的,所述装置还包括第一确定模块34,用于:根据所述模型动画确定所述模型的帧标识对应的所述预设骨骼矩阵集合,其中,所述预设骨骼矩阵集合包括所述模型中每个骨骼标识对应的所述骨骼矩阵。可选的,所述绘制模块33,包括:获取单元331,用于在所述预设骨骼矩阵集合中,根据所述模型的静态贴图中每个顶点对应的关联骨骼标识获取每个顶点的关联骨骼矩阵,并获取所述关联骨骼标识对所述顶点产生影响的权重值;绘制单元332,用于根据所述关联骨骼矩阵、所述权重确定所述顶点的当前位置,并根据所述当前位置绘制所述画面中对应的模型角色。可选的,所述绘制单元332具体用于:根据所述顶点的预设位置、所述关联骨骼矩阵以及所述权重值确定所述顶点的当前位置。可选的,还包括第二确定模块35,用于::确定所述静态贴图中各顶点关联的骨骼标识以及骨骼标识对所述顶点产生影响的权重值。本实施例提供的角色绘制的具体原理和实现方式均与图2所示的实施例类似,此处不再赘述。图5为本发明一示例性实施例示出的角色绘制设备的结构图。如图5所示,本实施例提供的角色绘制设备包括:存储器51;处理器52;以及计算机程序;其中,所述计算机程序存储在所述存储器51中,并配置为由所述处理器52执行以实现如上所述的任一种角色绘制方法。本实施例还提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行以实现如上所述的任一种角色绘制方法。本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一计算机可读取存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:rom、ram、磁碟或者光盘等各种可以存储程序代码的介质。最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1