基于渲染树的渲染方法和渲染系统技术方案

技术编号:21401332 阅读:21 留言:0更新日期:2019-06-19 07:38
本发明专利技术提出了一种基于渲染树的渲染方法、基于渲染树的渲染系统、计算机设备和计算机可读存储介质。其中,渲染方法包括:获取渲染树的预设根节点;接收渲染操作指令,并根据渲染操作指令为预设根节点配置子节点,以构成渲染树;根据预设根节点和子节点获取渲染树的着色代码;执行着色代码,生成渲染结果。本发明专利技术将美术过程与渲染代码编写紧密结合在一起,任何参数的调整修改都能实时获得最终渲染效果,实现了对渲染过程的灵活调整,保证了渲染过程调整的准确性,避免了传统着色代码修改困难的问题。

【技术实现步骤摘要】
基于渲染树的渲染方法和渲染系统
本专利技术涉及渲染
,具体而言,涉及一种基于渲染树的渲染方法、基于渲染树的渲染系统、计算机设备和计算机可读存储介质。
技术介绍
渲染(Render)是指由一个或多个模型通过电脑程序产生场景图片的过程。对物体进行透视投影,然后在可见面上产生自然光照效果,可以实现场景的真实感显示。真实感主要依赖于场景中光照效果的适当的物理描述,即光照模型。Cook-Torrance是基于物理渲染的光照模型,是双向反射分布函数(BidirectionalReflectanceDistributionFunction,BRDF)其中的一种方式,是目前主流的光照效果实现方式。光照强度计算是基于物体表面材质的属性得到物体表面每点的颜色值。物体表面材质的属性包括光滑程度、透明度、凹凸、是否金属材质等,它们通过决定入射光线被吸收和反射的程度,决定物体表面每点的颜色呈现。着色器(Shader)或着色代码是可以直接在图形处理单元(GPU)上运行,进而实现图像渲染的可编辑程序,是计算每个像素点的显示的颜色值,进而实现光照模型的具体代码。随着可编程渲染技术的发展,开发人员通过撰写着色代码直接操纵GPU内部数据处理过程,实现对顶点和像素的处理、实现任意复杂的光照模型和纹理效果等一些在目前的硬件平台上难以实现的渲染技术。因此,设计合理的代码结构,以及所用物理数学模型的复杂度、计算量、运算速度与最终效果之间的平衡度,对最终呈现的渲染结果的实时性与效果的真实性具有重要意义。早期的图形渲染使用固定渲染管线技术,即标准的几何/光照管线,只能通过调用固定函数和设置参数实现图形处理,代码固定导致渲染过程缺乏灵活性,最终效果与真实感相去甚远。目前通用的可编程渲染技术,允许对渲染管线中的顶点运算和像素运算分别进行编程处理,也可以加入复杂的光照模型以实现更快、更真实的渲染效果。然而,现有的可编程渲染技术,其渲染结果必须在编译和执行着色代码之后才能获得,美术制作过程与代码编写完全分离,导致代码修改困难,无法实时观察修改代码或调整参数的效果,无法实现所见即所得,依然缺乏灵活性。
技术实现思路
本专利技术旨在至少解决现有技术或相关技术中存在的技术问题之一。为此,本专利技术的第一个方面在于提出了一种基于渲染树的渲染方法。本专利技术的第二个方面在于提出了一种基于渲染树的渲染系统。本专利技术的第三个方面在于提出了一种计算机设备。本专利技术的第四个方面在于提出了一种计算机可读存储介质。有鉴于此,根据本专利技术的第一个方面,提出了一种基于渲染树的渲染方法,包括:获取渲染树的预设根节点;接收渲染操作指令,并根据渲染操作指令为预设根节点配置子节点,以构成渲染树;根据预设根节点和子节点获取渲染树的着色代码;执行着色代码,生成渲染结果。本专利技术提供的基于渲染树的渲染方法,获取预设的渲染树的根节点,将对图像的渲染操作以添加节点的方式为渲染树的根节点添加子节点,构建成渲染树,再根据渲染树中根节点以及各个子节点来获得完整的着色代码,编译执行着色代码,实时呈现渲染效果。本专利技术通过构建渲染树,并根据渲染树的各个节点得到着色代码,一方面,可根据需要选择渲染树的子节点,实现了对渲染过程的灵活调整,避免了传统着色代码修改困难的问题;另一方面,通过执行着色代码并实时呈现渲染效果,任何参数的调整与修改都能实时获得最终渲染效果,实现将美术过程与着色代码编码过程紧密结合在一起,保证了渲染过程调整的准确性。根据本专利技术的上述基于渲染树的渲染方法,还可以具有以下技术特征:在上述技术方案中,优选地,接收渲染操作指令,并根据渲染操作指令为预设根节点配置子节点,以构成渲染树的步骤,具体包括:根据接收的渲染操作指令,将渲染操作指令包含的渲染操作设置为子节点;获取子节点的参数值,根据参数值配置子节点;根据渲染操作指令的指令内容,获取预设根节点和子节点的第一连接关系以及各个子节点之间的第二连接关系;根据第一连接关系连接预设根节点和子节点,以及根据第二连接关系连接各个子节点,以构成渲染树。在该技术方案中,接收渲染操作指令,根据渲染操作指令为预设根节点配置子节点,构成渲染树的过程,当用户在编辑器界面进行渲染操作,系统接收到相应的渲染操作指令,将渲染操作设置为与渲染树的根节点相关联的子节点,将对图像的渲染过程设置为对渲染树根节点的配置操作,再根获取用户为各个子节点选择的参数值,根据每个子节点的参数值配置每个子节点,根据渲染操作指令的指令内容获取各个节点的连接关系,基于该连接关系连接各个节点,形成渲染树,在此过程,可以根据渲染需要选择一个或多个节点作为子节点,并进行节点连接,可以为不同根节点连接相同子节点,实现了代码的复用;通过对节点的选取及节点的连接,实现了根据渲染需求灵活构建渲染树,进而实现了渲染过程的灵活性。在上述任一技术方案中,优选地,根据预设根节点和子节点获取图像渲染的着色代码的步骤,具体包括:获得渲染树中每个节点的层级关系,按照层级关系中从上层到下层的顺序,遍历渲染树;按照层级关系中从下层到上层的顺序,依次从预设渲染函数库中获取每个节点对应的渲染函数;根据层级关系,装配渲染函数,生成着色代码。在该技术方案中,所有渲染函数预先编码完成,构建成为渲染函数库,对已经生成的渲染树,从根节点开始遍历整个渲染树,直到位于叶节点的渲染过程,按照层级关系中从下层到上层的顺序,即从叶节点开始,从渲染函数库中找出节点所对应的函数,根据节点间的上下层级与嵌套关系,将所有函数装配成完整的着色代码,并编译执行,最后呈现渲染效果,实现了自动生成着色代码。设置子节点与渲染树根节点和/或其他子节点的连接关系,表示通过该子节点实现对根节点和/或其他子节点的操控,在用户编辑界面中,连接关系可以体现为线条连接,在着色代码生成过程中,连接关系为父子节点之间函数调用的嵌套关系。在上述任一技术方案中,优选地,在获取渲染树的预设根节点之前,还包括:将不同的渲染效果对应为预设渲染属性;将预设渲染属性设置为预设根节点;其中,预设渲染属性包括:自发光、基础色、粗糙度、法线、镜面反射强度、金属性。在该技术方案中,在获取渲染树的预设根节点之前,根据Cook-Torrance的数学模型原理,将不同的渲染效果对应为预设渲染基础属性,基本属性确定为6个,分别为:自发光(emissive)、基础色(base)、粗糙度(roughness)、法线(normal)、镜面反射强度(Specular)和金属性(metallic),将此6个基本属性设置为渲染树的根节点,如此,将渲染的效果被抽象为对6个基础属性的操作。在上述任一技术方案中,优选地,在执行着色代码,生成渲染结果的步骤之后,还包括:当接收到渲染树的节点添加指令或删除指令时,根据添加指令或删除指令为渲染树添加或删除节点,以更新渲染树;获取并执行更新后渲染树的着色代码,生成更新后渲染树对应的渲染结果。在该技术方案中,在执行着色代码对渲染目标进行渲染之后,可以根据实时呈现的渲染效果为渲染树添加或删除节点,每次为渲染树添加或者删除一个节点,就会重新更新原有渲染树,生成新的渲染树,可以将一个渲染过程与另一个渲染过程连接,即将一个子节点与其他子节点连接,其他子节点再与根节点连接,从而实现获得更复杂的渲染效果;再执行一次渲染树遍历本文档来自技高网
...

【技术保护点】
1.一种基于渲染树的渲染方法,其特征在于,包括:获取所述渲染树的预设根节点;接收渲染操作指令,并根据所述渲染操作指令为所述预设根节点配置子节点,以构成所述渲染树;根据所述预设根节点和所述子节点获取所述渲染树的着色代码;执行所述着色代码,生成渲染结果。

【技术特征摘要】
1.一种基于渲染树的渲染方法,其特征在于,包括:获取所述渲染树的预设根节点;接收渲染操作指令,并根据所述渲染操作指令为所述预设根节点配置子节点,以构成所述渲染树;根据所述预设根节点和所述子节点获取所述渲染树的着色代码;执行所述着色代码,生成渲染结果。2.根据权利要求1所述的基于渲染树的渲染方法,其特征在于,所述接收渲染操作指令,并根据所述渲染操作指令为所述预设根节点配置子节点,以构成所述渲染树的步骤,具体包括:根据接收的所述渲染操作指令,将所述渲染操作指令包含的渲染操作设置为所述子节点;获取所述子节点的参数值,根据所述参数值配置所述子节点;根据所述渲染操作指令的指令内容,获取所述预设根节点和所述子节点的第一连接关系以及各个所述子节点之间的第二连接关系;根据所述第一连接关系连接所述预设根节点和所述子节点,以及根据所述第二连接关系连接各个所述子节点,以构成所述渲染树。3.根据权利要求1所述的基于渲染树的渲染方法,其特征在于,所述根据所述预设根节点和所述子节点获取图像渲染的着色代码的步骤,具体包括:获得所述渲染树中每个节点的层级关系,按照所述层级关系中从上层到下层的顺序,遍历所述渲染树;按照所述层级关系中从下层到上层的顺序,依次从预设渲染函数库中获取所述每个节点对应的渲染函数;根据所述层级关系,装配所述渲染函数,生成所述着色代码。4.根据权利要求1所述的基于渲染树的渲染方法,其特征在于,在所述获取所述渲染树的预设根节点之前,还包括:将不同的渲染效果对应为预设渲染属性;将所述预设渲染属性设置为所述预设根节点;其中,所述预设渲染属性包括:自发光、基础色、粗糙度、法线、镜面反射强度、金属性。5.根据权利要求1所述的基于渲染树的渲染方法,其特征在于,在所述执行所述着色代码,生成渲染结果的步骤之后,还包括:当接收到所述渲染树的节点添加指令或删除指令时,根据所述添加指令或所述删除指令为所述渲染树添加或删除节点,以更新所述渲染树;获取并执行更新后渲染树的着色代码,生成所述更新后渲染树对应的渲染结果。6.根据权利要求1至5中任一项所述的基于渲染树的渲染方法,其特征在于,所述渲染操作指令包括:颜色指令、合并与拆分指令、法线指令、标量指令、旋转坐标指令。7.一种基于渲染树的渲染系统,其特征在于,包括:第一获取单元,用于获取所述渲染树的预设根节点;配置单元,用于接收渲染操作指令,并根据所述渲染操作指令为所述预设根节点配置子节点,以构成所述渲染...

【专利技术属性】
技术研发人员:刘波罗学文余洋
申请(专利权)人:北大方正集团有限公司北大方正信息产业集团有限公司
类型:发明
国别省市:北京,11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1