CN117442974A - 虚拟对象集群的渲染方法、装置、电子设备和存储介质 - Google Patents
虚拟对象集群的渲染方法、装置、电子设备和存储介质 Download PDFInfo
- Publication number
- CN117442974A CN117442974A CN202311558764.8A CN202311558764A CN117442974A CN 117442974 A CN117442974 A CN 117442974A CN 202311558764 A CN202311558764 A CN 202311558764A CN 117442974 A CN117442974 A CN 117442974A
- Authority
- CN
- China
- Prior art keywords
- virtual object
- world matrix
- instance
- attribute data
- matrix
- 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.)
- Pending
Links
- 238000009877 rendering Methods 0.000 title claims abstract description 58
- 238000000034 method Methods 0.000 title claims abstract description 45
- 238000003860 storage Methods 0.000 title claims abstract description 44
- 239000011159 matrix material Substances 0.000 claims abstract description 292
- 238000012545 processing Methods 0.000 claims abstract description 36
- 230000000694 effects Effects 0.000 claims abstract description 18
- 238000004458 analytical method Methods 0.000 claims abstract description 5
- 238000006243 chemical reaction Methods 0.000 claims description 11
- 238000004590 computer program Methods 0.000 claims description 4
- 230000008569 process Effects 0.000 abstract description 5
- 230000004044 response Effects 0.000 abstract description 2
- 241000251468 Actinopterygii Species 0.000 description 60
- 238000003491 array Methods 0.000 description 11
- 230000009466 transformation Effects 0.000 description 8
- 238000011084 recovery Methods 0.000 description 7
- 238000010586 diagram Methods 0.000 description 5
- 238000004891 communication Methods 0.000 description 3
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 239000002245 particle Substances 0.000 description 3
- 238000010923 batch production Methods 0.000 description 2
- 239000003086 colorant Substances 0.000 description 2
- 238000007667 floating Methods 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 238000006467 substitution reaction Methods 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 1
- 238000005520 cutting process Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 239000000463 material Substances 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000009182 swimming Effects 0.000 description 1
Classifications
-
- A—HUMAN NECESSITIES
- A63—SPORTS; GAMES; AMUSEMENTS
- A63F—CARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
- A63F13/00—Video games, i.e. games using an electronically generated display having two or more dimensions
- A63F13/70—Game security or game management aspects
- A63F13/77—Game security or game management aspects involving data related to game devices or game servers, e.g. configuration data, software version or amount of memory
-
- A—HUMAN NECESSITIES
- A63—SPORTS; GAMES; AMUSEMENTS
- A63F—CARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
- A63F13/00—Video games, i.e. games using an electronically generated display having two or more dimensions
- A63F13/60—Generating or modifying game content before or while executing the game program, e.g. authoring tools specially adapted for game development or game-integrated level editor
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/005—General purpose rendering architectures
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Business, Economics & Management (AREA)
- Computer Security & Cryptography (AREA)
- General Business, Economics & Management (AREA)
- Computer Graphics (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Processing Or Creating Images (AREA)
Abstract
本申请提供了一种虚拟对象集群的渲染方法、装置、电子设备和存储介质,该方法包括:响应于针对虚拟对象集群的渲染指令,将虚拟对象集群中各个虚拟对象的实例索引写入各虚拟对象的原始世界矩阵中,得到目标世界矩阵,从而在对各虚拟对象进行合批处理时,能够通过对目标世界矩阵进行解析处理,得到实例属性数据和原始世界矩阵,并调用图像处理器基于实例属性数据和原始世界矩阵进行渲染,实现对虚拟对象集群的合批渲染,并使得集群中的各个虚拟对象呈现个性化的表现效果。本申请通过世界矩阵获取确定各个虚拟对象单独的属性索引,从而减小获取每个虚拟对象单独属性信息这一过程的复杂度,进而提高大批量小模型的渲染效率。
Description
技术领域
本申请涉及游戏技术领域,具体而言,涉及一种虚拟对象集群的渲染方法、装置、电子设备和存储介质。
背景技术
图像处理器(Graphics Processing Unit,GPU)是一种做图像和图形相关运算工作的微处理器,GPU实例化(GPU Instancing)是一种利用GPU的特性来高效渲染大量相似物体或粒子的技术。它通过合并相同材质和属性的物体或粒子,并以单个绘制调用的方式发送给GPU,从而减少了CPU与GPU之间的数据传输和渲染开销。
为了使得合批渲染之后的效果更加生动自然,需要对每个实例对象单独赋予属性。现有技术中是将包含所有实例对象属性的属性数组传递给图像处理器,由图像处理器基于属性数组获取每个实例的属性并进行渲染。
但是,图像处理器在基于属性数组进行渲染时,现有方案将属性数组和实例对象对应的算法复杂度高,因而导致渲染效率难以达到预期。
发明内容
有鉴于此,本申请实施例提供了一种虚拟对象集群的渲染方法、装置、电子设备和存储介质,以解决。
第一方面,本申请实施例提供了一种虚拟对象集群的渲染方法,应用于游戏引擎中,所述虚拟对象集群内包括多个虚拟对象,所述多个虚拟对象对应有多个实例,所述多个实例对应的实例属性数据存储于一预设存储空间,所述方法包括:
响应针对所述虚拟对象集群的渲染指令,从所述预设存储空间中读取所述实例属性数据,并将所述实例属性数据对应的实例索引写入所述虚拟对象集群内的各虚拟对象的原始世界矩阵中,得到目标世界矩阵,其中,所述原始世界矩阵用于描述各虚拟对象在虚拟场景中的位置信息,所述实例属性数据用于描述所述虚拟对象的个性化参数;
在对各虚拟对象进行合批处理时,通过对所述目标世界矩阵进行解析处理,得到所述实例属性数据和所述原始世界矩阵;
基于所述实例属性数据和所述原始世界矩阵,调用图像处理器对所述虚拟对象集群内的各虚拟对象进行渲染,以使所述虚拟对象集群中的各虚拟对象呈现与所述实例属性数据相对应的表现效果。
可选的,所述对所述目标世界矩阵进行解析处理,得到所述实例属性数据和所述原始世界矩阵,包括:
读取所述目标世界矩阵的预设位置的数据,并将所读取到的数据作为所述虚拟对象的实例索引;
根据所述实例索引获取各所述虚拟对象的实例属性数据;
对所述目标世界矩阵进行恢复处理,得到所述原始世界矩阵。
可选的,所述目标世界矩阵中的行数和列数相同,所述预设位置为所述目标世界矩阵存储固定数值的位置。
可选的,所述对所述目标世界矩阵进行恢复处理,得到所述原始世界矩阵,包括:
对所述目标世界矩阵的预设位置的数值进行恢复处理,得到所述原始世界矩阵。
可选的,对所述目标世界矩阵的预设位置的数值进行恢复处理,得到所述原始世界矩阵,包括:
若所述预设位置为所述目标世界矩阵中最后一列中除最后一行之外的任一位置,则将所述预设位置的数值填充为第一数值,得到所述原始世界矩阵。
可选的,对所述目标世界矩阵的预设位置的数值进行恢复处理,得到所述目标世界矩阵对应的原始世界矩阵,包括:
若所述预设位置为所述目标世界矩阵中最后一列中的最后一行,则将所述预设位置的数值填充为第二数值,得到所述原始世界矩阵。
可选的,所述根据所述实例索引获取各所述虚拟对象的实例属性数据,包括:
在所述预设存储空间中查找所述实例索引对应的实例属性数据,并将所述实例索引对应的实例属性数据作为所述虚拟对象的实例属性数据。
可选的,所述基于所述实例属性数据和所述原始世界矩阵,调用图像处理器对所述虚拟对象集群内的各虚拟对象进行渲染,包括:
对各所述原始世界矩阵进行坐标转换处理,得到各虚拟对象在世界坐标系下的属性信息,所述属性信息包括:所述虚拟对象在世界坐标系下的位置、所述虚拟对象的朝向;
基于所述实例属性数据以及所述属性信息,调用图像处理器渲染所述虚拟对象集群内的各虚拟对象。
可选的,所述实例属性数据包括:颜色、摆动幅度参数。
可选的,所述实例属性为摆动幅度参数时,属性数组中的各个数值的生成方式为随机生成。
第二方面,本申请实施例还提供了一种虚拟对象集群的渲染装置,包括:
写入模块,用于响应针对所述虚拟对象集群的渲染指令,从所述预设存储空间中读取所述实例属性数据,并将所述实例属性数据对应的实例索引写入所述虚拟对象集群内的各虚拟对象的原始世界矩阵中,得到目标世界矩阵,其中,所述原始世界矩阵用于描述各虚拟对象在虚拟场景中的位置信息,所述实例属性数据用于描述所述虚拟对象的个性化参数;
解析模块,用于在对各虚拟对象进行合批处理时,通过对所述目标世界矩阵进行解析处理,得到所述实例属性数据和所述原始世界矩阵;
渲染模块,用于基于所述实例属性数据和所述原始世界矩阵,调用图像处理器对所述虚拟对象集群内的各虚拟对象进行渲染,以使所述虚拟对象集群中的各虚拟对象呈现与所述实例属性数据相对应的表现效果。
可选的,所述解析模块具体用于:
读取所述目标世界矩阵的预设位置的数据,并将所读取到的数据作为所述虚拟对象的实例索引;
根据所述实例索引获取各所述虚拟对象的实例属性数据;
对所述目标世界矩阵进行恢复处理,得到所述原始世界矩阵。
可选的,所述目标世界矩阵中的行数和列数相同,所述预设位置为所述目标世界矩阵存储固定数值的位置。
可选的,所述解析模块具体用于:
对所述目标世界矩阵的预设位置的数值进行恢复处理,得到所述原始世界矩阵。
可选的,解析模块具体用于:
若所述预设位置为所述目标世界矩阵中最后一列中除最后一行之外的任一位置,则将所述预设位置的数值填充为第一数值,得到所述原始世界矩阵。
可选的,解析模块具体用于:
若所述预设位置为所述目标世界矩阵中最后一列中的最后一行,则将所述预设位置的数值填充为第二数值,得到所述原始世界矩阵。
可选的,所述解析模块具体用于:
在所述预设存储空间中查找所述实例索引对应的实例属性数据,并将所述实例索引对应的实例属性数据作为所述虚拟对象的实例属性数据。
可选的,所述渲染模块具体用于:
对各所述原始世界矩阵进行坐标转换处理,得到各虚拟对象在世界坐标系下的属性信息,所述属性信息包括:所述虚拟对象在世界坐标系下的位置、所述虚拟对象的朝向;
基于所述实例属性数据以及所述属性信息,调用图像处理器渲染所述虚拟对象集群内的各虚拟对象。
可选的,所述实例属性数据包括:颜色、摆动幅度参数。
可选的,所述实例属性为摆动幅度参数时,属性数组中的各个数值的生成方式为随机生成。
第三方面,本申请实施例还提供了一种电子设备,包括:处理器、存储介质和总线,所述存储介质存储有所述处理器可执行的机器可读指令,当电子设备运行时,所述处理器与所述存储介质之间通过总线通信,所述处理器执行所述机器可读指令,以执行如第一方面中任一项所述的一种虚拟对象集群的渲染方法的步骤。
第四方面,本申请实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器运行时执行如第一方面中任一项所述的一种虚拟对象集群的渲染方法的步骤。
本申请实施例通过中央处理器修改当前游戏区域内的各个虚拟对象的原始世界矩阵,从而在目标世界矩阵中保存虚拟对象的实例索引。由于Unity引擎可以直接获取到各个虚拟对象对应的世界矩阵,因此就可以基于获取到的世界矩阵,直接获取到各个虚拟对象的实例索引,本申请可以在不借助额外操作的情况下,由图像处理器直接基于获取到的世界矩阵得到每个虚拟对象对应的属性,降低了虚拟对象与实例索引对应的复杂度,进而提高了大批量小模型实现单独渲染效果的渲染效率。
为使本申请的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。
附图说明
为了更清楚地说明本申请实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本申请的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1示出了本申请实施例所提供的一种现有技术中进行大批量小莫形象渲染的流程图;
图2示出了本申请实施例所提供的一种虚拟对象集群的渲染方法的流程图;
图3示出了本申请实施例所提供的一种渲染各个虚拟对象的流程图;
图4示出了本申请实施例所提供的一种鱼的局部坐标示意图;
图5示出了本申请实施例所提供的一种虚拟对象集群的渲染装置的结构示意图;
图6示出了本申请实施例所提供的一种电子设备的结构示意图。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本申请实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本申请的实施例的详细描述并非旨在限制要求保护的本申请的范围,而是仅仅表示本申请的选定实施例。基于本申请的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本申请保护的范围。
在进行大批量小模型的渲染时,为了使得最终的生成效果更加生动真实,需要给每个小模型赋予单独的属性,例如在大批量渲染鱼群时,可以对鱼群中的每条鱼分别赋予不同的颜色、大小或是摆动幅度等,这样会得到更加真实的鱼群效果,使得鱼群的游动表现也更加生动。
以合批生成鱼群为例,现有技术中Unity引擎提供了Batch Renderer Group组件来方便大量小模型进行合批,并且可以精准控制单个鱼实例的裁剪。调用该组件的API后,Unity引擎就可以分配一段内存用于记录各个鱼实例基础属性信息的世界矩阵,以进行GPUinstancing,后续只要填充这个世界矩阵,就可以确定每个鱼实例的位置以及朝向等基础属性信息。
假设要为鱼群中的每条鱼单独赋予颜色,现有技术所给出的方案是在鱼群合批渲染的过程中,将鱼群中所有鱼的颜色数组直接传递给图像处理器,由图像处理器基于鱼群中各个鱼的世界矩阵以及颜色数组,对每条鱼设置不同的颜色。
举例来说,假设鱼群中鱼的总数量为1024个,每条鱼对应一个世界矩阵,那么就需要1024个世界矩阵存储每条鱼的基础属性信息,如果需要给每条鱼设置单独的颜色,可以通过一个大小为1024的数组存储每条鱼的颜色。
图像处理器进行渲染时一般会渲染摄像机覆盖范围内的虚拟对象,假设当前摄像机范围内的鱼的数量为500条,那么图像处理器就可以先获取这500条鱼对应的世界矩阵,然后基于世界矩阵以及颜色数组进行渲染,得到当前摄像机覆盖范围内的500条鱼。
但是,对于颜色数组Unity引擎并不会进行任何处理,只是简单的将1024个元素组成的颜色数组直接传递到图像处理器,图像处理器在进行渲染时,还需要从颜色数组中找到当前需要渲染的500条鱼对应的颜色,但是在这一过程中需要通过额外的操作才能实现颜色属性与实例对象的一一对应,复杂度较高,因此无疑会影响渲染效率。
基于此,本申请提出一种虚拟对象的渲染方法,通过在世界矩阵中插入实例索引,可以在获取到世界矩阵时能够通过世界矩阵直接获取确定各个实例对象单独的属性索引,从而减小获取每个实例对象单独属性信息这一过程的复杂度,进而提高渲染效率。
如图1所示,是一种现有技术中进行鱼群渲染的流程图,参照图1,现有技术中进行渲染时,图像处理器获取当前界面需要渲染的各个虚拟对象的世界矩阵,并接收输入的各个虚拟对象的实例索引,然后基于实例索引获取各个虚拟对象的实例属性,再对世界矩阵进行世界坐标变换,结合获取到的实例属性进行渲染,得到当前显示界面上渲染后的鱼群。
本申请的方法基于世界矩阵的特性,针对获取实例属性这一步骤进行了改进,如图2所示,是本申请实施例提供的一种虚拟对象集群的渲染方法的流程图,该方法可以应用于游戏引擎中,游戏引擎可以是Unity引擎,参照图2,该方法包括:
S201、响应针对虚拟对象集群的渲染指令,从预设存储空间中读取实例属性数据,并将实例属性数据对应的实例索引写入虚拟对象集群内的各虚拟对象的原始世界矩阵中,得到目标世界矩阵,其中,原始世界矩阵用于描述各虚拟对象在虚拟场景中的位置信息,实例属性数据用于描述虚拟对象的个性化参数。
其中,虚拟对象集群中包括多个虚拟对象,示例性的,假设虚拟对象集群为鱼群,则虚拟对象可以是鱼群中的每条鱼,各虚拟对象分别对应一个实例,每个实例分别具有各自的实例属性数据。
可选的,实例属性数据可以描述虚拟对象的个性化参数,每个虚拟对象的实例属性数据可以不同。示例性的,当虚拟对象为鱼时,实例属性数据可以是鱼的颜色、大小、摆动幅度等。
可选的,当玩家在游戏区域中发生移动时,可以自动生成渲染指令,此时游戏引擎就可以对玩家当前游戏区域中的虚拟对象集群进行合批渲染。
本申请中可以将虚拟对象的实例属性数据存储在内存的固定存储空间中,在玩家移动位置并到达新的游戏区域时,就可以从这个固定的存储空间中获取虚拟对象集群中各个虚拟对象的实例属性数据,并将各个实例属性数据对应的实例索引写入各虚拟对象的原始世界矩阵中,得到目标世界矩阵。
其中,原始世界矩阵中可以描述各虚拟对象在虚拟场景中的位置、朝向等信息。
可选的,通过实例索引可以从属性数组中获取虚拟对象的实例属性数据。举例来说,假设内存中存储的属性数组为颜色数组,则实例索引可以指示颜色数组存储的虚拟对象对应的颜色的数值位置。
示例性的,可以通过Unity引擎中的Batch Renderer Group组件获取当前摄像机视角下的所有虚拟对象。组件的API接收的输入参数包括:需要渲染的模型、渲染材质、包围盒信息以及需要绘制的实例数量,调用此API后,Unity引擎就会分配一段内存用于记录虚拟对象的世界矩阵,以进行GPU instancing。
在通过Batch Renderer Group组件进行合批处理之后,每个绘制调用都会绑定一个世界矩阵数组,Unity引擎中图像处理器可以通过自动生成的实例索引确定每个虚拟对象对应的世界矩阵。
S202、在对各虚拟对象进行合批处理时,通过对目标世界矩阵进行解析处理,得到实例属性数据和原始世界矩阵。
在游戏引擎判断需要进行渲染时,可以将存储目标世界矩阵的内存设置给图像处理器,由图像处理器从目标世界矩阵中获取各个虚拟对象的实例索引。
应当理解,在得到实例索引之后,需要基于世界矩阵和实例索引对各个实例对象进行渲染,进行渲染时所用的世界矩阵应当是没有被修改过的原始世界矩阵,因此,可以在解析目标世界矩阵得到实例属性数据之后,将目标世界矩阵预设位置上的数据恢复,得到原始世界矩阵。
其中,原始世界矩阵中预设位置的数据可以恢复为未插入实例索引时的原始数值。
可选的,目标世界矩阵中存储了实例属性数据的实例索引,因此可以从目标世界矩阵中读取实例索引,并基于实例索引获取虚拟对象的实例属性数据。
S203、基于实例属性数据和原始世界矩阵,调用图像处理器对虚拟对象集群内的各虚拟对象进行渲染,以使虚拟对象集群中的各虚拟对象呈现与实例属性数据相对应的表现效果。
可选的,虚拟对象的实例属性数据可以描述虚拟对象的个性化参数,以鱼群渲染为例,虚拟对象为鱼群中的一条鱼时,实例属性数据可以包括鱼的颜色、鱼的大小、鱼的摆动幅度等。
在得到各个虚拟对象的实例属性数据之后,图像处理器可以基于原始世界矩阵进行坐标转换,并根据实例属性数据分别对各个虚拟对象进行渲染,以使得虚拟对象集群中的各个虚拟对象能够按照实例属性数据分别呈现对应的表现效果。
示例性的,假设实例属性数据描述集群中鱼A的颜色为蓝色,摆动幅度的数值为0.78,则图像处理器可以基于鱼A的原始世界矩阵进行坐标转换,并根据实例属性数据对鱼A的虚拟对象进行渲染,以使得集群中鱼A能够呈现蓝色,且按照0.78的值对应的摆动幅度进行摆动。
本申请实施例中,响应针对虚拟对象集群的渲染指令,从预设存储空间中读取实例属性数据,并将实例属性数据对应的实例索引写入虚拟对象集群内的各虚拟对象的原始世界矩阵中,得到目标世界矩阵,其中,原始世界矩阵用于描述各虚拟对象在虚拟场景中的位置信息,实例属性数据用于描述虚拟对象的个性化参数,在对各虚拟对象进行合批处理时,通过对目标世界矩阵进行解析处理,得到实例属性数据和原始世界矩阵,基于实例属性数据和原始世界矩阵,调用图像处理器对虚拟对象集群内的各虚拟对象进行渲染,以使虚拟对象集群中的各虚拟对象呈现与实例属性数据相对应的表现效果。
通过修改各个虚拟对象的原始世界矩阵,在原始世界矩阵中保存虚拟对象的实例索引,由于Unity引擎可以直接获取到各个虚拟对象对应的世界矩阵,因此就可以基于获取到的目标世界矩阵,直接获取到各个虚拟对象的实例属性数据,从而实现在不借助额外操作的情况下,由图像处理器直接基于获取到的目标世界矩阵得到每个虚拟对象对应的属性,降低了虚拟对象与实例属性数据对应的复杂度,进而提高了大批量小模型实现单独渲染效果的渲染效率。
进一步的,上述S202步骤中,对目标世界矩阵进行解析处理,得到实例属性数据和原始世界矩阵,如图3所示,包括:
S301、读取目标世界矩阵的预设位置的数据,并将所读取到的数据作为虚拟对象的实例索引。
需要说明的是,根据世界矩阵的特性可知,原始世界矩阵中存在数值固定不变的多个位置,本申请中可以将这些位置作为预设位置,并对世界矩阵的预设位置上的数值进行修改,将虚拟对象的实例索引插入预设位置,得到目标世界矩阵。
基于此,在对各虚拟对象进行合批处理时,游戏引擎获取到当前需要渲染的虚拟对象集群中各个虚拟对象的目标世界矩阵后,可以读取目标世界矩阵预设位置上的数据,从而得到虚拟对象的实例索引。
其中,目标世界矩阵中的行数和列数相同。目标世界矩阵的预设位置的原始数值可以为固定数值,即预设位置可以是在进行渲染的过程中世界矩阵中数值不变的位置。
举例来说,世界矩阵由4x4=16个浮点数组成,根据世界坐标变换矩阵的特性,可以知道第四列的数据始终是(0,0,0,1),因此就可以将第四列的数据作为预设位置,利用第四列数据中的一个元素或多个元素来保存虚拟对象的实例索引。
示例性的,假设利用第一行第四列的元素保存实例索引,在进行世界坐标变换之前,可以先提取出目标世界矩阵中第一行第四列的数据,并将所读取到的作为实例索引。
S302、根据实例索引获取各虚拟对象的实例属性数据。
可选的,实例索引用于指示虚拟对象的实例属性数据在属性数组中的存储位置,因此基于实例索引在对应的属性数组中可以获取到各虚拟对象的实例属性数据。
S303、对目标世界矩阵进行恢复处理,得到原始世界矩阵。
其中,对目标世界矩阵进行恢复处理,可以是将目标世界矩阵恢复为原始世界矩阵,将S201步骤中写入原始世界矩阵的实例属性数据对应的实例索引还原为初始值,得到原始世界矩阵。
以下是对上述对目标世界矩阵进行恢复处理,得到目标世界矩阵对应的原始世界矩阵的进一步说明,上述S202步骤包括:
对目标世界矩阵的预设位置的数值进行恢复处理,得到目标世界矩阵对应的原始世界矩阵。
可选的,对目标世界矩阵的预设位置的数值进行恢复处理,可以是将预设位置的数值还原为未修改前的数值。
举例来说,假设目标世界矩阵的预设位置的数值原本是1,则在获取到实例索引之后,进行世界坐标变换之前,可以先将预设位置的数值恢复为1,得到原始世界矩阵,然后基于原始世界矩阵进行后续处理。
作为一种可能的实施方式,当预设位置为世界矩阵最后一列中最后一行以外的位置,则上述对目标世界矩阵的预设位置的数值进行恢复处理,得到目标世界矩阵对应的原始世界矩阵的步骤,包括:
若预设位置为目标世界矩阵中最后一列中除最后一行之外的任一位置,则图像处理器将预设位置的数值填充为第一数值,得到原始世界矩阵。
可选的,本申请实施例中世界矩阵由4x4=16个浮点数组成,其中原始世界矩阵中第四列的数据始终是(0,0,0,1),如果将第四列数据中的第一行、第二行以及第三行作为预设位置,则在获取到实例索引之后、进行世界坐标变换之前,可以将目标世界矩阵中预设位置的数值填充为第一数值,得到原始世界矩阵。
其中,第一数值可以为0。
作为另一种可能的实施方式,当预设位置为世界矩阵的最后一行最后一列,上述对目标世界矩阵的预设位置的数值进行恢复处理,得到目标世界矩阵对应的原始世界矩阵的步骤包括:
若预设位置为目标世界矩阵中最后一列中的最后一行,则图像处理器将预设位置的数值填充为第二数值,得到原始世界矩阵。
可选的,如果将第四列数据中的最后一行作为预设位置,则在获取到实例索引之后、进行世界坐标变换之前,可以将目标世界矩阵中预设位置的数值填充为第二数值,得到原始世界矩阵。
其中,第二数值可以为1。
应当理解,世界矩阵中最后一列的所有数据均可以作为存储实例索引的预设位置,当实例对象的属性数组包括多个时,可以将世界矩阵中最后一列的多个位置都作为预设位置,并在每个预设位置上分别存储一个实例索引,每个实例索引分别用于指示属性数组中存储的虚拟对象的一个属性。
当通过世界矩阵中的多个预设位置存储虚拟对象的多个单独属性时,本申请中还可以存储各个预设位置与属性数组的对应关系。
举例来说,假设虚拟对象的属性数组分别包括颜色数组、大小数组以及摆动参数数组,其中,虚拟对象的颜色属性索引存储在最后一列第一行的位置,大小属性索引存储在最后一列第二行的位置,摆动参数属性索引存储在最后一列最后一行的位置。
本申请中游戏引擎可以在获取到虚拟对象的目标世界矩阵之后,从目标世界矩阵的最后一列第一行的位置读取颜色属性索引,并根据颜色属性索引在颜色数组中读取虚拟对象的颜色属性;从目标世界矩阵的最后一列第二行的位置读取大小属性索引,并根据大小属性索引在大小数组中读取虚拟对象的大小属性;从目标世界矩阵的最后一列最后一行的位置读取摆动参数属性索引,并根据摆动参数属性索引在摆动参数数组中读取虚拟对象的摆动参数属性。
在得到虚拟对象的各个属性之后、进行世界坐标转换之前,可以将最后一列第一行以及第二行的数值还原为0,将最后一列最后一行的数值还原为1,得到原始世界矩阵,然后基于原始世界矩阵以及获取到的颜色属性、大小属性以及摆动参数属性对虚拟对象进行渲染。
以下是对上述S203中,根据实例索引获取各虚拟对象的实例属性的步骤的进一步说明,包括:
在预设的存储空间中查找虚拟对象的实例索引对应的实例属性,并将实例索引对应的实例属性作为虚拟对象的实例属性。
可选的,预设存储空间中可以存储虚拟对象的属性数组,属性数组中可以存储所有虚拟对象的属性信息,举例来说,假设需要渲染的鱼群中鱼的总数量为1024,则属性数组可以为存储了1024个元素的数组,每个元素分别对应鱼群中的一条鱼的实例属性数据。
其中,属性数组的数量可以为一个或多个。
当属性数组的数量为一个时,属性数组中的每个元素可以描述虚拟对象的一个或多个实例属性。
在得到虚拟对象的实例索引之后,可以基于实例索引在属性数组中查找,将实例索引所指示的位置上存储的实例属性作为虚拟对象的实例属性。
举例来说,假设属性数组中的每个位置分别依次存储的实例属性包括:颜色、大小、摆动参数,从目标世界矩阵中获取到的实例索引指示属性数组中第七列第八行的元素为当前虚拟对象的实例属性,第七列第八行的元素为:红色、125×485、4.5,则可以确定虚拟对象的实例属性中颜色为红色、大小为125×485、摆动参数为4.5。
作为另一种可能的实施方式,属性数组的数量也可以为多个,此时可以基于从目标世界矩阵中获取到的每个实例索引,分别在各个属性数组中查找,得到各个属性数组中实例索引所指示的位置上存储的实例属性,并将从各个属性数组中获取到的实例属性都作为虚拟对象的实例属性。
举例来说,假设属性数组包括颜色数组以及摆动参数数组,目标世界矩阵的最后一列第一行存储颜色属性索引,最后一列第二行存储摆动参数属性索引,则可以基于从目标世界矩阵的最后一列第一行获取到的实例索引在颜色数组中查找,得到虚拟对象的颜色属性,基于从目标世界矩阵的最后一列第二行获取到的实例索引在摆动参数数组中查找,得到虚拟对象的摆动参数属性,并将获取到的颜色属性以及摆动参数属性都作为虚拟对象的实例属性。
需要说明的是,当属性数组的数量为多个时,各个属性数组在存储虚拟对象的属性信息时,可以基于相同的存储顺序,即不同属性数组的同一位置上存储同一虚拟对象的实例属性,也可以基于不同的存储顺序,即不同属性数组的同一位置上存储不同虚拟对象的实例属性,本申请在此不做限制。
当不同属性数组的同一位置上存储同一虚拟对象的实例属性时,就可以在目标世界矩阵中只存储一个实例索引,并根据该实例索引分别在多个属性数组中获取到虚拟对象所有的实例属性。
进一步的,如图3所示,上述S204步骤中,基于各原始世界矩阵以及实例属性渲染多个虚拟对象包括:
S301、对原始世界矩阵进行坐标转换处理,得到各虚拟对象在世界坐标系下的属性信息,属性信息包括:虚拟对象在世界坐标系下的位置、虚拟对象的朝向。
可选的,原始世界矩阵中包括虚拟对象的坐标信息,对各原始世界矩阵进行坐标转换处理之后,就可以得到各个虚拟对象在当前显示界面的世界坐标系下的属性信息。
举例来说,对鱼群中每条鱼的原始世界矩阵进行坐标转换处理之后,就可以得到鱼在显示界面上的位置以及鱼的朝向。
S302、基于实例属性以及属性信息,调用图像处理器渲染虚拟对象集群内的各虚拟对象。
图像处理器可以基于实例属性以及属性信息进行渲染,得到当前显示界面上的虚拟对象集群中的各个虚拟对象。
需要说明的是,在进行大批量小模型渲染时,可以对小模型进行合批渲染,举例来说,假设每次绘制调用128个世界矩阵数组,在获取到这128个虚拟对象对应的实例属性之后,就可以对这128个世界矩阵进行恢复处理,得到128个原始世界矩阵,接下来就可以对这128个原始世界矩阵进行世界坐标转换,并结合获取到的各个虚拟对象的实例属性进行渲染,得到本次合批渲染的128个渲染后实例。
可选的,上述实例属性数据包括:颜色、摆动幅度参数。
其中,实例属性为摆动幅度参数时,属性数组中的各个数值的生成方式为随机生成。
值得注意的是,虚拟对象的其他单独的属性也可以作为实例属性,例如虚拟对象的大小,本申请只是以颜色和摆动幅度参数作为实例属性的示例进行说明,但不应以此为限。
接下来对鱼群的摆动动画的数学表现形式进行说明,如图4所示,是一种鱼的局部坐标示意图。
为了实现鱼的摆动效果,可以让鱼的每个顶点沿着x轴来回偏移,偏移公式如下:
Offset=sin((t+phase)*speed+pos.z*amount)*distance
其中,t为时间,phase为一个相位参数,speed为摆动速度,amount用于控制z方向频率,distance为摆动的幅度。
本申请中,可以将phase作为摆动幅度参数,并采用随机生成的方式生成一个数值,其余的参数可以采用全局变量控制,通过对每条鱼随机生成一个摆动幅度参数,可以实现鱼群的随机摆动的效果,相比于现有方案,本申请中的鱼群中每条鱼的摆动幅度不同,因此可以得到更加真实生动的摆动效果。
图5示出了本申请实施例所提供的一种虚拟对象集群的渲染装置的结构示意图,其中:
写入模块501,用于响应针对虚拟对象集群的渲染指令,从预设存储空间中读取实例属性数据,并将实例属性数据对应的实例索引写入虚拟对象集群内的各虚拟对象的原始世界矩阵中,得到目标世界矩阵,其中,原始世界矩阵用于描述各虚拟对象在虚拟场景中的位置信息,实例属性数据用于描述虚拟对象的个性化参数;
解析模块502,用于在对各虚拟对象进行合批处理时,通过对目标世界矩阵进行解析处理,得到实例属性数据和原始世界矩阵;
渲染模块503,用于基于实例属性数据和原始世界矩阵,调用图像处理器对虚拟对象集群内的各虚拟对象进行渲染,以使虚拟对象集群中的各虚拟对象呈现与实例属性数据相对应的表现效果。
在一个可行的实施方案中,解析模块502还用于:
读取目标世界矩阵的预设位置的数据,并将所读取到的数据作为虚拟对象的实例索引;
根据实例索引获取各虚拟对象的实例属性数据;
对目标世界矩阵进行恢复处理,得到原始世界矩阵。
在一个可行的实施方案中,目标世界矩阵中的行数和列数相同,预设位置为目标世界矩阵存储固定数值的位置。
在一个可行的实施方案中,解析模块502还用于:
对目标世界矩阵的预设位置的数值进行恢复处理,得到原始世界矩阵。
在一个可行的实施方案中,解析模块502还用于:
若预设位置为目标世界矩阵中最后一列中除最后一行之外的任一位置,则将预设位置的数值填充为第一数值,得到原始世界矩阵。
在一个可行的实施方案中,解析模块502具体用于:
若预设位置为目标世界矩阵中最后一列中的最后一行,则将预设位置的数值填充为第二数值,得到原始世界矩阵。
在一个可行的实施方案中,解析模块502具体用于:
在预设存储空间中查找实例索引对应的实例属性数据,并将实例索引对应的实例属性数据作为虚拟对象的实例属性数据。
在一个可行的实施方案中,渲染模块503具体用于:
对各原始世界矩阵进行坐标转换处理,得到各虚拟对象在世界坐标系下的属性信息,属性信息包括:虚拟对象在世界坐标系下的位置、虚拟对象的朝向;
基于实例属性数据以及属性信息,调用图像处理器渲染虚拟对象集群内的各虚拟对象。
在一个可行的实施方案中,实例属性数据包括:颜色、摆动幅度参数。
在一个可行的实施方案中,实例属性为摆动幅度参数时,属性数组中的各个数值的生成方式为随机生成。
通过修改各个虚拟对象的世界矩阵,从而在世界矩阵中保存虚拟对象的实例索引。由于Unity引擎可以直接获取到各个虚拟对象对应的世界矩阵,因此就可以基于获取到的世界矩阵,直接获取到各个虚拟对象的实例索引,本申请可以在不借助额外操作的情况下,由图像处理器直接基于获取到的世界矩阵得到每个虚拟对象对应的属性,降低了虚拟对象与实例索引对应的复杂度,进而提高了大批量小模型实现单独渲染效果的渲染效率。
图6示出了本申请实施例所提供的一种电子设备的结构示意图,包括:处理器601、存储介质602和总线603,所述存储介质602存储有所述处理器601可执行的机器可读指令,当电子设备运行如实施例中的一种虚拟对象的渲染方法时,所述处理器601与所述存储介质602之间通过总线603通信,所述处理器601执行所述机器可读指令,所述处理器601方法项的前序部分,以执行以下步骤:
响应针对虚拟对象集群的渲染指令,从预设存储空间中读取实例属性数据,并将实例属性数据对应的实例索引写入虚拟对象集群内的各虚拟对象的原始世界矩阵中,得到目标世界矩阵,其中,原始世界矩阵用于描述各虚拟对象在虚拟场景中的位置信息,实例属性数据用于描述虚拟对象的个性化参数;
在对各虚拟对象进行合批处理时,通过对目标世界矩阵进行解析处理,得到实例属性数据和原始世界矩阵;
基于实例属性数据和原始世界矩阵,调用图像处理器对虚拟对象集群内的各虚拟对象进行渲染,以使虚拟对象集群中的各虚拟对象呈现与实例属性数据相对应的表现效果。
在一个可行的实施方案中,处理器601在执行对目标世界矩阵进行解析处理,得到实例属性数据和原始世界矩阵时,具体用于:
读取目标世界矩阵的预设位置的数据,并将所读取到的数据作为虚拟对象的实例索引;
根据实例索引获取各虚拟对象的实例属性数据;
对目标世界矩阵进行恢复处理,得到原始世界矩阵。
在一个可行的实施方案中,目标世界矩阵中的行数和列数相同,预设位置为目标世界矩阵存储固定数值的位置。
在一个可行的实施方案中,处理器601在执行对目标世界矩阵进行恢复处理,得到原始世界矩阵时,具体用于:
对目标世界矩阵的预设位置的数值进行恢复处理,得到原始世界矩阵。
在一个可行的实施方案中,处理器601在执行对目标世界矩阵的预设位置的数值进行恢复处理,得到原始世界矩阵时,具体用于:
若预设位置为目标世界矩阵中最后一列中除最后一行之外的任一位置,则将预设位置的数值填充为第一数值,得到原始世界矩阵。
在一个可行的实施方案中,处理器601在执行对目标世界矩阵的预设位置的数值进行恢复处理,得到目标世界矩阵对应的原始世界矩阵时,具体用于:
若预设位置为目标世界矩阵中最后一列中的最后一行,则将预设位置的数值填充为第二数值,得到原始世界矩阵。
在一个可行的实施方案中,处理器601在执行根据实例索引获取各虚拟对象的实例属性数据时,具体用于:
在预设存储空间中查找实例索引对应的实例属性数据,并将实例索引对应的实例属性数据作为虚拟对象的实例属性数据。
在一个可行的实施方案中,处理器601在执行基于实例属性数据和原始世界矩阵,调用图像处理器对虚拟对象集群内的各虚拟对象进行渲染时,具体用于:
对各原始世界矩阵进行坐标转换处理,得到各虚拟对象在世界坐标系下的属性信息,属性信息包括:虚拟对象在世界坐标系下的位置、虚拟对象的朝向;
基于实例属性数据以及属性信息,调用图像处理器渲染虚拟对象集群内的各虚拟对象。
在一个可行的实施方案中,实例属性数据包括:颜色、摆动幅度参数。
在一个可行的实施方案中,实例属性为摆动幅度参数时,属性数组中的各个数值的生成方式为随机生成。
通过修改各个虚拟对象的世界矩阵,从而在世界矩阵中保存虚拟对象的实例索引。由于Unity引擎可以直接获取到各个虚拟对象对应的世界矩阵,因此就可以基于获取到的世界矩阵,直接获取到各个虚拟对象的实例索引,本申请可以在不借助额外操作的情况下,由图像处理器直接基于获取到的世界矩阵得到每个虚拟对象对应的属性,降低了虚拟对象与实例索引对应的复杂度,进而提高了大批量小模型实现单独渲染效果的渲染效率。
本申请实施例还提供了一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时执行,所述处理器执行以下步骤:
响应针对虚拟对象集群的渲染指令,从预设存储空间中读取实例属性数据,并将实例属性数据对应的实例索引写入虚拟对象集群内的各虚拟对象的原始世界矩阵中,得到目标世界矩阵,其中,原始世界矩阵用于描述各虚拟对象在虚拟场景中的位置信息,实例属性数据用于描述虚拟对象的个性化参数;
在对各虚拟对象进行合批处理时,通过对目标世界矩阵进行解析处理,得到实例属性数据和原始世界矩阵;
基于实例属性数据和原始世界矩阵,调用图像处理器对虚拟对象集群内的各虚拟对象进行渲染,以使虚拟对象集群中的各虚拟对象呈现与实例属性数据相对应的表现效果。
在一个可行的实施方案中,处理器在执行对目标世界矩阵进行解析处理,得到实例属性数据和原始世界矩阵时,具体用于:
读取目标世界矩阵的预设位置的数据,并将所读取到的数据作为虚拟对象的实例索引;
根据实例索引获取各虚拟对象的实例属性数据;
对目标世界矩阵进行恢复处理,得到原始世界矩阵。
在一个可行的实施方案中,目标世界矩阵中的行数和列数相同,预设位置为目标世界矩阵存储固定数值的位置。
在一个可行的实施方案中,处理器在执行对目标世界矩阵进行恢复处理,得到原始世界矩阵时,具体用于:
对目标世界矩阵的预设位置的数值进行恢复处理,得到原始世界矩阵。
在一个可行的实施方案中,处理器在执行对目标世界矩阵的预设位置的数值进行恢复处理,得到原始世界矩阵时,具体用于:
若预设位置为目标世界矩阵中最后一列中除最后一行之外的任一位置,则将预设位置的数值填充为第一数值,得到原始世界矩阵。
在一个可行的实施方案中,处理器在执行对目标世界矩阵的预设位置的数值进行恢复处理,得到目标世界矩阵对应的原始世界矩阵时,具体用于:
若预设位置为目标世界矩阵中最后一列中的最后一行,则将预设位置的数值填充为第二数值,得到原始世界矩阵。
在一个可行的实施方案中,处理器在执行根据实例索引获取各虚拟对象的实例属性数据时,具体用于:
在预设存储空间中查找实例索引对应的实例属性数据,并将实例索引对应的实例属性数据作为虚拟对象的实例属性数据。
在一个可行的实施方案中,处理器在执行基于实例属性数据和原始世界矩阵,调用图像处理器对虚拟对象集群内的各虚拟对象进行渲染时,具体用于:
对各原始世界矩阵进行坐标转换处理,得到各虚拟对象在世界坐标系下的属性信息,属性信息包括:虚拟对象在世界坐标系下的位置、虚拟对象的朝向;
基于实例属性数据以及属性信息,调用图像处理器渲染虚拟对象集群内的各虚拟对象。
在一个可行的实施方案中,实例属性数据包括:颜色、摆动幅度参数。
在一个可行的实施方案中,实例属性为摆动幅度参数时,属性数组中的各个数值的生成方式为随机生成。
通过修改各个虚拟对象的世界矩阵,从而在世界矩阵中保存虚拟对象的实例索引。由于Unity引擎可以直接获取到各个虚拟对象对应的世界矩阵,因此就可以基于获取到的世界矩阵,直接获取到各个虚拟对象的实例索引,本申请可以在不借助额外操作的情况下,由图像处理器直接基于获取到的世界矩阵得到每个虚拟对象对应的属性,降低了虚拟对象与实例索引对应的复杂度,进而提高了大批量小模型实现单独渲染效果的渲染效率。
在本申请实施例中,该计算机程序被处理器运行时还可以执行其它机器可读指令,以执行如实施例中其它所述的方法,关于具体执行的方法步骤和原理参见实施例的说明,在此不再详细赘述。
在本申请所提供的实施例中,应该理解到,所揭露装置和方法,可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,又例如,多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些通信接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请提供的实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释,此外,术语“第一”、“第二”、“第三”等仅用于区分描述,而不能理解为指示或暗示相对重要性。
最后应说明的是:以上所述实施例,仅为本申请的具体实施方式,用以说明本申请的技术方案,而非对其限制,本申请的保护范围并不局限于此,尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,其依然可以对前述实施例所记载的技术方案进行修改或可轻易想到变化,或者对其中部分技术特征进行等同替换;而这些修改、变化或者替换,并不使相应技术方案的本质脱离本申请实施例技术方案的精神和范围。都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。
Claims (13)
1.一种虚拟对象集群的渲染方法,其特征在于,应用于游戏引擎中,所述虚拟对象集群内包括多个虚拟对象,所述多个虚拟对象对应有多个实例,所述多个实例对应的实例属性数据存储于一预设存储空间,所述方法包括:
响应针对所述虚拟对象集群的渲染指令,从所述预设存储空间中读取所述实例属性数据,并将所述实例属性数据对应的实例索引写入所述虚拟对象集群内的各虚拟对象的原始世界矩阵中,得到目标世界矩阵,其中,所述原始世界矩阵用于描述各虚拟对象在虚拟场景中的位置信息,所述实例属性数据用于描述所述虚拟对象的个性化参数;
在对各虚拟对象进行合批处理时,通过对所述目标世界矩阵进行解析处理,得到所述实例属性数据和所述原始世界矩阵;
基于所述实例属性数据和所述原始世界矩阵,调用图像处理器对所述虚拟对象集群内的各虚拟对象进行渲染,以使所述虚拟对象集群中的各虚拟对象呈现与所述实例属性数据相对应的表现效果。
2.根据权利要求1所述的方法,其特征在于,所述对所述目标世界矩阵进行解析处理,得到所述实例属性数据和所述原始世界矩阵,包括:
读取所述目标世界矩阵的预设位置的数据,并将所读取到的数据作为所述虚拟对象的实例索引;
根据所述实例索引获取各所述虚拟对象的实例属性数据;
对所述目标世界矩阵进行恢复处理,得到所述原始世界矩阵。
3.根据权利要求2所述的方法,其特征在于,所述目标世界矩阵中的行数和列数相同,所述预设位置为所述目标世界矩阵存储固定数值的位置。
4.根据权利要求2所述的方法,其特征在于,所述对所述目标世界矩阵进行恢复处理,得到所述原始世界矩阵,包括:
对所述目标世界矩阵的预设位置的数值进行恢复处理,得到所述原始世界矩阵。
5.根据权利要求4所述的方法,其特征在于,对所述目标世界矩阵的预设位置的数值进行恢复处理,得到所述原始世界矩阵,包括:
若所述预设位置为所述目标世界矩阵中最后一列中除最后一行之外的任一位置,则将所述预设位置的数值填充为第一数值,得到所述原始世界矩阵。
6.根据权利要求4所述的方法,其特征在于,对所述目标世界矩阵的预设位置的数值进行恢复处理,得到所述目标世界矩阵对应的原始世界矩阵,包括:
若所述预设位置为所述目标世界矩阵中最后一列中的最后一行,则将所述预设位置的数值填充为第二数值,得到所述原始世界矩阵。
7.根据权利要求2所述的方法,其特征在于,所述根据所述实例索引获取各所述虚拟对象的实例属性数据,包括:
在所述预设存储空间中查找所述实例索引对应的实例属性数据,并将所述实例索引对应的实例属性数据作为所述虚拟对象的实例属性数据。
8.根据权利要求1所述的方法,其特征在于,所述基于所述实例属性数据和所述原始世界矩阵,调用图像处理器对所述虚拟对象集群内的各虚拟对象进行渲染,包括:
对所述原始世界矩阵进行坐标转换处理,得到各虚拟对象在世界坐标系下的属性信息,所述属性信息包括:所述虚拟对象在世界坐标系下的位置、所述虚拟对象的朝向;
基于所述实例属性数据以及所述属性信息,调用图像处理器渲染所述虚拟对象集群内的各虚拟对象。
9.根据权利要求1-8任一项所述的方法,其特征在于,所述实例属性数据包括:颜色、摆动幅度参数。
10.根据权利要求9所述的方法,其特征在于,所述实例属性数据为摆动幅度参数时,属性数组中的各个数值的生成方式为随机生成。
11.一种虚拟对象集群的渲染装置,其特征在于,所述装置包括:
写入模块,用于响应针对所述虚拟对象集群的渲染指令,从预设存储空间中读取实例属性数据,并将所述实例属性数据对应的实例索引写入所述虚拟对象集群内的各虚拟对象的原始世界矩阵中,得到目标世界矩阵,其中,所述原始世界矩阵用于描述各虚拟对象在虚拟场景中的位置信息,所述实例属性数据用于描述所述虚拟对象的个性化参数;
解析模块,用于在对各虚拟对象进行合批处理时,通过对所述目标世界矩阵进行解析处理,得到所述实例属性数据和所述原始世界矩阵;
渲染模块,用于基于所述实例属性数据和所述原始世界矩阵,调用图像处理器对所述虚拟对象集群内的各虚拟对象进行渲染,以使所述虚拟对象集群中的各虚拟对象呈现与所述实例属性数据相对应的表现效果。
12.一种电子设备,其特征在于,包括:处理器、存储介质和总线,所述存储介质存储有所述处理器可执行的机器可读指令,当电子设备运行时,所述处理器与所述存储介质之间通过总线通信,所述处理器执行所述机器可读指令,以执行如权利要求1至10中任一项所述一种虚拟对象的渲染方法的步骤。
13.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器运行时执行如权利要求1至10中任一项所述一种虚拟对象的渲染方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311558764.8A CN117442974A (zh) | 2023-11-21 | 2023-11-21 | 虚拟对象集群的渲染方法、装置、电子设备和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311558764.8A CN117442974A (zh) | 2023-11-21 | 2023-11-21 | 虚拟对象集群的渲染方法、装置、电子设备和存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117442974A true CN117442974A (zh) | 2024-01-26 |
Family
ID=89587476
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311558764.8A Pending CN117442974A (zh) | 2023-11-21 | 2023-11-21 | 虚拟对象集群的渲染方法、装置、电子设备和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117442974A (zh) |
-
2023
- 2023-11-21 CN CN202311558764.8A patent/CN117442974A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP4198909A1 (en) | Image rendering method and apparatus, and computer device and storage medium | |
US20210287415A1 (en) | Virtual object display method and apparatus, electronic device, and storage medium | |
US20210042991A1 (en) | Object loading method and apparatus, storage medium, and electronic device | |
CN109840931B (zh) | 骨骼动画的合批渲染方法、装置、系统及存储介质 | |
CN110533707B (zh) | 照明估计 | |
CN101059760B (zh) | Opengl到opengl│es翻译器和opengl│es仿真器 | |
CN103678631A (zh) | 页面渲染方法及装置 | |
TW201108152A (en) | Displaying a visual representation of performance metrics for rendered graphics elements | |
CN105528207A (zh) | 一种虚拟现实系统及其中显示安卓应用图像的方法和装置 | |
CN110570507A (zh) | 一种图像渲染方法及装置 | |
CN112241993B (zh) | 游戏图像处理方法、装置及电子设备 | |
KR20180056316A (ko) | 타일-기반 렌더링을 수행하는 방법 및 장치 | |
CN105144243A (zh) | 数据可视化 | |
CN110544291A (zh) | 一种图像渲染方法及装置 | |
CN111738935B (zh) | 残影渲染方法和装置、存储介质和电子装置 | |
CN111773688B (zh) | 柔性对象的渲染方法和装置、存储介质、电子装置 | |
KR101670958B1 (ko) | 이기종 멀티코어 환경에서의 데이터 처리 방법 및 장치 | |
CN110223216A (zh) | 一种基于并行plb的数据处理方法、装置及计算机存储介质 | |
CN112669419A (zh) | 用于渲染的方法、中央处理器、图像处理器、系统和存储介质 | |
WO2020036214A1 (ja) | 画像生成装置、画像生成方法及びプログラム | |
CN117442974A (zh) | 虚拟对象集群的渲染方法、装置、电子设备和存储介质 | |
CN111402369A (zh) | 互动广告的处理方法、装置、终端设备及存储介质 | |
US11995771B2 (en) | Automated weighting generation for three-dimensional models | |
CN115228083A (zh) | 一种资源渲染方法及装置 | |
CN116883575B (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 |