CN110706149B - 一种闪电粒子的渲染方法及装置 - Google Patents

一种闪电粒子的渲染方法及装置 Download PDF

Info

Publication number
CN110706149B
CN110706149B CN201911000176.6A CN201911000176A CN110706149B CN 110706149 B CN110706149 B CN 110706149B CN 201911000176 A CN201911000176 A CN 201911000176A CN 110706149 B CN110706149 B CN 110706149B
Authority
CN
China
Prior art keywords
lightning
data
offset
particle
coordinate
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
CN201911000176.6A
Other languages
English (en)
Other versions
CN110706149A (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.)
Netease Hangzhou Network Co Ltd
Original Assignee
Netease Hangzhou Network 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 Netease Hangzhou Network Co Ltd filed Critical Netease Hangzhou Network Co Ltd
Priority to CN201911000176.6A priority Critical patent/CN110706149B/zh
Publication of CN110706149A publication Critical patent/CN110706149A/zh
Application granted granted Critical
Publication of CN110706149B publication Critical patent/CN110706149B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • 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
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/005General purpose rendering architectures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2210/00Indexing scheme for image generation or computer graphics
    • G06T2210/56Particle system, point based geometry or rendering

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Multimedia (AREA)
  • Computer Graphics (AREA)
  • Processing Or Creating Images (AREA)

Abstract

本申请提供了一种闪电粒子的渲染方法及渲染装置,用于在目标游戏场景中呈现闪电天气,该渲染方法包括:离线生成多组闪电数据;每组闪电数据包括:构成闪电形状的多个闪电粒子的粒子数据;响应于所述闪电天气的渲染信号,从离线生成的多组闪电数据中随机选取至少一组目标闪电数据;针对每组目标闪电数据,基于该组目标闪电数据中包括的每个闪电粒子的粒子数据,并行渲染出每一个闪电粒子,以在目标游戏场景中呈现由该组目标闪电数据对应的多个闪电粒子拼接的闪电形状。本申请能够降低在渲染闪电粒子时所需要耗费的CPU资源。

Description

一种闪电粒子的渲染方法及装置
技术领域
本申请涉及图像处理技术领域,具体而言,涉及一种闪电粒子的渲染方法及装置。
背景技术
多边形网格又被称为“Mesh”,是计算机图形学中用于为各种不规则物体建立模型的一种数据结构。在对游戏场中的各目标,例如建筑物、植物、地形、天气效果,如雷电、云朵等建模的时候,可以通过生成与目标对应的多边形网格的方式来实现。
例如在游戏场景中渲染闪电时,中央处理器(Central Processing Unit,CPU)采用分型法实时生成闪电的多边形网格,然后将实时生成的多边形网格传入至图形处理器(Graphics Processing,GPU)中,以使GPU根据实时生成的多边形网格实现闪电的渲染。
这种闪电的渲染方法,在生成闪电的多边形网格时,需要进行多次迭代,且由于闪电形状会随着时间的变化而变化,因此需要不断生成新的多边形网格,造成需要耗费的CPU资源过多。
发明内容
有鉴于此,本申请实施例的目的在于提供一种闪电粒子的渲染方法及装置,能够降低在渲染闪电粒子时所需要耗费的CPU资源。
第一方面,本申请实施例提供了一种闪电粒子的渲染方法,用于在目标游戏场景中呈现闪电天气,该渲染方法包括:
离线生成多组闪电数据;每组所述闪电数据包括:构成闪电形状的多个闪电粒子的粒子数据;
响应于所述闪电天气的渲染信号,从离线生成的所述多组闪电数据中随机选取至少一组目标闪电数据;
针对每组目标闪电数据,基于该组目标闪电数据中包括的每个闪电粒子的粒子数据,并行渲染出每一个闪电粒子,以在所述目标游戏场景中呈现由该组目标闪电数据对应的多个闪电粒子拼接的闪电形状。
一种可选的实施方式中,所述闪电数据包括:主体结构数据;
所述离线生成闪电数据,包括:
确定目标闪电形状的第一起点坐标、第一终点坐标、以及预设的第一偏移范围;
基于所述第一起点坐标、所述第一终点坐标、以及所述第一偏移范围,生成所述目标闪电形状的主体结构数据,以生成所述目标闪电形状的主体结构。
一种可选的实施方式中,所述第一偏移范围包括:第一偏移距离范围和/或第一偏移角度范围。
一种可选的实施方式中,所述基于所述第一起点坐标、所述第一终点坐标、以及所述第一偏移范围,生成所述目标闪电形状的主体结构数据,包括:
基于所述第一起点坐标、所述第一终点坐标、以及所述第一偏移范围,对第一偏移点坐标进行多次迭代运算,得到多个第一偏移点坐标;
基于所述第一起点坐标、第一终点坐标、以及多个所述第一偏移点坐标,生成所述主体结构数据。
一种可选的实施方式中,所述基于所述第一起点坐标、所述第一终点坐标、以及所述第一偏移范围,对第一偏移点坐标进行多次迭代运算,得到多个第一偏移点坐标,包括:进行下述迭代处理过程,直至确定的第一偏移点坐标的数量达到第一预设数量,或者确定迭代处理次数是否达到第一预设次数;
所述迭代处理过程包括:
根据所述第一起点坐标、以及所述第一终点坐标,确定所述主体结构数据中的当前第一中点坐标,并基于所述第一偏移范围,随机确定当前第一偏移值;
基于所述当前第一中点坐标以及所述当前第一偏移值,对所述当前第一中点坐标进行偏移处理,得到与所述第一起点坐标、所述第一终点坐标对应的第一偏移点坐标;
将所述第一偏移点坐标作为新的第一终点坐标,返回至根据所述第一起点坐标、以及所述第一终点坐标,确定所述主体结构数据中的当前第一中点坐标的步骤,以及将所述第一偏移点坐标作为新的第一起点坐标,返回至根据所述第一起点坐标、以及所述第一终点坐标,确定所述主体结构数据中的当前第一中点坐标的步骤。
一种可选的实施方式中,所述基于所述第一起点坐标、第一终点坐标、以及多个所述第一偏移点坐标,生成所述主体结构数据,包括:
基于生成的各个第一偏移点坐标中的每个第一偏移点坐标,以及与该第一偏移点坐标对应的第一起点坐标,生成第一粒子数据;
以及基于各个第一偏移点坐标中每个第一偏移点坐标,以及与该第一偏移点坐标对应的第一终点坐标,生成第二粒子数据;
基于所述第一粒子数据以及所述第二粒子数据,构成所述主体结构数据。
一种可选的实施方式中,所述闪电数据,还包括:分支结构数据;
所述离线生成闪电数据,还包括:
将所述主体结构上至少一个点的坐标作为第二起点坐标、并确定与各个第二起点坐标对应的第二终点坐标、以及预设的第二偏移范围;
基于所述第二起点坐标、第二终点坐标、以及所述第二偏移范围,生成所述目标闪电形状的分支结构数据;
基于所述主体结构数据以及所述分支结构数据,构成所述闪电数据。
一种可选的实施方式中,所述第二偏移范围包括:第二偏移距离范围和/或第二偏移角度范围。
一种可选的实施方式中,所述基于所述第二起点坐标、第二终点坐标、以及所述第二偏移范围,生成所述目标闪电形状的分支结构数据,包括:
基于所述第二起点坐标、所述第二终点坐标、以及所述第二偏移范围,对第二偏移点坐标进行多次迭代运算,得到多个第二偏移点坐标;
基于所述第二起点坐标、第二终点坐标、以及多个所述第二偏移点坐标,生成所述分支结构数据。
一种可选的实施方式中,所述基于所述第二起点坐标、所述第二终点坐标、以及所述第二偏移范围,对第二偏移点坐标进行多次迭代运算,得到多个第二偏移点坐标,包括:进行下述迭代处理过程,直至确定的第二偏移点坐标的数量达到第二预设数量;
所述迭代处理过程包括:
根据所述第二起点坐标、以及所述第二终点坐标,确定所述分支结构数据中的当前第二中点坐标,并基于所述第二偏移范围,随机确定当前第二偏移值;
基于所述当前第二中点坐标以及所述当前第二偏移值,对所述当前第二中点坐标进行偏移处理,得到与所述第二起点坐标、所述第二终点坐标对应的第二偏移点坐标;
将所述第二偏移点坐标作为新的第二终点坐标,返回至根据所述第二起点坐标、以及所述第二终点坐标,确定所述分支结构数据中的当前第二中点坐标的步骤,以及将所述第二偏移点坐标作为新的第二起点坐标,返回至根据所述第二起点坐标、以及所述第二终点坐标,确定所述分支结构数据中的当前第二中点坐标的步骤。
一种可选的实施方式中,所述基于所述第二起点坐标、第二终点坐标、以及多个所述第二偏移点坐标,生成所述分支结构数据,包括:
基于各个第二偏移点坐标中的每个第二偏移点坐标,以及与该第二偏移点坐标对应的第二起点坐标,生成第三粒子数据;
以及基于各个第二偏移点坐标中每个第二偏移点坐标,以及与该第二偏移点坐标对应的第二终点坐标,生成第四粒子数据;
基于所述第三粒子数据以及所述第四粒子数据,构成所述分支结构数据。
一种可选的实施方式中,根据以下步骤基于每个偏移点坐标和对应的起点坐标生成粒子数据:
基于各个偏移点坐标中的每个偏移点坐标、以及与该偏移点坐标对应的起点坐标,确定闪电粒子中心坐标、闪电粒子长度数据、以及闪电粒子的偏移角度数据;基于所述中心坐标、闪电粒子长度数据、以及所述偏移角度数据,构成与该偏移点坐标对应的粒子数据;
以及,根据以下步骤基于每个偏移点坐标和对应的终点坐标生成粒子数据:
基于各个偏移点坐标中的每个偏移点坐标、以及与该偏移点坐标对应的终点坐标,确定闪电粒子中心坐标、闪电粒子长度数据、以及闪电粒子的偏移角度数据;基于所述中心坐标、闪电粒子长度数据、以及所述偏移角度数据,构成与该偏移点坐标对应的粒子数据。
一种可选的实施方式中,所述基于该组目标闪电数据中包括的每个闪电粒子的粒子数据,并行渲染出每一个闪电粒子,包括:
根据该组目标闪电数据中包括的每个闪电粒子的粒子数据,以及虚拟相机的实时位置信息,确定该组目标闪电数据中包括的每个闪电粒子与所述虚拟相机的相对位置信息;
基于所述相对位置信息、所述该组目标闪电数据中包括的每个闪电粒子的粒子数据、以及预先生成的闪电模型,并行渲染出每一个闪电粒子。
一种可选的实施方式中,所述粒子数据还包括:与闪电粒子对应的权重;所述权重用于控制对应闪电粒子在渲染时的透明度;
所述基于所述相对位置信息、该组目标闪电数据中包括的每个闪电粒子的粒子数据、以及预先生成的闪电模型,并行渲染出每一个闪电粒子,包括:
基于该组闪电数据渲染的初始渲染时间、当前渲染时间、以及该组闪电数据中包括的每个闪电粒子对应的权重,确定该组闪电数据中包括的每个闪电粒子的当前透明度;
基于所述相对位置信息、该组目标闪电数据中包括的每个闪电粒子的粒子数据、预先生成的闪电模型、以及该组闪电数据中包括的每个闪电粒子的当前透明度,并行渲染出每一个闪电粒子。
一种可选的实施方式中,采用下述方式中任一种确定需要在游戏场景中呈现闪电天气:
确定到达与目标天气对应的预设转换时间,且转换的所述目标天气为所述闪电天气;
确定游戏的游戏场景发生转化,且转化后的所述目标游戏场景对应的目标天气为所述闪电天气;
接收到天气转换指令,且所述天气转换指令指示的目标天气为所述闪电天气。
第二方面,本申请实施例还提供一种闪电粒子的渲染装置,用于在目标游戏场景中呈现闪电天气,该渲染装置包括:
生成模块,用于离线生成多组闪电数据;每组所述闪电数据包括:构成闪电形状的多个闪电粒子的粒子数据;
选取模块,用于响应于所述闪电天气的渲染信号,从离线生成的所述多组闪电数据中随机选取至少一组目标闪电数据;
渲染模块,用于针对每组目标闪电数据,基于该组目标闪电数据中包括的每个闪电粒子的粒子数据,并行渲染出每一个闪电粒子,以在所述目标游戏场景中呈现由该组目标闪电数据对应的多个闪电粒子拼接的闪电形状。
一种可选的实施方式中,所述闪电数据包括:主体结构数据;
所述生成模块,在离线生成闪电数据时,具体用于:
确定目标闪电形状的第一起点坐标、第一终点坐标、以及预设的第一偏移范围;
基于所述第一起点坐标、所述第一终点坐标、以及所述第一偏移范围,生成所述目标闪电形状的主体结构数据,以生成所述目标闪电形状的主体结构。
一种可选的实施方式中,所述第一偏移范围包括:第一偏移距离范围和/或第一偏移角度范围。
所述生成模块,在基于所述第一起点坐标、所述第一终点坐标、以及所述第一偏移范围,生成所述目标闪电形状的主体结构数据时,具体用于:
基于所述第一起点坐标、所述第一终点坐标、以及所述第一偏移范围,对第一偏移点坐标进行多次迭代运算,得到多个第一偏移点坐标;
基于所述第一起点坐标、第一终点坐标、以及多个所述第一偏移点坐标,生成所述主体结构数据。
一种可选的实施方式中,所述生成模块,在基于所述第一起点坐标、所述第一终点坐标、以及所述第一偏移范围,对第一偏移点坐标进行多次迭代运算,得到多个第一偏移点坐标时,具体用于:进行下述迭代处理过程,直至确定的第一偏移点坐标的数量达到第一预设数量,或者确定迭代处理次数是否达到第一预设次数;
所述迭代处理过程包括:
根据所述第一起点坐标、以及所述第一终点坐标,确定所述主体结构数据中的当前第一中点坐标,并基于所述第一偏移范围,随机确定当前第一偏移值;
基于所述当前第一中点坐标以及所述当前第一偏移值,对所述当前第一中点坐标进行偏移处理,得到与所述第一起点坐标、所述第一终点坐标对应的第一偏移点坐标;
将所述第一偏移点坐标作为新的第一终点坐标,返回至根据所述第一起点坐标、以及所述第一终点坐标,确定所述主体结构数据中的当前第一中点坐标的步骤,以及
将所述第一偏移点坐标作为新的第一起点坐标,返回至根据所述第一起点坐标、以及所述第一终点坐标,确定所述主体结构数据中的当前第一中点坐标的步骤。
一种可选的实施方式中,所述生成模块,在基于所述第一起点坐标、第一终点坐标、以及多个所述第一偏移点坐标,生成所述主体结构数据时,具体用于:
基于生成的各个第一偏移点坐标中的每个第一偏移点坐标,以及与该第一偏移点坐标对应的第一起点坐标,生成第一粒子数据;
以及基于各个第一偏移点坐标中每个第一偏移点坐标,以及与该第一偏移点坐标对应的第一终点坐标,生成第二粒子数据;
基于所述第一粒子数据以及所述第二粒子数据,构成所述主体结构数据。
一种可选的实施方式中,所述闪电数据,还包括:分支结构数据;
所述生成模块,在离线生成闪电数据时,具体用于:
将所述主体结构上至少一个点的坐标作为第二起点坐标、并确定与各个第二起点坐标对应的第二终点坐标、以及预设的第二偏移范围;
基于所述第二起点坐标、第二终点坐标、以及所述第二偏移范围,生成所述目标闪电形状的分支结构数据;
基于所述主体结构数据以及所述分支结构数据,构成所述闪电数据。
一种可选的实施方式中,所述第二偏移范围包括:第二偏移距离范围和/或第二偏移角度范围。
一种可选的实施方式中,所述生成模块,在基于所述第二起点坐标、第二终点坐标、以及所述第二偏移范围,生成所述目标闪电形状的分支结构数据时,具体用于:
基于所述第二起点坐标、所述第二终点坐标、以及所述第二偏移范围,对第二偏移点坐标进行多次迭代运算,得到多个第二偏移点坐标;
基于所述第二起点坐标、第二终点坐标、以及多个所述第二偏移点坐标,生成所述分支结构数据。
一种可选的实施方式中,所述生成模块,在基于所述第二起点坐标、所述第二终点坐标、以及所述第二偏移范围,对第二偏移点坐标进行多次迭代运算,得到多个第二偏移点坐标时,具体用于:进行下述迭代处理过程,直至确定的第二偏移点坐标的数量达到第二预设数量;
所述迭代处理过程包括:
根据所述第二起点坐标、以及所述第二终点坐标,确定所述分支结构数据中的当前第二中点坐标,并基于所述第二偏移范围,随机确定当前第二偏移值;
基于所述当前第二中点坐标以及所述当前第二偏移值,对所述当前第二中点坐标进行偏移处理,得到与所述第二起点坐标、所述第二终点坐标对应的第二偏移点坐标;
将所述第二偏移点坐标作为新的第二终点坐标,返回至根据所述第二起点坐标、以及所述第二终点坐标,确定所述分支结构数据中的当前第二中点坐标的步骤,以及将所述第二偏移点坐标作为新的第二起点坐标,返回至根据所述第二起点坐标、以及所述第二终点坐标,确定所述分支结构数据中的当前第二中点坐标的步骤。
一种可选的实施方式中,所述生成模块,在基于所述第二起点坐标、第二终点坐标、以及多个所述第二偏移点坐标,生成所述分支结构数据时,具体用于:
基于各个第二偏移点坐标中的每个第二偏移点坐标,以及与该第二偏移点坐标对应的第二起点坐标,生成第三粒子数据;
以及基于各个第二偏移点坐标中每个第二偏移点坐标,以及与该第二偏移点坐标对应的第二终点坐标,生成第四粒子数据;
基于所述第三粒子数据以及所述第四粒子数据,构成所述分支结构数据。
一种可选的实施方式中,所述生成模块,在根据以下步骤基于每个偏移点坐标和对应的起点坐标生成粒子数据时,具体用于:
基于各个偏移点坐标中的每个偏移点坐标、以及与该偏移点坐标对应的起点坐标,确定闪电粒子中心坐标、闪电粒子长度数据、以及闪电粒子的偏移角度数据;基于所述中心坐标、闪电粒子长度数据、以及所述偏移角度数据,构成与该偏移点坐标对应的粒子数据;
以及,根据以下步骤基于每个偏移点坐标和对应的终点坐标生成粒子数据:
基于各个偏移点坐标中的每个偏移点坐标、以及与该偏移点坐标对应的终点坐标,确定闪电粒子中心坐标、闪电粒子长度数据、以及闪电粒子的偏移角度数据;基于所述中心坐标、闪电粒子长度数据、以及所述偏移角度数据,构成与该偏移点坐标对应的粒子数据。
一种可选的实施方式中,所述渲染模块,在基于该组目标闪电数据中包括的每个闪电粒子的粒子数据,并行渲染出每一个闪电粒子时,具体用于:
根据该组目标闪电数据中包括的每个闪电粒子的粒子数据,以及虚拟相机的实时位置信息,确定该组目标闪电数据中包括的每个闪电粒子与所述虚拟相机的相对位置信息;
基于所述相对位置信息、所述该组目标闪电数据中包括的每个闪电粒子的粒子数据、以及预先生成的闪电模型,并行渲染出每一个闪电粒子。
一种可选的实施方式中,所述粒子数据还包括:与闪电粒子对应的权重;所述权重用于控制对应闪电粒子在渲染时的透明度;
所述渲染模块,在基于所述相对位置信息、该组目标闪电数据中包括的每个闪电粒子的粒子数据、以及预先生成的闪电模型,并行渲染出每一个闪电粒子时,具体用于:
基于该组闪电数据渲染的初始渲染时间、当前渲染时间、以及该组闪电数据中包括的每个闪电粒子对应的权重,确定该组闪电数据中包括的每个闪电粒子的当前透明度;
基于所述相对位置信息、该组目标闪电数据中包括的每个闪电粒子的粒子数据、预先生成的闪电模型、以及该组闪电数据中包括的每个闪电粒子的当前透明度,并行渲染出每一个闪电粒子。
一种可选的实施方式中,采用下述方式中任一种确定需要在游戏场景中呈现闪电天气:
确定到达与目标天气对应的预设转换时间,且转换的所述目标天气为所述闪电天气;
确定游戏的游戏场景发生转化,且转化后的所述目标游戏场景对应的目标天气为所述闪电天气;
接收到天气转换指令,且所述天气转换指令指示的目标天气为所述闪电天气。
第三方面,本申请实施例还提供一种计算机设备,包括:处理器、存储器和总线,所述存储器存储有所述处理器可执行的机器可读指令,当计算机设备运行时,所述处理器与所述存储器之间通过总线通信,所述机器可读指令被所述处理器执行时执行上述第一方面,或第一方面中任一种可能的实施方式中的步骤。
第四方面,本申请实施例还提供一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时执行上述第一方面,或第一方面中任一种可能的实施方式中的步骤。
本申请实施例能够离线生成多组闪电数据;响应于闪电天气的渲染信号,从离线生成的多组闪电数据中随机选取至少一组目标闪电数据,并基于该组目标闪电数据中包括的每个闪电粒子的粒子数据,并行渲染出每一个闪电粒子,以在目标游戏场景中呈现由目标闪电数据对应的多个闪电粒子拼接的闪电形状;在该闪电粒子的渲染过程中,闪电数据是离线生成的,因此CPU的工作仅仅是从离线生成的多组闪电数据中随机选取目标闪电数据,并将闪电数据传入至GPU中,以使GPU基于CPU传入的目标闪电数据进行闪电粒子的渲染,降低闪电在渲染时需要耗费的CPU资源。
为使本申请的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。
附图说明
为了更清楚地说明本申请实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本申请的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1示出了本申请实施例所提供的一种闪电粒子的渲染方法的流程图;
图2示出了本申请实施例所提供的闪电粒子的渲染方法中,离线生成主体结构数据的具体方法的流程图;
图3示出了本申请实施例所提供的闪电粒子的渲染方法中,进行迭代处理生成主体结构数据的具体示例的示意图;
图4示出了本申请实施例所提供的闪电粒子的渲染方法中,基于每个偏移点坐标和对应的起点坐标生成粒子数据的具体方法的流程图;
图5示出了本申请实施例所提供的闪电粒子的渲染方法中,离线生成分支结构数据的具体方法的流程图;
图6示出了本申请实施例所提供的闪电粒子的渲染方法中,包括主体结构和分支结构的闪电形状的具体示例的示意图;
图7示出了本申请实施例所提供的闪电粒子的渲染方法中,基于目标闪电数据中包括的每个闪电粒子的粒子数据,并行渲染出每一个闪电粒子的具体方法的流程图;
图8示出了本申请实施例所提供的闪电粒子的渲染方法中,基于GPU instancing方式进行闪电粒子渲染,生成各个闪电粒子对应的片面的过程示意图;
图9示出了本申请实施例所提供的闪电粒子的渲染方法中,确定闪电数据中包括的每个闪电粒子的当前透明度的具体方法的流程图;
图10示出了本申请实施例所提供的一种闪电粒子的渲染装置的示意图;
图11示出了本申请实施例所提供的一种计算机设备的示意图。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本申请实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本申请的实施例的详细描述并非旨在限制要求保护的本申请的范围,而是仅仅表示本申请的选定实施例。基于本申请的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本申请保护的范围。
经研究发现,当前在游戏场景中呈现闪电天气的时候,CPU实时生成构成闪电形状的多边形网格数据;在多边形网格数据中,包括了构成多边形网格的各个多边形顶点的顶点数据;CPU将多边形网格数据传入至GPU中;GPU在接收到多边形网格数据后,对多边形网格数据进行软光栅化,以将对应的闪电形状渲染至游戏场景中。
但是由于在图形用户界面中的图像更新频率比较高,多则能够达到30帧/秒;而当前的闪电渲染方式要针对每一帧图像都生成对应的多边形网格数据,导致需要耗费的CPU资源过多。
基于上述研究,本申请提供了一种闪电粒子的渲染方法,能够离线生成多组闪电数据;当需要在目标游戏场景中呈现闪电天气时,从离线生成的多组闪电数据中随机选取至少一组目标闪电数据,并基于该组目标闪电数据中包括的每个闪电粒子的粒子数据,并行渲染出每一个闪电粒子,以在目标游戏场景中呈现由目标闪电数据对应的多个闪电粒子拼接的闪电形状;在该闪电粒子的渲染过程中,闪电数据是离线生成的,因此CPU的工作仅仅是从离线生成的多组闪电数据中随机选取目标闪电数据,并将闪电数据传入至GPU中,以使GPU基于CPU传入的目标闪电数据进行闪电粒子的渲染,降低闪电在渲染时需要耗费的CPU资源。
针对以上方案所存在的缺陷,均是发明人在经过实践并仔细研究后得出的结果,因此,上述问题的发现过程以及下文中本申请针对上述问题所提出的解决方案,都应该是发明人在本申请过程中对本申请做出的贡献。
下面将结合本申请中附图,对本申请中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本申请的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本申请的实施例的详细描述并非旨在限制要求保护的本申请的范围,而是仅仅表示本申请的选定实施例。基于本申请的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本申请保护的范围。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。
为便于对本实施例进行理解,首先对本申请实施例所公开的一种闪电粒子的渲染方法进行详细介绍,本申请实施例所提供的闪电粒子的渲染方法的执行主体一般为终端设备;终端设备例如包括触控终端、和个人计算机(personal computer,PC)终端。触控终端例如包括:智能手机、平板电脑等;PC终端包括台式电脑、笔记本电脑等;在终端设备中,安装有与游戏对应的游戏程序。
需要说明的是,该闪电粒子的渲染方法也可以是在服务器中执行;此时,游戏一般运行于服务器;通过服务器完成游戏相关的数据处理,终端作为显示设备进行显示服务器发送的数据。当游戏程序运行时,在终端设备的图形用户界面中展示游戏中的游戏场景。下面以执行主体为终端设备为例对本申请实施例提供的闪电粒子的渲染方法加以说明。
参见图1所示,为本申请实施例提供的闪电粒子的渲染方法的流程图,方法包括步骤S101~S103,其中:
S101:离线生成多组闪电数据。
S102:响应于闪电天气的渲染信号,从离线生成的多组闪电数据中随机选取至少一组目标闪电数据;
S103:针对每组目标闪电数据,基于该组目标闪电数据中包括的每个闪电粒子的粒子数据,并行渲染出每一个闪电粒子,以在目标游戏场景中呈现由该组目标闪电数据对应的多个闪电粒子拼接的闪电形状。
下面分别对上述S101~S103加以说明。
I:在上述S101中,在具体实施中,所生成的闪电数据可以根据实际的需要进行具体设定,例如离线生成的闪电数据包括1000组、2000组、3000组等。
闪电数据包括:主体结构数据;或者包括:主体结构数据以及分支结构数据。
(一):针对闪电数据包括主体结构数据的情况:
具体地,参见图2所示,本申请实施例提供一种生成主体结构数据的具体方式,包括下述S201~S202。具体地:
S201:确定目标闪电形状的第一起点坐标、第一终点坐标、以及预设的第一偏移范围。
此处,目标闪电形状的第一起点坐标、第一终点坐标,例如是在预设坐标系中的坐标。例如预设坐标系为基于目标游戏场景构建的坐标系。该坐标系可以为二维直角坐标系,也可以为三维坐标系。
a1:针对预设坐标系为二维直角坐标系的情况:
若目标游戏场景的地图为矩形地图,可以将目标游戏场景任意相邻的两个边界的边界线分别作为直角坐标系的x轴和y轴,将两个边界线的交点作为直角坐标系的原点,构建预设坐标系。此时,所得到的第一起点坐标和第一终点坐标均为二维坐标。例如第一起点坐标表示为A(x1,y1);第一终点坐标表示为B(x2,y2)。
若目标游戏场景的地图为不规则地图,可以根据实际的需要,针对目标游戏场景建立直角坐标系。
此时,在渲染闪电粒子的时候,是将闪电粒子渲染至一个平面中;例如将各个闪电粒子渲染至目标游戏场景预设高度,且平行于直角坐标系所在平面的一个平面中。
a2:针对预设坐标系为三维坐标系的情况:
若目标游戏场景的地图为矩形地图,可以将目标游戏场景任意相邻的两个边界的边界线分别作为三维坐标系的x轴和y轴,将两个边界线的交点作为直角坐标系的原点,并将垂直于原点的先作为三维坐标系的z轴。此时,所得到的第一起点坐标和第一终点坐标均为三维坐标。例如第一起点坐标表示为A(x1,y1,z1);第一终点坐标表示为B(x2,y2,z2)。
若目标游戏场景的地图为不规则地图,可以根据实际的需要,针对目标游戏场景建立三维坐标系。
此时,在渲染闪电粒子的时候,是将闪电粒子进行三维渲染;此时,由于闪电粒子的粒子数据中,包括了用于表征闪电粒子高度的高度数据,基于该高度数据将闪电粒子渲染至目标游戏场景中对应高度即可。
第一偏移范围,包括第一偏移距离范围和/或第一偏移角度范围。
针对第一偏移范围包括第一偏移距离范围的情况,若预设坐标系为直角坐标系,则第一偏移距离范围包括针对x轴的偏移距离范围,和/或,针对y轴的偏移距离范围;若预设坐标系为三维坐标系,则第一偏移距离范围包括针对x轴的偏移距离范围、针对y轴的偏移距离范围、以及针对z轴的偏移距离范围三者中的一种或者多种。
这里需要注意的是,第一偏移距离范围可以采用具体的距离数值来表示;该种情况下,第一坐标值、第二坐标值,也均采用距离数值来表示。
例如第一起点坐标为:A(x1,y1)中,x1表示第一起点坐标指示的第一起点,映射到x轴上时,与原点之间的距离;y1表示第一起点坐标指示的第一起始点映射到y轴上时,与原点之间的距离。
由于不同的终端设备的显示分辨率有所区别,因此第一偏移距离范围还可以基于百分比来表示。该种情况下,第一坐标值、第二坐标值也均采用百分比来表示。
例如第一起点坐标为A(x1%,y1%),x1%表示第一起点坐标指示的第一起点映射到x轴上时,与原点之间的距离占据构成x轴边界线总长度的百分比。y1%表示第一起点坐标指示的第一起点映射到y轴上时,与远点之间的距离占据构成y轴边界线中长度的百分比。
针对第一偏移范围包括第一偏移角度范围的情况,则第一偏移角度范围包括针对x轴的偏移角度范围,和/或,针对y轴的偏移角度范围;若预设坐标系为三维坐标系,则偏移距离范围包括针对x轴的偏移角度范围、针对y轴的偏移角度范围、以及针对z轴的偏移角度范围三者中的一种或者多种。
S202:基于第一起点坐标、第一终点坐标、以及第一偏移范围,生成目标闪电形状的主体结构数据,以生成目标闪电形状的主体结构。
此处,在确定了第一起点坐标、第一中点坐标以及第一偏移范围后,可以采用下述步骤s1~步骤s2来生成目标闪电形状的主体结构:
步骤s1:基于第一起点坐标、第一终点坐标、以及第一偏移范围,对第一偏移点坐标进行多次迭代运算,得到多个第一偏移点坐标。
这里,可以通过下述步骤①~步骤⑤的迭代处理过程,以得到多个第一偏移点坐标:
步骤①:根据第一起点坐标、以及第一终点坐标,确定主体结构数据中的当前第一中点坐标,并基于第一偏移范围,随机确定当前第一偏移值。
步骤②:基于当前第一中点坐标以及当前第一偏移值,对当前第一中点坐标进行偏移处理,得到与第一起点坐标、第一终点坐标对应的第一偏移点坐标。
步骤③:检测第一偏移点坐标的数量是否达到第一预设数量;或者检测迭代次数是否达到第一预设次数;如果否,则跳转至步骤④和步骤⑤;如果是,则跳转至步骤⑥。
步骤④:将第一偏移点坐标作为新的第一终点坐标,并返回至步骤①。
此时,原第一偏移点坐标,并不作为在步骤s2中的第一偏移点坐标用来确定第一粒子数据和第二粒子数据。
步骤⑤:将第一偏移点坐标作为新的第一起点坐标,并返回至步骤①。
步骤⑥:将最后一次迭代得到的多个第一偏移点坐标,确定为生成的多个第一偏移点坐标,并结束迭代过程。
此处,步骤④和步骤⑤并无执行的先后顺序。
步骤s2:基于第一起点坐标、第一终点坐标、以及多个第一偏移点坐标,生成主体结构数据。
此处,可以通过下述步骤⑦~步骤⑨生成主体结构数据:
步骤⑦:基于生成的各个第一偏移点坐标中的每个第一偏移点坐标,以及与该第一偏移点坐标对应的第一起点坐标,生成第一粒子数据,跳转至步骤⑨。
步骤⑧:基于各个第一偏移点坐标中每个第一偏移点坐标,以及与该第一偏移点坐标对应的第一终点坐标,生成第二粒子数据,跳转至步骤⑨。
此处,步骤⑦和步骤⑧中的第一偏移点坐标,仅仅包括最后一次迭代过程中所得到的各个偏移点坐标。
且,步骤⑦和步骤⑧并无执行的先后顺序。但步骤⑨要在步骤⑦和步骤⑧均执行之后执行。
步骤⑨:基于第一粒子数据以及第二粒子数据,构成主体结构数据。
示例性地,参见图3所示,以坐标系为直角坐标系为例,在迭代过程开始的时候,确定的第一起点坐标为:A(x1,y1);第一终点坐标表示为B(x2,y2);随机确定的第一偏移范围为:x(-10,10),y(-5,5)。此时,所得到的主体结构数据指示的主体结构中,A为闪电中主体结构的起点;B为闪电中主体结构的原始终点。
进入第一次迭代处理过程:基于第一起点坐标A(x1,y1);第一终点坐标B(x2,y2)确定的第一中点坐标C为:
基于第一偏移范围,随机确定的当前第一偏移值为x=3,y=-2,则对C进行偏移处理后,得到第一起点坐标A、第一终点坐标B对应的第一偏移点坐标为/>
进入第二次迭代处理过程:将第一偏移点坐标C’作为新的第一终点坐标,并基于第一起点坐标A(x1,y1),和新的第一终点坐标确定的新的第一中点坐标D1为:/>
基于第一偏移范围,随机确定的当前第一偏移值为x=5,y=3,则对D1进行偏移处理后,得到第一起点坐标A、第一终点坐标C’对应的第一偏移坐标为:
同时,将第一偏移点坐标C’作为新的第一起点坐标,并基于该新的第一起点坐标和第一终点坐标B(x2,y2),确定的新的第一中点坐标D2为:
基于第一偏移范围,随机确定的当前第一偏移值为x=9,y=4,则对第一中点坐标D2进行偏移处理后,得到第一起点坐标C’、第一终点坐标B对应的第一偏移坐标为:
进入第三次迭代处理过程:将第一偏移点坐标D1’作为新的第一终点坐标,并根据第一起点坐标A和新的第一终点坐标D1’,确定新的第一中点坐标E1;并根据随机确定的第一偏移值,得到第一起点坐标A和新的第一终点坐标D1’对应的第一偏移坐标E1’。
将第一偏移坐标D1’作为新的第一起点坐标,并根据新的第一起点坐标D1’和第一终点坐标C’,确定新的第一中点坐标E2;并根据随机确定的第一偏移值,得到新的第一起点坐标D1’和第一终点坐标C’对应的第一偏移坐标E2’。
将第一偏移点坐标D2’作为新的第一终点坐标,并根据第一起点坐标C1’和新的第一终点坐标D2’,确定新的第一中点坐标E3;并根据随机确定的第一偏移值,得到第一起点坐标C1’和新的第一终点坐标D2’对应的第一偏移坐标E3’。
将第一偏移坐标D2’作为新的第一起点坐标,并根据新的第一起点坐标D2’和第一终点坐标B,确定新的第一中点坐标E4;并根据随机确定的第一偏移值,得到新的第一起点坐标D2’和第一终点坐标B对应的第一偏移坐标E4’。
……
不断执行上述迭代过程,直至得到的确定的第一偏移点坐标的数量达到第一预设数量,或者确定迭代处理次数是否达到第一预设次数,停止迭代过程,将最后一轮中迭代得到的各个第一偏移点坐标,作为最终所确定的第一偏移点坐标。
在确定各个第一偏移点坐标后,就能够基于各个第一偏移点坐标生成第一粒子数据和第二粒子数据。
参见图4所示,本申请实施例还提供一种基于每个偏移点坐标和对应的起点坐标生成粒子数据的具体方法,包括下述S401~S402。具体地:
S401:基于各个偏移点坐标中的每个偏移点坐标、以及与该偏移点坐标对应的起点坐标,确定闪电粒子中心坐标、闪电粒子长度数据、以及闪电粒子相的偏移角度数据。
此处,例如偏移点坐标为M(xi,yi),对应的起点坐标为N(xj,yj),则闪电粒子中心坐标center满足:
闪电粒子长度数据size_length满足:
闪电粒子的偏移角度数据dir满足:
S402:基于中心坐标、闪电粒子长度数据、以及偏移角度数据,构成与该偏移点坐标对应的粒子数据。
此处,与该偏移点坐标对应的粒子数据,可以以数组的形式进行保存。
类似的,可以采用类似的方式,基于每个偏移点坐标和对应的终点坐标生成粒子数据:
基于各个偏移点坐标中的每个偏移点坐标、以及与该偏移点坐标对应的终点坐标,确定闪电粒子中心坐标、闪电粒子长度数据、以及闪电粒子相的偏移角度数据;基于中心坐标、闪电粒子长度数据、以及偏移角度数据,构成与该偏移点坐标对应的粒子数据。
示例性的,在上述图3对应的示例中,若所确定的第一偏移点坐标包括:E1’、E2’、E3’和E4’,第一粒子数据包括:
基于A、E’生成的粒子数据;
基于D1’、E2’生成的粒子数据;
基于C1’、E3’生成的粒子数据;
基于D2’、E4’生成的粒子数据。
第二粒子数据包括:
基于E’、D1’生成的粒子数据;
基于E2’、C1’生成的粒子数据;
基于E3’、D2’生成的例子数据;
基于E4’、B生成的粒子数据。
(二):针对闪电数据包括:主体结构数据以及分支结构数据的情况:
主体结构数据的方式与上述(一)中类似,在此不再赘述。
参见图5所示,本申请实施例还提供一种生成分支结构数据的具体方法,包括:
S501:将主体结构上至少一个点的坐标作为第二起点坐标、并确定与各个第二起点坐标对应的第二终点坐标、以及预设的第二偏移范围。
S502:基于第二起点坐标、第二终点坐标、以及第二偏移范围,生成目标闪电形状的分支结构数据。
此处,与生成主体结构数据类似,第二偏移范围包括:第二偏移距离范围和/或第二偏移角度范围。
与上述(一)类似,基于第二起点坐标、第二终点坐标、以及第二偏移范围,生成目标闪电形状的分支结构数据,包括:
基于第二起点坐标、第二终点坐标、以及第二偏移范围,对第二偏移点坐标进行多次迭代运算,得到多个第二偏移点坐标;
基于第二起点坐标、第二终点坐标、以及多个第二偏移点坐标,生成分支结构数据。
这里通过采用下述迭代处理过程对第二偏移点坐标进行多次迭代运算,直至确定的第二偏移点坐标的数量达到第二预设数量,以得到多个第二偏移点坐标。
该迭代处理过程包括:
根据第二起点坐标、以及第二终点坐标,确定分支结构数据中的当前第二中点坐标,并基于第二偏移范围,随机确定当前第二偏移值;
基于当前第二中点坐标以及当前第二偏移值,对当前第二中点坐标进行偏移处理,得到与第二起点坐标、第二终点坐标对应的第二偏移点坐标;
将第二偏移点坐标作为新的第二终点坐标,返回至根据第二起点坐标、以及第二终点坐标,确定分支结构数据中的当前第二中点坐标的步骤,以及
将第二偏移点坐标作为新的第二起点坐标,返回至根据第二起点坐标、以及第二终点坐标,确定分支结构数据中的当前第二中点坐标的步骤。
具体的方式与上述得到第一偏移点的过程类似,在此不再赘述。
另外,可以采用下述方式基于第二起点坐标、第二终点坐标、以及多个第二偏移点坐标,生成分支结构数据:
基于各个第二偏移点坐标中的每个第二偏移点坐标,以及与该第二偏移点坐标对应的第二起点坐标,生成第三粒子数据;
以及基于各个第二偏移点坐标中每个第二偏移点坐标,以及与该第二偏移点坐标对应的第二终点坐标,生成第四粒子数据;
基于第三粒子数据以及第四粒子数据,构成分支结构数据。
此处,生成第三粒子数据的具体方式与生成第一粒子数据的具体方式类似;生成第四粒子数据的具体方式与生成第二粒子数据的具体方式类似,在此也不再赘述。
S503:基于主体结构数据以及分支结构数据,构成闪电数据。
此处,例如图6所示,生成的闪电数据中,包括了主体结构数据指示的主体结构,以及分支结构数据中指示的分支结构。
另外,在另一种示例中,还可以将上述实施例生成的分支结构数据,作为第一级分支结构数据,并在第一级分支结构数据的基础上,在嵌套生成第二级分支结构数据,以生成结构更加复杂的闪电形状。
例如,在另一实施例中,还包括:
将分支结构数据指示的分支结构上至少一个点的坐标作为第三起点坐标、并确定与各个第三起点坐标对应的第三终点坐标、以及第三偏移范围。
这里嵌套生成的第二级分支结构数据,可以只包括一个等级的第二级分支结构数据,也可以包括更多等级的分支结构数据。
Ⅱ:在上述S102中,可以采用下述方式确定在线运行的目标游戏场景中需要呈现闪电天气:
满足天气情景更换条件,且要更换的目标天气为闪电天气。
这里,天气情景更换条件包括:
c1:到达与目标天气对应的预设转换时间。
此处,与目标天气对应的预设转换时间是预先设定的;例如游戏中举办某种对天气情景有要求的活动时,活动会在某个时间开启,则可以将该活动开启时间确定为预设转换时间;在该预设转换时间达到时,确认从原天气转换至目标天气。
c2:游戏的游戏场景发生转化,且转化后的目标游戏场景对应的目标天气为闪电天气。
此处,游戏场景是指可操控的虚拟游戏角色所在的场景;例如游戏包括多张地图,每张地图对应一个游戏场景。不同游戏场景可以对应相同的天气,也可以对应不同的天气;例如游戏场景包括“长安城”和“江南”,在“江南”场景中,其天气情景为闪电天气;而“长安城”的天气情景为晴天,因此当用户可操控的虚拟游戏角色从“长安城”切换至“江南”后,除了要在图形用户界面上渲染“江南”场景外,还需要将闪电粒子渲染至图形用户界面,以使图形用户界面呈现“江南”对应的闪电天气。
c3:接收到天气转换指令,且天气转换指令指示的目标天气为闪电天气。
示例性的,游戏客户端会运行业务逻辑脚本,该业务逻辑脚本能够基于一定的天气算法,随机的调整游戏中的天气情景。当调整天气情景时,业务逻辑脚本会生成对应的天气转换指令,并将该天气转换指令传递给CPU。在该天气转换指令中,携带有目标天气的标识信息。CPU在接收到天气转换指令后,确定需要更换的目标天气为闪电天气时,即确定需要在在目标游戏场景中需要呈现闪电天气。
在出现上述情况后,即可以视为接收到闪电天气的渲染信号。CPU响应该闪电天气的渲染信号,会从离线生成的多组闪电数据中随机选取至少一组目标闪电数据。
在目标闪电数据中有两组及以上时,在对目标闪电数据对应的闪电粒子进行渲染时,可以将各组目标闪电数据分别对应的闪电粒子渲染至同一帧图像中。
较为特殊的,为了降低GPU在渲染时的计算资源消耗,可以将不同组的目标闪电数据对应的闪电粒子进行交替渲染至不同帧图像中。此时,由于图形用户界面中的图像刷新的频率是较高的,例如能够达到30帧/秒,因此虽然是将不同的闪电数据交替渲染至不同帧图像中,但在视觉效果上仍然能够达到与将至少两组闪电数据对应的闪电粒子渲染至同一帧图像中相同的效果。
例如,确定的目标闪电数据包括第一组目标闪电数据P和第二组目标闪电数据Q;在渲染P和Q分别对应的闪电粒子时,首先将P对应的闪电粒子渲染至第一帧图像中,并在图形用户界面中展示该第一帧图像;然后将Q对应的闪电粒子渲染至第二帧图像中,并在图形用户界面上展示该第二帧图像;然后再将P对应的闪电粒子渲染至第三帧图像中,并在图形用户界面上展示该第二帧图像……如此,交替实现两组目标闪电粒子的渲染。
Ⅲ:在上述S103中,参见图7所示,本申请实施例还提供一种基于该组目标闪电数据中包括的每个闪电粒子的粒子数据,并行渲染出每一个闪电粒子的具体方法,包括下述S701~S702。具体地:
S701:根据该组目标闪电数据中包括的每个闪电粒子的粒子数据,以及虚拟相机的实时位置信息,确定该组目标闪电数据中包括的每个闪电粒子与虚拟相机的相对位置信息。
这里,虚拟相机的实时位置信息一般是周期性从游戏引擎中读取的。获取虚拟相机实时位置信息的周期可以根据需要进行设定。
粒子数据包括了闪电粒子中心坐标,该闪电粒子中心坐标是相对于预设坐标系的位置信息,而预设坐标系是基于游戏场景确定的,因此,该闪电粒子中心坐标能够表征闪电粒子在游戏场景中的绝对位置。
因此,能够基于闪电粒子中心坐标,以及虚拟相机的实时位置信息,得到各个闪电粒子相对于虚拟相机的相对于位置信息。
S702:基于相对位置信息、该组目标闪电数据中包括的每个闪电粒子的粒子数据、以及预先生成的闪电模型,并行渲染出每一个闪电粒子。
此处,当虚拟相机的实施位置确定后,其曝光区域也就能够确定,而虚拟相机的曝光区域有限,在很多情况下,并不能够要将所有的闪电粒子都展示出来,因此,为了节省GPU的计算资源,可以仅仅将不位于曝光区域内闪电粒子筛选出来,得到需要渲染的目标闪电粒子。
此时,可以基于闪电模型,以及每个目标闪电粒子的粒子数据,生成与每个目标闪电粒子对应的闪电粒子实例。然后根据相对位置信息,渲染闪电粒子实例。
并行渲染闪电粒子时,是指将各个闪电粒子的粒子数据并行从闪电数据中读取出来,然后进行并行渲染。
在渲染闪电粒子的时候,例如采用GPU instancing的方式来进行。在采用GPUinstancing方式渲染闪电粒子时,CPU在将闪电数据传递给GPU后,各个闪电粒子的粒子数据被存储在预先设定的数组中,如图8所示,被存储在instance data中。在进行闪电粒子的渲染时,将各个闪电粒子的粒子数据从instance data中并行读取出来,并生成与每个闪电粒子对应的面片。然后基于预先生成的闪电模型,对各个面片进行渲染,得到渲染后的闪电粒子。各个闪电粒子拼接成闪电形状。
另外,闪电在实际过程中会在不同时间呈现光暗的变化。为了呈现这种变化,本申请另一实施例中,在生成的闪电粒子的粒子数据中,还包括了与各个闪电粒子对应的权重。该权重用于控制对应闪电粒子在渲染时的透明度。
此时,在该实施例中,上述S702具体包括:
基于该组闪电数据渲染的初始渲染时间、当前渲染时间、以及该组闪电数据中包括的每个闪电粒子对应的权重,确定该组闪电数据中包括的每个闪电粒子的当前透明度;
基于相对位置信息、该组目标闪电数据中包括的每个闪电粒子的粒子数据、预先生成的闪电模型、以及该组闪电数据中包括的每个闪电粒子的当前透明度,并行渲染出每一个闪电粒子。
具体地,各个闪电粒子的权重可以根据实际的需要进行具体设置。
示例性的,权重与透明度具有正相关性或者负相关性。
d1:针对权重与透明度具有负相关性的情况:权重越大,透明度越小。此时,越接近闪电中主体结构的起点的闪电粒子,对应的权重也就越大。
针对这种情况,在确定每个闪电粒子的当前透明度时,可以随着时间的流逝,逐渐增大各个闪电粒子对应的权重;在当前渲染时间与初始渲染时间之间的时间差,大于预设时间差后,随着时间的增加,逐渐降低各个闪电粒子对应的权重,以呈现闪电由弱变强逐渐显示,又由强变弱逐渐消失的效果。
例如:参见图9所示,可以采用下述方式确定该组闪电数据中包括的每个闪电粒子的当前透明度:
S901:根据闪电数据的初始渲染时间、以及当前渲染时间,确定初始渲染时间以及当前渲染时间之间的时间差;
S902:在时间差小于或者等于预设时间差阈值时,按照该时间差,以及闪电粒子渲染的总时长,确定第一增强系数;其中,第一增强系数与时间差具有正相关性;
S903:针对每个闪电粒子,根据该闪电粒子的在最近的上一渲染时间对应的权重,以及该第一增强系数,确定该闪电粒子在当前渲染时间对应的权重。此时,该闪电粒子在当前渲染时间对应的权重,大于该闪电粒子在最近的上一渲染时间对应的权重。跳转至S906。
S904:在时间差大于预设时间差阈值时,按照该时间差,以及闪电粒子渲染的总时长,确定第一衰减系数;其中,第一衰减系数与时间差具有正相关性;
S905:针对每个闪电粒子,根据该闪电粒子的在最近的上一渲染时间对应的权重,以及该第一衰减系数,确定该闪电粒子在当前渲染时间对应的权重。此时,该闪电粒子在当前渲染时间对应的权重,小于该闪电粒子在最近的上一渲染时间对应的权重。跳转至S906。
S906:基于该闪电粒子在当前渲染时间对应的权重,以及预先确定的权重与透明度之间的映射关系,确定该闪电粒子的当前透明度。
例如,闪电数据的初始渲染时间为t1,当前渲染时间为tj,最近的上一渲染时间为tj-1,则初始渲染时间与当前渲染时间之间的时间差Tj=tj-t1
第一衰减系数满足:其中,T为预设时间差阈值;T为闪电粒子渲染的总时长。
则该闪电粒子在当前渲染时间对应的权重Mj=Mj-1(1-ωj)。其中,Mj-1为闪电粒子在最近的上一渲染时间对应的权重。
然后根据闪电粒子在当前渲染时间对应的权重,确定闪电粒子的当前透明度。
这里,该示例仅仅是一种确定闪电数据中包括的每个闪电粒子的当前透明度的一种示例。
d2:针对当权重与透明度具有正相关性的情况,也即,权重越大,透明度越大的时候,越接近闪电中主体结构的起点的闪电粒子,对应的权重也就越小。
针对这种情况,在确定每个闪电粒子的当前透明度时,可以随着时间的流逝,逐渐减小各个闪电粒子对应的权重;在当前渲染时间与初始渲染时间之间的时间差,大于预设时间差后,随着时间的增加,逐渐增加各个闪电粒子对应的权重,以呈现闪电由弱变强逐渐显示,又由强变弱逐渐消失的效果。
具体的确定方式与上述d1类似,例如包括:
根据闪电数据的初始渲染时间、以及当前渲染时间,确定初始渲染时间以及当前渲染时间之间的时间差;
在时间差小于或者等于预设时间差阈值时,按照该时间差,以及闪电粒子渲染的总时长,确定第二衰减系数;其中,第一衰减系数与时间差具有正相关性;
针对每个闪电粒子,根据该闪电粒子的在最近的上一渲染时间对应的权重,以及该第二衰减系数,确定该闪电粒子在当前渲染时间对应的权重。此时,该闪电粒子在当前渲染时间对应的权重,小于该闪电粒子在最近的上一渲染时间对应的权重。
在时间差大于预设时间差阈值时,按照该时间差,以及闪电粒子渲染的总时长,确定第二增强系数;其中,第二增强系数与时间差具有正相关性;
针对每个闪电粒子,根据该闪电粒子的在最近的上一渲染时间对应的权重,以及该第二增强系数,确定该闪电粒子在当前渲染时间对应的权重。此时,该闪电粒子在当前渲染时间对应的权重,大于该闪电粒子在最近的上一渲染时间对应的权重。
基于该闪电粒子在当前渲染时间对应的权重,以及预先确定的权重与透明度之间的映射关系,确定该闪电粒子的当前透明度。
具体的实现方式在此不再赘述。
在确定了每个闪电粒子的当前透明度后,就能够基于该当前透明度并行渲染每一个闪电粒子。
另外,本申请实施例还提供另外一种基于各个闪电粒子的权重,对闪电粒子的透明度调整的具体方式:
为每个闪电粒子确定粒子权重,且越接近闪电中主体结构的起点的闪电粒子,粒子权重也就越小,越远离闪电中主体结构的起点的闪电粒子,粒子权重也就越大。这里,起点又称头部,闪电中远离起点的一端称为尾部。
同时为整个闪电设置一总权重W,且该总权重W随着时间的推移从0至1逐渐增加。在将闪电粒子渲染至任一帧图像中时,基于该帧图像的显示时间,以及闪电粒子的初始显示时间,确定与该帧图像对应的当前总权重,并将各个闪电粒子的粒子权重与当前总权重进行比对;若闪电粒子的粒子权重小于或者等于该当前总权重,则对该闪电粒子进行显示,也即,降低闪电粒子的透明度;若闪电粒子的粒子权重大于该当前总权重,则将该闪电粒子隐藏显示,也即增加闪电粒子的透明度。进而通过上述过程,实现了闪电粒子能够从头部向尾部逐渐显示出来。
本申请实施例能够离线生成多组闪电数据;响应于所述闪电天气的渲染信号,从离线生成的多组闪电数据中随机选取至少一组目标闪电数据,并基于该组目标闪电数据中包括的每个闪电粒子的粒子数据,并行渲染出每一个闪电粒子,以在目标游戏场景中呈现由目标闪电数据对应的多个闪电粒子拼接的闪电形状;在该闪电粒子的渲染过程中,闪电数据是离线生成的,因此CPU的工作仅仅是从离线生成的多组闪电数据中随机选取目标闪电数据,并将闪电数据传入至GPU中,以使GPU基于CPU传入的目标闪电数据进行闪电粒子的渲染,降低闪电在渲染时需要耗费的CPU资源。
基于同一发明构思,本申请实施例中还提供了与闪电粒子的渲染方法对应的闪电粒子的渲染装置,由于本申请实施例中的装置解决问题的原理与本申请实施例上述闪电粒子的渲染方法相似,因此装置的实施可以参见方法的实施,重复之处不再赘述。
参照图10所示,为本申请实施例提供的一种闪电粒子的渲染装置的示意图,所述装置包括:生成模块10、选取模块20、渲染模块30;其中,
生成模块10,用于离线生成多组闪电数据;每组所述闪电数据包括:构成闪电形状的多个闪电粒子的粒子数据;
选取模块20,用于响应于所述闪电天气的渲染信号,从离线生成的所述多组闪电数据中随机选取至少一组目标闪电数据;
渲染模块30,用于针对每组目标闪电数据,基于该组目标闪电数据中包括的每个闪电粒子的粒子数据,并行渲染出每一个闪电粒子,以在所述目标游戏场景中呈现由该组目标闪电数据对应的多个闪电粒子拼接的闪电形状。
一种可选的实施方式中,所述闪电数据包括:主体结构数据;
所述生成模块10,在离线生成闪电数据时,具体用于:
确定目标闪电形状的第一起点坐标、第一终点坐标、以及预设的第一偏移范围;
基于所述第一起点坐标、所述第一终点坐标、以及所述第一偏移范围,生成所述目标闪电形状的主体结构数据,以生成所述目标闪电形状的主体结构。
一种可选的实施方式中,所述第一偏移范围包括:第一偏移距离范围和/或第一偏移角度范围。
所述生成模块10,在基于所述第一起点坐标、所述第一终点坐标、以及所述第一偏移范围,生成所述目标闪电形状的主体结构数据时,具体用于:
基于所述第一起点坐标、所述第一终点坐标、以及所述第一偏移范围,对第一偏移点坐标进行多次迭代运算,得到多个第一偏移点坐标;
基于所述第一起点坐标、第一终点坐标、以及多个所述第一偏移点坐标,生成所述主体结构数据。
一种可选的实施方式中,所述生成模块10,在基于所述第一起点坐标、所述第一终点坐标、以及所述第一偏移范围,对第一偏移点坐标进行多次迭代运算,得到多个第一偏移点坐标时,具体用于:进行下述迭代处理过程,直至确定的第一偏移点坐标的数量达到第一预设数量,或者确定迭代处理次数是否达到第一预设次数;
所述迭代处理过程包括:
根据所述第一起点坐标、以及所述第一终点坐标,确定所述主体结构数据中的当前第一中点坐标,并基于所述第一偏移范围,随机确定当前第一偏移值;
基于所述当前第一中点坐标以及所述当前第一偏移值,对所述当前第一中点坐标进行偏移处理,得到与所述第一起点坐标、所述第一终点坐标对应的第一偏移点坐标;
将所述第一偏移点坐标作为新的第一终点坐标,返回至根据所述第一起点坐标、以及所述第一终点坐标,确定所述主体结构数据中的当前第一中点坐标的步骤,以及
将所述第一偏移点坐标作为新的第一起点坐标,返回至根据所述第一起点坐标、以及所述第一终点坐标,确定所述主体结构数据中的当前第一中点坐标的步骤。
一种可选的实施方式中,所述生成模块10,在基于所述第一起点坐标、第一终点坐标、以及多个所述第一偏移点坐标,生成所述主体结构数据时,具体用于:
基于生成的各个第一偏移点坐标中的每个第一偏移点坐标,以及与该第一偏移点坐标对应的第一起点坐标,生成第一粒子数据;
以及基于各个第一偏移点坐标中每个第一偏移点坐标,以及与该第一偏移点坐标对应的第一终点坐标,生成第二粒子数据;
基于所述第一粒子数据以及所述第二粒子数据,构成所述主体结构数据。
一种可选的实施方式中,所述闪电数据,还包括:分支结构数据;
所述生成模块10,在离线生成闪电数据时,具体用于:
将所述主体结构上至少一个点的坐标作为第二起点坐标、并确定与各个第二起点坐标对应的第二终点坐标、以及预设的第二偏移范围;
基于所述第二起点坐标、第二终点坐标、以及所述第二偏移范围,生成所述目标闪电形状的分支结构数据;
基于所述主体结构数据以及所述分支结构数据,构成所述闪电数据。
一种可选的实施方式中,所述第二偏移范围包括:第二偏移距离范围和/或第二偏移角度范围。
一种可选的实施方式中,所述生成模块10,在基于所述第二起点坐标、第二终点坐标、以及所述第二偏移范围,生成所述目标闪电形状的分支结构数据时,具体用于:
基于所述第二起点坐标、所述第二终点坐标、以及所述第二偏移范围,对第二偏移点坐标进行多次迭代运算,得到多个第二偏移点坐标;
基于所述第二起点坐标、第二终点坐标、以及多个所述第二偏移点坐标,生成所述分支结构数据。
一种可选的实施方式中,所述生成模块10,在基于所述第二起点坐标、所述第二终点坐标、以及所述第二偏移范围,对第二偏移点坐标进行多次迭代运算,得到多个第二偏移点坐标时,具体用于:进行下述迭代处理过程,直至确定的第二偏移点坐标的数量达到第二预设数量;
所述迭代处理过程包括:
根据所述第二起点坐标、以及所述第二终点坐标,确定所述分支结构数据中的当前第二中点坐标,并基于所述第二偏移范围,随机确定当前第二偏移值;
基于所述当前第二中点坐标以及所述当前第二偏移值,对所述当前第二中点坐标进行偏移处理,得到与所述第二起点坐标、所述第二终点坐标对应的第二偏移点坐标;
将所述第二偏移点坐标作为新的第二终点坐标,返回至根据所述第二起点坐标、以及所述第二终点坐标,确定所述分支结构数据中的当前第二中点坐标的步骤,以及
将所述第二偏移点坐标作为新的第二起点坐标,返回至根据所述第二起点坐标、以及所述第二终点坐标,确定所述分支结构数据中的当前第二中点坐标的步骤。
一种可选的实施方式中,所述生成模块10,在基于所述第二起点坐标、第二终点坐标、以及多个所述第二偏移点坐标,生成所述分支结构数据时,具体用于:
基于各个第二偏移点坐标中的每个第二偏移点坐标,以及与该第二偏移点坐标对应的第二起点坐标,生成第三粒子数据;
以及基于各个第二偏移点坐标中每个第二偏移点坐标,以及与该第二偏移点坐标对应的第二终点坐标,生成第四粒子数据;
基于所述第三粒子数据以及所述第四粒子数据,构成所述分支结构数据。
一种可选的实施方式中,所述生成模块10,在根据以下步骤基于每个偏移点坐标和对应的起点坐标生成粒子数据时,具体用于:
基于各个偏移点坐标中的每个偏移点坐标、以及与该偏移点坐标对应的起点坐标,确定闪电粒子中心坐标、闪电粒子长度数据、以及闪电粒子的偏移角度数据;基于所述中心坐标、闪电粒子长度数据、以及所述偏移角度数据,构成与该偏移点坐标对应的粒子数据;
以及,根据以下步骤基于每个偏移点坐标和对应的终点坐标生成粒子数据:
基于各个偏移点坐标中的每个偏移点坐标、以及与该偏移点坐标对应的终点坐标,确定闪电粒子中心坐标、闪电粒子长度数据、以及闪电粒子的偏移角度数据;基于所述中心坐标、闪电粒子长度数据、以及所述偏移角度数据,构成与该偏移点坐标对应的粒子数据。
一种可选的实施方式中,所述渲染模块30,在基于该组目标闪电数据中包括的每个闪电粒子的粒子数据,并行渲染出每一个闪电粒子时,具体用于:
根据该组目标闪电数据中包括的每个闪电粒子的粒子数据,以及虚拟相机的实时位置信息,确定该组目标闪电数据中包括的每个闪电粒子与所述虚拟相机的相对位置信息;
基于所述相对位置信息、所述该组目标闪电数据中包括的每个闪电粒子的粒子数据、以及预先生成的闪电模型,并行渲染出每一个闪电粒子。
一种可选的实施方式中,所述粒子数据还包括:与闪电粒子对应的权重;所述权重用于控制对应闪电粒子在渲染时的透明度;
所述渲染模块30,在基于所述相对位置信息、该组目标闪电数据中包括的每个闪电粒子的粒子数据、以及预先生成的闪电模型,并行渲染出每一个闪电粒子时,具体用于:
基于该组闪电数据渲染的初始渲染时间、当前渲染时间、以及该组闪电数据中包括的每个闪电粒子对应的权重,确定该组闪电数据中包括的每个闪电粒子的当前透明度;
基于所述相对位置信息、该组目标闪电数据中包括的每个闪电粒子的粒子数据、预先生成的闪电模型、以及该组闪电数据中包括的每个闪电粒子的当前透明度,并行渲染出每一个闪电粒子。
一种可选的实施方式中,采用下述方式中任一种确定需要在游戏场景中呈现闪电天气:
确定到达与目标天气对应的预设转换时间,且转换的所述目标天气为所述闪电天气;
确定游戏的游戏场景发生转化,且转化后的所述目标游戏场景对应的目标天气为所述闪电天气;
接收到天气转换指令,且所述天气转换指令指示的目标天气为所述闪电天气。
本申请实施例还提供了一种计算机设备,如图11所示,为本申请实施例提供的计算机设备结构示意图,包括:
处理器111、存储器112、和总线113;存储器112用于存储执行指令,包括内存1121和外部存储器1122;这里的内存1121也称内存储器,用于暂时存放处理器111中的运算数据,以及与硬盘等外部存储器1122交换的数据,处理器111通过内存1121与外部存储器1122进行数据交换,当所述计算机设备运行时,所述处理器111与所述存储器112之间通过总线113通信,使得所述处理器111在用户态执行以下指令:
离线生成多组闪电数据;每组所述闪电数据包括:构成闪电形状的多个闪电粒子的粒子数据;
响应于所述闪电天气的渲染信号,从离线生成的所述多组闪电数据中随机选取至少一组目标闪电数据;
针对每组目标闪电数据,基于该组目标闪电数据中包括的每个闪电粒子的粒子数据,并行渲染出每一个闪电粒子,以在所述目标游戏场景中呈现由该组目标闪电数据对应的多个闪电粒子拼接的闪电形状。
一种可能的实施方式中,处理器111执行的指令中,所述闪电数据包括:主体结构数据;
所述离线生成闪电数据,包括:
确定目标闪电形状的第一起点坐标、第一终点坐标、以及预设的第一偏移范围;
基于所述第一起点坐标、所述第一终点坐标、以及所述第一偏移范围,生成所述目标闪电形状的主体结构数据,以生成所述目标闪电形状的主体结构。
一种可能的实施方式中,处理器111执行的指令中,所述第一偏移范围包括:第一偏移距离范围和/或第一偏移角度范围。
一种可能的实施方式中,处理器111执行的指令中,所述基于所述第一起点坐标、所述第一终点坐标、以及所述第一偏移范围,生成所述目标闪电形状的主体结构数据,包括:
基于所述第一起点坐标、所述第一终点坐标、以及所述第一偏移范围,对第一偏移点坐标进行多次迭代运算,得到多个第一偏移点坐标;
基于所述第一起点坐标、第一终点坐标、以及多个所述第一偏移点坐标,生成所述主体结构数据。
一种可能的实施方式中,处理器111执行的指令中,所述基于所述第一起点坐标、所述第一终点坐标、以及所述第一偏移范围,对第一偏移点坐标进行多次迭代运算,得到多个第一偏移点坐标,包括:进行下述迭代处理过程,直至确定的第一偏移点坐标的数量达到第一预设数量,或者确定迭代处理次数是否达到第一预设次数;
所述迭代处理过程包括:
根据所述第一起点坐标、以及所述第一终点坐标,确定所述主体结构数据中的当前第一中点坐标,并基于所述第一偏移范围,随机确定当前第一偏移值;
基于所述当前第一中点坐标以及所述当前第一偏移值,对所述当前第一中点坐标进行偏移处理,得到与所述第一起点坐标、所述第一终点坐标对应的第一偏移点坐标;
将所述第一偏移点坐标作为新的第一终点坐标,返回至根据所述第一起点坐标、以及所述第一终点坐标,确定所述主体结构数据中的当前第一中点坐标的步骤,以及
将所述第一偏移点坐标作为新的第一起点坐标,返回至根据所述第一起点坐标、以及所述第一终点坐标,确定所述主体结构数据中的当前第一中点坐标的步骤。
一种可能的实施方式中,处理器111执行的指令中,所述基于所述第一起点坐标、第一终点坐标、以及多个所述第一偏移点坐标,生成所述主体结构数据,包括:
基于生成的各个第一偏移点坐标中的每个第一偏移点坐标,以及与该第一偏移点坐标对应的第一起点坐标,生成第一粒子数据;
以及基于各个第一偏移点坐标中每个第一偏移点坐标,以及与该第一偏移点坐标对应的第一终点坐标,生成第二粒子数据;
基于所述第一粒子数据以及所述第二粒子数据,构成所述主体结构数据。
一种可能的实施方式中,处理器111执行的指令中,所述闪电数据,还包括:分支结构数据;
所述离线生成闪电数据,还包括:
将所述主体结构上至少一个点的坐标作为第二起点坐标、并确定与各个第二起点坐标对应的第二终点坐标、以及预设的第二偏移范围;
基于所述第二起点坐标、第二终点坐标、以及所述第二偏移范围,生成所述目标闪电形状的分支结构数据;
基于所述主体结构数据以及所述分支结构数据,构成所述闪电数据。
一种可能的实施方式中,处理器111执行的指令中,所述第二偏移范围包括:第二偏移距离范围和/或第二偏移角度范围。
一种可能的实施方式中,处理器111执行的指令中,所述基于所述第二起点坐标、第二终点坐标、以及所述第二偏移范围,生成所述目标闪电形状的分支结构数据,包括:
基于所述第二起点坐标、所述第二终点坐标、以及所述第二偏移范围,对第二偏移点坐标进行多次迭代运算,得到多个第二偏移点坐标;
基于所述第二起点坐标、第二终点坐标、以及多个所述第二偏移点坐标,生成所述分支结构数据。
一种可能的实施方式中,处理器111执行的指令中,所述基于所述第二起点坐标、所述第二终点坐标、以及所述第二偏移范围,对第二偏移点坐标进行多次迭代运算,得到多个第二偏移点坐标,包括:进行下述迭代处理过程,直至确定的第二偏移点坐标的数量达到第二预设数量;
所述迭代处理过程包括:
根据所述第二起点坐标、以及所述第二终点坐标,确定所述分支结构数据中的当前第二中点坐标,并基于所述第二偏移范围,随机确定当前第二偏移值;
基于所述当前第二中点坐标以及所述当前第二偏移值,对所述当前第二中点坐标进行偏移处理,得到与所述第二起点坐标、所述第二终点坐标对应的第二偏移点坐标;
将所述第二偏移点坐标作为新的第二终点坐标,返回至根据所述第二起点坐标、以及所述第二终点坐标,确定所述分支结构数据中的当前第二中点坐标的步骤,以及
将所述第二偏移点坐标作为新的第二起点坐标,返回至根据所述第二起点坐标、以及所述第二终点坐标,确定所述分支结构数据中的当前第二中点坐标的步骤。
一种可能的实施方式中,处理器111执行的指令中,所述基于所述第二起点坐标、第二终点坐标、以及多个所述第二偏移点坐标,生成所述分支结构数据,包括:
基于各个第二偏移点坐标中的每个第二偏移点坐标,以及与该第二偏移点坐标对应的第二起点坐标,生成第三粒子数据;
以及基于各个第二偏移点坐标中每个第二偏移点坐标,以及与该第二偏移点坐标对应的第二终点坐标,生成第四粒子数据;
基于所述第三粒子数据以及所述第四粒子数据,构成所述分支结构数据。
一种可能的实施方式中,处理器111执行的指令中,根据以下步骤基于每个偏移点坐标和对应的起点坐标生成粒子数据:
基于各个偏移点坐标中的每个偏移点坐标、以及与该偏移点坐标对应的起点坐标,确定闪电粒子中心坐标、闪电粒子长度数据、以及闪电粒子的偏移角度数据;基于所述中心坐标、闪电粒子长度数据、以及所述偏移角度数据,构成与该偏移点坐标对应的粒子数据;
以及,根据以下步骤基于每个偏移点坐标和对应的终点坐标生成粒子数据:
基于各个偏移点坐标中的每个偏移点坐标、以及与该偏移点坐标对应的终点坐标,确定闪电粒子中心坐标、闪电粒子长度数据、以及闪电粒子的偏移角度数据;基于所述中心坐标、闪电粒子长度数据、以及所述偏移角度数据,构成与该偏移点坐标对应的粒子数据。
一种可能的实施方式中,处理器111执行的指令中,所述基于该组目标闪电数据中包括的每个闪电粒子的粒子数据,并行渲染出每一个闪电粒子,包括:
根据该组目标闪电数据中包括的每个闪电粒子的粒子数据,以及虚拟相机的实时位置信息,确定该组目标闪电数据中包括的每个闪电粒子与所述虚拟相机的相对位置信息;
基于所述相对位置信息、所述该组目标闪电数据中包括的每个闪电粒子的粒子数据、以及预先生成的闪电模型,并行渲染出每一个闪电粒子。
一种可能的实施方式中,处理器111执行的指令中,所述粒子数据还包括:与闪电粒子对应的权重;所述权重用于控制对应闪电粒子在渲染时的透明度;
所述基于所述相对位置信息、该组目标闪电数据中包括的每个闪电粒子的粒子数据、以及预先生成的闪电模型,并行渲染出每一个闪电粒子,包括:
基于该组闪电数据渲染的初始渲染时间、当前渲染时间、以及该组闪电数据中包括的每个闪电粒子对应的权重,确定该组闪电数据中包括的每个闪电粒子的当前透明度;
基于所述相对位置信息、该组目标闪电数据中包括的每个闪电粒子的粒子数据、预先生成的闪电模型、以及该组闪电数据中包括的每个闪电粒子的当前透明度,并行渲染出每一个闪电粒子。
一种可能的实施方式中,处理器111执行的指令中,采用下述方式中任一种确定需要在游戏场景中呈现闪电天气:
确定到达与目标天气对应的预设转换时间,且转换的所述目标天气为所述闪电天气;
确定游戏的游戏场景发生转化,且转化后的所述目标游戏场景对应的目标天气为所述闪电天气;
接收到天气转换指令,且所述天气转换指令指示的目标天气为所述闪电天气。
本申请实施例还提供一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时执行上述方法实施例中所述的闪电粒子的渲染方法的步骤。
本申请实施例所提供的闪电粒子的渲染方法的计算机程序产品,包括存储了程序代码的计算机可读存储介质,所述程序代码包括的指令可用于执行上述方法实施例中所述的闪电粒子的渲染方法的步骤,具体可参见上述方法实施例,在此不再赘述。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统和装置的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,又例如,多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些通信接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个处理器可执行的非易失的计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-OnlyMemory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上所述实施例,仅为本申请的具体实施方式,用以说明本申请的技术方案,而非对其限制,本申请的保护范围并不局限于此,尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,其依然可以对前述实施例所记载的技术方案进行修改或可轻易想到变化,或者对其中部分技术特征进行等同替换;而这些修改、变化或者替换,并不使相应技术方案的本质脱离本申请实施例技术方案的精神和范围,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应所述以权利要求的保护范围为准。

Claims (18)

1.一种闪电粒子的渲染方法,其特征在于,用于在目标游戏场景中呈现闪电天气,该渲染方法包括:
离线生成多组闪电数据;每组所述闪电数据包括:构成闪电形状的多个闪电粒子的粒子数据;
响应于所述闪电天气的渲染信号,中央处理器实时从离线生成的所述多组闪电数据中随机选取至少一组目标闪电数据;
针对每组目标闪电数据,图形处理器基于该组目标闪电数据中包括的每个闪电粒子的粒子数据,并行渲染出每一个闪电粒子,以在所述目标游戏场景中呈现由该组目标闪电数据对应的多个闪电粒子拼接的闪电形状。
2.根据权利要求1所述的渲染方法,其特征在于,所述闪电数据包括:主体结构数据;
所述离线生成闪电数据,包括:
确定目标闪电形状的第一起点坐标、第一终点坐标、以及预设的第一偏移范围;
基于所述第一起点坐标、所述第一终点坐标、以及所述第一偏移范围,生成所述目标闪电形状的主体结构数据,以生成所述目标闪电形状的主体结构。
3.根据权利要求2所述的渲染方法,其特征在于,所述第一偏移范围包括:第一偏移距离范围和/或第一偏移角度范围。
4.根据权利要求2所述的渲染方法,其特征在于,所述基于所述第一起点坐标、所述第一终点坐标、以及所述第一偏移范围,生成所述目标闪电形状的主体结构数据,包括:
基于所述第一起点坐标、所述第一终点坐标、以及所述第一偏移范围,对第一偏移点坐标进行多次迭代运算,得到多个第一偏移点坐标;
基于所述第一起点坐标、第一终点坐标、以及多个所述第一偏移点坐标,生成所述主体结构数据。
5.根据权利要求4所述的渲染方法,其特征在于,所述基于所述第一起点坐标、所述第一终点坐标、以及所述第一偏移范围,对第一偏移点坐标进行多次迭代运算,得到多个第一偏移点坐标,包括:进行下述迭代处理过程,直至确定的第一偏移点坐标的数量达到第一预设数量,或者确定迭代处理次数是否达到第一预设次数;
所述迭代处理过程包括:
根据所述第一起点坐标、以及所述第一终点坐标,确定所述主体结构数据中的当前第一中点坐标,并基于所述第一偏移范围,随机确定当前第一偏移值;
基于所述当前第一中点坐标以及所述当前第一偏移值,对所述当前第一中点坐标进行偏移处理,得到与所述第一起点坐标、所述第一终点坐标对应的第一偏移点坐标;
将所述第一偏移点坐标作为新的第一终点坐标,返回至根据所述第一起点坐标、以及所述第一终点坐标,确定所述主体结构数据中的当前第一中点坐标的步骤,以及
将所述第一偏移点坐标作为新的第一起点坐标,返回至根据所述第一起点坐标、以及所述第一终点坐标,确定所述主体结构数据中的当前第一中点坐标的步骤。
6.根据权利要求5所述的渲染方法,其特征在于,所述基于所述第一起点坐标、第一终点坐标、以及多个所述第一偏移点坐标,生成所述主体结构数据,包括:
基于生成的各个第一偏移点坐标中的每个第一偏移点坐标,以及与该第一偏移点坐标对应的第一起点坐标,生成第一粒子数据;
以及基于各个第一偏移点坐标中每个第一偏移点坐标,以及与该第一偏移点坐标对应的第一终点坐标,生成第二粒子数据;
基于所述第一粒子数据以及所述第二粒子数据,构成所述主体结构数据。
7.根据权利要求2所述的渲染方法,其特征在于,所述闪电数据,还包括:分支结构数据;
所述离线生成闪电数据,还包括:
将所述主体结构上至少一个点的坐标作为第二起点坐标、并确定与各个第二起点坐标对应的第二终点坐标、以及预设的第二偏移范围;
基于所述第二起点坐标、第二终点坐标、以及所述第二偏移范围,生成所述目标闪电形状的分支结构数据;
基于所述主体结构数据以及所述分支结构数据,构成所述闪电数据。
8.根据权利要求7所述的渲染方法,其特征在于,所述第二偏移范围包括:第二偏移距离范围和/或第二偏移角度范围。
9.根据权利要求7所述的渲染方法,其特征在于,所述基于所述第二起点坐标、第二终点坐标、以及所述第二偏移范围,生成所述目标闪电形状的分支结构数据,包括:
基于所述第二起点坐标、所述第二终点坐标、以及所述第二偏移范围,对第二偏移点坐标进行多次迭代运算,得到多个第二偏移点坐标;
基于所述第二起点坐标、第二终点坐标、以及多个所述第二偏移点坐标,生成所述分支结构数据。
10.根据权利要求9所述的渲染方法,其特征在于,所述基于所述第二起点坐标、所述第二终点坐标、以及所述第二偏移范围,对第二偏移点坐标进行多次迭代运算,得到多个第二偏移点坐标,包括:进行下述迭代处理过程,直至确定的第二偏移点坐标的数量达到第二预设数量;
所述迭代处理过程包括:
根据所述第二起点坐标、以及所述第二终点坐标,确定所述分支结构数据中的当前第二中点坐标,并基于所述第二偏移范围,随机确定当前第二偏移值;
基于所述当前第二中点坐标以及所述当前第二偏移值,对所述当前第二中点坐标进行偏移处理,得到与所述第二起点坐标、所述第二终点坐标对应的第二偏移点坐标;
将所述第二偏移点坐标作为新的第二终点坐标,返回至根据所述第二起点坐标、以及所述第二终点坐标,确定所述分支结构数据中的当前第二中点坐标的步骤,以及
将所述第二偏移点坐标作为新的第二起点坐标,返回至根据所述第二起点坐标、以及所述第二终点坐标,确定所述分支结构数据中的当前第二中点坐标的步骤。
11.根据权利要求10所述的渲染方法,其特征在于,所述基于所述第二起点坐标、第二终点坐标、以及多个所述第二偏移点坐标,生成所述分支结构数据,包括:
基于各个第二偏移点坐标中的每个第二偏移点坐标,以及与该第二偏移点坐标对应的第二起点坐标,生成第三粒子数据;
以及基于各个第二偏移点坐标中每个第二偏移点坐标,以及与该第二偏移点坐标对应的第二终点坐标,生成第四粒子数据;
基于所述第三粒子数据以及所述第四粒子数据,构成所述分支结构数据。
12.根据权利要求6或11所述的方法,其特征在于,根据以下步骤基于每个偏移点坐标和对应的起点坐标生成粒子数据:
基于各个偏移点坐标中的每个偏移点坐标、以及与该偏移点坐标对应的起点坐标,确定闪电粒子中心坐标、闪电粒子长度数据、以及闪电粒子的偏移角度数据;基于所述中心坐标、闪电粒子长度数据、以及所述偏移角度数据,构成与该偏移点坐标对应的粒子数据;
以及,根据以下步骤基于每个偏移点坐标和对应的终点坐标生成粒子数据:
基于各个偏移点坐标中的每个偏移点坐标、以及与该偏移点坐标对应的终点坐标,确定闪电粒子中心坐标、闪电粒子长度数据、以及闪电粒子的偏移角度数据;基于所述中心坐标、闪电粒子长度数据、以及所述偏移角度数据,构成与该偏移点坐标对应的粒子数据。
13.根据权利要求1所述的方法,其特征在于,所述基于该组目标闪电数据中包括的每个闪电粒子的粒子数据,并行渲染出每一个闪电粒子,包括:
根据该组目标闪电数据中包括的每个闪电粒子的粒子数据,以及虚拟相机的实时位置信息,确定该组目标闪电数据中包括的每个闪电粒子与所述虚拟相机的相对位置信息;
基于所述相对位置信息、所述该组目标闪电数据中包括的每个闪电粒子的粒子数据、以及预先生成的闪电模型,并行渲染出每一个闪电粒子。
14.根据权利要求13所述的方法,其特征在于,所述粒子数据还包括:与闪电粒子对应的权重;所述权重用于控制对应闪电粒子在渲染时的透明度;
所述基于所述相对位置信息、该组目标闪电数据中包括的每个闪电粒子的粒子数据、以及预先生成的闪电模型,并行渲染出每一个闪电粒子,包括:
基于该组闪电数据渲染的初始渲染时间、当前渲染时间、以及该组闪电数据中包括的每个闪电粒子对应的权重,确定该组闪电数据中包括的每个闪电粒子的当前透明度;
基于所述相对位置信息、该组目标闪电数据中包括的每个闪电粒子的粒子数据、预先生成的闪电模型、以及该组闪电数据中包括的每个闪电粒子的当前透明度,并行渲染出每一个闪电粒子。
15.根据权利要求1所述的渲染方法,其特征在于,采用下述方式中任一种确定需要在游戏场景中呈现闪电天气:
确定到达与目标天气对应的预设转换时间,且转换的所述目标天气为所述闪电天气;
确定游戏的游戏场景发生转化,且转化后的所述目标游戏场景对应的目标天气为所述闪电天气;
接收到天气转换指令,且所述天气转换指令指示的目标天气为所述闪电天气。
16.一种闪电粒子的渲染装置,其特征在于,用于在目标游戏场景中呈现闪电天气,该渲染装置包括:
生成模块,用于离线生成多组闪电数据;每组所述闪电数据包括:构成闪电形状的多个闪电粒子的粒子数据;
选取模块,用于响应于所述闪电天气的渲染信号,实时从离线生成的所述多组闪电数据中随机选取至少一组目标闪电数据;所述选取模块驻留于中央处理器;
渲染模块,用于针对每组目标闪电数据,基于该组目标闪电数据中包括的每个闪电粒子的粒子数据,并行渲染出每一个闪电粒子,以在所述目标游戏场景中呈现由该组目标闪电数据对应的多个闪电粒子拼接的闪电形状;所述渲染模块驻留于图形处理器。
17.一种计算机设备,其特征在于,包括:处理器、存储器和总线,所述存储器存储有所述处理器可执行的机器可读指令,当计算机设备运行时,所述处理器与所述存储器之间通过总线通信,所述机器可读指令被所述处理器执行时执行如权利要求1至15任一所述渲染方法的步骤。
18.一种计算机可读存储介质,其特征在于,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时执行如权利要求1至15任意一项所述渲染方法的步骤。
CN201911000176.6A 2019-10-21 2019-10-21 一种闪电粒子的渲染方法及装置 Active CN110706149B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201911000176.6A CN110706149B (zh) 2019-10-21 2019-10-21 一种闪电粒子的渲染方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201911000176.6A CN110706149B (zh) 2019-10-21 2019-10-21 一种闪电粒子的渲染方法及装置

Publications (2)

Publication Number Publication Date
CN110706149A CN110706149A (zh) 2020-01-17
CN110706149B true CN110706149B (zh) 2023-09-15

Family

ID=69201922

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201911000176.6A Active CN110706149B (zh) 2019-10-21 2019-10-21 一种闪电粒子的渲染方法及装置

Country Status (1)

Country Link
CN (1) CN110706149B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111784804A (zh) * 2020-06-01 2020-10-16 北京像素软件科技股份有限公司 虚拟场景中的闪电模拟方法及装置、终端、可读存储介质
CN112669423A (zh) * 2020-12-22 2021-04-16 北京像素软件科技股份有限公司 闪电生成方法、装置、电子设备和计算机可读存储介质

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106157234A (zh) * 2015-03-31 2016-11-23 北京畅游天下网络技术有限公司 利用粒子系统进行图形处理的方法和装置
CN108416831A (zh) * 2018-03-14 2018-08-17 苏州蜗牛数字科技股份有限公司 一种实时模拟水花和泡沫的方法
CN109698914B (zh) * 2018-12-04 2022-03-01 广州方硅信息技术有限公司 一种闪电特效渲染方法、装置、设备及存储介质

Also Published As

Publication number Publication date
CN110706149A (zh) 2020-01-17

Similar Documents

Publication Publication Date Title
CN108351864B (zh) 成凹几何密铺
CN106780642B (zh) 迷雾遮罩贴图的生成方法及装置
US9978176B2 (en) Simplifying small mesh components with redundant backs
CN111598986B (zh) 虚拟流体表面的渲染方法、装置、设备及存储介质
CN110706149B (zh) 一种闪电粒子的渲染方法及装置
US11043027B2 (en) Three-dimensional graphics image processing
US20140198103A1 (en) Method for polygon reduction
KR101566167B1 (ko) 3차원 공간정보에서 지형 데이터를 이용한 객체 렌더링 방법
JP2023029984A (ja) 仮想イメージを生成するための方法、装置、電子機器及び可読記憶媒体
CN109544668A (zh) 纹理坐标处理方法、终端设备及计算机可读存储介质
CN109697748A (zh) 模型压缩处理方法、模型贴图处理方法装置、存储介质
CN105913475A (zh) 一种时空变化过程动态可视化方法
CN106683152B (zh) 三维视觉效果模拟方法及装置
CN117333637B (zh) 三维场景的建模及渲染方法、装置及设备
CN115984440B (zh) 对象渲染方法、装置、计算机设备和存储介质
EP4207089A1 (en) Image processing method and apparatus
US20200183566A1 (en) Hybrid image rendering system
WO2019042272A2 (en) MULTIPLE VIEW RENDERING SYSTEM AND METHOD
CN106980364A (zh) 一种图像显示方法及装置
US10262631B1 (en) Large scale highly detailed model review using augmented reality
US20040181373A1 (en) Visual simulation of dynamic moving bodies
CN115035231A (zh) 阴影烘焙方法、装置、电子设备和存储介质
US7884835B2 (en) Techniques for projecting data sets between high-resolution and low-resolution objects
Masood et al. A novel method for adaptive terrain rendering using memory-efficient tessellation codes for virtual globes
CN116468839A (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