CN117218273A - 图像渲染方法以及装置 - Google Patents

图像渲染方法以及装置 Download PDF

Info

Publication number
CN117218273A
CN117218273A CN202311255120.1A CN202311255120A CN117218273A CN 117218273 A CN117218273 A CN 117218273A CN 202311255120 A CN202311255120 A CN 202311255120A CN 117218273 A CN117218273 A CN 117218273A
Authority
CN
China
Prior art keywords
data
scene
voxel
rendering
voxel data
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
Application number
CN202311255120.1A
Other languages
English (en)
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.)
Zhuhai Kingsoft Digital Network Technology Co Ltd
Original Assignee
Zhuhai Kingsoft Digital Network Technology 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 Zhuhai Kingsoft Digital Network Technology Co Ltd filed Critical Zhuhai Kingsoft Digital Network Technology Co Ltd
Priority to CN202311255120.1A priority Critical patent/CN117218273A/zh
Publication of CN117218273A publication Critical patent/CN117218273A/zh
Pending legal-status Critical Current

Links

Landscapes

  • Image Generation (AREA)

Abstract

本说明书实施例提供图像渲染方法以及装置,其中所述图像渲染方法包括:获取目标场景的场景数据;基于空间维度,对场景数据进行划分,获得多个场景子数据;利用预设体素单元,分别对多个场景子数据进行拟合,获得各场景子数据对应的体素数据;将各体素数据分发至分布式计算节点上进行光照烘焙,获得各体素数据的光照参数;基于各体素数据的光照参数,对目标场景的场景图像进行渲染。通过分布式计算节点,完成对空间维度下的体素数据的光照烘焙,提升了光照烘焙的效率,相应提升了图像渲染的效率,降低了对软硬件资源的性能要求,降低了图像渲染的成本。

Description

图像渲染方法以及装置
技术领域
本说明书实施例涉及图像处理技术领域,特别涉及一种图像渲染方法。
背景技术
随着图像处理技术的发展,大规模的场景制作和场景图像渲染,在动画、游戏、建筑、设计、影视等多个领域得到广泛应用。
目前,在图像渲染过程中,为了实现逼真的光照效果,进而提升渲染得到的场景图像的图像质量,需要对场景数据进行光照烘焙,用于模拟真实场景中的光影效果。
然而,在场景数据的数据量较大的情况下,例如,大世界游戏场景的场景数据包括上万个对象模型,直接对场景数据进行渲染,需要将场景数据先将映射到生成二维纹理空间(UV空间)中,接着依次完成光照信息的采样、光照参数的计算、光照贴图的分配、光照贴图的打包和压缩等步骤,所需要处理的数据量是巨大的,场景中的每个对象模型都要对应生成一一对应的光照贴图,再基于光照贴图,对各对象模型进行渲染,对软硬件资源的性能要求过高,导致图像渲染的成本高,且图像渲染的效率不足。因此,亟需一种低成本、高效率的图像渲染方法。
发明内容
有鉴于此,本说明书实施例提供了一种图像渲染方法。本说明书一个或者多个实施例同时涉及一种图像渲染装置,一种计算设备,一种计算机可读存储介质以及一种计算机程序,以解决现有技术中存在的技术缺陷。
根据本说明书实施例的第一方面,提供了一种图像渲染方法,包括:
获取目标场景的场景数据;
基于空间维度,对场景数据进行划分,获得多个场景子数据;
利用预设体素单元,分别对多个场景子数据进行拟合,获得各场景子数据对应的体素数据;
将各体素数据分发至分布式计算节点上进行光照烘焙,获得各体素数据的光照参数;
基于各体素数据的光照参数,对目标场景的场景图像进行渲染。
根据本说明书实施例的第二方面,提供了一种图像渲染装置,包括:
获取模块,被配置为获取目标场景的场景数据;
划分模块,被配置为基于空间维度,对场景数据进行划分,获得多个场景子数据;
拟合模块,被配置为利用预设体素单元,分别对多个场景子数据进行拟合,获得各场景子数据对应的体素数据;
烘焙模块,被配置为将各体素数据分发至分布式计算节点上进行光照烘焙,获得各体素数据的光照参数;
渲染模块,被配置为基于各体素数据的光照参数,对目标场景的场景图像进行渲染。
根据本说明书实施例的第三方面,提供了一种计算设备,包括:
存储器和处理器;
所述存储器用于存储计算机可执行指令,所述处理器用于执行所述计算机可执行指令,该计算机可执行指令被处理器执行时实现上述图像渲染方法的步骤。
根据本说明书实施例的第四方面,提供了一种计算机可读存储介质,其存储有计算机可执行指令,该指令被处理器执行时实现上述图像渲染方法的步骤。
根据本说明书实施例的第五方面,提供了一种计算机程序,其中,当所述计算机程序在计算机中执行时,令计算机执行上述图像渲染方法的步骤。
本说明书一个实施例中,获取目标场景的场景数据;基于空间维度,对场景数据进行划分,获得多个场景子数据;利用预设体素单元,分别对多个场景子数据进行拟合,获得各场景子数据对应的体素数据;将各体素数据分发至分布式计算节点上进行光照烘焙,获得各体素数据的光照参数;基于各体素数据的光照参数,对目标场景的场景图像进行渲染。在空间维度上将场景数据划分成多个场景子数据,利用预设体素单元,分别对多个场景子数据进行拟合,获得空间维度下各场景子数据对应的体素数据,将各体素数据分发至分布式节点,多线程并行地实现了光照烘焙,避免了生成与对象模型一一对应的光照贴图,提升了光照烘焙的效率,基于高效获得的光照参数,对场景图像进行渲染,相应提升了图像渲染的效率,降低了对软硬件资源的性能要求,降低了图像渲染的成本。
附图说明
图1是本说明书一个实施例提供的一种图像渲染方法的流程图;
图2是本说明书一个实施例提供的一种图像渲染方法中空间包络的示意图;
图3是本说明书一个实施例提供的一种图像渲染方法中场景数据划分的示意图;
图4是本说明书一个实施例提供的一种图像渲染方法中虚拟相机的示意图;
图5是本说明书一个实施例提供的一种图像渲染方法中渲染器动态加载的示意图;
图6是本说明书一个实施例提供的一种图像渲染方法中细节层级的示意图;
图7是本说明书一个实施例提供的一种图像渲染方法中重叠区域的示意图;
图8是本说明书一个实施例提供的一种图像渲染方法中调增烘焙参数的前端示意图;
图9是本说明书一个实施例提供的一种图像渲染方法中体素单元设置的前端示意图;
图10是本说明书一个实施例提供的一种图像渲染方法的流程示意图;
图11是本说明书一个实施例提供的一种应用于游戏场景下的图像渲染方法的处理过程流程图;
图12是本说明书一个实施例提供的一种图像渲染装置的结构示意图;
图13是本说明书一个实施例提供的一种计算设备的结构框图。
具体实施方式
在下面的描述中阐述了很多具体细节以便于充分理解本说明书。但是本说明书能够以很多不同于在此描述的其它方式来实施,本领域技术人员可以在不违背本说明书内涵的情况下做类似推广,因此本说明书不受下面公开的具体实施的限制。
在本说明书一个或多个实施例中使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本说明书一个或多个实施例。在本说明书一个或多个实施例和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本说明书一个或多个实施例中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
应当理解,尽管在本说明书一个或多个实施例中可能采用术语第一、第二等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本说明书一个或多个实施例范围的情况下,第一也可以被称为第二,类似地,第二也可以被称为第一。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
此外,需要说明的是,本说明书一个或多个实施例所涉及的用户信息(包括但不限于用户设备信息、用户个人信息等)和数据(包括但不限于用于分析的数据、存储的数据、展示的数据等),均为经用户授权或者经过各方充分授权的信息和数据,并且相关数据的收集、使用和处理需要遵守相关国家和地区的相关法律法规和标准,并提供有相应的操作入口,供用户选择授权或者拒绝。
首先,对本说明书一个或多个实施例涉及的名词术语进行解释。
全局光照(GI,Global Illumination)是一种计算机图形学中的技术,用于模拟现实生活中光线的反射、折射和衍射等特性。它通过计算场景中光线的传播路径和反射系数,来模拟出场景中物体对象的表面光照效果。在实际应用中,通常会采用光照烘焙的方式来减少计算量。
体素(体积元素,Voxel):三维场景的基本组成单位。它可以用来表示一个三维场景中对象模型的形状和结构,通常用于三维图形学和计算机图形学中。
像素(图像元素,Pixel):二维场景的基本组成单位。它可以用来表示一个二维图像的颜色和纹理,通常用于计算机图形学和数字图像处理中。
反射探针:一种用于计算机图形学中的技术,用于模拟现实生活中光线的反射、折射和衍射等特性。它可以用来模拟物体表面的反射效果,例如镜面反射、漫反射等。反射探针通常会使用物理引擎来模拟反射行为,以及使用光照模型来模拟反射效果。
分布式计算节点:分布式计算系统中,负责执行计算任务的多个计算机节点。每个分布式计算节点都可以独立地处理计算任务,并将计算结果通过网络传输给其他节点,最终将各个节点的计算结果进行整合,得到最终的计算结果。
虚拟相机:一种用于计算机图形学中的技术,用于模拟现实生活中的相机行为。它可以用来控制场景中物体的渲染,例如相机的位置、视角、焦距、曝光时间等。虚拟相机通常会使用物理引擎来模拟相机的运动,以及使用光照模型来模拟相机的光照效果。
细节层级(LOD,Level ofDetails):是一种多边形细节水平技术,它用于优化动画中的模型对象和场景队形,在不牺牲质量的情况下提高性能。LOD通常用于动画中的远程物体,例如山脉、建筑物和树木等。动画生成应用会自动降低远距离物体的多边形细节水平,以提高性能。降低多边形细节水平的过程称为LOD切换,它可以通过在动画生成应用中使用预定义的多边形模板或通过自定义算法自动完成。此外,LOD还可以用于优化纹理和材质,以便在不牺牲质量的情况下降低内存使用量。总之,LOD是一种用于优化动画性能的技术,它可以帮助开发者在不牺牲质量的情况下提高帧速率。
权重插值:一种通过使用一组已知数据点的线性组合来估算未知数据点的方法。它假设未知值的点受较近控制点的影响比较远控制点的影响更大,影响的程度(或权重)用点之间的距离乘方的倒数表示,权重值与距离成反比。它可以用来进行反距离权重插值(IDW插值),它是一种几何局部插值方法,可以用来进行确切的或者圆滑的方式插值。
目前,目标场景的光照烘焙,通过Lightmap技术实现。Lightmap技术主要是通过预先计算光源产生的光照效果,并将其存储在一个光照贴图,在图像渲染过程中,将光照贴图渲染到对象模型,得到场景图像,提高场景的真实感和视觉效果。LightMap一般使用的是中央处理单元(CPU,Central Processing Unit)来计算,需要把场景中所有的对象模型的模型网格(Mesh)加载到中央处理单元,将模型网格上的网格面映射到生成二维纹理空间(UV空间)中,接着依次完成光照信息的采样、各网格面的光照参数的计算、各网格面的光照贴图的分配、各网格面的光照贴图的打包和压缩等步骤。所需要处理的数据量是巨大的,场景中的每个对象模型的网格面都要对应生成一一对应的光照贴图,再基于光照贴图,对各对象模型进行渲染,对软硬件资源的性能要求过高,导致图像渲染的成本高,且图像渲染的效率不足。
针对上述问题,本说明书中提供了一种图像渲染方法,本说明书同时涉及一种图像渲染装置,一种计算设备,以及一种计算机可读存储介质,在下面的实施例中逐一进行详细说明。
参见图1,图1示出了本说明书一个实施例提供的一种图像渲染方法的流程图,包括如下具体步骤:
步骤102:获取目标场景的场景数据。
本说明书实施例应用于图像渲染功能的应用程序、网站或者小程序,包括但不限于:Unity开发引擎、3DS Max开发引擎、Unreal Engine开发引擎、Maya开发引擎、Blender开发引擎、Three.js库,Babylon.js开发引擎和A-Frame框架。
目标场景为待渲染的多维虚拟空间,包括场景对象、场景光照和场景背景等场景元素。场景数据为目标场景中各场景元素的元素参数,包括但不限于:场景对象的尺寸、场景对象的位置、场景对象的纹理、场景对象的材质、场景光照的光源类型、场景光照的光源位置、场景光照的光源强度、场景背景的位置、场景背景的纹理、场景背景的尺寸。例如,在游戏开发中,目标场景为游戏地图场景,该游戏地图包括山脉、树林、水域、建筑和人物等场景对象,太阳光的场景光照和天空的场景背景,其中,山脉、树林、水域、建筑和人物等场景对象具有对应的尺寸、位置、纹理、材质等元素参数,太阳光的场景光源具有光源类型(太阳光)、位置、强度等元素参数,天空的场景背景具有位置、纹理、尺寸等元素参数。
示例性地,在Unity开发引擎上,A游戏的开发团队开发了A游戏中地图1的地图场景,该地图场景为一个1536m×1536m×100m的三维虚拟空间,其中,包括10000个预先设计好的游戏对象(包括山脉、树林、水域、建筑和人物等)的对象模型,场景光照为太阳光的场景光源,场景背景为天空背景,10000个游戏对象的对象模型、太阳光的场景光源和天空背景具有对应的元素参数(游戏对象的尺寸、游戏对象的位置、游戏对象的纹理、游戏对象的材质、场景光照的光源类型、场景光照的光源位置、场景光照的光源强度、场景背景的位置、场景背景的纹理、场景背景的尺寸)。
获取目标场景的场景数据。为后续进行空间维度划分提供了数据基础。
步骤104:基于空间维度,对场景数据进行划分,获得多个场景子数据。
空间维度为场景数据所处空间的对应维度,包括二维空间维度和三维空间维度。
场景子数据为目标子场景中各场景元素的信息参数,目标子场景为对目标场景这一多维虚拟空间进行空间划分得到的多维虚拟子空间,相应地,场景子数据为多维虚拟子空间中场景对象、场景光照和场景背景等场景元素的信息参数。场景子数据需要适应于步骤108中分布式计算节点,不能远远超出分布式计算节点的光照烘焙性能。
对场景数据进行划分,可以根据某一坐标轴进行划分,例如,从俯视角度对三维场景的场景数据进行X轴和Y轴上的划分,也可以根据场景数据的数据特征进行划分,例如,场景数据中某一空间中聚集了大量场景对象,其他空间零星分布场景对象,按照分布密度进行划分。
基于空间维度,对场景数据进行划分,获得多个场景子数据,具体方式为:基于分布式计算节点和空间维度,对场景数据进行划分,获得多个场景子数据。
示例性地,基于9个分布式计算节点和空间维度,从俯视角度对1536m×1536m×100m的三维虚拟空间的地图场景的场景数据进行划分,获得9个场景子数据,其中,每个场景子数据为512m×512m×100m的三维虚拟子空间的地图子场景的场景数据。
基于空间维度,对场景数据进行划分,获得多个场景子数据。为后续利用预设体素单元,分别对多个场景子数据进行拟合,提供了空间维度上场景子数据这一数据基础。
步骤106:利用预设体素单元,分别对多个场景子数据进行拟合,获得各场景子数据对应的体素数据。
预设体素单元为预先设定的多个体素组成的虚拟空间单元,预设体素单元包括多个体素点,具有对应的体素尺寸。可以将预设体素单元理解为一个多维虚拟空间上的确定形状的容器,例如,在三维虚拟空间上,预设体素单元为一个棱长为64的立方体,包括643个体素点。预设体素单元除了尺寸,还包括逆混合、是否启用兼容模式、颜色模型深度模板模式等参数。
各场景子数据对应的体素数据为预设体素单元内的场景子数据,为利用预设体素单元拟合了多维虚拟子空间中场景对象、场景光照和场景背景等场景元素的信息参数。在将预设体素单元理解为一个多维虚拟空间上的确定形状的容器的情况下,各场景子数据对应的体素数据为装载在该容器中的信息参数。体素数据可以按照小文件的形式进行存储,用于后续的烘焙和渲染。
通过预设体素单元的拟合,使得场景子数据与场景对象、场景光照和场景背景等场景元素进行解耦,重新与各体素点进行拟合。在后续的光照烘焙中无需和对象模型绑定,生成与对象模型一一对应的光照贴图。同时,步骤108中将各体素数据分发至分布式计算节点进行光照烘焙,可以理解为步骤106生成了多个场景子数据对应的光照烘焙任务,各体素数据为光照烘焙任务的任务输入数据。
利用预设体素单元,分别对多个场景子数据进行拟合,获得各场景子数据对应的体素数据,具体方式为:利用预设体素单元,分别对多个场景子数据进行拟合,获得各场景子数据对应的体素数据,基于各体素数据,生成光照烘焙任务。
示例性地,利用预设的尺寸为64×64×64体素单元,分别对9个场景子数据进行拟合,获得9个场景子数据对应的36个体素数据GI0、GI1……GI35(每个场景子数据对应4个体素数据),基于36个体素数据,生成36个光照烘焙任务:S0(任务0.0、任务0.1、任务0.2、任务0.3)、S1(任务1.0、任务1.1、任务1.2、任务1.3)……S8(任务8.0、任务8.1、任务8.2、任务8.3),将36个光照烘焙任务记录至任务列表。
利用预设体素单元,分别对多个场景子数据进行拟合,获得各场景子数据对应的体素数据。将场景子数据和体素进行拟合,与场景中各对象模型进行了解耦,多线程并行地实现了光照烘焙提供了数据基础。
步骤108:将各体素数据分发至分布式计算节点上进行光照烘焙,获得各体素数据的光照参数。
体素数据的光照参数为体素数据中体素点的光照参数的集合,包括但不限于:光照强度参数、光照角度参数、光照颜色参数、透光性参数、反射参数、衍射参数、折射参数。其中,反射参数、衍射参数和折射参数等间接光信息参数可以通过设置反射探针计算得到。例如,体素数据中包括643个体素点,体素数据的光照参数为:体素点(0,0,0)-(光照强度参数XX;光照角度参数XX;光照颜色参数XX;透光性参数XX;反射参数XX;衍射参数XX;折射参数XX);体素点(0,0,1)-(光照强度参数YY;光照角度参数YY;光照颜色参数YY;透光性参数YY;反射参数YY;衍射参数YY;折射参数YY)……体素点(64,64,64)-(光照强度参数ZZ;光照角度参数ZZ;光照颜色参数ZZ;透光性参数ZZ;反射参数ZZ;衍射参数ZZ;折射参数ZZ)。
需要说明的是,光照烘焙是利用预先设定的烘焙参数实现的,烘焙参数包括:烘焙模式、X轴检测点数目、Y轴检测点数目、目标累积帧数、是否顺带放置反射探针、反射探针分辨率、反射探针覆盖范围偏移、反射探针形状、混合影响距离、混合法线影响距离等。光照烘焙包括全局光照烘焙和局部光照烘焙,前者是对场景中各对象进行光照烘焙,后者是对场景中部分对象进行光照烘焙。
将各体素数据分发至分布式计算节点上进行光照烘焙,获得各体素数据的光照参数,具体方式为:将各光照烘焙任务和对应的体素数据分发至分布式计算节点上进行光照烘焙,获得各体素数据的光照参数。其中,分发可以通过任务列表进行分发,还可以基于各体素数据之间的位置关系进行分发,还可以分布式计算节点的性能或者状态进行分发,在此不作限定。
示例性地,通过任务列表,将36个光照烘焙任务(任务0.0、任务0.1……任务8.3)和对应的体素数据(GI0、GI1……GI35)分发至分布式计算节点(S0、S1……S8)上,基于预先设定的烘焙参数进行光照烘焙,获得36个体素数据的光照参数Baked GI0、Baked GI1……Baked GI35。
将各体素数据分发至分布式计算节点上进行光照烘焙,获得各体素数据的光照参数。多线程并行地实现了光照烘焙,避免了生成与对象模型一一对应的光照贴图,提升了光照烘焙的效率。
步骤110:基于各体素数据的光照参数,对目标场景的场景图像进行渲染。
目标场景的场景图像为渲染完成的多维虚拟空间的视觉图像,可以为照片、图像和视频等多种模式。场景图像可以在前端显示,例如,在移动终端显示屏上显示,在电脑的显示屏上显示,在可穿戴显示设备上显示。
基于各体素数据的光照参数,对目标场景的场景图像进行渲染,具体方式为:调用渲染器,基于各体素数据的光照参数,对目标场景的场景图像进行渲染。渲染可以为动态渲染,即对待显示的体素数据进行实时渲染,也可以为静态渲染,即对全部体素数据进行实时渲染。
可选地,在步骤110之后,还包括如下具体步骤:
调整烘焙参数,返回执行步骤108。
通过调整烘焙参数,重新进行渲染。
示例性地,调用Unity的渲染引擎,基于36个体素数据的光照参数Baked GI0、Baked GI1……Baked GI35,对A游戏中地图1进行渲染,显示在开发团队的电脑显示屏上显示。
本说明书实施例中,获取目标场景的场景数据;基于空间维度,对场景数据进行划分,获得多个场景子数据;利用预设体素单元,分别对多个场景子数据进行拟合,获得各场景子数据对应的体素数据;将各体素数据分发至分布式计算节点上进行光照烘焙,获得各体素数据的光照参数;基于各体素数据的光照参数,对目标场景的场景图像进行渲染。在空间维度上将场景数据划分成多个场景子数据,利用预设体素单元,分别对多个场景子数据进行拟合,获得空间维度下各场景子数据对应的体素数据,将各体素数据分发至分布式节点,多线程并行地实现了光照烘焙,避免了生成与对象模型一一对应的光照贴图,提升了光照烘焙的效率,基于高效获得的光照参数,对场景图像进行渲染,相应提升了图像渲染的效率,降低了对软硬件资源的性能要求,降低了图像渲染的成本。
在本说明书一种可选实施例中,场景子数据包括至少一个对象的对象模型;
对应地,在步骤106之前,还包括如下具体步骤:
针对任一场景子数据,基于任一场景子数据中各对象的对象模型,对任一场景子数据进行压缩,获得压缩后的场景子数据。
步骤106中本说明书实施例中,预设体素单元的拟合使得场景子数据与场景元素进行解耦,重新与各体素点进行拟合,即只和体素点绑定,而体素点无法区分是否对应的有效的场景对象。在实际应用中,目标场景的多维虚拟空间中只有很少数的体素点对应有效的场景对象,例如,游戏场景中,人物、建筑、地形等有效的场景对象只占极少的体素点,大部分是“空气”、“地底空间”等无效的体素点,无需对进行光照烘焙,避免对软硬件资源的浪费,降低了光照烘焙的效率,以至于降低了图像渲染效率。
对象为目标子场景中的场景对象,为多维虚拟空间中的多维虚拟物品对象,为目标场景的一种场景元素,对象具有特定的尺寸、纹理、位置和材质等特征参数。例如,目标场景为游戏场景,游戏场景中的人物、地形、建筑和物件等虚拟物品对象为该游戏场景中的对象。
对象模型为对象在多维虚拟空间中的多维虚拟模型,对象模型具有对应的特定的尺寸参数、纹理参数、位置参数和材质参数。例如,游戏场景中的人物模型具有特定的尺寸参数、纹理参数、位置参数和材质参数。
针对任一场景子数据,基于任一场景子数据中各对象的对象模型,对任一场景子数据进行压缩,获得压缩后的场景子数据,具体方式为:针对任一场景子数据,基于任一场景子数据中各对象的对象模型的尺寸参数和位置参数,对任一场景子数据进行空间压缩,获得空间压缩后的场景子数据。
示例性地,针对9个场景子数据,基于各场景子数据中各对象的人物模型、地形模型、建筑模型和物品模型的尺寸参数和位置参数,对各场景子数据进行空间压缩,获得空间压缩后的9个场景子数据。
针对任一场景子数据,基于任一场景子数据中各对象的对象模型,对任一场景子数据进行压缩,获得压缩后的场景子数据。降低了后续进行光照烘焙的数据量,避免对软硬件资源的浪费,进一步提升了光照烘焙的效率,以至于提升了图像渲染效率。
在本说明书一种可选实施例中,基于任一场景子数据中各对象的对象模型,对任一场景子数据进行压缩,获得压缩后的场景子数据,包括如下具体步骤:
利用空间射线,确定各对象的对象模型在任一场景子数据中的空间包络;
基于空间包络,对任一场景子数据进行压缩,获得压缩后的场景子数据。
空间射线为多维虚拟空间中特定方向上的多条射线,通过投射空间射线至多维虚拟空间中的至少一个对象模型上,实现射线探测,进而确定对象模型在场景子数据中的尺寸分布和位置分布。例如,Raycast,目标场景中一种从俯视方向上向下发射的多条平行射线。
空间包络为对象模型在多维虚拟空间中占据的全曲面封闭空间。例如,游戏场景中,玩家人物只能在最高3m高度的空间中活动,因而,通过空间射线投射,确定地形模型和建筑模型的尺寸分布和位置分布,并在此基础上下3m范围确定为游戏场景中的空间包络。
利用空间射线,确定各对象的对象模型在任一场景子数据中的空间包络,具体方式为:利用空间射线,对场景子数据进行射线探测,确定各对象的对象模型在场景子数据中的尺寸分布和位置分布,基于尺寸分布和位置分布,确定各对象的对象模型在任一场景子数据中的空间包络。
基于空间包络,对任一场景子数据进行压缩,获得压缩后的场景子数据,具体方式为:剔除任一场景子数据中空间包络之外的数据,获得压缩后的场景子数据。
图2示出了本说明书一个实施例提供的一种图像渲染方法中空间包络的示意图。
场景数据包括树木、山坡和建筑多种对象的对象模型。首先,基于空间维度,对场景数据进行划分,获得多个场景子数据,每个场景子数据为512m的多维虚拟子空间。然后,对任一场景子数据中各对象的对象模型投射空间射线。最后,确定各对象的对象模型在任一场景子数据中的空间包络。
示例性地,利用空间射线,对9个场景子数据进行射线探测,确定山脉、树林、水域、建筑和人物等的对象模型,在场景子数据中的最高点和最低点,以及最高点和最低点的位置,基于最高点,最低点,以及最高点和最低点的位置,确定各对象模型在9个场景子数据中的空间包络,剔除9个场景子数据中空间包络之外的数据,获得压缩后的场景子数据。
利用空间射线,确定各对象的对象模型在任一场景子数据中的空间包络;基于空间包络,对任一场景子数据进行压缩,获得压缩后的场景子数据。从空间维度上,完成了对场景子数据更为准确的空间压缩,降低了后续进行光照烘焙的数据量,避免对软硬件资源的浪费,进一步提升了光照烘焙的效率,进而提升了图像渲染效率。
在本说明书一种可选实施例中,步骤104包括如下具体步骤:
基于分布式计算节点的数量和空间维度,对场景数据进行划分,获得多个场景子数据。
分布式计算节点为用于光照烘焙的计算机节点,多个分布式节点可以分布在不同的物理位置(机房)、整合不同的硬件设备(CPU(Central Processing Unit,中央处理单元)、GPU(Graphic Processing Unit,图形处理单元)、存储介质(缓存、内存和硬盘等))和软件资源实现对烘焙任务的分布式执行。例如,分布式集群上部署有9个分布式计算节点,每个计算机节点部署有对应的虚拟机、CPU、8GB的内存和1TB的硬盘。每个计算机节点位于对应的机房。
基于分布式计算节点的数量和空间维度,对场景数据进行划分,获得多个场景子数,具体方式为:基于分布式计算节点的数量和空间维度,对场景数据进行划分,获得对应数量的多个场景子数。
需要说明的是,通过分布式计算节点的数量,从空间维度上预先划分出多个虚拟子空间的场景子数据,为后续利用预设体素单元进行拟合奠定了基础。
示例性地,分布式系统包括9个分布式计算节点,基于9个分布式计算节点的数量和空间维度,从俯视角度对1536m×1536m×100m的三维虚拟空间的地图场景的场景数据进行划分,获得9个场景子数据。
基于分布式计算节点的数量和空间维度,对场景数据进行划分,获得多个场景子数据。基于分布式计算节点的数量,合理划分了场景数据,为后续进行多线程并行地光照烘焙奠定了基础。
在本说明书一种可选实施例中,在步骤106之后,还包括如下具体步骤:
为各体素数据确定对应的分布式计算节点的节点标识;
对应地,步骤108包括如下具体步骤:
基于节点标识,将各体素数据分发至分布式计算节点上进行光照烘焙,获得各体素数据的光照参数。
通过分布式计算节点的节点标识,对拟合得到的各体素数据进行对应标注,为准确分发到对应的分布式计算节点提供了依据。
分布式计算节点的节点标识为各分布式计算节点在分布式系统中的唯一标识,通过该标识在分布式系统中准确区分各分布式计算节点。例如,分布式计算节点的通用标识符、人为规定的标识等。
基于节点标识,将各体素数据分发至分布式计算节点上进行光照烘焙,获得各体素数据的光照参数,具体方式为:基于节点标识,对各光照烘焙任务和对应的体素数据进行标注,将各光照烘焙任务和对应的体素数据分发至分布式计算节点上进行光照烘焙,获得各体素数据的光照参数。
图3示出了本说明书一个实施例提供的一种图像渲染方法中场景数据划分的示意图,如图3所示:
将场景数据划分成9个场景子数据,各场景子数据对应特定的分布式计算节点(S0-S8)。利用预设体素单元,分别对9个场景子数据进行拟合,获得各场景子数据对应的4个体素数据,基于各体素数据,生成光照烘焙任务。基于节点标识对个光照烘焙任务和对应的体素数据进行标注:S0(任务0.0、任务0.1、任务0.2、任务0.3)、S1(任务1.0、任务1.1、任务1.2、任务1.3)……S8(任务8.0、任务8.1、任务8.2、任务8.3)。
示例性地,为各体素数据确定对应的分布式计算节点的节点标识(S0-S8),基于节点标识,对各光照烘焙任务和对应的体素数据进行标注:S0(任务0.0、任务0.1、任务0.2、任务0.3)、S1(任务1.0、任务1.1、任务1.2、任务1.3)……S8(任务8.0、任务8.1、任务8.2、任务8.3),将36个光照烘焙任务和对应的体素数据分发至9个分布式计算节点上,基于预先设定的烘焙参数进行光照烘焙,获得36个体素数据的光照参数Baked GI0、Baked GI1……BakedGI35。
为各体素数据确定对应的分布式计算节点的节点标识;基于节点标识,将各体素数据分发至分布式计算节点上进行光照烘焙,获得各体素数据的光照参数。将体素数据准确地对应到了分布式计算节点上进行光照烘焙,提升了光照烘焙的合理性。
在本说明书一种可选实施例中,步骤110包括如下具体步骤:
基于虚拟相机的当前视角信息,从各体素数据中确定目标体素数据;
基于目标体素数据的光照参数,对目标场景的场景图像进行渲染。
虚拟相机为多维虚拟空间中模拟现实相机行为的数学模型。虚拟相机用来探测识别多维虚拟空间中的场景元素,在后续对其进行针对性渲染,使得用户可以代入虚拟相机的视角观测多维虚拟空间。虚拟相机通常包括位置、方向和焦距等属性参数。
虚拟相机的当前视角为虚拟相机当前所探测识别到的多维虚拟空间的视角,具有对应的位置和方向等属性参数,虚拟相机的当前视角一般为一个棱台形状的探测识别范围,它决定了虚拟相机当前探测识别的场景元素以及场景元素的元素参数。当前视角随着虚拟相机的位置、方向和焦距等属性参数而改变。例如,虚拟相机当前处于目标场景的正下方,虚拟相机的探测识别范围为一个90度的棱台形状,则从正下方观测90度范围内的多维虚拟空间在当前视角内。当前视角信息为当前视角的方位信息,包括位置和方向等属性参数信息。
目标体素数据为多个体素数据中当前需要渲染的体素数据,本说明书实施例中,目标提速数据为当前视角内的体素数据,目标体素数据不必全部位于当前视角内,只有部分位于当前视角内,即为目标体素数据。
基于虚拟相机的当前视角信息,从各体素数据中确定目标体素数据,具体方式为:基于虚拟相机的当前视角信息,从各体素数据中确定位于当前视角内的体素数据为目标体素数据。
基于目标体素数据的光照参数,对目标场景的场景图像进行渲染,具体方式为:调用渲染器,基于各体素数据的光照参数,对目标场景的场景图像进行动态渲染。
图4示出了本说明书一个实施例提供的一种图像渲染方法中虚拟相机的示意图,如图4所示:
虚拟相机位于目标场景中位于(3,1)位置的体素数据,基于该虚拟相机的当前视角信息:两条射线表明了该虚拟相机的方向属性参数,位于当前视角的体素数据包括位于(3,2)、(3,3)、(3,4)、(3,5)、(3,6)、(4,1)、(4,2)、(4,3)、(4,4)、(4,5)、(4,6)、(5,2)、(5,3)、(5,4)、(5,5)、(5,6)、(6,2)、(6,3)、(6,4)、(6,5)、(6,6)的体素数据(图中用“√”进行了标注),确定以上共21个体素数据为目标体素数据。其他体素数据不位于当前视角(图中用“×”进行了标注)。
示例性地,基于虚拟相机的当前视角信息,从36个体素数据中确定21个位于当前视角内的体素数据为目标体素数据,调用Unity的渲染引擎,基于21个体素数据的光照参数Baked GI5、Baked GI6……Baked GI34,对A游戏中地图1进行渲染,显示在开发团队的电脑显示屏上显示。
基于虚拟相机的当前视角信息,从各体素数据中确定目标体素数据;基于目标体素数据的光照参数,对目标场景的场景图像进行渲染。避免了对不可见的体素数据进行不必要的渲染,造成对软硬件资源的浪费,通过动态地确定目标体素数据,进行针对性的可见渲染,提升了图像渲染的效率。
在本说明书一种可选实施例中,在基于虚拟相机的当前视角信息,从各体素数据中确定目标体素数据之后,还包括如下具体步骤:
将目标体素数据加载至渲染器;
调用渲染器,基于目标体素数据的光照参数,对目标场景的场景图像进行渲染;
调整虚拟相机的视角,返回执行基于虚拟相机的当前视角信息,从各体素数据中确定目标体素数据的步骤。
因为虚拟相机的视角一直在变化,渲染过程中,会随着场景子数据的动态变化而被加载至渲染器中,所以需要动态确定目标体素数据并加载至渲染器进行动态渲染,进而保证渲染器可以被合理利用,降低了对软硬件资源的性能要求。
可选地,在基于目标体素数据的光照参数,对目标场景的场景图像进行渲染之前,还包括如下具体步骤:
卸载渲染器中已加载的非目标体素数据。
图5示出了本说明书一个实施例提供的一种图像渲染方法中渲染器动态加载的示意图,如图5所示:
基于虚拟相机的当前视角信息,动态确定需要渲染的目标体素数据(实线立方体),将目标体素数据加载至渲染器,调用渲染器,基于目标体素数据的光照参数,对目标场景的场景图像进行渲染。并且,卸载渲染器中已加载的非目标体素数据(虚线立方体)。
示例性地,将21个目标体素数据加载至Unity的渲染引擎,并卸载渲染引擎中已加载的4个非目标体素数据,调用渲染引擎,基于21个目标体素数据的光照参数Baked GI5、Baked GI6……Baked GI34,对A游戏中地图1进行渲染,调整虚拟相机的视角,返回执行基于虚拟相机的当前视角信息,从36个体素数据中确定位于当前视角内的体素数据为目标体素数据的步骤。
将目标体素数据加载至渲染器;调用渲染器,基于目标体素数据的光照参数,对目标场景的场景图像进行渲染;调整虚拟相机的视角,返回执行基于虚拟相机的当前视角信息,从各体素数据中确定目标体素数据的步骤。通过动态确定目标体素数据,并加载至渲染器进行动态渲染,保证了渲染器可以被合理利用,降低了瞬时的读写压力,降低了对软硬件资源的性能要求,降低了图像渲染的成本。
在本说明书一种可选实施例中,基于虚拟相机的当前视角信息,从各体素数据中确定目标体素数据,包括如下具体步骤:
基于虚拟相机的视角信息,确定各体素数据的深度信息;
基于各体素数据的深度信息,从各体素数据中确定目标体素数据,并确定目标体素数据的渲染权重;
对应地,步骤110包括如下具体步骤:
基于目标体素数据的光照参数和渲染权重,对目标场景的场景图像进行渲染。
各体素数据的深度信息为体素数据在场景子数据中的深度位置信息,表征为体素数据在多维虚拟子空间中与虚拟相机之间的距离。例如,体素数据GI1和GI2在多维虚拟子空间中,体素数据GI1与虚拟相机的距离为100m,体素数据GI2与虚拟相机的距离为500m,前者的深度信息低于后者的深度信息。
目标体素数据的渲染权重为体素数据的细节渲染精度的权重。渲染权重越高,渲染的场景图像精度越高,细节越丰富,视觉感受越逼真。渲染权重越低,渲染的场景图像精度越低,细节越缺乏,视觉感受越失真。
对于距离虚拟相机过远,即深度信息极高的体素数据,已经超出人眼的正常观测范围,无需对其进行渲染。对于距离虚拟相机较远,即深度信息较高的体素数据,未超出人眼的正常观测范围,对其进行较为粗糙的渲染。这样的渲染方式模拟了人眼的观测过程,提升了图像渲染的真实性,并且降低了对软硬件资源的性能要求,降低了图像渲染成本,同时提升了图像渲染效率。
基于目标体素数据的光照参数和渲染权重,对目标场景的场景图像进行渲染,具体方式为:调用渲染器,基于目标体素数据的光照参数,按照对应的渲染权重对目标场景的场景图像进行渲染。
示例性地,基于虚拟相机的视角信息,确定36个体素数据的深度信息,基于各体素数据的深度信息:GI0-GI9的深度信息低,GI10-GI20的深度信息中,GI21-GI35的深度信息高,从各体素数据中确定GI0-GI20共21个目标体素数据,并确定21个目标体素数据的渲染权重:GI0-GI9高渲染权重,GI10-GI20低渲染权重,调用Unity的渲染引擎,基于21个目标体素数据的光照参数Baked GI0、Baked GI1……Baked GI20和渲染权重,对A游戏中地图1进行渲染。
基于虚拟相机的视角信息,确定各体素数据的深度信息;基于各体素数据的深度信息,从各体素数据中确定目标体素数据,并确定目标体素数据的渲染权重;基于目标体素数据的光照参数和渲染权重,对目标场景的场景图像进行渲染。提升了图像渲染的真实性,并且降低了对软硬件资源的性能要求,降低了图像渲染成本,同时提升了图像渲染效率。
在本说明书一种可选实施例中,在步骤110之前,还包括如下具体步骤:
基于各体素数据的细节层级,确定各体素数据的渲染权重;
对应地,步骤110包括如下具体步骤:
基于各体素数据的光照参数和渲染权重,对目标场景的场景图像进行渲染。
在实际的图像渲染过程中,由于不同的渲染需求,例如,对建筑物和人物的渲染细节要求高,对于地形的渲染细节要求低,需要为各体素数据设置不同的细节层级,再基于各体素数据的细节层级,确定各体素数据的渲染权重,进行针对性的细节渲染。
细节层级为对体素数据设置的细节渲染层级,细节层级越高,渲染权重越高,细节层级越低,渲染权重越低。例如,体素数据中包含人物和建筑模型,对其所在的体素数据设置高细节层级,体素数据中包含地形模型,对其所在的体素数据设置低细节层级。
对于高细节层级的体素数据进行精细的图像渲染,对于低细节层级的体素数据进行粗糙的图像渲染。这样的渲染方式模拟了人眼的观测过程,提升了图像渲染的真实性,并且降低了对软硬件资源的性能要求,降低了图像渲染成本,同时提升了图像渲染效率。
基于各体素数据的细节层级,确定各体素数据的渲染权重,具体方式为:基于各体素数据的细节层级,进行权重插值计算得到各体素数据的渲染权重。
基于各体素数据的光照参数和渲染权重,对目标场景的场景图像进行渲染,具体方式为:调用渲染器,基于目标体素数据的光照参数,按照对应的渲染权重对目标场景的场景图像进行渲染。
图6示出了本说明书一个实施例提供的一种图像渲染方法中细节层级的示意图,如图6所示:
在某风景场景中,对于建筑物所在的体素数据设置高细节层级,对于地形所在的体素数据设置低细节层级。
示例性地,基于36个体素数据的细节层级:GI0-GI9(LOD1),GI10-GI20(LOD2),GI21-GI35(LOD3),进行权重插值计算得到各体素数据的渲染权重:GI0-GI9高渲染权重,GI10-GI20低渲染权重,调用Unity的渲染引擎,基于21个目标体素数据的光照参数BakedGI0、Baked GI1……Baked GI20和渲染权重,对A游戏中地图1进行渲染。
基于各体素数据的细节层级,确定各体素数据的渲染权重;基于各体素数据的光照参数和渲染权重,对目标场景的场景图像进行渲染。提升了图像渲染的真实性,并且降低了对软硬件资源的性能要求,降低了图像渲染成本,同时提升了图像渲染效率。
在本说明书一种可选实施例中,在步骤110之前,还包括如下具体步骤:
在至少两个体素数据存在重叠区域的情况下,基于重叠区域中目标体素点与至少两个体素数据中参考体素点之间的距离,确定目标体素点的第一渲染权重,其中,目标体素点为重叠区域中的任一体素点;
确定至少两个体素数据非重叠区域中各体素点的第二渲染权重;
对应地,步骤110包括如下具体步骤:
基于各体素数据的光照参数、重叠区域中各体素点的第一渲染权重和非重叠区域中各体素点的第二渲染权重,对目标场景的场景图像进行渲染。
由于步骤110中是将各体素数据分发至不同的分布式计算节点进行光照烘焙的,因此不可避免存在边缘的差异化,一般在步骤106中利用预设体素单元进行拟合时,会在各体素数据的边缘保留重叠区域,进而在后续进行边缘柔和过渡,进而提升图像渲染的连续性和真实性。
目标体素点为重叠区域中待确定渲染权重的体素点,为重叠区域中的任一体素点,通过后续计算重叠区域中各体素点的渲染权重,可以得到重叠区域的渲染权重的空间分布。非目标体素点为非重叠区域中待确定渲染权重的体素点,为非重叠区域中的任一体素点,通过后续计算非重叠区域中各体素点的渲染权重,可以得到非重叠区域的渲染权重的空间分布。参考体素点为体素单元中作为参考用于计算距离的体素点,可以为体素单元的中心体素点,也可以为体素单元中的特定体素点,在此不作限定。
基于重叠区域中目标体素点与至少两个体素数据中参考体素点之间的距离,确定目标体素点的第一渲染权重,具体方式为:基于重叠区域中目标体素点与至少两个体素数据中参考体素点之间的距离,进行加权平均计算得到目标体素点的第一渲染权重。
基于各体素数据的光照参数、重叠区域中各体素点的第一渲染权重和非重叠区域中各体素点的第二渲染权重,对目标场景的场景图像进行渲染,具体方式为:调用渲染器,基于目标体素数据的光照参数,按照重叠区域中各体素点的第一渲染权重和非重叠区域中各体素点的第二渲染权重对目标场景的场景图像进行渲染。
图7示出了本说明书一个实施例提供的一种图像渲染方法中重叠区域的示意图,如图7所示:
三个体素数据GI1、GI2和GI3存在重叠区域,确定三个体素数据各自的特定体素点为参考体素点:GI1的参考体素点、GI2的参考体素点和GI3的参考体素点,在该重叠区域内存在目标体素点,确定目标参考点和GI1的参考体素点之间的距离为d1,确定目标参考点和GI2的参考体素点之间的距离为d2,确定目标参考点和GI3的参考体素点之间的距离为d3。则目标体素点的渲染权重,基于加权平均数确定目标参考点的渲染权重为:(d1/(d1+d2+d3)*GI1的渲染权重)+(d2/(d1+d2+d3)*GI2的渲染权重)+(d3/(d1+d2+d3)*GI3的渲染权重)。
示例性地,在至少两个体素数据存在重叠区域的情况下,基于重叠区域中目标体素点与至少两个体素数据中参考体素点之间的距离,进行加权平均计算得到目标体素点的第一渲染权重,确定至少两个体素数据非重叠区域中各体素点的第二渲染权重,调用渲染器,基于21个目标体素数据的光照参数Baked GI0、Baked GI1……Baked GI20,按照重叠区域中各体素点的第一渲染权重和非重叠区域中各体素点的第二渲染权重,对A游戏中地图1进行渲染。
在至少两个体素数据存在重叠区域的情况下,基于重叠区域中目标体素点与至少两个体素数据中参考体素点之间的距离,确定目标体素点的第一渲染权重,其中,目标体素点为重叠区域中的任一体素点;确定至少两个体素数据非重叠区域中各体素点的第二渲染权重;基于各体素数据的光照参数、重叠区域中各体素点的第一渲染权重和非重叠区域中各体素点的第二渲染权重,对目标场景的场景图像进行渲染。完成了边缘柔和过渡,提升了图像渲染的连续性和真实性。
图8示出了本说明书一个实施例提供的一种图像渲染方法中调增烘焙参数的前端示意图,如图8所示:
在烘焙参数设置的前端页面,设置烘焙参数:设置烘焙模式为“分布式场景烘焙”,设置X轴检测点数目为“1200”,设置Y轴检测点数目为“1200”(用于检测最高点和最低点),设置目标累积帧数为“100”,选择顺带放置反射探针,设置反射探针分辨率为“128”,设置反射探针覆盖范围偏移为“2”,设置反射探针形状为“盒状”,设置混合影响距离为“50”,设置混合法线影响距离为“50”。完成上述设置后,点选“预览烘焙后的场景图像”控件,实现实时预览和调整全局烘焙参数,在编辑模式下实时预览烘焙后的效果,并可以在不满足需求的情况下,点选“停止烘焙”控件,根据需求完成上述全局烘焙参数的调整,以达到理想的光照效果。
图9示出了本说明书一个实施例提供的一种图像渲染方法中体素单元设置的前端示意图,如图9所示:
在预设体素单元参数设置的前端页面,设置体素单元的参数:设置维度为“三维”,设置尺寸为“64×64×64”,设置逆混合为“无”,选择启用兼容模式,设置颜色模式为“RGB”,设置深度模板模式为“无”。完成上述设置后,在预览框中显示设置完成的预设体素单元,包括间接光反射探针,为一个64×64×64的线性RGB模式的体素单元,预设数据容量为2.0MB。
图10示出了本说明书一个实施例提供的一种图像渲染方法的流程示意图,如图10所示:
在烘焙阶段:设置烘焙参数;为分布式计算节点分配全局光照烘焙任务;接收全局光照烘焙任务;读取全局光照烘焙任务;删除历史烘焙任务;基于空间维度,对所述场景数据进行划分,获得多个场景子数据;利用空间射线,确定各对象的对象模型在任一场景子数据中最高点和最低点;根据最高点和最低点,确定各场景子数据中的空间包络;将各场景子数据对应的体素数据分发至分布式计算节点上进行光照烘焙;累积到目标次数后获得各体素数据的光照参数;判断是否需要放置反射探针,若是,放置烘焙反射探针,若否,直接完成光照烘焙;紧接着放置并烘焙反射探针,判断任务列表是否为空,若是,完成光照烘焙,若否,返回读取全局光照烘焙任务。
在渲染阶段:响应于渲染引擎调用渲染指令,按需加载体素数据;基于虚拟相机的当前视角信息,将体素数据加载至渲染引擎;基于当前视角信息的视锥信息,裁剪体素数据;基于当前视角信息的深度信息,裁剪体素数据;将当前帧的体素数据传送至图形处理单元;卸载上一帧的体素数据;计算延迟光照;获取深度图和VP逆矩阵;计算各像素点的世界坐标;统计每个像素点需要被多少个体素数据覆盖;处理重叠的体素数据之间的融合;处理重叠的体素数据之间的边缘柔和过渡;与延迟光照结果混合;显示像素。
下述结合附图11,以本说明书提供的图像渲染方法在游戏场景的应用为例,对所述图像渲染方法进行进一步说明。其中,图11示出了本说明书一个实施例提供的一种应用于游戏场景下的图像渲染方法的处理过程流程图,包括如下具体步骤:
步骤1102:设置烘焙参数和体素单元。
步骤1104:获取游戏场景的场景数据。
步骤1106:基于分布式计算节点的数量和空间维度,对场景数据进行划分,获得多个场景子数据。
步骤1108:利用预设的体素单元,分别对多个场景子数据进行拟合,获得各场景子数据的烘焙任务和对应的体素数据,为各个烘焙任务和对应的体素数据确定对应的分布式计算节点的节点标识。
步骤1110:将各烘焙任务和对应的体素数据记录至任务列表。
步骤1112:基于节点标识,从任务列表中读取各烘焙任务和对应的体素数据,并将各烘焙任务和对应的体素数据分发至分布式计算节点进行光照烘焙,获得各体素数据的光照参数。
步骤1114:基于虚拟相机的当前视角信息,确定各体素数据的深度信息、可见性和细节层级。
步骤1116:基于各体素数据的深度信息、可见性和细节层级,从各体素数据中确定目标体素数据。
步骤1118:基于目标体素数据之间重叠区域中目标体素点与至少两个体素数据中参考体素点之间的距离,确定目标体素点的第一渲染权重,确定至少两个体素数据非重叠区域中各体素点的第二渲染权重。
步骤1120:基于各目标体素数据中目标体素点的第一渲染权重和各体素点的第二渲染权重,确定各目标体素数据的渲染权重。
步骤1122:将目标体素数据加载至渲染器,并删除渲染器中的非目标体素数据。
步骤1124:基于各体素数据的光照参数和渲染权重,对游戏场景的场景图像进行渲染。
本说明书实施例中,根据游戏场景的场景数据中各场景子数据的空间情况,自动拟合得到体素数据,并将各体素数据分发至分布式计算节点上,进行了多线程并行的光照烘焙,节省烘焙时间,提升了图像渲染的效率。基于当前视角信息,动态流式确定目标体素数据,并加载至渲染器,减轻瞬时读写压力。根据各体素数据的深度信息、可见性和细节层级,确定对应的渲染权重,降低了渲染硬件的性能要求,针对性提升了渲染精度,提升了图像渲染的真实性,通过边缘柔和处理,进一步提升了图像渲染的连续性和真实性。
与上述方法实施例相对应,本说明书还提供了图像渲染装置实施例,图12示出了本说明书一个实施例提供的一种图像渲染装置的结构示意图。如图12所示,该装置包括:
获取模块1202,被配置为获取目标场景的场景数据;
划分模块1204,被配置为基于空间维度,对场景数据进行划分,获得多个场景子数据;
拟合模块1206,被配置为利用预设体素单元,分别对多个场景子数据进行拟合,获得各场景子数据对应的体素数据;
烘焙模块1208,被配置为将各体素数据分发至分布式计算节点上进行光照烘焙,获得各体素数据的光照参数;
渲染模块1210,被配置为基于各体素数据的光照参数,对目标场景的场景图像进行渲染。
可选地,场景子数据包括至少一个对象的对象模型;
对应地,该装置还包括:
压缩模块,被配置为针对任一场景子数据,基于任一场景子数据中各对象的对象模型,对任一场景子数据进行压缩,获得压缩后的场景子数据。
可选地,压缩模块被进一步配置为:
利用空间射线,确定各对象的对象模型在任一场景子数据中的空间包络;基于空间包络,对任一场景子数据进行压缩,获得压缩后的场景子数据。
可选地,划分模块1204被进一步配置为:
基于分布式计算节点的数量和空间维度,对场景数据进行划分,获得多个场景子数据。
可选地,该装置还包括:
节点标识确定模块,被配置为为各体素数据确定对应的分布式计算节点的节点标识;
对应地,烘焙模块1208被进一步配置为:
基于节点标识,将各体素数据分发至分布式计算节点上进行光照烘焙,获得各体素数据的光照参数。
可选地,渲染模块1210被进一步配置为:
基于虚拟相机的当前视角信息,从各体素数据中确定目标体素数据;基于目标体素数据的光照参数,对目标场景的场景图像进行渲染。
可选地,该装置还包括:
动态渲染模块,被配置为将目标体素数据加载至渲染器;调用渲染器,基于目标体素数据的光照参数,对目标场景的场景图像进行渲染;调整虚拟相机的视角,返回执行基于虚拟相机的当前视角信息,从各体素数据中确定目标体素数据的步骤。
可选地,渲染模块1210被进一步配置为:
基于虚拟相机的视角信息,确定各体素数据的深度信息;基于各体素数据的深度信息,从各体素数据中确定目标体素数据,并确定目标体素数据的渲染权重;基于目标体素数据的光照参数和渲染权重,对目标场景的场景图像进行渲染。
可选地,该装置还包括:
细节区分模块,被配置为基于各体素数据的细节层级,确定各体素数据的渲染权重;
对应地,渲染模块1210被进一步配置为:
基于各体素数据的光照参数和渲染权重,对目标场景的场景图像进行渲染。
可选地,该装置还包括:
边缘柔和模块,被配置为在至少两个体素数据存在重叠区域的情况下,基于重叠区域中目标体素点与至少两个体素数据中参考体素点之间的距离,确定目标体素点的第一渲染权重,其中,目标体素点为重叠区域中的任一体素点;确定至少两个体素数据非重叠区域中各体素点的第二渲染权重;
对应地,渲染模块1210被进一步配置为:
基于各体素数据的光照参数、重叠区域中各体素点的第一渲染权重和非重叠区域中各体素点的第二渲染权重,对目标场景的场景图像进行渲染。
本说明书实施例中,获取目标场景的场景数据;基于空间维度,对场景数据进行划分,获得多个场景子数据;利用预设体素单元,分别对多个场景子数据进行拟合,获得各场景子数据对应的体素数据;将各体素数据分发至分布式计算节点上进行光照烘焙,获得各体素数据的光照参数;基于各体素数据的光照参数,对目标场景的场景图像进行渲染。在空间维度上将场景数据划分成多个场景子数据,利用预设体素单元,分别对多个场景子数据进行拟合,获得空间维度下各场景子数据对应的体素数据,将各体素数据分发至分布式节点,多线程并行地实现了光照烘焙,避免了生成与对象模型一一对应的光照贴图,提升了光照烘焙的效率,基于高效获得的光照参数,对场景图像进行渲染,相应提升了图像渲染的效率,降低了对软硬件资源的性能要求,降低了图像渲染的成本。
上述为本实施例的一种图像渲染装置的示意性方案。需要说明的是,该图像渲染装置的技术方案与上述的图像渲染方法的技术方案属于同一构思,图像渲染装置的技术方案未详细描述的细节内容,均可以参见上述图像渲染方法的技术方案的描述。
图13示出了本说明书一个实施例提供的一种计算设备的结构框图。该计算设备1300的部件包括但不限于存储器1310和处理器1320。处理器1320与存储器1310通过总线1330相连接,数据库1350用于保存数据。
计算设备1300还包括接入设备1340,接入设备1340使得计算设备1300能够经由一个或多个网络1360通信。这些网络的示例包括公用交换电话网(PSTN,PublicSwitchedTelephone Network)、局域网(LAN,LocalAreaNetwork)、广域网(WAN,WideAreaNetwork)、个域网(PAN,PersonalArea Network)或诸如因特网的通信网络的组合。接入设备1340可以包括有线或无线的任何类型的网络接口(例如,网络接口卡(NIC,Network Interface Controller))中的一个或多个,诸如IEEE802.11无线局域网(WLAN,Wireless Local Area Network)无线接口、全球微波互联接入(Wi-MAX,WorldwideInteroperability for Microwave Access)接口、以太网接口、通用串行总线(USB,Universal Serial Bus)接口、蜂窝网络接口、蓝牙接口、近场通信(NFC,Near FieldCommunication)。
在本说明书的一个实施例中,计算设备1300的上述部件以及图13中未示出的其他部件也可以彼此相连接,例如通过总线。应当理解,图13所示的计算设备结构框图仅仅是出于示例的目的,而不是对本说明书范围的限制。本领域技术人员可以根据需要,增添或替换其他部件。
计算设备1300可以是任何类型的静止或移动计算设备,包括移动计算机或移动计算设备(例如,平板计算机、个人数字助理、膝上型计算机、笔记本计算机、上网本等)、移动电话(例如,智能手机)、可佩戴的计算设备(例如,智能手表、智能眼镜等)或其他类型的移动设备,或者诸如台式计算机或个人计算机(PC,Personal Computer)的静止计算设备。计算设备1300还可以是移动式或静止式的服务器。
其中,处理器1320用于执行如下计算机可执行指令,该计算机可执行指令被处理器执行时实现上述图像渲染方法的步骤。
上述为本实施例的一种计算设备的示意性方案。需要说明的是,该计算设备的技术方案与上述的图像渲染方法的技术方案属于同一构思,计算设备的技术方案未详细描述的细节内容,均可以参见上述图像渲染方法的技术方案的描述。
本说明书一实施例还提供一种计算机可读存储介质,其存储有计算机可执行指令,该计算机可执行指令被处理器执行时实现上述图像渲染方法的步骤。
上述为本实施例的一种计算机可读存储介质的示意性方案。需要说明的是,该存储介质的技术方案与上述的图像渲染方法的技术方案属于同一构思,存储介质的技术方案未详细描述的细节内容,均可以参见上述图像渲染方法的技术方案的描述。
本说明书一实施例还提供一种计算机程序,其中,当所述计算机程序在计算机中执行时,令计算机执行上述图像渲染方法的步骤。
上述为本实施例的一种计算机程序的示意性方案。需要说明的是,该计算机程序的技术方案与上述的图像渲染方法的技术方案属于同一构思,计算机程序的技术方案未详细描述的细节内容,均可以参见上述图像渲染方法的技术方案的描述。
上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
所述计算机指令包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、U盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,RandomAccess Memory)、电载波信号、电信信号以及软件分发介质等。需要说明的是,所述计算机可读介质包含的内容可以根据专利实践的要求进行适当的增减,例如在某些地区,根据专利实践,计算机可读介质不包括电载波信号和电信信号。
需要说明的是,对于前述的各方法实施例,为了简便描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本说明书实施例并不受所描述的动作顺序的限制,因为依据本说明书实施例,某些步骤可以采用其它顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定都是本说明书实施例所必须的。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其它实施例的相关描述。
以上公开的本说明书优选实施例只是用于帮助阐述本说明书。可选实施例并没有详尽叙述所有的细节,也不限制该发明仅为所述的具体实施方式。显然,根据本说明书实施例的内容,可作很多的修改和变化。本说明书选取并具体描述这些实施例,是为了更好地解释本说明书实施例的原理和实际应用,从而使所属技术领域技术人员能很好地理解和利用本说明书。本说明书仅受权利要求书及其全部范围和等效物的限制。

Claims (13)

1.一种图像渲染方法,其特征在于,包括:
获取目标场景的场景数据;
基于空间维度,对所述场景数据进行划分,获得多个场景子数据;
利用预设体素单元,分别对所述多个场景子数据进行拟合,获得各场景子数据对应的体素数据;
将各体素数据分发至分布式计算节点上进行光照烘焙,获得所述各体素数据的光照参数;
基于所述各体素数据的光照参数,对所述目标场景的场景图像进行渲染。
2.根据权利要求1所述的方法,其特征在于,所述场景子数据包括至少一个对象的对象模型;
在所述利用预设体素单元,分别对所述多个场景子数据进行拟合,获得各场景子数据对应的体素数据之前,还包括:
针对任一场景子数据,基于所述任一场景子数据中各对象的对象模型,对所述任一场景子数据进行压缩,获得压缩后的场景子数据。
3.根据权利要求2所述的方法,其特征在于,所述基于所述任一场景子数据中各对象的对象模型,对所述任一场景子数据进行压缩,获得压缩后的场景子数据,包括:
利用空间射线,确定所述各对象的对象模型在所述任一场景子数据中的空间包络;
基于所述空间包络,对所述任一场景子数据进行压缩,获得压缩后的场景子数据。
4.根据权利要求1-3任一项所述的方法,其特征在于,所述基于空间维度,对所述场景数据进行划分,获得多个场景子数据,包括:
基于分布式计算节点的数量和空间维度,对所述场景数据进行划分,获得多个场景子数据。
5.根据权利要求1所述的方法,其特征在于,在所述利用预设体素单元,分别对所述多个场景子数据进行拟合,获得各场景子数据对应的体素数据之后,还包括:
为各体素数据确定对应的分布式计算节点的节点标识;
所述将各体素数据分发至分布式计算节点上进行光照烘焙,获得所述各体素数据的光照参数,包括:
基于所述节点标识,将所述各体素数据分发至分布式计算节点上进行光照烘焙,获得所述各体素数据的光照参数。
6.根据权利要求1所述的方法,其特征在于,所述基于所述各体素数据的光照参数,对所述目标场景的场景图像进行渲染,包括:
基于虚拟相机的当前视角信息,从所述各体素数据中确定目标体素数据;
基于所述目标体素数据的光照参数,对所述目标场景的场景图像进行渲染。
7.根据权利要求6所述的方法,其特征在于,在所述基于虚拟相机的当前视角信息,从所述各体素数据中确定目标体素数据之后,还包括:
将所述目标体素数据加载至渲染器;
调用所述渲染器,基于所述目标体素数据的光照参数,对所述目标场景的场景图像进行渲染;
调整所述虚拟相机的视角,返回执行所述基于虚拟相机的当前视角信息,从所述各体素数据中确定目标体素数据的步骤。
8.根据权利要求6所述的方法,其特征在于,所述基于虚拟相机的当前视角信息,从所述各体素数据中确定目标体素数据,包括:
基于虚拟相机的视角信息,确定所述各体素数据的深度信息;
基于所述各体素数据的深度信息,从所述各体素数据中确定目标体素数据,并确定所述目标体素数据的渲染权重;
所述基于所述目标体素数据的光照参数,对所述目标场景的场景图像进行渲染,包括:
基于所述目标体素数据的光照参数和渲染权重,对所述目标场景的场景图像进行渲染。
9.根据权利要求1所述的方法,其特征在于,在所述基于所述各体素数据的光照参数,对所述目标场景的场景图像进行渲染之前,还包括:
基于所述各体素数据的细节层级,确定所述各体素数据的渲染权重;
所述基于所述各体素数据的光照参数,对所述目标场景的场景图像进行渲染,包括:
基于所述各体素数据的光照参数和渲染权重,对所述目标场景的场景图像进行渲染。
10.根据权利要求1所述的方法,其特征在于,在所述基于所述各体素数据的光照参数,对所述目标场景的场景图像进行渲染之前,还包括:
在至少两个体素数据存在重叠区域的情况下,基于所述重叠区域中目标体素点与所述至少两个体素数据中参考体素点之间的距离,确定所述目标体素点的第一渲染权重,其中,所述目标体素点为所述重叠区域中的任一体素点;
确定所述至少两个体素数据非重叠区域中各体素点的第二渲染权重;
所述基于所述各体素数据的光照参数,对所述目标场景的场景图像进行渲染,包括:
基于所述各体素数据的光照参数、所述重叠区域中各体素点的第一渲染权重和所述非重叠区域中各体素点的第二渲染权重,对所述目标场景的场景图像进行渲染。
11.一种图像渲染装置,其特征在于,包括:
获取模块,被配置为获取目标场景的场景数据;
划分模块,被配置为基于空间维度,对所述场景数据进行划分,获得多个场景子数据;
拟合模块,被配置为利用预设体素单元,分别对所述多个场景子数据进行拟合,获得各场景子数据对应的体素数据;
烘焙模块,被配置为将各体素数据分发至分布式计算节点上进行光照烘焙,获得所述各体素数据的光照参数;
渲染模块,被配置为基于所述各体素数据的光照参数,对所述目标场景的场景图像进行渲染。
12.一种计算设备,其特征在于,包括:
存储器和处理器;
所述存储器用于存储计算机可执行指令,所述处理器用于执行所述计算机可执行指令,该计算机可执行指令被处理器执行时实现权利要求1至10任意一项所述图像渲染方法的步骤。
13.一种计算机可读存储介质,其特征在于,其存储有计算机可执行指令,该计算机可执行指令被处理器执行时实现权利要求1至10任意一项所述图像渲染方法的步骤。
CN202311255120.1A 2023-09-26 2023-09-26 图像渲染方法以及装置 Pending CN117218273A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202311255120.1A CN117218273A (zh) 2023-09-26 2023-09-26 图像渲染方法以及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202311255120.1A CN117218273A (zh) 2023-09-26 2023-09-26 图像渲染方法以及装置

Publications (1)

Publication Number Publication Date
CN117218273A true CN117218273A (zh) 2023-12-12

Family

ID=89035149

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202311255120.1A Pending CN117218273A (zh) 2023-09-26 2023-09-26 图像渲染方法以及装置

Country Status (1)

Country Link
CN (1) CN117218273A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117876572A (zh) * 2024-03-13 2024-04-12 腾讯科技(深圳)有限公司 光照渲染方法、装置、设备及存储介质

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117876572A (zh) * 2024-03-13 2024-04-12 腾讯科技(深圳)有限公司 光照渲染方法、装置、设备及存储介质

Similar Documents

Publication Publication Date Title
CN101458824B (zh) 一种基于web的全景图的光照渲染方法
US7250948B2 (en) System and method visible surface determination in computer graphics using interval analysis
CN107330964B (zh) 一种复杂三维物体的显示方法及系统
CN112370784B (zh) 虚拟场景显示方法、装置、设备以及存储介质
EP4213102A1 (en) Rendering method and apparatus, and device
CN112169324A (zh) 游戏场景的渲染方法、装置及设备
CN106898040A (zh) 虚拟资源对象渲染方法和装置
CN109711246A (zh) 一种动态物体识别方法、计算机装置及可读存储介质
CN110689626A (zh) 游戏模型渲染方法和装置
CN117218273A (zh) 图像渲染方法以及装置
GB2406252A (en) Generation of texture maps for use in 3D computer graphics
CN111784817B (zh) 阴影的展示方法和装置、存储介质、电子装置
US11288774B2 (en) Image processing method and apparatus, storage medium, and electronic apparatus
CN112233214A (zh) 一种大场景的雪景渲染方法、装置、设备及存储介质
CN115512025A (zh) 模型渲染性能的检测方法、装置、电子设备及存储介质
CN108230430B (zh) 云层遮罩图的处理方法及装置
CN117456076A (zh) 一种材质贴图生成方法及相关设备
WO2006115716A2 (en) System and method of visible surface determination in computer graphics using interval analysis
CN116402931A (zh) 体积渲染方法、装置、计算机设备和计算机可读存储介质
CN109729285B (zh) 熔线格特效生成方法、装置、电子设备及存储介质
CN116824082B (zh) 虚拟地形的绘制方法、装置、设备、存储介质及程序产品
Li et al. Visualization for hpc data-large terrain model
CN118154661A (zh) 用于三维空间的开敞度分析方法、装置、设备及存储介质
CN116958363A (zh) 渲染操作的执行方法、装置和存储介质及电子设备
WO2023285161A1 (en) System and method for real-time ray tracing in a 3d environment

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