CN115526976A - 虚拟场景渲染方法、装置、存储介质和电子设备 - Google Patents
虚拟场景渲染方法、装置、存储介质和电子设备 Download PDFInfo
- Publication number
- CN115526976A CN115526976A CN202211211116.0A CN202211211116A CN115526976A CN 115526976 A CN115526976 A CN 115526976A CN 202211211116 A CN202211211116 A CN 202211211116A CN 115526976 A CN115526976 A CN 115526976A
- Authority
- CN
- China
- Prior art keywords
- map
- illumination
- virtual scene
- rendering
- initial
- 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
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/04—Texture mapping
-
- 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/50—Controlling the output signals based on the game progress
- A63F13/52—Controlling the output signals based on the game progress involving aspects of the displayed game scene
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/50—Lighting effects
- G06T15/506—Illumination models
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2210/00—Indexing scheme for image generation or computer graphics
- G06T2210/61—Scene description
Landscapes
- Engineering & Computer Science (AREA)
- Computer Graphics (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Multimedia (AREA)
- Image Generation (AREA)
Abstract
本公开提供了一种虚拟场景渲染方法、虚拟场景渲染装置、计算机存储介质和电子设备,涉及计算机图形学技术领域。该虚拟场景渲染方法包括:从预先烘焙渲染得到的贴图资源库中选择与当前虚拟场景中虚拟对象对应的预处理贴图;确定预处理贴图对应的初始光照信息;基于当前虚拟场景中的当前光照信息与初始光照信息对预处理贴图进行光照渲染,得到目标贴图。本公开可以实现提高对虚拟场景的渲染效率的技术效果。
Description
技术领域
本公开涉及计算机图形学技术领域,尤其涉及一种虚拟场景渲染方法、虚拟场景渲染装置、计算机存储介质和电子设备。
背景技术
随着游戏技术的快速发展,对游戏虚拟场景的制作也越来越丰富。为了给玩家提供真实的游戏体验,通常是由虚拟场景渲染技术对虚拟场景进行优化,例如,通过渲染技术实现虚拟场景中天空云层随着天气、昼夜进行云卷云舒的变化。
目前,通常将天空云层预先制作好合成在天空球贴图上,然后通过美术制作预先制作的颜色查找表来响应昼夜天空云层的色彩变化。
然而,对于虚拟场景的光照变化较为复杂的情况,上述方法需要制作更多的颜色查找表,以在实时渲染时从颜色查找表查询与当前虚拟场景的光照方向相适配的颜色,导致对虚拟场景的渲染效率低。
发明内容
本公开提供了一种虚拟场景渲染方法、虚拟场景渲染装置、计算机存储介质和电子设备,进而提高对虚拟场景的渲染效率。
第一方面,本公开一个实施例提供了一种虚拟场景渲染方法,从预先烘焙渲染得到的贴图资源库中选择与当前虚拟场景中虚拟对象对应的预处理贴图;确定预处理贴图对应的初始光照信息;基于当前虚拟场景中的当前光照信息与初始光照信息对预处理贴图进行光照渲染,得到目标贴图。
第二方面,本公开一个实施例提供了一种虚拟场景渲染装置,该装置包括:贴图选取模块用于从预先烘焙渲染得到的贴图资源库中选择与当前虚拟场景中虚拟对象对应的预处理贴图;信息确定模块用于确定预处理贴图对应的初始光照信息;光照渲染模块用于基于当前虚拟场景中的当前光照信息与初始光照信息对预处理贴图进行光照渲染,得到目标贴图。
第三方面,本公开一个实施例提供了一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现如上的虚拟场景渲染方法。
第四方面,本公开一个实施例提供了一种电子设备,包括:处理器;以及存储器,用于存储处理器的可执行指令;其中,处理器配置为经由执行可执行指令来执行如上的虚拟场景渲染方法。
本公开的技术方案具有以下有益效果:
上述虚拟场景渲染方法,通过从预先烘焙渲染得到的贴图资源库中选择与当前虚拟场景中虚拟对象对应的预处理贴图;确定预处理贴图对应的初始光照信息;基于当前虚拟场景中的当前光照信息与初始光照信息对预处理贴图进行光照渲染,得到目标贴图。该方法预先对虚拟场景中虚拟对象进行预先烘焙渲染以构建贴图资源库,在对当前虚拟场景的虚拟对象进行渲染时,仅需在贴图资源库中快速获取与虚拟对象对应的贴图,并结合当前虚拟场景中的当前光照信息实时计算出渲染后的虚拟场景。该方法避免传统方法中需要制作更多的颜色查找表,并在实时渲染时从颜色查找表查询与当前虚拟场景的光照方向相适配的颜色所导致的对虚拟场景的渲染效率低的技术问题,进而实现了提高虚拟场景渲染效率的技术效果。同时,该方法避免制作更多的颜色查找表导致的渲染性能消耗增加的技术问题,从而降低了性能消耗的技术效果。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施方式,并与说明书一起用于解释本公开的原理。显而易见地,下面描述中的附图仅仅是本公开的一些实施方式,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1示意性示出本示例性实施方式中一种静态贴图形式的云层渲染过程示意图;
图2示意性示出本示例性实施方式中一种虚拟场景渲染系统的架构图;
图3示意性示出本示例性实施方式中一种虚拟场景渲染方法的流程图;
图4示意性示出本示例性实施方式中一种云朵的初始目标体素模型示意图;
图5示意性示出本示例性实施方式中一种目标体素模型的示意图;
图6示意性示出本示例性实施方式中一种不同光照方向下的多个初始贴图的示意图;
图7示意性示出本示例性实施方式中一种构建中间贴图的方法流程图;
图8示意性示出了本示例性实施方式中一种中间贴图的示意图;
图9示意性示出了本示例性实施方式中一种贴图资源库的示意图;
图10示意性示出了本示例性实施方式中一种确定预处理贴图的UV信息示意图;
图11示意性示出了本示例性实施方式中一种使用噪波贴图对预处理贴图的UV信息进行扰动的过程示意图;
图12示意性示出了本示例性实施方式中一种当前光照信息下的目标贴图示意图;
图13示意性示出了本示例性实施方式中另一种当前光照信息下的目标贴图示意图;
图14示意性示出了本示例性实施方式中一种遮罩映射示意图;
图15示意性示出了本示例性实施方式中一种散射效果的目标贴图示意图;
图16示意性示出本示例性实施方式中一种太阳光下的虚拟场景渲染示意图;
图17示意性示出本示例性实施方式中一种月光下的虚拟场景渲染示意图;
图18示意性示出本示例性实施方式中一种虚拟场景渲染装置结构示意图;
图19示意性示出本示例性实施方式中另一种虚拟场景渲染装置结构示意图;
图20示意性示出本示例性实施方式中一种电子设备的结构示意图。
具体实施方式
现在将参考附图更全面地描述示例性实施方式。然而,示例性实施方式能够以多种形式实施,且不应被理解为限于在此阐述的范例;相反,提供这些实施方式使得本公开将更加全面和完整,并将示例性实施方式的构思全面地传达给本领域的技术人员。所描述的特征、结构或特性可以以任何合适的方式结合在一个或更多实施方式中。在下面的描述中,提供许多具体细节从而给出对本公开的实施方式的充分理解。然而,本领域技术人员将意识到,可以实践本公开的技术方案而省略特定细节中的一个或更多,或者可以采用其它的方法、组元、装置、步骤等。在其它情况下,不详细示出或描述公知技术方案以避免喧宾夺主而使得本公开的各方面变得模糊。
此外,附图仅为本公开的示意性图解,并非一定是按比例绘制。图中相同的附图标记表示相同或类似的部分,因而将省略对它们的重复描述。附图中所示的一些方框图是功能实体,不一定必须与物理或逻辑上独立的实体相对应。可以采用软件形式来实现这些功能实体,或在一个或多个硬件模块或集成电路中实现这些功能实体,或在不同网络和/或处理器装置和/或微控制器装置中实现这些功能实体。
附图中所示的流程图仅是示例性说明,不是必须包括所有的步骤。例如,有的步骤还可以分解,而有的步骤可以合并或部分合并,因此实际执行的顺序有可能根据实际情况改变。
现有技术中,随着游戏技术的快速发展,对游戏虚拟场景的制作也越来越丰富。为了给玩家提供真实的游戏体验,通常是由虚拟场景渲染技术对虚拟场景进行优化,例如,通过渲染技术实现虚拟场景中天空云层随着天气、昼夜进行云卷云舒的变化。目前,通常将天空云层预先制作好合成在天空球贴图上,然后通过美术制作预先制作的颜色查找表来响应昼夜天空云层的色彩变化。然而,对于虚拟场景的光照变化较为复杂的情况,上述方法需要制作更多的颜色查找表,以在实时渲染时从颜色查找表查询与当前虚拟场景的光照方向相适配的颜色,导致对虚拟场景的渲染效率低。
鉴于此,本公开实施例提供了一种虚拟场景渲染方法,用以提高对虚拟场景的渲染效率。为了便于本领域技术人员更好地理解本公开的技术方案,下面将对本公开技术方案涉及的相关内容进行介绍。
(1)UV:一种描述二维图片投射到三维模型上位置坐标信息。
(2)体素模型:即体积像素模型,采用大量规则体素(如立方体)的有序组合来表示三维物体的模型,常用于描述有向距离场(Signed Distance Field,SDF)模型或者含有体积信息(例如,密度)的物体。
(3)烘焙:指将固定不变的、静态的画面效果以特定的技术手段将其信息进行存储,并在游戏运行时通过特定的算法进行数据还原并呈现烘焙前的效果。
(4)Houdini:一个程序化三维软件,常用于电影特效制作。
(5)Shader:编写材质表现效果的编程语言统称。
(6)材质:游戏引擎中以某种特定规则描述一种物体表现效果的数据结构。
(7)插值:将两个离散的数值通过某种算法计算得到中间值。
本公开示例性实施方式提供的虚拟场景渲染方法可以应用于对游戏场景中的虚拟对象进行渲染的应用场景。例如,游戏场景中的通常会包含动态的虚拟对象,例如,天空云层的昼夜变化、流水、摇动的树条等。以天空的云层为例,因云层对太阳光的折射、散射等多方面影响下,会随着时间的变化逐渐呈现出不同的形状、颜色等。
为了在虚拟场景中模拟真实场景下的效果,通常开发人员可以在游戏引擎中实现对虚拟场景中各虚拟对象进行渲染,使得玩家在游戏过程中感受到真实场景中各虚拟对象的动态变换过程,从而提高玩家的游戏体验感。
应该理解的是,在对游戏场景中的虚拟场景进行渲染时,可以使用任意游戏引擎进行虚拟对象的处理。本公开示例性实施方式对使用的游戏引擎不做任何限制,任意可以实现虚拟场景渲染方法的游戏引擎均在本公开的保护范围内。
在现有的移动游戏场景渲染中,对天空云层的渲染往往出于游戏性能的优化考虑,通常会在游戏场景中使用静态贴图的形式,并使用美术预先制作好的颜色查找表,将24小时变换过程中相应云层对应的颜色应用到上述静态贴图上,以适应全天昼夜变化情况下的云层渲染效果。
图1示意性示出本示例性实施方式中一种静态贴图形式的云层渲染过程示意图。参考图1,图1(a)为一张在现实场景拍摄的全景高动态范围图像(High-Dynamic Rangeimage,HDRI);图1(b)为对图1(a)所示的图像进行半球UV投射后生成的半球图;图1(c)为云层渲染效果图。
示例性的,将图1(a)所示的预先拍摄的二维图像,即全景HDRI作为虚拟场景的静态贴图,并将静态贴图用于进行半球UV投射,以得到虚拟场景下天空的三维模型。将24小时变换过程中相应云层对应的颜色应用到上述静态贴图上,从而可以较好的为静态场景提供真实的天空表现(如图1(c)所示)。
上述在游戏场景无需改变的情况下可以实现较好的自定义美术效果,即可以较好的适用静态的虚拟场景。但是,对于变换较为复杂的虚拟场景而言则,则需要制作更多的颜色查找表以适应变化过程显示出的虚拟场景,导致渲染性能消耗增加。例如,对于天空云层的虚拟场景中,若使天空及云层能够响应24小时、不同天气、不同环境的光照变化,便需要收集不同环境(例如,光照)下的天空云层变化情况,并以此制作更多的颜色查找表进行匹配。同时,美术制作过程中,也无法实时查看云层渲染效果,难以实时适用当前游戏场景下的光照,使得在制作过程中需要反复修改颜色查找表和调整游戏场景光照,进而导致对虚拟场景渲染的效率低,以及用户操作复杂度增加。
本公开示例性实施方式考虑到上述问题,提出一种虚拟场景渲染方法,该方法可以预先对不同虚拟场景中虚拟对象的体素模型进行烘焙渲染得到虚拟场景的贴图资源库。在调整游戏场景的渲染效果时,仅需从贴图资源库中选择与当前虚拟场景中虚拟对象对应的预处理贴图;确定预处理贴图对应的初始光照信息,最后根据当前游戏场景中的直射光方向与确定的初始光照信息实时计算虚拟场景的渲染效果,从而更好的适配有24小时动态变化的游戏场景需求。且用户可以实时查看渲染效果,降低用户的操作复杂度。
在本公开提供的虚拟场景渲染方法中,虚拟场景的贴图资源库是预先烘焙渲染的,无需在使用游戏引擎对虚拟对象进行实时渲染过程中重复烘焙渲染贴图资源,因此,引擎实时渲染的性能消耗低。同时,该虚拟场景渲染方法可以根据当前游戏场景的当前光照信息(例如,当前光照方向)以及初始光照信息实时计算云层的渲染效果,从而避免了传统技术在制作过程中反复修改颜色查找表和调整游戏场景光照以适应当前游戏场景的光照信息过程,该虚拟场景渲染方法可以提高对虚拟场景的渲染效率。
图2为本公开示例性实施方式提供的虚拟场景渲染系统的架构图,如图2所示,该虚拟场景渲染系统200中包括游戏服务器201、多个客户端203。其中,服务器201中配置了数据库202。
其中,数据库202可以存储预先烘焙渲染得到的贴图资源库。游戏服务器201从预先烘焙渲染得到的贴图资源库中选择与当前虚拟场景中虚拟对象对应的预处理贴图。然后,游戏服务器201可以确定预处理贴图对应的初始光照信息;最后基于当前虚拟场景中的当前光照信息与初始光照信息对预处理贴图进行光照渲染,得到目标贴图。多个客户端203与游戏服务器建立连接以开启游戏进程,从而在游戏场景中实时查看目标贴图,即虚拟场景的渲染效果图。
需要说明的是,游戏服务器201包含游戏引擎,且游戏服务器201可以为一台服务器,可以为多台服务器组成的服务器集群。
应该理解的是,在图2所示的虚拟场景渲染系统的架构图中,游戏服务器201、数据库202、客户端203的数目仅仅是示例性的,更多或更少的数量都属于本申请的保护范畴。并且,在上述示例运行场景中,客户端203可以是个人计算机、服务器、掌上电脑(PersonalDigital Assistant,PDA)、笔记本或其它任何具有联网功能的计算设备。游戏服务器201、客户端203之间通信的网络可以包括各种类型的有线和无线网络。
在了解了本公开的虚拟场景渲染系统的架构图后,将结合图3对本公开的虚拟场景渲染方法的方案进行详细说明。
下面以上述游戏服务器201为执行主体,将该虚拟场景渲染方法应用于上述的游戏服务器201为例进行具体说明。参见图3,本公开示例性实施方式提供的虚拟场景渲染方法包括如下步骤S301-步骤S303。
步骤S301、从预先烘焙渲染得到的贴图资源库中选择与当前虚拟场景中虚拟对象对应的预处理贴图。
其中,贴图资源库中包含了对虚拟场景中虚拟对象的多种不同形态(体素模型)下进行烘焙渲染操作生成的多个贴图资源。当前虚拟场景中虚拟对象主要是随时间变化的虚拟对象,例如,天空云层、流水等。
示例性的,虚拟场景中虚拟对象的贴图可以预先在Houdini软件中制作并渲染导出。
步骤S302、确定预处理贴图对应的初始光照信息。
其中,初始光照信息为预先设定不同光照数据(例如,光照的方向、强度、颜色等信息)下的虚拟对象信息。例如,对云朵的体素模型添加左方向的光照,则确定左方向光照下该体素模型对应的各像素值为初始光照信息。
步骤S303、基于当前虚拟场景中的当前光照信息与初始光照信息对预处理贴图进行光照渲染,得到目标贴图。
其中,当前光照信息可以包括当前光照的方向、强度、颜色等信息。
在本公开的一些实施例提供的技术方案中,通过从预先烘焙渲染得到的贴图资源库中选择与当前虚拟场景中虚拟对象对应的预处理贴图;确定预处理贴图对应的初始光照信息;基于当前虚拟场景中的当前光照信息与初始光照信息对预处理贴图进行光照渲染,得到目标贴图。该方法预先对虚拟场景中虚拟对象进行预先烘焙渲染以构建贴图资源库,在对当前虚拟场景的虚拟对象进行渲染时,仅需在贴图资源库中快速获取与虚拟对象对应的贴图,并结合当前虚拟场景中的当前光照信息实时计算出渲染后的虚拟场景。该方法避免传统方法中需要制作更多的颜色查找表,并在实时渲染时从颜色查找表查询与当前虚拟场景的光照方向相适配的颜色所导致的对虚拟场景的渲染效率低的技术问题,进而实现了提高虚拟场景渲染效率的技术效果。同时,该方法避免制作更多的颜色查找表导致的渲染性能消耗增加的技术问题,从而降低了性能消耗的技术效果。
虚拟场景中的虚拟对象可以为任意可实现动态效果的对象,为了对本公开提供的虚拟场景渲染进行介绍,以下均以虚拟场景中虚拟对象为云朵进行示例性说明。首先,在实现上述步骤S301之前,可以预先对云朵进行烘焙渲染操作得到各体素模型下的贴图,从而构建云朵的贴图资源库。
在本公开的示例性实施方式中,对初始体素模型进行噪波置换处理,得到中间体素模型;对中间体素模型进行噪波打乱处理,得到初始目标体素模型。
其中,初始体素模型为虚拟场景中虚拟对象的基础形态,例如,云朵的基础形态,该云朵的基础形状设定了后续云朵的基础形态。虚拟场景中虚拟对象的基础形状可以是随机生成的模型,也可以由美术提供进行自定义的模型。噪波打乱处理可以是对中间体素模型添加噪波,以使中间体素模型的形状发生变化。
示例性的,对云朵的初始体素模型细分后进行噪波置换处理,再添加噪波打乱处理以打乱设定云的体素模型。
图4示意性示出本示例性实施方式中一种云朵的初始目标体素模型示意图。如图4所示,云朵的基础形状可以是由多个图形基础形状(圆形、椭圆形等)组成,并转换为相应三维形状并进行噪波置换和噪波打乱处理后形成云朵的初始目标体素模型。
通过使用噪波对建立的初始体素模型噪波置换以及噪波打乱处理,可以使建立的云朵模型更加接近真实云朵效果,进而提高渲染后虚拟场景的写实性和逼真性。
在本公开的示例性实施方式中,对初始目标体素模型进行归一化处理,得到目标体素模型。
其中,对初始目标体素模型进行归一化处理即对初始目标体素模型的坐标进行归一化处理。
示例性的,得到的初始目标体素模型的体积密度为均匀分布的,但是在实际场景中,云朵受到地表重力的作用下,云朵从上至下的体积密度通常是由低及高。为了在虚拟场景中模拟真实的云朵,可以对云朵的初始目标体素模型的坐标进行归一化处理,以确保初始目标体素模型的高度h在0至1的范围内,从而得到类似实际场景中天空云层的体积密度分布。
图5示意性示出本示例性实施方式中一种目标体素模型的示意图。如5所示为对初始目标体素模型进行归一化处理后得到的目标体素模型。
可以根据下述公式(1)对云朵的初始目标体素模型坐标进行归一化处理:
d′=d(1-h)exp{0≤h≤1} (1)
公式(1)中,d′为对初始目标体素模型坐标进行归一化处理的体积密度分布,d为初始目标体素模型的体积密度分布,h为初始目标体素模型的高度信息,exp用于决定云朵的初始目标体素模型的薄厚程度。
在默认情况下exp的数值为2,当开发人员认为当前云朵的初始目标体素模型较薄时,可以增大exp的数值;反之,当开发人员认为当前云朵的初始目标体素模型较厚时,可以减小exp的数值。
通过对虚拟场景中虚拟对象的初始目标体素模型进行归一化处理,从而可以模拟真实天空云层的体积密度分布效果,从而提高渲染后虚拟场景云朵的写实性和逼真性。
为了提高天空云层丰富性,在构建云朵的贴图资源库时,可以同时构建多种不同形态的多个目标体素模型以进行预先烘焙渲染。
以下将对虚拟对象的多个体素模型进行烘焙渲染以得到贴图资源库的过程进行详细说明。
在本公开的示例性实施方式中,针对虚拟对象的多个目标体素模型,在不同光照方向下对各目标体素模型进行图像渲染,得到多个初始贴图;基于多个初始贴图构建各目标体素模型的中间贴图;根据各中间贴图构建贴图资源库。
示例性的,针对虚拟对象的每一个目标体素模型,均分别在不同光照方向下对各目标体素模型进行图像渲染。
应该理解的是,对虚拟对象的每一个目标体素模型,可以在任意光照方向下对各目标体素模型进行图像渲染。
根据本公开的一些实施例,可以模拟左方向、右方向、上方向以及后方向四个方向的直射光照,再分别使用上述四个方向直射光照对虚拟对象的目标体素模型进行照射,以对四个方向直射光照下的各目标体素模型进行图像渲染。
对任意光照方向下的目标体素模型进行图像渲染必然增加游戏服务器的性能消耗。根据本公开的一些实施例,由于云层的目标体素模型是不规则的,其左方向、右方向光照下的目标体素模型相关性较低,可以分别对左方向直射光照、右方向直射光照下的目标体素模型进行图像渲染。然而上方向和下方向光照下的目标体素模型相关性较高,可以选取对上方向直射光照或下方向直射光照下的目标体素模型进行图像渲染。前方向、后方向光照下的目标体素模型相关性也较高,且后方向的目标体素模型可以用于模拟云层的散射效果,因此选取对后方向直射光照下的目标体素模型进行图像渲染。
在图5所示云朵的目标体素模型基础上,图6是分别对左方向、右方向、上方向、后方向的四个方向直射光照下的目标体素模型进行图像渲染后的得到的多个初始贴图。
其中,图6(a)为左方向直射光照下的目标体素模型进行图像渲染后的得到的初始贴图;图6(b)为右方向直射光照下的目标体素模型进行图像渲染后的得到的初始贴图;图6(c)为上方向直射光照下的目标体素模型进行图像渲染后的得到的初始贴图;图6(d)为后方向直射光照下的目标体素模型进行图像渲染后的得到的初始贴图。
示例性的,在分别获取上述四个方向直射光照下初始贴图时,还会同时得到一张透明通道信息贴图。由此,对于一个云朵的目标体素模型而言,可以分别得到五张图片,分别为左方向直射光照下初始贴图、右方向直射光照下初始贴图、上方向直射光照下初始贴图、后方向直射光照下初始贴图以及一张透明通道信息贴图。
在获取到五张初始贴图后,便可以得到的初始贴图分别存入传统贴图资源中的不同色彩通道中,以构建各目标体素模型的中间贴图。从而根据各中间贴图构建贴图资源库。
通过对虚拟对象的多个不同目标体素模型分别进行不同光照方向下的图像渲染并最终构建贴图资源库,可以提高云层的丰富性。同时预先构建资源库,可以在对虚拟场景中虚拟对象进行渲染时只需选取对应的贴图,无需重复对不同光照下的虚拟对象目标体素模型重新烘焙,从而降低游戏服务器的实时渲染性能消耗。
在上述将初始贴图分别存入传统贴图资源中的不同色彩通道时,由于传统贴图资源至多只能存储4个色彩通道,即RGBA,而对于每一个目标体素模型得到了五张初始贴图,且上述透明通道信息贴图默认存入A透明度通道中。因此,需要对四个方向下的4个初始贴图进行处理以便分别存入R、G、B三个色彩通道中。
其中,RGBA通道分别代表红色(Red,R)、绿色(Green,G)、蓝色(Blue,B)和透明度(Alpha,A)的色彩空间,而每张中间贴图的色彩可以由RGBA各通道叠加形成。
在本公开的示例性实施方式中,在上述基于多个初始贴图构建各目标体素模型的中间贴图时,针对每个目标体素模型,将第一光照方向的第一初始贴图与第二光照方向的第二初始贴图进行图像合并,得到各目标体素模型的合并贴图;基于各目标体素模型中除第一光照方向与第二光照方向外其他方向的初始贴图与合并贴图构建中间贴图。
其中,第一光照方向与第二光照方向为轴对称方向,例如第一光照方向可以是左方向直射光,第二光照方向可以是右方向直射光,以平面坐标系的x轴对称。可以理解的是,判定第一光照方向和第二光照方向轴对称时可以存在一定的角度误差,在预设角度阈值内均可认为第一光照方向与第二光照方向为轴对称方向。其中,预设角度阈值可以根据实际需求进行调整。
示例性的,可以将光照方向处于轴对称的初始贴图进行图像合并以得到一种图像,再将除第一光照方向与第二光照方向外其他方向的初始贴图与合并贴图构建中间贴图。例如,将左方向和右方向下的初始贴图进行图像合并处理,便可以左右光照方向下的合并贴图、上光照方向的初始贴图、后方向的初始贴图以及透明通道信息贴图共四张贴图,再分别存入R、G、B、A四个色彩通道中便可构建中间贴图。
选取光照方向处于轴对称的初始贴图进行图像合并,便于计算合并后的像素值,从而快速得到合并贴图。
在本公开一个可选实施例中,将结合图7、图8对基于多个初始贴图构建各目标体素模型的中间贴图的过程进行详细说明,图7示意性示出本示例性实施方式中一种构建中间贴图的方法流程图。参见图7,包括如下步骤S701-步骤S704:
步骤S701、计算第一初始贴图的像素值与预设数值的乘积,得到针对第一初始贴图的特征像素值。
其中,预设数值可以根据实际情况设定。预设数值可以取值为-1,以使第一初始贴图的像素值调解在一定数值范围内。
示例性的,可以对第一光照方向的第一初始贴图中各像素值乘以预设数值。
步骤S702、计算特征像素值与第二初始贴图的像素值的加和,得到目标像素值;
应该理解的是,第一初始贴图中各像素值与第二初始贴图的像素值数目相同,分别将相对应位置的像素值相加。例如,以矩阵形式存储各像素值,则第一初始贴图第一行、第一列的像素值与第二初始贴图第一行、第一列的像素值可以相加。
步骤S703、基于第一初始贴图与第二初始贴图中各像素单元对应的各目标像素值得到合并贴图;
以下是以第一光照方向可以是左方向直射光,第二光照方向可以是右方向直射光为例,将第一光照方向的第一初始贴图与第二光照方向的第二初始贴图进行图像合并的过程进行详细说明。
如公式(2)所示,可以对第一初始贴图的各像素值乘以-1,并与第二初始贴图的各像素值相加,从而将合并贴图的各像素值由-1-1重新映射到0-1范围内,以便存入色彩通道中。
公式(2)中,R为合并贴图的各像素值;b为第一初始贴图的各像素值;a为第二初始贴图的各像素值。
步骤S704、基于各目标体素模型中除第一光照方向与第二光照方向外其他方向的初始贴图与合并贴图构建中间贴图。
示例性的,可以将除第一光照方向与第二光照方向外其他方向的初始贴图以及合并贴图分别存入传统贴图资源中各色彩通道中以构建中间贴图。
例如,将图像合并后的左、右光照方向下的合并贴图写入R通道,上光照方向的初始贴图写入G通道,后光照方向的初始贴图写入B通道,保留透明通道信息贴图为A通道,从而得到如图8所示构建的中间贴图示意图。
针对每一个虚拟对象的目标体素模型,初始贴图的像素值进行合并贴图,并将合并贴图的各像素值映射到0-1范围内,以便于存入色彩通道中形成贴图资源库,从而进一步提高对虚拟场景的渲染效率。
在本公开的示例性实施方式中,在确定虚拟对象的多个目标体素模型的各中间贴图后,可以将各中间贴图采用图像拼贴的方式合并成一张图片。从而在增加虚拟场景中虚拟对象丰富性的同时,降低后期在游戏引擎中对各中间贴图的采样指令次数,进而降低游戏服务器的性能消耗。
图9示意性示出了本示例性实施方式中一种贴图资源库的示意图,如图9所示,贴图资源库中包含云朵的16张中间贴图,将该16张中间贴图以4x4形式进行图像拼贴,得到一张预烘焙图像。
可以理解的是,贴图资源库中包含云朵的中间贴图数目是任意的,本公开对此不做任何限制。
在构建好贴图资源库后,便可以从预先烘焙渲染得到的贴图资源库中选择与当前虚拟场景中虚拟对象对应的预处理贴图。
在本公开的示例性实施方式中,对贴图资源库中各贴图添加贴图编号;基于当前虚拟场景中虚拟对象的贴图编号,计算虚拟对象在贴图资源库中对应贴图的U坐标偏移量和V坐标偏移量;根据U坐标偏移量和V坐标偏移量,选择与当前虚拟场景中虚拟对象对应的预处理贴图。
其中,贴图编号用于确定各贴图的位置信息。
示例性的,由于贴图资源库将多个虚拟对象目标体素模型的中间贴图拼贴为一种图片,则需要使用Shader对各中间贴图的UV信息进行重新映射,以便根据UV信息快速查找与当前虚拟场景中虚拟对象对应的预处理贴图。同时,在对各中间贴图的UV信息进行重新映射时,可以对各中间贴图进行编号,以根据编号计算U坐标偏移量和V坐标偏移量。
对多个中间图像拼贴而成贴图资源库,按照由左至右、且由上及下的顺序进行编号。通常UV映射范围一般为0~1,在进行图像拼贴时,需要将UV信息由0~1映射至0~n。则:
公式(3)中,Δu为U坐标偏移量,i为该中间贴图的编号,由n×n张中间贴图拼贴而成,mod(i,n)的结果为i除以n的余数。其中,对于4x4个中间贴图,则n取4。
公式(4)中,Δv为V坐标偏移量,i为该中间贴图的编号,由n×n张中间贴图拼贴而成,,[i÷n]是对i÷n的结果取整。
则确定当前虚拟场景中虚拟对象对应的预处理贴图时,可以使用中间贴图编号、U坐标偏移量、V坐标偏移量计算确定预处理贴图的位置。
接下来,以图9所示的4x4个中间贴图拼贴而成的贴图资源库为例,结合图10对确定预处理贴图的UV取值范围进行详细说明。
如图10所示,首先,可以对图10(a)所示的4x4个中间贴图,按照由左至右、且由上及下的顺序进行0-15的编号。
假设当前虚拟场景中虚拟对象对应的预处理贴图为编号为6(即第7张中间贴图)的中间贴图,则需要获取编号6的中间贴图范围,即需要计算该中间贴图在图像拼贴中的行、列。由4X4贴图所知,每份贴图都占了整个图片的16等分,即每行每列4等分。如图10(b)所示,编号6的中间贴图应在第二行、第三列的位置,由上述公式(3)可得U坐标偏移量为:
V坐标偏移量为:
根据上述公式(5)、公式(6)可得,编号6中间贴图的UV取值范围应为U:0.5~0.75(0.5+0.25),V:0.25~0.5(0.25+0.25)。
根据本公开的一些实施例,在确定与当前虚拟场景中虚拟对象对应的预处理贴图后,为了让云朵更具有动态性,还可以采用一张噪波贴图对预处理贴图的UV信息进行噪波扰动处理,从而制造云朵随时间横向流动的动态效果。
图11示意性示出了本示例性实施方式中一种使用噪波贴图对预处理贴图的UV信息进行扰动的过程示意图。如图11所示,对未进行扰动的图11(a),添加一张如图11(b)所示的噪波贴图进行噪波扰动后,便可得到如图11(c)所示的云朵随时间横向流动的动态效果。
进一步的,构建好贴图资源库后,便可以实时根据当前虚拟场景中虚拟对象从贴图资源库中确定对应的预处理贴图,然后确定预处理贴图对应的初始光照信息。
在本公开的示例性实施方式中,在确定预处理贴图对应的初始光照信息时,计算预处理贴图的像素值与预设数值的乘积,得到第一光照方向的第一光照信息以及第二光照方向的第二光照信息;从预处理贴图提取除第一光照方向的第一光照信息以及第二光照方向的第二光照信息外其他光照方向的光照信息,得到第三光照信息;根据第一光照信息、第二光照信息以及第三光照信息,确定所述预处理贴图对应的初始光照信息。
其中,第一光照方向与第二光照方向是轴对称的。例如,第一光照方向可以是左光照方向,第二光照方向可以是右光照方向,而其他光照方向可以是上光照方向、后光照方向。光照信息可以以相应光照方向下图像的像素值表示。
示例性的,在获取预处理贴图后,可以将预处理贴图中各R、G、B、A色彩通道的信息在Shader中进行重新提取。其中,提取的过程与构建各中间贴图的过程相反。
例如,在构建各中间贴图时,第一光照方向为左光照方向、第二光照方向为右光照方向,通过公式(2)将第一初始贴图和第二初始贴图进行合并,以将合并贴图的各像素值映射到0-1范围内并存储到R通道。而在Shader中针对R通道进行初始光照信息重新提取时,则是将合并贴图的各像素值由0-1范围重新映射到-1-1范围内,以分别得到左光照方向下的第一光照信息、右光照方向下的第二光照信息。
而第三光照信息则可以直接从G通道获取上光照方向下的光照信息、B通道获取后光照方向下的光照信息。
通过该方法,可以在预先烘焙的各贴图资源基础上直接获取光照信息,避免了传统技术需要制作颜色查找表引起的渲染效率低和增加渲染性能消耗的技术问题。该方法可以进行虚拟场景的快速渲染,提高了虚拟场景的渲染效率。
更进一步的,在确定当前虚拟环境中虚拟对象的初始光照信息,便可以结合当前虚拟环境中当前光照信息,实现对当前虚拟环境的渲染。
根据本公开的一些实施例,在基于当前虚拟场景中的当前光照信息与初始光照信息对预处理贴图进行光照渲染,得到目标贴图时,计算当前光照信息与初始光照信息的插值变量;基于插值变量对预处理贴图进行光照渲染,得到目标贴图。
其中,当前光照信息可以是当前游戏场景的光照方向、光照强度、光照颜色等信息。而光照方向通常为当前游戏场景中太阳光方向或月亮光方向等。
示例性的,可以在Shader中获取当前游戏场景中的当前光照信息,从而计算当前光照信息与上述确定的初始光照信息之间的插值变量,以在当前光照信息下,控制虚拟对象的预处理贴图在不同光照方向变化下的插值效果。如图12、13所示,箭头方向为当前光照信息,图12、图13示意性示出了不同当前光照信息下的目标贴图示意图。
在确定虚拟对象的初始光照信息,便可以结合当前光照信息实时计算出最终的目标贴图,得到当前光照信息下的虚拟场景渲染效果。该方法避免了传统方法中无法实时看到虚拟场景的渲染效果,使得难以配合当前虚拟场景中的光照信息快速确定所需要的颜色查找表所导致的渲染效率低的技术问题。进一步实现提高对虚拟场景渲染效率的技术效果。
在本公开的示例性实施方式中,在上述计算当前光照信息与初始光照信息的插值变量时,可以将当前光照信息与世界空间顶点的切线进行点乘运算,得到初始插值变量;基于插值函数将初始插值变量与初始光照信息进行插值运算,得到插值变量。
以上述初始光照信息包含左光照方向、右光照方向、上光照方向以及后光照方向下的光照信息为例:
在上述公式(7)的基础上,基于插值函数将初始插值变量与初始光照信息进行插值运算,得到如公式(8)所示的插值变量:
c=lerp(lerp(top,left,clamp(-d)),right,clamp(d)) (8)
公式(8)中,c为插值变量;d为初始插值变量;lerp为插值函数;top,left,right分别对应初始光照信息中上光照方向下的光照信息、左光照方向下的光照信息、右光照方向下的光照信息;clamp(d)是用于将输出的数值范围控制在[0,d]或[d,0]范围内的函数。
其中,插值函数lerp(y1,y2,weight)用于输出y1与y2之间的数值,输出的具体数值由权重参数weight决定。
例如,若插值函数的输入参数y1、y2、weight的取值为:y1=0;y2=4;weight=0.5。则插值函数lerp(y1,y2,weight)输出的数值为2。
公式(8)中,上光照方向下的光照信息、左光照方向下的光照信息通常以矩阵形式进行表示。在计算lerp(top,left,clamp(-d))时,矩阵中对应位置的数据进行权重参数取值。
通过插值函数对初始光照信息与当前光照信息作用下的渲染效果进行计算,可以结合当前光照信息实时计算出最终的目标贴图,得到当前光照信息下的虚拟场景渲染效果。该方法进一步提高了虚拟场景渲染的效率。
根据本公开的另一些实施例,在基于当前光照信息与初始光照信息对预处理贴图进行光照渲染,得到目标贴图时,可以将当前光照信息与虚拟摄像机方向的光照信息进行点乘运算,得到遮罩映射;计算所述遮罩映射与所述初始光照信息的乘积,以对预处理贴图进行光照渲染得到目标贴图。
其中,虚拟摄像机方向为当前虚拟场景下,终端设备呈现的视角方向,即玩家看到的视角方向。
示例性的,在与虚拟场景中当前光照方向相反的情况下,云层的边缘会因为密度降低而导致光线散射。为了模拟真实云层的散射效果,可以使用后光照方向下的初始光照信息对预处理贴图进行光照渲染。
将当前光照方向下的光照信息与虚拟摄像机方向的光照信息进行点乘运算,可以获得如图14所示的遮罩映射。再计算遮罩映射与后光照方向下的初始光照信息的乘积得到如图15所示的目标贴图。
其中,遮罩映射的各色彩通道的数值是由黑色(R=G=B=0)到白色(R=G=B=255)的变化区间。遮罩映射的数值可以反映出当前光照方向与云层的相对位置关系。若通过点乘运算所计算的数值越大,表明当前光照方向与虚拟摄像机方向越趋于相同方向,反之趋于相反方向。
应该理解的是,上述各光照信息均是以矩阵形式进行表示,在计算时可按照矩阵计算规则进行计算。
通过后光照方向下的光照信息可以模拟真实云层的散射效果,从而实现虚拟场景随着昼夜变换进行动态变换的效果,提高虚拟场景渲染的写实性,进而提高玩家的游戏体验感。
在本公开的示例性实施方式中,对遮罩映射的像素值为第一预设像素值的区域进行插值处理,得到第一光照颜色的第一目标贴图;对遮罩映射的像素值为第二预设像素值的区域进行插值处理,得到第二光照颜色的第二目标贴图;将第一目标贴图与第二目标贴图进行融合,得到目标颜色的目标贴图。
其中,第一预设像素值可以是R=G=B=255叠加的像素值,第二预设像素值可以是R=G=B=0叠加的像素值。第一光照颜色可以是当前光照颜色、第二光照颜色可以是天空大气颜色。
通过获取目标贴图的颜色信息可以使得虚拟场景中天空云层的颜色更加贴近于实际天空云层的颜色,从而提高虚拟场景渲染的写实性。
根据本公开的一些实施例,将图12、图13获得的当前光照信息下的目标贴图与图15所示的目标贴图以及目标贴图的颜色信息进行叠加,可以得到图16、图17所示的虚拟场景的渲染效果。图16、图17所示分别为白天和黑夜情况下叠加了天空大气颜色的虚拟场景渲染效果图。白天情况下的当前光照信息主要来自于太阳光,而黑夜情况下的当前光照信息主要来自于月光。
为了实现上述虚拟场景渲染方法,本公开的一个实施例中提供一种虚拟场景渲染装置。图18示出了虚拟场景渲染装置的示意性架构图。
如图18所示,该虚拟场景渲染装置1800包括贴图选取模块1801、信息确定模块1802和光照渲染模块1803。
贴图选取模块1801用于从预先烘焙渲染得到的贴图资源库中选择与当前虚拟场景中虚拟对象对应的预处理贴图;信息确定模块1802用于确定预处理贴图对应的初始光照信息;光照渲染模块1803用于基于当前虚拟场景中的当前光照信息与初始光照信息对预处理贴图进行光照渲染,得到目标贴图。
本公开实施例提供的虚拟场景渲染装置1800,可以执行上述任一实施例中的虚拟场景渲染方法的技术方案,其实现原理以及有益效果与虚拟场景渲染方法的实现原理及有益效果类似。该虚拟场景渲染装置1800可以预先对虚拟场景中虚拟对象进行预先烘焙渲染以构建贴图资源库,在对当前虚拟场景的虚拟对象进行渲染时,仅需在贴图资源库中快速获取与虚拟对象对应的贴图,并结合当前虚拟场景中的当前光照信息实时计算出渲染后的虚拟场景。该方法预先对虚拟场景中虚拟对象进行预先烘焙渲染以构建贴图资源库,在对当前虚拟场景的虚拟对象进行渲染时,仅需在贴图资源库中快速获取与虚拟对象对应的贴图,并结合当前虚拟场景中的当前光照信息实时计算出渲染后的虚拟场景。该方法避免传统方法中需要制作更多的颜色查找表,并在实时渲染时从颜色查找表查询与当前虚拟场景的光照方向相适配的颜色所导致的对虚拟场景的渲染效率低的技术问题,进而实现了提高虚拟场景渲染效率的技术效果。同时,该方法避免制作更多的颜色查找表导致的渲染性能消耗增加的技术问题,从而降低了性能消耗的技术效果。
进一步的,为了实现上述虚拟场景渲染方法,本公开的一个实施例中还提供另一种虚拟场景渲染装置。图19示出了虚拟场景渲染装置的示意性架构图。
如图19所示,该虚拟场景渲染装置1900包括图像渲染模块1901、资源构建模块1902、图像处理模块1903、贴图选取模块1904、光照渲染模块1905。
在一个可选的实施例中,该图像渲染模块1901具体用于针对虚拟对象的多个目标体素模型,在不同光照方向下对各目标体素模型进行图像渲染,得到多个初始贴图;资源构建模块1902用于基于多个初始贴图构建各目标体素模型的中间贴图;根据各中间贴图构建所述贴图资源库。通过对虚拟对象的多个不同体素模型分别进行不同光照方向下的图像渲染并最终构建贴图资源库,可以提高云层的丰富性。同时预先构建资源库,可以在对虚拟场景中虚拟对象进行渲染时只需选取对应的贴图,无需重复对不同光照下的虚拟对象体素模型重新烘焙,从而降低游戏服务器的实时渲染性能消耗。
在一个可选的实施例中,图像处理模块1903用于对初始体素模型进行噪波置换处理,得到中间体素模型;对中间体素模型进行噪波打乱处理,得到初始目标体素模型。通过使用噪波对建立的初始体素模型噪波置换以及噪波打乱处理,可以使建立的云朵模型更加接近真实云朵效果,进而提高渲染后虚拟场景的写实性和逼真性。
在一个可选的实施例中,图像处理模块1903用于对初始目标体素模型进行归一化处理,得到目标体素模型。通过进行归一化处理,以使虚拟对象模拟实际场景中的效果,即实际场景中,云朵受到地表重力的作用下,云朵从上至下的体积密度通常是由低及高。为了在虚拟场景中模拟真实的云朵,可以对云朵的初始目标体素模型的坐标进行归一化处理。
在一个可选的实施例中,资源构建模块1902用于针对每个目标体素模型,将第一光照方向的第一初始贴图与第二光照方向的第二初始贴图进行图像合并,得到各目标体素模型的合并贴图;其中,第一光照方向与第二光照方向为轴对称;基于各目标体素模型中除第一光照方向与第二光照方向外其他方向的初始贴图与合并贴图构建中间贴图。选取光照方向处于轴对称的初始贴图进行图像合并,便于计算合并后的像素值,从而快速得到合并贴图。
在一个可选的实施例中,资源构建模块1902用于计算第一初始贴图的像素值与预设数值的乘积,得到针对第一初始贴图的特征像素值;计算特征像素值与第二初始贴图的像素值的加和,得到目标像素值;基于第一初始贴图与第二初始贴图中各像素单元对应的各目标像素值得到合并贴图。针对每一个虚拟对象的目标体素模型,初始贴图的像素值进行合并贴图,并将合并贴图的各像素值映射到0-1范围内,以便于存入色彩通道中形成贴图资源库,从而进一步提高对虚拟场景的渲染效率。
在一个可选的实施例中,资源构建模块1902用于计算预处理贴图的像素值与预设数值的乘积,得到第一光照方向的第一光照信息以及第二光照方向的第二光照信息;从预处理贴图提取除第一光照方向的第一光照信息以及第二光照方向的第二光照信息外其他光照方向的光照信息,得到第三光照信息;根据第一光照信息、第二光照信息以及第三光照信息,确定预处理贴图对应的初始光照信息。通过该方法,可以在预先烘焙的各贴图资源基础上直接获取光照信息,避免了传统技术需要制作颜色查找表引起的渲染效率低和增加渲染性能消耗的技术问题。该方法可以进行虚拟场景的快速渲染,提高了虚拟场景的渲染效率。
在一个可选的实施例中,贴图选取模块1904用于对贴图资源库中各贴图添加贴图编号;基于贴图编号,分别计算虚拟对象对应贴图在贴图资源库中对应贴图的水平偏移量与垂直偏移量;根据水平偏移量与垂直偏移量,确定虚拟对象对应贴图的位置信息;将位置信息对应的贴图确定为与当前虚拟场景中虚拟对象对应的预处理贴图。该方法避免传统方法中需要制作更多的颜色查找表,并在实时渲染时从颜色查找表查询与当前虚拟场景的光照方向相适配的颜色所导致的对虚拟场景的渲染效率低的技术问题,进而实现了提高虚拟场景渲染效率的技术效果。
在一个可选的实施例中,图像处理模块1903用于根据采集的噪波贴图对预处理贴图进行噪波扰动处理。该方法可以使虚拟场景中的虚拟对象根据动态性。
在一个可选的实施例中,光照渲染模块1905用于计算当前光照信息与所述光照信息的插值变量;基于插值变量对预处理贴图进行光照渲染,得到目标贴图。在确定虚拟对象的初始光照信息,便可以结合当前光照信息实时计算出最终的目标贴图,得到当前光照信息下的虚拟场景渲染效果。该方法避免了传统方法中无法实时看到虚拟场景的渲染效果,使得难以配合当前虚拟场景中的光照信息快速确定所需要的颜色查找表所导致的渲染效率低的技术问题。进一步实现提高对虚拟场景渲染效率的技术效果。
在一个可选的实施例中,光照渲染模块1905用于将当前光照信息与世界空间顶点的切线进行点乘运算,得到初始插值变量;基于插值函数将初始插值变量与初始光照信息进行插值运算,得到插值变量。通过插值函数对初始光照信息与当前光照信息作用下的渲染效果进行计算,可以结合当前光照信息实时计算出最终的目标贴图,得到当前光照信息下的虚拟场景渲染效果。该方法进一步提高了虚拟场景渲染的效率。
在一个可选的实施例中,光照渲染模块1905用于将当前光照信息与虚拟摄像机方向的光照信息进行点乘运算,得到预处理贴图的遮罩映射;计算遮罩映射与初始光照信息的乘积,对预处理贴图进行光照渲染得到目标贴图。通过后光照方向下的光照信息可以模拟真实云层的散射效果,从而实现虚拟场景随着昼夜变换进行动态变换的效果,提高虚拟场景渲染的写实性,进而提高玩家的游戏体验感。
在一个可选的实施例中,图像处理模块1903用于对遮罩映射的像素值为第一预设像素值的区域进行插值处理,得到第一光照颜色的第一目标贴图;对遮罩映射的像素值为第二预设像素值的区域进行插值处理,得到第二光照颜色的第二目标贴图;将第一目标贴图与第二目标贴图进行融合,得到目标颜色的目标贴图。通过获取目标贴图的颜色信息可以使得虚拟场景中天空云层的颜色更加贴近于实际天空云层的颜色,从而提高虚拟场景渲染的写实性。
本公开实施例提供的虚拟场景渲染装置1900,可以执行上述任一实施例中的虚拟场景渲染方法的技术方案,其实现原理以及有益效果与虚拟场景渲染方法的实现原理及有益效果类似。
该虚拟场景渲染装置1900可以预先对虚拟场景中虚拟对象进行预先烘焙渲染以构建贴图资源库。在对当前虚拟场景的虚拟对象进行渲染时,仅需在贴图资源库中快速获取与虚拟对象对应的贴图,并结合当前虚拟场景中的当前光照信息实时计算出渲染后的虚拟场景。该方法避免传统方法中需要制作更多的颜色查找表,并在实时渲染时从颜色查找表查询与当前虚拟场景的光照方向相适配的颜色所导致的对虚拟场景的渲染效率低的技术问题,进而实现了提高虚拟场景渲染效率的技术效果。同时,该方法避免制作更多的颜色查找表导致的渲染性能消耗增加的技术问题,从而降低了性能消耗的技术效果。
本公开的示例性实施方式还提供了一种计算机可读存储介质,可以实现为一种程序产品的形式,其包括程序代码,当程序产品在电子设备上运行时,程序代码用于使电子设备执行本说明书上述“示例性方法”部分中描述的根据本公开各种示例性实施方式的步骤。在一种实施方式中,该程序产品可以实现为便携式紧凑盘只读存储器(CD-ROM)并包括程序代码,并可以在电子设备,例如个人电脑上运行。然而,本公开的程序产品不限于此,在本文件中,可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
上述虚拟场景渲染方法,通过预先对虚拟场景中虚拟对象进行预先烘焙渲染以构建贴图资源库,在对当前虚拟场景的虚拟对象进行渲染时,仅需在贴图资源库中快速获取与虚拟对象对应的贴图,并结合当前虚拟场景中的当前光照信息实时计算出渲染后的虚拟场景。该方法避免传统方法中需要制作更多的颜色查找表,并在实时渲染时从颜色查找表查询与当前虚拟场景的光照方向相适配的颜色所导致的对虚拟场景的渲染效率低的技术问题,进而实现了提高虚拟场景渲染效率的技术效果。同时,该方法避免制作更多的颜色查找表导致的渲染性能消耗增加的技术问题,从而降低了性能消耗的技术效果。
程序产品可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以为但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。
计算机可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了可读程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。可读信号介质还可以是可读存储介质以外的任何可读介质,该可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。
可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于无线、有线、光缆、RF等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言的任意组合来编写用于执行本公开操作的程序代码,程序设计语言包括面向对象的程序设计语言—诸如Java、C++等,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、作为一个独立的软件包执行、部分在用户计算设备上部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。在涉及远程计算设备的情形中,远程计算设备可以通过任意种类的网络,包括局域网(LAN)或广域网(WAN),连接到用户计算设备,或者,可以连接到外部计算设备(例如利用因特网服务提供商来通过因特网连接)。在本公开实施例中,计算机可读存储介质中存储的程序代码被执行时可以实现如上虚拟场景渲染方法中的以下步骤:
上述虚拟场景渲染方法,通过从预先烘焙渲染得到的贴图资源库中选择与当前虚拟场景中虚拟对象对应的预处理贴图;确定预处理贴图对应的初始光照信息;基于当前虚拟场景中的当前光照信息与初始光照信息对预处理贴图进行光照渲染,得到目标贴图。该虚拟场景渲染方法可以预先对虚拟场景中虚拟对象进行预先烘焙渲染以构建贴图资源库,在对当前虚拟场景的虚拟对象进行渲染时,仅需在贴图资源库中快速获取与虚拟对象对应的贴图,并结合当前虚拟场景中的当前光照信息实时计算出渲染后的虚拟场景。该方法避免传统方法中需要制作更多的颜色查找表,并在实时渲染时从颜色查找表查询与当前虚拟场景的光照方向相适配的颜色所导致的对虚拟场景的渲染效率低的技术问题,进而实现了提高虚拟场景渲染效率的技术效果。
在本公开的示例性实施例中,还提供了一种能够实现上述方法的电子设备。
所属技术领域的技术人员能够理解,本发明的各个方面可以实现为系统、方法或程序产品。因此,本发明的各个方面可以具体实现为以下形式,即:完全的硬件实施方式、完全的软件实施方式(包括固件、微代码等),或硬件和软件方面结合的实施方式,这里可以统称为“电路”、“模块”或“系统”。
下面参照图20来描述根据本发明的这种实施方式的电子设备2000。图20显示的电子设备2000仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。
如图20所示,电子设备2000以通用计算设备的形式表现。电子设备2000的组件可以包括但不限于:上述至少一个处理单元2010、上述至少一个存储单元2020、连接不同系统组件(包括存储单元2020和处理单元2010)的总线2030、显示单元2040。
其中,存储单元存储有程序代码,程序代码可以被处理单元2010执行,使得处理单元2010执行本说明书上述“示例性方法”部分中描述的根据本发明各种示例性实施方式的步骤。例如,处理单元2010可以执行如图3中所示的步骤S301至步骤S303。
存储单元2020可以包括易失性存储单元形式的可读介质,例如随机存取存储单元(RAM)20201和/或高速缓存存储单元20202,还可以进一步包括只读存储单元(ROM)20203。
存储单元2020还可以包括具有一组(至少一个)程序模块20205的程序/实用工具20204,这样的程序模块20205包括但不限于:操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。
总线2030可以为表示几类总线结构中的一种或多种,包括存储单元总线或者存储单元控制器、外围总线、图形加速端口、处理单元或者使用多种总线结构中的任意总线结构的局域总线。
电子设备2000也可以与一个或多个外部设备2100(例如键盘、指向设备、蓝牙设备等)通信,还可与一个或者多个使得用户能与该电子设备2000交互的设备通信,和/或与使得该电子设备2000能与一个或多个其它计算设备进行通信的任何设备(例如路由器、调制解调器等等)通信。这种通信可以通过输入/输出(I/O)接口2050进行。并且,电子设备2000还可以通过网络适配器2060与一个或者多个网络(例如局域网(LAN),广域网(WAN)和/或公共网络,例如因特网)通信。如图所示,网络适配器2060通过总线2030与电子设备2000的其它模块通信。应当明白,尽管图中未示出,可以结合电子设备2000使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、RAID系统、磁带驱动器以及数据备份存储系统等。
在本公开实施例中,电子设备2000中存储的程序代码被执行时可以实现如上虚拟场景渲染方法中的以下步骤:
从预先烘焙渲染得到的贴图资源库中选择与当前虚拟场景中虚拟对象对应的预处理贴图;确定预处理贴图对应的初始光照信息;基于当前虚拟场景中的当前光照信息与初始光照信息对预处理贴图进行光照渲染,得到目标贴图。该方法预先对虚拟场景中虚拟对象进行预先烘焙渲染以构建贴图资源库,在对当前虚拟场景的虚拟对象进行渲染时,仅需在贴图资源库中快速获取与虚拟对象对应的贴图,并结合当前虚拟场景中的当前光照信息实时计算出渲染后的虚拟场景。该方法避免传统方法中需要制作更多的颜色查找表,并在实时渲染时从颜色查找表查询与当前虚拟场景的光照方向相适配的颜色所导致的对虚拟场景的渲染效率低的技术问题,进而实现了提高虚拟场景渲染效率的技术效果。同时,该方法避免制作更多的颜色查找表导致的渲染性能消耗增加的技术问题,从而降低了性能消耗的技术效果。
通过以上的实施方式的描述,本领域的技术人员易于理解,这里描述的示例实施方式可以通过软件实现,也可以通过软件结合必要的硬件的方式来实现。因此,根据本公开实施方式的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是CD-ROM,U盘,移动硬盘等)中或网络上,包括若干指令以使得一台计算设备(可以是个人计算机、服务器、终端装置、或者网络设备等)执行根据本公开实施方式的方法。
此外,上述附图仅是根据本发明示例性实施例的方法所包括的处理的示意性说明,而不是限制目的。易于理解,上述附图所示的处理并不表明或限制这些处理的时间顺序。另外,也易于理解,这些处理可以是例如在多个模块中同步或异步执行的。
应当注意,尽管在上文详细描述中提及了用于动作执行的设备的若干模块或者单元,但是这种划分并非强制性的。实际上,根据本公开的实施方式,上文描述的两个或更多模块或者单元的特征和功能可以在一个模块或者单元中具体化。反之,上文描述的一个模块或者单元的特征和功能可以进一步划分为由多个模块或者单元来具体化。
所属技术领域的技术人员能够理解,本公开的各个方面可以实现为系统、方法或程序产品。因此,本公开的各个方面可以具体实现为以下形式,即:完全的硬件实施方式、完全的软件实施方式(包括固件、微代码等),或硬件和软件方面结合的实施方式,这里可以统称为“电路”、“模块”或“系统”。本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本公开的其他实施方式。本公开旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施方式仅被视为示例性的,本公开的真正范围和精神由权利要求指出。
应当理解的是,本公开并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本公开的范围仅由所附的权利要求来限定。
Claims (16)
1.一种虚拟场景渲染方法,其特征在于,包括:
从预先烘焙渲染得到的贴图资源库中选择与当前虚拟场景中虚拟对象对应的预处理贴图;
确定所述预处理贴图对应的初始光照信息;
基于所述当前虚拟场景中的当前光照信息与所述初始光照信息对所述预处理贴图进行光照渲染,得到目标贴图。
2.根据权利要求1所述的虚拟场景渲染方法,其特征在于,所述预先烘焙渲染的步骤,包括:
针对所述虚拟对象的多个目标体素模型,在不同光照方向下对各所述目标体素模型进行图像渲染,得到多个初始贴图;
基于所述多个初始贴图构建各所述目标体素模型的中间贴图;
根据各所述中间贴图构建所述贴图资源库。
3.根据权利要求2所述的虚拟场景渲染方法,其特征在于,在所述针对所述虚拟对象的多个目标体素模型,在不同光照方向下对各所述目标体素模型进行图像渲染,得到多个初始贴图之前,所述预先烘焙渲染的步骤还包括:
对初始体素模型进行噪波置换处理,得到中间体素模型;
对所述中间体素模型进行噪波打乱处理,得到初始目标体素模型。
4.根据权利要求3所述的虚拟场景渲染方法,其特征在于,所述预先烘焙渲染的步骤,还包括:
对所述初始目标体素模型进行归一化处理,得到所述目标体素模型。
5.根据权利要求2所述的虚拟场景渲染方法,其特征在于,所述基于所述多个初始贴图构建各所述目标体素模型的中间贴图,包括:
针对每个所述目标体素模型,将第一光照方向的第一初始贴图与第二光照方向的第二初始贴图进行图像合并,得到各所述目标体素模型的合并贴图;其中,所述第一光照方向与所述第二光照方向为轴对称;
基于各所述目标体素模型中除所述第一光照方向与所述第二光照方向外其他方向的初始贴图与所述合并贴图构建所述中间贴图。
6.根据权利要求5所述的虚拟场景渲染方法,其特征在于,所述将第一光照方向的第一初始贴图与第二光照方向的第二初始贴图进行图像合并,得到各所述目标体素模型的合并贴图,包括:
计算所述第一初始贴图的像素值与预设数值的乘积,得到针对所述第一初始贴图的特征像素值;
计算所述特征像素值与所述第二初始贴图的像素值的加和,得到目标像素值;
基于所述第一初始贴图与所述第二初始贴图中各像素单元对应的各所述目标像素值得到所述合并贴图。
7.根据权利要求5所述的虚拟场景渲染方法,其特征在于,所述确定所述预处理贴图对应的初始光照信息,包括:
计算所述预处理贴图的像素值与预设数值的乘积,得到所述第一光照方向的第一光照信息以及所述第二光照方向的第二光照信息;
从所述预处理贴图提取除所述第一光照方向的第一光照信息以及所述第二光照方向的第二光照信息外其他光照方向的光照信息,得到第三光照信息;
根据所述第一光照信息、所述第二光照信息以及所述第三光照信息,确定所述预处理贴图对应的所述初始光照信息。
8.根据权利要求1所述的虚拟场景渲染方法,其特征在于,所述从预先烘焙渲染得到的贴图资源库中选择与当前虚拟场景中虚拟对象对应的预处理贴图,包括:
对所述贴图资源库中各贴图添加贴图编号;
基于所述贴图编号,分别计算所述虚拟对象对应贴图在贴图资源库中对应贴图的水平偏移量与垂直偏移量;
根据所述水平偏移量与垂直偏移量,确定所述虚拟对象对应贴图的位置信息;
将所述位置信息对应的贴图确定为与当前虚拟场景中虚拟对象对应的所述预处理贴图。
9.根据权利要求8所述的虚拟场景渲染方法,其特征在于,在所述将所述位置信息对应的贴图确定为与当前虚拟场景中虚拟对象对应的所述预处理贴图之后,所述虚拟场景渲染方法还包括:
根据采集的噪波贴图对所述预处理贴图进行噪波扰动处理。
10.根据权利要求1所述的虚拟场景渲染方法,其特征在于,所述基于所述当前虚拟场景中的当前光照信息与所述初始光照信息对所述预处理贴图进行光照渲染,得到目标贴图,包括:
计算所述当前光照信息与所述初始光照信息的插值变量;
基于所述插值变量对所述预处理贴图进行光照渲染,得到所述目标贴图。
11.根据权利要求10所述的虚拟场景渲染方法,其特征在于,所述计算所述当前光照信息与所述初始光照信息的插值变量,包括:
将所述当前光照信息与世界空间顶点的切线进行点乘运算,得到初始插值变量;
基于预先配置的插值模型将所述初始插值变量与所述初始光照信息进行插值运算,得到所述插值变量。
12.根据权利要求10所述的虚拟场景渲染方法,其特征在于,所述基于所述当前虚拟场景中的当前光照信息与所述初始光照信息对所述预处理贴图进行光照渲染,得到目标贴图,包括:
将所述当前光照信息与虚拟摄像机方向的光照信息进行点乘运算,得到所述预处理贴图的遮罩映射;
计算所述遮罩映射与所述初始光照信息的乘积,对所述预处理贴图进行光照渲染得到所述目标贴图。
13.根据权利要求12所述的虚拟场景渲染方法,其特征在于,还包括:
对所述遮罩映射的像素值为第一预设像素值的区域进行插值处理,得到第一光照颜色的第一目标贴图;
对所述遮罩映射的像素值为第二预设像素值的区域进行插值处理,得到第二光照颜色的第二目标贴图;
将所述第一目标贴图与所述第二目标贴图进行融合,得到目标颜色的目标贴图。
14.一种虚拟场景渲染装置,其特征在于,包括:
贴图选取模块,用于从预先烘焙渲染得到的贴图资源库中选择与当前虚拟场景中虚拟对象对应的预处理贴图;
信息确定模块,用于确定所述预处理贴图对应的初始光照信息;
光照渲染模块,用于基于所述当前虚拟场景中的当前光照信息与所述初始光照信息对所述预处理贴图进行光照渲染,得到目标贴图。
15.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至13任一项所述的虚拟场景渲染方法。
16.一种电子设备,其特征在于,包括:
处理器;以及
存储器,用于存储所述处理器的可执行指令;
其中,所述处理器配置为经由执行所述可执行指令来执行权利要求1至13任一项所述的虚拟场景渲染方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211211116.0A CN115526976A (zh) | 2022-09-30 | 2022-09-30 | 虚拟场景渲染方法、装置、存储介质和电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211211116.0A CN115526976A (zh) | 2022-09-30 | 2022-09-30 | 虚拟场景渲染方法、装置、存储介质和电子设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115526976A true CN115526976A (zh) | 2022-12-27 |
Family
ID=84702254
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211211116.0A Pending CN115526976A (zh) | 2022-09-30 | 2022-09-30 | 虚拟场景渲染方法、装置、存储介质和电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115526976A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN118096985A (zh) * | 2023-07-11 | 2024-05-28 | 北京艾尔飞康航空技术有限公司 | 虚拟森林场景实时渲染方法及装置 |
WO2024198719A1 (zh) * | 2023-03-29 | 2024-10-03 | 腾讯科技(深圳)有限公司 | 数据处理方法、装置、计算机设备、计算机可读存储介质及计算机程序产品 |
-
2022
- 2022-09-30 CN CN202211211116.0A patent/CN115526976A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2024198719A1 (zh) * | 2023-03-29 | 2024-10-03 | 腾讯科技(深圳)有限公司 | 数据处理方法、装置、计算机设备、计算机可读存储介质及计算机程序产品 |
CN118096985A (zh) * | 2023-07-11 | 2024-05-28 | 北京艾尔飞康航空技术有限公司 | 虚拟森林场景实时渲染方法及装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111723902A (zh) | 使用神经网络动态估计增强现实场景中位置的照明参数 | |
CN113674389B (zh) | 场景渲染方法、装置、电子设备及存储介质 | |
CN111968216A (zh) | 一种体积云阴影渲染方法、装置、电子设备及存储介质 | |
CN115526976A (zh) | 虚拟场景渲染方法、装置、存储介质和电子设备 | |
CN111968215A (zh) | 一种体积光渲染方法、装置、电子设备及存储介质 | |
CN108805971B (zh) | 一种环境光遮蔽方法 | |
CN112700528B (zh) | 一种用于头戴增强现实设备的虚拟物体阴影渲染方法 | |
US9183654B2 (en) | Live editing and integrated control of image-based lighting of 3D models | |
US10719920B2 (en) | Environment map generation and hole filling | |
CN108043027B (zh) | 存储介质、电子装置、游戏画面的显示方法和装置 | |
US20200302579A1 (en) | Environment map generation and hole filling | |
US20230368459A1 (en) | Systems and methods for rendering virtual objects using editable light-source parameter estimation | |
CN112891946B (zh) | 游戏场景生成方法和装置、可读存储介质、电子设备 | |
CN110634178A (zh) | 面向数字博物馆的三维场景精细化重建方法 | |
US9401044B1 (en) | Method for conformal visualization | |
CN116894922A (zh) | 一种基于实时图形引擎的夜视图像生成方法 | |
US7133052B1 (en) | Morph map based simulated real-time rendering | |
CN118397160A (zh) | 一种用于油田站场逆向建站系统的自主化三维渲染引擎 | |
JP2023525945A (ja) | モバイル機器における大規模建築物の拡張現実具現のためのデータ最適化及びインターフェース向上方法 | |
CN116030179B (zh) | 一种数据处理方法、装置、计算机设备及存储介质 | |
CN112580213A (zh) | 电场线的显示图像的生成方法和装置、存储介质 | |
CN116805349A (zh) | 室内场景重建方法、装置、电子设备及介质 | |
CN116310041A (zh) | 内构效果的渲染方法及装置、电子设备、存储介质 | |
CN115937389A (zh) | 阴影渲染方法、装置、存储介质和电子设备 | |
CN115953524A (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 |