虚拟模型的渲染方法、装置、存储介质和电子设备

文档序号:248434 发布日期:2021-11-16 浏览:2次 >En<

阅读说明:本技术 虚拟模型的渲染方法、装置、存储介质和电子设备 (Rendering method and device of virtual model, storage medium and electronic equipment ) 是由 王凯 赵海峰 于 2021-07-21 设计创作,主要内容包括:本发明公开了一种虚拟模型的渲染方法、装置、存储介质和电子设备。其中,该方法包括:获取待渲染模型对应的纹理数据;对纹理数据进行光栅化处理,得到待渲染模型所对应的体积渲染数据,其中,体积渲染数据用于对待渲染模型进行着色渲染;对体积渲染数据进行光线追踪计算,得到待渲染模型所对应的光影数据,其中,光影数据用于对待渲染模型的光影进行渲染;基于体积渲染数据以及光影数据对待渲染模型进行渲染,得到目标模型。本发明解决了现有技术中在对虚拟模型进行光影渲染时无法得到正确的光影效果以及空间关系的技术问题。(The invention discloses a rendering method and device of a virtual model, a storage medium and electronic equipment. Wherein, the method comprises the following steps: acquiring texture data corresponding to a model to be rendered; performing rasterization processing on the texture data to obtain volume rendering data corresponding to the model to be rendered, wherein the volume rendering data is used for performing coloring rendering on the model to be rendered; performing ray tracing calculation on the volume rendering data to obtain light and shadow data corresponding to the model to be rendered, wherein the light and shadow data are used for rendering the light and shadow of the model to be rendered; and rendering the model to be rendered based on the volume rendering data and the shadow data to obtain the target model. The method and the device solve the technical problem that correct shadow effects and spatial relationships cannot be obtained when shadow rendering is carried out on the virtual model in the prior art.)

虚拟模型的渲染方法、装置、存储介质和电子设备

技术领域

本发明涉及计算机图形渲染领域,具体而言,涉及一种虚拟模型的渲染方法、装置、存储介质和电子设备。

背景技术

在计算机图形学中,通常需要对虚拟模型进行渲染,例如,在游戏领域中,需要对游戏中的虚拟人物、虚拟地形等进行渲染。在现有技术中,通常使用粒子系统在实时渲染引擎(例如,Unreal、Unity等)来渲染烟雾、火焰等特效,其中,粒子系统通常采用广告牌技术以使带有烟雾序列纹理的面片正对相机,从而实现对烟雾、火焰等的渲染,如图1所示的采用广告牌技术渲染得到的烟雾特效,图2为烟雾序列纹理的示意图,在图2中每个烟雾序列纹理的面片正对相机。

上述的广告牌技术的渲染技术效率比较高,速度快,但通过该技术是通过预渲染方式得到虚拟模型的光影效果的,无法得到正确的光影效果。另外,由于该技术是通过面片渲染来实现的,也没有正确的空间关系,因此,当烟雾、火焰等与虚拟模型相交时会产生明显的瑕疵。例如,在图3所示的虚拟模型与火焰相交的示意图中,火焰与虚拟模型相交处的存在瑕疵。

另外,现有技术中,还可通过特效软件中(例如,Houdini)模拟的体积效果转换为多边形网格模型,然后再导入渲染引擎中进行渲染。例如,图4为使用Houdini特效软件渲染后得到的云模型,图5为云模型对应的多边形网格模型。

通过特效软件模拟体积效果的方式虽然能够得到正确的体积空间关系,但仍无法正确的处理虚拟模型与火焰、云雾等特效相交时所存在的渲染瑕疵问题。

针对上述的问题,目前尚未提出有效的解决方案。

发明内容

本发明实施例提供了一种虚拟模型的渲染方法、装置、存储介质和电子设备,以至少解决现有技术中在对虚拟模型进行光影渲染时无法得到正确的光影效果以及空间关系的技术问题。

根据本发明实施例的一个方面,提供了一种虚拟模型的渲染方法,包括:获取待渲染模型对应的纹理数据;对纹理数据进行光栅化处理,得到待渲染模型所对应的体积渲染数据,其中,体积渲染数据用于对待渲染模型进行着色渲染;对体积渲染数据进行光线追踪计算,得到待渲染模型所对应的光影数据,其中,光影数据用于对待渲染模型的光影进行渲染;基于体积渲染数据以及光影数据对待渲染模型进行渲染,得到目标模型。

进一步地,体积渲染数据包括如下至少之一:待渲染模型对应的密度数据以及温度数据;光影数据包括如下至少之一:待渲染模型的光影所对应的密度数据以及温度数据。

进一步地,虚拟模型的渲染方法还包括:读取游戏场景中待播放的动画数据,其中,动画数据由多帧纹理图像组成;从动画数据所包含的每一帧纹理图像中提取纹理数据。

进一步地,虚拟模型的渲染方法还包括:在获取待渲染模型对应的纹理数据之后,按照每一帧纹理图像的展示顺序对每一帧纹理图像所对应的纹理数据进行存储,得到预设文件,其中,每个预设文件中存储有当前帧的纹理图像所对应的纹理数据。

进一步地,虚拟模型的渲染方法还包括:在按照每一帧纹理图像的展示顺序对每一帧纹理图像所对应的纹理数据进行存储,得到预设文件之后,从当前帧的纹理图像所对应的预设文件中读取纹理数据;将纹理数据转换为二进制文件;从二进制文件从提取纹理数据所对应的密度数据以及温度数据;将密度数据存储至纹理数据所对应的第一颜色通道中,并将温度数据存储至纹理数据所对应的第二颜色通道中,得到纹理数据所对应的三维纹理数据。

进一步地,虚拟模型的渲染方法还包括:在对纹理数据进行光栅化处理,得到待渲染模型所对应的体积渲染数据之前,获取当前渲染阶段所对应的渲染标记;根据渲染标记确定当前渲染阶段所对应的渲染算法。

进一步地,虚拟模型的渲染方法还包括:在确定渲染标记为第一标记时,确定当前渲染阶段所对应的渲染算法为光栅化算法,其中,光栅化算法用于对纹理数据进行光栅化处理,第一标记表征当前渲染阶段对待渲染模型进行着色渲染;在确定渲染标记为第二标记时,确定当前渲染阶段所对应的渲染算法为光线追踪算法,其中,光线追踪算法用于对待渲染模型进行光线追踪计算,第二标记表征当前渲染阶段对待渲染模型的光影进行渲染。

进一步地,虚拟模型的渲染方法还包括:获取游戏场景中虚拟相机所对应的视线路径;对视线路径进行采样,得到视线路径对应的多个视点;计算游戏场景中的光源与每个视点之间的距离;根据距离确定每个视点所对应的光照数据;根据光照数据对待渲染模型进行着色渲染,得到体积渲染数据。

进一步地,虚拟模型的渲染方法还包括:在视线路径所对应的视线方向上对光照数据进行累加运算,得到待渲染模型所对应的目标密度;在光源的光照路径所对应的光照方向上对光照数据进行累加运算,得到待渲染模型所对应的目标温度;根据目标密度和目标温度对待渲染模型进行渲染,得到体积渲染数据。

进一步地,虚拟模型的渲染方法还包括:根据光照方向确定待渲染模型所对应的光影区域;确定光影区域所对应的密度数据;根据光影区域所对应的密度数据对光影区域进行渲染,得到待渲染模型所对应的光影数据。

进一步地,虚拟模型的渲染方法还包括:根据光照路径确定待渲染模型中的投影像素,以及投影像素所对应的位置坐标;根据位置坐标确定光影区域的起始位置。

进一步地,虚拟模型的渲染方法还包括:获取光源所对应的距离场;从距离场中确定与待渲染模型最近的目标距离;对光照路径进行采样,得到多个光照点;根据光源所对应的光照方向以及目标距离从多个光照点中确定目标光照点;在目标光照点与待渲染模型之间的距离小于预设值时,确定目标光照点在待渲染模型上的位置为投影像素。

进一步地,虚拟模型的渲染方法还包括:在光照方向上对光影区域所对应的像素值进行累加,得到光影区域所对应的密度数据,其中,密度数据表征了光影区域的透明度信息。

进一步地,虚拟模型的渲染方法还包括:在对纹理数据进行光栅化处理,得到待渲染模型所对应的体积渲染数据之后,基于预设的播放组件对体积渲染数据进行调整,得到调整后的体积渲染数据;基于调整后的体积渲染数据对待渲染模型进行渲染,并展示渲染后的待渲染模型所对应的颜色信息。

进一步地,播放组件上设置有第一参数、第二参数以及第三参数,其中,第一参数用于指定体积渲染数据,第二数据用于指定对待渲染模型进行渲染的材质数据,第三参数用于指定其他属性数据,其他属性数据用于播放体积渲染数据以及光影数据。

根据本发明实施例的另一方面,还提供了一种虚拟模型的渲染装置,包括:获取模块,用于获取待渲染模型对应的纹理数据,其中,体积渲染数据用于对待渲染模型进行着色渲染;处理模块,用于对纹理数据进行光栅化处理,得到待渲染模型所对应的体积渲染数据;计算模块,用于对体积渲染数据进行光线追踪计算,得到待渲染模型所对应的光影数据,其中,光影数据用于对待渲染模型的光影进行渲染;渲染模块,用于基于体积渲染数据以及光影数据对待渲染模型进行渲染,得到目标模型。

根据本发明实施例的另一方面,还提供了一种存储介质,该存储介质中存储有计算机程序,其中,计算机程序被设置为运行时执行上述的虚拟模型的渲染方法。

根据本发明实施例的另一方面,还提供了一种电子设备,该电子设备包括一个或多个处理器;存储装置,用于存储一个或多个程序,当一个或多个程序被一个或多个处理器执行时,使得一个或多个处理器实现用于运行程序,其中,程序被设置为运行时执行上述的虚拟模型的渲染方法。

在本发明实施例中,采用光栅化技术以及光线追踪技术相结合的方式,在获取待渲染模型对应的纹理数据之后,通过对纹理数据进行光栅化处理,得到待渲染模型所对应的体积渲染数据,其中,体积渲染数据用于对待渲染模型进行着色渲染,然后对体积渲染数据进行光线追踪计算,得到待渲染模型所对应的光影数据,其中,光影数据用于对待渲染模型的光影进行渲染,最后,基于体积渲染数据以及光影数据对待渲染模型进行渲染,得到目标模型。

在上述过程中,对纹理数据进行光栅化处理,从而能够对待渲染模型进行准确的体积渲染,进而能够得到准确的体积渲染效果。另外,在本申请中,还使用光线追踪技术来确定待渲染模型所对应的光影效果,从而使得在对待渲染模型进行渲染得到的目标渲染模型具有准确的空间关系和正确的光影效果。

由此可见,本申请所提供的方案达到了对待渲染模型进行光影渲染的目的,从而实现了使渲染后的模型具有正确的光影效果和空间关系的技术效果,进而解决了现有技术中在对虚拟模型进行光影渲染时无法得到正确的光影效果以及空间关系的技术问题。

附图说明

此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:

图1是根据现有技术的一种烟雾特效的示意图;

图2是根据现有技术的一种烟雾序列纹理的示意图;

图3是根据现有技术的一种虚拟模型与火焰相交的示意图;

图4是根据现有技术的一种云模型的示意图;

图5是根据现有技术的一种多边形网格模型的示意图;

图6是根据本发明实施例的一种虚拟模型的渲染方法流程图;

图7是根据本发明实施例的一种可选的烟雾渲染的结果示意图;

图8是根据本发明实施例的一种可选的烟雾渲染的结果示意图;

图9是根据本发明实施例的一种可选的火焰渲染的结果示意图;

图10是根据本发明实施例的一种可选的火焰渲染的结果示意图;

图11是根据本发明实施例的一种可选的目标文件的示意图;

图12是根据本发明实施例的一种可选的特效数据资产对象的示意图;

图13是根据本发明实施例的一种可选的立方体纹理的展开图;

图14是根据本发明实施例的一种可选的对待渲染模型进行渲染的流程图;

图15是根据本发明实施例的一种可选的光栅化算法的示意图;

图16是根据本发明实施例的一种可选的光影数据的确定示意图;

图17是根据本发明实施例的一种可选的投影效果示意图;

图18是根据本发明实施例的一种可选的距离场算法示意图;

图19是根据本发明实施例的一种可选的待渲染模型的投影效果示意图;

图20是根据本发明实施例的一种虚拟模型的渲染装置示意图。

具体实施方式

为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。

需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。

根据本发明其中之一实施例,提供了一种虚拟模型的渲染方法实施例,需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。

此外,还需要说明的是,对虚拟模型进行渲染的渲染系统可作为本实施例所提供方法的执行主体,其中,渲染系统可以为终端设备(例如,电脑、智能手机、平板等设备),渲染系统还可以为服务器,服务器可以为实体服务器,也可以为云服务器,例如,本实施例所提供的方法可运行在云服务器中,在云服务器完成对虚拟模型的渲染之后,将渲染后所得到的目标虚拟模型推送至终端设备以对目标虚拟模型进行展示。

图6是根据本发明实施例的虚拟模型的渲染方法流程图,如图6所示,该方法包括如下步骤:

步骤S602,获取待渲染模型对应的纹理数据。

在步骤S602中,待渲染模型对应的纹理数据可以为体积数据,其中,体积数据为三维空间数据,可存储在三维纹理中,以用来模拟烟雾、火焰等特效。待渲染模型可以为但不限于游戏场景中的虚拟模型,例如,树木、石头、虚拟建筑(例如,碉堡、楼房)、飞机、汽车、烟雾、火焰、云朵等。上述纹理数据可以存储在图片上,即渲染系统可通过纹理图像来获取纹理数据;上述纹理数据还可以存储在预设的文件中,即渲染系统可通过读取预设文件中存储的数据来获取纹理数据。

需要说明的是,在实际应用中,对不同的渲染模型进行渲染所使用到的纹理数据可能是不同的,例如,对石头进行渲染所使用到的纹理数据与对数据进行渲染所使用到的纹理数据是不同的。

在一种可选的实施例中,渲染系统首先判断待渲染模型所对应的模型类型,然后,从第一存储区域中读取与模型类型对应的纹理数据,其中,第一存储区域中存储有不同模型类型的纹理数据。如果第一存储区域中不存在与模型类型对应的纹理数据,则渲染系统通过爬虫对互联网进行爬取以获取与模型类型对应的纹理数据。

在另一种可选的实施例中,渲染系统还可响应用户的操作指令,例如,响应用户输入的读取数据的读取指令,并对读取指令进行解析,得到存储纹理数据的第二存储区域,然后从第二存储区域中读取纹理数据。

步骤S604,对纹理数据进行光栅化处理,得到待渲染模型所对应的体积渲染数据。

在步骤S604中,对纹理数据进行光栅化处理的过程是将纹理数据转换为片元的过程,其中,片元中的每一个元素对应于帧缓冲区中的一个像素。可选的,渲染系统可采用光栅化的Ray Marching算法来实现对纹理数据的光栅化处理。

另外,在步骤S604中,体积渲染数据用于对待渲染模型进行着色渲染,体积渲染数据包括如下至少之一:待渲染模型对应的密度数据以及温度数据。

需要说明的是,通过对纹理数据进行光栅化处理所得到的体积渲染数据来对待渲染模型进行渲染,能够保证体积渲染的空间关系的正确性和准确性。

步骤S606,对体积渲染数据进行光线追踪计算,得到待渲染模型所对应的光影数据。

在步骤S606中,光线追踪是一种来自几何光学的通用技术,该技术通过追踪与光学表面发生交互作用的光线,得到光线经过路径的模型。可选的,光影数据用于对待渲染模型的光影进行渲染,光影数据包括如下至少之一:待渲染模型的光影所对应的密度数据以及温度数据。

需要说明的是,通过步骤S606通过光线追踪算法来计算体积渲染数据所对应的光影数据,从而在使用光影数据对待渲染模型进行光影渲染时能够得到正确的光影效果。

步骤S608,基于体积渲染数据以及光影数据对待渲染模型进行渲染,得到目标模型。

在步骤S608中,渲染系统使用体积渲染数据和光影数据来对待渲染模型进行渲染,能够得到待渲染模型所对应的光影效果,例如,由图7和图8所示的烟雾渲染的结果示意图可知,通过本申请的方案能够得到烟雾的光影以及投影,而且虚拟模型之间(例如,图8中虚拟球体与烟雾之间)的穿插也能得到正确的表现。

此外,在本申请中,不仅能够实现静态的体积效果的渲染,还能够支持动态变化的体积效果的渲染,例如,在图9和图10所示的火焰渲染的结果示意图中,对火焰模型的温度数据进行渲染,该渲染结果能够正确的表示火焰的颜色。

基于上述步骤S602至步骤S608所限定的方案,可以获知,在本发明实施例中,采用光栅化技术以及光线追踪技术相结合的方式,在获取待渲染模型对应的纹理数据之后,通过对纹理数据进行光栅化处理,得到待渲染模型所对应的体积渲染数据,然后对体积渲染数据进行光线追踪计算,得到待渲染模型所对应的光影数据,最后,基于体积渲染数据以及光影数据对待渲染模型进行渲染,得到目标模型。

容易注意到的是,在上述过程中,对纹理数据进行光栅化处理,从而能够对待渲染模型进行准确的体积渲染,进而能够得到准确的体积渲染效果。另外,在本申请中,还使用光线追踪技术来确定待渲染模型所对应的光影效果,从而使得在对待渲染模型进行渲染得到的目标渲染模型具有准确的空间关系和正确的光影效果。

由此可见,本申请所提供的方案达到了对待渲染模型进行光影渲染的目的,从而实现了使渲染后的模型具有正确的光影效果和空间关系的技术效果,进而解决了现有技术中在对虚拟模型进行光影渲染时无法得到正确的光影效果以及空间关系的技术问题。

在一种可选的实施例中,在获取待渲染模型对应的纹理数据的过程中,渲染系统首先读取游戏场景中待播放的动画数据,并从动画数据所包含的每一帧纹理图像中提取纹理数据。在获取待渲染模型对应的纹理数据之后,按照每一帧纹理图像的展示顺序对每一帧纹理图像所对应的纹理数据进行存储,得到预设文件,其中,每个预设文件中存储有当前帧的纹理图像所对应的纹理数据。其中,动画数据由多帧纹理图像组成。

可选的,渲染系统可在特效软件(例如,Houdini)中定制专门的插件来读取每一帧纹理图像所对应的纹理数据,并将纹理数据保存到目标文件中。该目标文件可以包括两种文件,即描述文件和数据文件(即上述的预设文件),其中,描述文件以文本格式(例如,XML格式)来描述待播放的动画数据所对应的序列,该描述文件至少存储有待播放的动画数据所对应的总帧数、起始帧的文件名、最大密度以及最大温度;数据文件用来以二进制格式来存储纹理数据,其存储有分辨率、空间变换矩阵、待渲染模型所对应的密度数据以及温度数据。数据文件采用序列文件的形式,每一个文件保存当前帧所对应的纹理数据。例如,在图11所示的目标文件的示意图中,VolumeDesc.fxd文件为上述的描述文件,VolumeData001.vlb、VolumeData002.vlb以及VolumeData003.vlb为上述的数据文件。

需要说明的是,用户可通过渲染系统来对描述文件进行修改,例如,用户通过渲染系统来修改待播放的动画数据所对应的起始帧和结束帧。另外,在描述文件中设置最大密度和最大温度能够使待渲染模型所对应的密度值和温度值设定在预设范围(例如,0至1)内,以便于后期的处理。

进一步的,在按照每一帧纹理图像的展示顺序对每一帧纹理图像所对应的纹理数据进行存储,得到预设文件之后,渲染系统从当前帧的纹理图像所对应的预设文件中读取纹理数据,并将纹理数据转换为二进制文件,然后,从二进制文件中提取纹理数据所对应的密度数据以及温度数据,最后,将密度数据存储至纹理数据所对应的第一颜色通道中,并将温度数据存储至纹理数据所对应的第二颜色通道中,得到纹理数据所对应的三维纹理数据。

可选的,二进制文件所对应的格式如表1所示:

表1

数据类型 字节大小
分辨率 3个无符号整数值,12个字节
空间变换矩阵 16个浮点值,64个字节
密度数据 分辨率大小x4字节
温度数据 分辨率大小x4字节

需要说明的是,纹理数据占用的空间比较大,在直接对纹理数据进行处理时,可能会占用大量的系统内存。在本实施例中,将纹理数据转换为二进制文件,由于二进制文件的数据格式更加紧凑,文件更小,还可以保存额外的数据,例如,空间变换矩阵,从而减少了对纹理数据进行处理时所占用的系统内存,降低了系统开销,而且,还使得在将纹理数据导入到游戏引擎中时,能够提高控制游戏引擎的灵活性。

此外,还需要说明的是,在从特效软件中将纹理数据转换为二进制文件之后,游戏引擎(例如,Unreal)即可导入该二进制文件,并二进制文件中所包含的纹理数据生成Unreal的资源文件。具体的,游戏引擎为整个的动画数据所对应序列创建特效数据资产对象,该对象不仅能够存储整个动画数据所对应的序列描述,还可将每帧纹理图像所对应的纹理数据组织到一张展开的立方体纹理中。其中,图12为上述的特效数据资产对象所包含的内容,由图12可知,特效数据资产对象包括体积描述数据和体积对象数据(即上述的纹理数据),体积对象数据至少包括尺寸、空间变换矩阵、体积纹理数组,体积纹理数组包括每帧图像所对应的体积数据(例如,图12中的单帧体积数据01、单帧体积数据02、单帧体积数据03)。图13示出了上述的立方体纹理的展开图,其中,每个黑色框表示一帧纹理图像所对应的纹理数据。

另外,上述的第一颜色通道可以为R通道,第二颜色通道可以为G通道,即密度数据和纹理数据分别存储在R通道和G通道中。为了使数据的导入更加方便,在本申请中还通过渲染系统定制了生成对象的工厂“UFXDataAssetFactory”,该生成对象的工厂可用于将特效软件中导出的纹理数据转换为“UFXDataAsset”对象,其中,“UFXDataAsset”对象为能够被游戏引擎直接识别的数据格式。

在一种可选的实施例中,在对纹理数据进行光栅化处理,得到待渲染模型所对应的体积渲染数据之前,渲染系统还获取当前渲染阶段所对应的渲染标记,并根据渲染标记确定当前渲染阶段所对应的渲染算法。其中,在确定渲染标记为第一标记时,确定当前渲染阶段所对应的渲染算法为光栅化算法;在确定渲染标记为第二标记时,确定当前渲染阶段所对应的渲染算法为光线追踪算法,其中,光栅化算法用于对纹理数据进行光栅化处理,第一标记表征当前渲染阶段对待渲染模型进行着色渲染,光线追踪算法用于对待渲染模型进行光线追踪计算,第二标记表征当前渲染阶段对待渲染模型的光影进行渲染。

可选的,渲染系统在在游戏引擎的不同渲染阶段设置标记(即上述渲染标记),其中,主渲染和光影渲染分别对应不同的渲染标记,主渲染的渲染标记为第一标记,光影渲染的渲染标记为第二标记。游戏引擎中的着色器可根据不同的渲染标记确定对应的渲染算法,进而在当前的渲染阶段使用对应的渲染算法来对待渲染模型进行渲染,例如,图14示出了对待渲染模型进行渲染的流程图,由图14可知,渲染系统根据不同的渲染标记来确定当前的渲染阶段所使用的渲染算法。

需要说明的是,主渲染主要用于对待渲染模型进行着色渲染,例如,对待渲染模型进行颜色和明暗的渲染;光影渲染用于对待渲染模型的投影进行渲染。即在本申请中,颜色渲染和投影渲染是分开进行的。另外,对于不同的渲染阶段使用不同的渲染算法,例如,在本实施例中,使用光栅化算法来对待渲染模型进行着色渲染,使用光线追踪算法来对待渲染模型的投影进行渲染。

在一种可选的实施例中,在获取到纹理数据后,渲染系统对纹理数据进行光栅化处理,得到待渲染模型所对应的体积渲染数据。具体的,渲染系统首先获取游戏场景中虚拟相机所对应的视线路径,并对视线路径进行采样,得到视线路径对应的多个视点,然后,计算游戏场景中的光源与每个视点之间的距离,并根据距离确定每个视点所对应的光照数据,最后,根据光照数据对待渲染模型进行着色渲染,得到体积渲染数据。

其中,在根据光照数据对待渲染模型进行着色渲染,得到体积渲染数据的过程中,渲染系统在视线路径所对应的视线方向上对光照数据进行累加运算,得到待渲染模型所对应的目标密度,并在光源的光照路径所对应的光照方向上对光照数据进行累加运算,得到待渲染模型所对应的目标温度,最后,根据目标密度和目标温度对待渲染模型进行渲染,得到体积渲染数据。

可选的,渲染系统首先对虚拟相机所对应的视线路径进行采样,得到多个视点,例如,在图15所示的光栅化算法的示意图中,虚线表示视线路径,虚线上的每个点(如图15中的黑色点和白色点)表示视点。然后,沿着视线路径计算每个视点对应的光照数据,并对视线路径上的每个视点的光照数据进行累加处理,即可得到体积渲染数据。其中,每个视点所对应的光照数据是根据光源到该视点之间的距离来确定的。

需要说明的是,在通过体积渲染数据对待渲染模型进行体积渲染的过程中,沿着光线方向逐步递增,并根据光线到达待渲染模型上的位置来对纹理数据进行采样得到待渲染模型上的当前位置密度数据和温度数据。

可选的,渲染系统可通过如下公式来对光照密度进行累加:

在上式中,LinearDensity(x′,x)表示对光照密度进行累加运算所得到的目标密度,Opacity(s)表示视点s所对应的光照密度,x和x′分别表示某一视线路径上的视点的视点范围的上限值和下限值。

需要说明的是,对光照密度进行累加运算,其实质是对当前视线路径的不透明度进行积分得到线性密度的过程。

此外,还需要说明的是,对光照温度进行累加运算的过程与对光照密度进行累加运算的过程类似,在此不再赘述。

在一种可选的实施例中,在对纹理数据进行光栅化处理,得到待渲染模型所对应的体积渲染数据之后,渲染系统还基于预设的播放组件对体积渲染数据进行调整,得到调整后的体积渲染数据,并基于调整后的体积渲染数据对待渲染模型进行渲染,并展示渲染后的待渲染模型所对应的颜色信息。其中,播放组件上设置有第一参数、第二参数以及第三参数,其中,第一参数用于指定体积渲染数据,第二数据用于指定对待渲染模型进行渲染的材质数据,第三参数用于指定其他属性数据,其他属性数据用于播放体积渲染数据以及光影数据。

在一种可选的实施例中,在对体积渲染数据进行光线追踪计算,得到待渲染模型所对应的光影数据的过程中,渲染系统根据光照方向确定待渲染模型所对应的光影区域,并确定光影区域所对应的密度数据,然后,根据光影区域所对应的密度数据对光影区域进行渲染,得到待渲染模型所对应的光影数据。

需要说明的是,在获取光影数据的过程中,渲染系统在光照方向上对光影区域所对应的像素值进行累加,得到光影区域所对应的密度数据,其中,密度数据表征了光影区域的透明度信息。为了对存在交叉关系的多个待渲染模型(例如,图7中的烟雾和球体)进行渲染,能够得到准确的投影效果,在本实施例中,根据投影像素的位置坐标来确定待渲染模型所对应的光影区域。

具体的,渲染系统根据光照路径确定待渲染模型中的投影像素,以及投影像素所对应的位置坐标,然后根据位置坐标确定光影区域的起始位置。其中,在根据光照路径确定待渲染模型中的投影像素的过程中,渲染系统获取光源所对应的距离场,并从距离场中确定与待渲染模型最近的目标距离,然后对光照路径进行采样,得到多个光照点,并根据光源所对应的光照方向以及目标距离从多个光照点中确定目标光照点,最后,在目标光照点与待渲染模型之间的距离小于预设值时,确定目标光照点在待渲染模型上的位置为投影像素。

可选的,在如图16所示的光影数据的确定示意图中,四边框表示对待渲染模型进行渲染后的渲染效果的范围区域,例如,四边框可以表示图7中的烟雾所在的范围区域。黑色点表示需要着色的像素的位置,即光影区域的起始位置,白色点表示光线与烟雾相交的起点和终点,即烟雾所对应的不透明度是上述的起点与终点之间的光照数据的累积。图17示出了对待渲染模型进行光影渲染后的投影效果示意图,由图17可知,待渲染模型与烟雾都能得到正确的投影效果。

需要说明的是,还可采用距离场的方式来对待渲染模型进行光影渲染。可选的,如图18所示的距离场算法示意图中,光线向前行进时,每到一个终点,渲染系统在距离场内查询距离待渲染模型最近的距离,然后,根据这个距离再前进一段,直到这个距离值变成0或者负值(及预设值),表示该光线已与场景中的待渲染模型相交,否则,确定该光线未与待渲染模型相交。其中,相交表示待渲染模型被遮挡,会产生投影;不相交表示待渲染模型没有遮挡,不会产生投影。其中,图19示出了待渲染模型的投影效果示意图,由图19可知,待渲染模型在体积上得到了正确的投影效果。

由上述内容可知,本申请直接将特效软件生成的纹理数据转化自定义的二进制文件格式,并导入游戏引擎中生成游戏引擎所支持的三维纹理。在渲染时,采用光栅化算法来正确的处理待渲染模型的体积渲染,并利用光线追踪算法来计算体积效果的投影。该方式能够很好的处理体积渲染的空间关系,并能够得到正确的光影。

根据本发明其中之一实施例,还提供了一种虚拟模型的渲染装置实施例,其中,图20是根据本发明实施例的虚拟模型的渲染装置示意图,如图20所示,该装置包括:获取模块2001、处理模块2003、计算模块2005以及渲染模块2007。

其中,获取模块2001,用于获取待渲染模型对应的纹理数据;处理模块2003,用于对纹理数据进行光栅化处理,得到待渲染模型所对应的体积渲染数据;计算模块2005,用于对体积渲染数据进行光线追踪计算,得到待渲染模型所对应的光影数据;渲染模块2007,用于基于体积渲染数据以及光影数据对待渲染模型进行渲染,得到目标模型。

需要说明的是,上述获取模块2001、处理模块2003、计算模块2005以及渲染模块2207对应于上述实施例中的步骤S602至步骤S608,四个模块与对应的步骤所实现的示例和应用场景相同,但不限于上述实施例所公开的内容。

可选的,体积渲染数据用于对待渲染模型进行着色渲染,体积渲染数据包括如下至少之一:待渲染模型对应的密度数据以及温度数据;光影数据用于对待渲染模型的光影进行渲染,光影数据包括如下至少之一:待渲染模型的光影所对应的密度数据以及温度数据。

可选的,获取模块包括:第一读取模块以及第一提取模块。其中,第一读取模块,用于读取游戏场景中待播放的动画数据,其中,动画数据由多帧纹理图像组成;第一提取模块,用于从动画数据所包含的每一帧纹理图像中提取纹理数据。

可选的,虚拟模型的渲染装置还包括:第一存储模块,用于在获取待渲染模型对应的纹理数据之后,按照每一帧纹理图像的展示顺序对每一帧纹理图像所对应的纹理数据进行存储,得到预设文件,其中,每个预设文件中存储有当前帧的纹理图像所对应的纹理数据。

可选的,虚拟模型的渲染装置还包括:第二读取模块、转换模块、第二提取模块以及第二存储模块。其中,第二读取模块,用于在按照每一帧纹理图像的展示顺序对每一帧纹理图像所对应的纹理数据进行存储,得到预设文件之后,从当前帧的纹理图像所对应的预设文件中读取纹理数据;转换模块,用于将纹理数据转换为二进制文件;第二提取模块,用于从二进制文件从提取纹理数据所对应的密度数据以及温度数据;第二存储模块,用于将密度数据存储至纹理数据所对应的第一颜色通道中,并将温度数据存储至纹理数据所对应的第二颜色通道中,得到纹理数据所对应的三维纹理数据。

可选的,虚拟模型的渲染装置还包括:第一获取模块以及第一确定模块。其中,第一获取模块,用于在对纹理数据进行光栅化处理,得到待渲染模型所对应的体积渲染数据之前,获取当前渲染阶段所对应的渲染标记;第一确定模块,用于根据渲染标记确定当前渲染阶段所对应的渲染算法。

可选的,第一确定模块包括:第二确定模块以及第三确定模块。其中,第二确定模块,用于在确定渲染标记为第一标记时,确定当前渲染阶段所对应的渲染算法为光栅化算法,其中,光栅化算法用于对纹理数据进行光栅化处理,第一标记表征当前渲染阶段对待渲染模型进行着色渲染;第三确定模块,用于在确定渲染标记为第二标记时,确定当前渲染阶段所对应的渲染算法为光线追踪算法,其中,光线追踪算法用于对待渲染模型进行光线追踪计算,第二标记表征当前渲染阶段对待渲染模型的光影进行渲染。

可选的,处理模块包括:第二获取模块、采样模块、第一计算模块、第四确定模块以及第一渲染模块。其中,第二获取模块,用于获取游戏场景中虚拟相机所对应的视线路径;采样模块,用于对视线路径进行采样,得到视线路径对应的多个视点;第一计算模块,用于计算游戏场景中的光源与每个视点之间的距离;第四确定模块,用于根据距离确定每个视点所对应的光照数据;第一渲染模块,用于根据光照数据对待渲染模型进行着色渲染,得到体积渲染数据。

可选的,第一渲染模块包括:第二计算模块、第三计算模块以及第二渲染模块。其中,第二计算模块,用于在视线路径所对应的视线方向上对光照数据进行累加运算,得到待渲染模型所对应的目标密度;第三计算模块,用于在光源的光照路径所对应的光照方向上对光照温度进行累加运算,得到待渲染模型所对应的目标温度;第二渲染模块,用于根据目标密度和目标温度对待渲染模型进行渲染,得到体积渲染数据。

可选的,计算模块包括:第五确定模块、第六确定模块以及第三渲染模块。其中,第五确定模块,用于根据光照方向确定待渲染模型所对应的光影区域;第六确定模块,用于确定光影区域所对应的密度数据;第三渲染模块,用于根据光影区域所对应的密度数据对光影区域进行渲染,得到待渲染模型所对应的光影数据。

可选的,第五确定模块包括:第七确定模块以及第八确定模块。其中,第七确定模块,用于根据光照路径确定待渲染模型中的投影像素,以及投影像素所对应的位置坐标;第八确定模块,用于根据位置坐标确定光影区域的起始位置。

可选的,第七确定模块包括:第三获取模块、第九确定模块、采样模块、第十确定模块以及第十一确定模块。其中,第三获取模块,用于获取光源所对应的距离场;第九确定模块,用于从距离场中确定与待渲染模型最近的目标距离;采样模块,用于对光照路径进行采样,得到多个光照点;第十确定模块,用于根据光源所对应的光照方向以及目标距离从多个光照点中确定目标光照点;第十一确定模块,用于在目标光照点与待渲染模型之间的距离小于预设值时,确定目标光照点在待渲染模型上的位置为投影像素。

可选的,第六确定模块包括:第四计算模块,用于在光照方向上对光影区域所对应的像素值进行累加,得到光影区域所对应的密度数据,其中,密度数据表征了光影区域的透明度信息。

可选的,虚拟模型的渲染装置还包括:调整模块以及第四渲染模块。其中,调整模块,用于在对纹理数据进行光栅化处理,得到待渲染模型所对应的体积渲染数据之后,基于预设的播放组件对体积渲染数据进行调整,得到调整后的体积渲染数据;第四渲染模块,用于基于调整后的体积渲染数据对待渲染模型进行渲染,并展示渲染后的待渲染模型所对应的颜色信息。

可选的,播放组件上设置有第一参数、第二参数以及第三参数,其中,第一参数用于指定体积渲染数据,第二数据用于指定对待渲染模型进行渲染的材质数据,第三参数用于指定其他属性数据,其他属性数据用于播放体积渲染数据以及光影数据。

根据本发明实施例的另一方面,还提供了一种存储介质,该存储介质中存储有计算机程序,其中,计算机程序被设置为运行时执行上述的虚拟模型的渲染方法。

根据本发明实施例的另一方面,还提供了一种电子设备,该电子设备包括一个或多个处理器;存储装置,用于存储一个或多个程序,当一个或多个程序被一个或多个处理器执行时,使得一个或多个处理器实现用于运行程序,其中,程序被设置为运行时执行上述的虚拟模型的渲染方法。

上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。

在本发明的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。

在本申请所提供的几个实施例中,应该理解到,所揭露的技术内容,可通过其它的方式实现。其中,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,可以为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,单元或模块的间接耦合或通信连接,可以是电性或其它的形式。

所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。

另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。

所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。

以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。

26页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:游戏中虚拟角色的控制方法、装置、电子设备和存储介质

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!

技术分类