CN109903365A - 基于渲染树的渲染方法和渲染系统 - Google Patents

基于渲染树的渲染方法和渲染系统 Download PDF

Info

Publication number
CN109903365A
CN109903365A CN201711294318.5A CN201711294318A CN109903365A CN 109903365 A CN109903365 A CN 109903365A CN 201711294318 A CN201711294318 A CN 201711294318A CN 109903365 A CN109903365 A CN 109903365A
Authority
CN
China
Prior art keywords
rendering
render tree
node
render
code
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
CN201711294318.5A
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.)
Peking University Founder Information Industry Group Co Ltd
Peking University Founder Group Co Ltd
Original Assignee
Peking University Founder Information Industry Group Co Ltd
Peking University Founder Group 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 Peking University Founder Information Industry Group Co Ltd, Peking University Founder Group Co Ltd filed Critical Peking University Founder Information Industry Group Co Ltd
Priority to CN201711294318.5A priority Critical patent/CN109903365A/zh
Publication of CN109903365A publication Critical patent/CN109903365A/zh
Pending legal-status Critical Current

Links

Landscapes

  • Processing Or Creating Images (AREA)

Abstract

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

Description

基于渲染树的渲染方法和渲染系统
技术领域
本发明涉及渲染技术领域,具体而言,涉及一种基于渲染树的渲染方法、基于渲染树的渲染系统、计算机设备和计算机可读存储介质。
背景技术
渲染(Render)是指由一个或多个模型通过电脑程序产生场景图片的过程。对物体进行透视投影,然后在可见面上产生自然光照效果,可以实现场景的真实感显示。真实感主要依赖于场景中光照效果的适当的物理描述,即光照模型。Cook-Torrance是基于物理渲染的光照模型,是双向反射分布函数(Bidirectional Reflectance DistributionFunction,BRDF)其中的一种方式,是目前主流的光照效果实现方式。光照强度计算是基于物体表面材质的属性得到物体表面每点的颜色值。物体表面材质的属性包括光滑程度、透明度、凹凸、是否金属材质等,它们通过决定入射光线被吸收和反射的程度,决定物体表面每点的颜色呈现。
着色器(Shader)或着色代码是可以直接在图形处理单元(GPU)上运行,进而实现图像渲染的可编辑程序,是计算每个像素点的显示的颜色值,进而实现光照模型的具体代码。
随着可编程渲染技术的发展,开发人员通过撰写着色代码直接操纵GPU内部数据处理过程,实现对顶点和像素的处理、实现任意复杂的光照模型和纹理效果等一些在目前的硬件平台上难以实现的渲染技术。
因此,设计合理的代码结构,以及所用物理数学模型的复杂度、计算量、运算速度与最终效果之间的平衡度,对最终呈现的渲染结果的实时性与效果的真实性具有重要意义。
早期的图形渲染使用固定渲染管线技术,即标准的几何/光照管线,只能通过调用固定函数和设置参数实现图形处理,代码固定导致渲染过程缺乏灵活性,最终效果与真实感相去甚远。
目前通用的可编程渲染技术,允许对渲染管线中的顶点运算和像素运算分别进行编程处理,也可以加入复杂的光照模型以实现更快、更真实的渲染效果。然而,现有的可编程渲染技术,其渲染结果必须在编译和执行着色代码之后才能获得,美术制作过程与代码编写完全分离,导致代码修改困难,无法实时观察修改代码或调整参数的效果,无法实现所见即所得,依然缺乏灵活性。
发明内容
本发明旨在至少解决现有技术或相关技术中存在的技术问题之一。
为此,本发明的第一个方面在于提出了一种基于渲染树的渲染方法。
本发明的第二个方面在于提出了一种基于渲染树的渲染系统。
本发明的第三个方面在于提出了一种计算机设备。
本发明的第四个方面在于提出了一种计算机可读存储介质。
有鉴于此,根据本发明的第一个方面,提出了一种基于渲染树的渲染方法,包括:获取渲染树的预设根节点;接收渲染操作指令,并根据渲染操作指令为预设根节点配置子节点,以构成渲染树;根据预设根节点和子节点获取渲染树的着色代码;执行着色代码,生成渲染结果。
本发明提供的基于渲染树的渲染方法,获取预设的渲染树的根节点,将对图像的渲染操作以添加节点的方式为渲染树的根节点添加子节点,构建成渲染树,再根据渲染树中根节点以及各个子节点来获得完整的着色代码,编译执行着色代码,实时呈现渲染效果。本发明通过构建渲染树,并根据渲染树的各个节点得到着色代码,一方面,可根据需要选择渲染树的子节点,实现了对渲染过程的灵活调整,避免了传统着色代码修改困难的问题;另一方面,通过执行着色代码并实时呈现渲染效果,任何参数的调整与修改都能实时获得最终渲染效果,实现将美术过程与着色代码编码过程紧密结合在一起,保证了渲染过程调整的准确性。
根据本发明的上述基于渲染树的渲染方法,还可以具有以下技术特征:
在上述技术方案中,优选地,接收渲染操作指令,并根据渲染操作指令为预设根节点配置子节点,以构成渲染树的步骤,具体包括:根据接收的渲染操作指令,将渲染操作指令包含的渲染操作设置为子节点;获取子节点的参数值,根据参数值配置子节点;根据渲染操作指令的指令内容,获取预设根节点和子节点的第一连接关系以及各个子节点之间的第二连接关系;根据第一连接关系连接预设根节点和子节点,以及根据第二连接关系连接各个子节点,以构成渲染树。
在该技术方案中,接收渲染操作指令,根据渲染操作指令为预设根节点配置子节点,构成渲染树的过程,当用户在编辑器界面进行渲染操作,系统接收到相应的渲染操作指令,将渲染操作设置为与渲染树的根节点相关联的子节点,将对图像的渲染过程设置为对渲染树根节点的配置操作,再根获取用户为各个子节点选择的参数值,根据每个子节点的参数值配置每个子节点,根据渲染操作指令的指令内容获取各个节点的连接关系,基于该连接关系连接各个节点,形成渲染树,在此过程,可以根据渲染需要选择一个或多个节点作为子节点,并进行节点连接,可以为不同根节点连接相同子节点,实现了代码的复用;通过对节点的选取及节点的连接,实现了根据渲染需求灵活构建渲染树,进而实现了渲染过程的灵活性。
在上述任一技术方案中,优选地,根据预设根节点和子节点获取图像渲染的着色代码的步骤,具体包括:获得渲染树中每个节点的层级关系,按照层级关系中从上层到下层的顺序,遍历渲染树;按照层级关系中从下层到上层的顺序,依次从预设渲染函数库中获取每个节点对应的渲染函数;根据层级关系,装配渲染函数,生成着色代码。
在该技术方案中,所有渲染函数预先编码完成,构建成为渲染函数库,对已经生成的渲染树,从根节点开始遍历整个渲染树,直到位于叶节点的渲染过程,按照层级关系中从下层到上层的顺序,即从叶节点开始,从渲染函数库中找出节点所对应的函数,根据节点间的上下层级与嵌套关系,将所有函数装配成完整的着色代码,并编译执行,最后呈现渲染效果,实现了自动生成着色代码。设置子节点与渲染树根节点和/或其他子节点的连接关系,表示通过该子节点实现对根节点和/或其他子节点的操控,在用户编辑界面中,连接关系可以体现为线条连接,在着色代码生成过程中,连接关系为父子节点之间函数调用的嵌套关系。
在上述任一技术方案中,优选地,在获取渲染树的预设根节点之前,还包括:将不同的渲染效果对应为预设渲染属性;将预设渲染属性设置为预设根节点;其中,预设渲染属性包括:自发光、基础色、粗糙度、法线、镜面反射强度、金属性。
在该技术方案中,在获取渲染树的预设根节点之前,根据Cook-Torrance的数学模型原理,将不同的渲染效果对应为预设渲染基础属性,基本属性确定为6个,分别为:自发光(emissive)、基础色(base)、粗糙度(roughness)、法线(normal)、镜面反射强度(Specular)和金属性(metallic),将此6个基本属性设置为渲染树的根节点,如此,将渲染的效果被抽象为对6个基础属性的操作。
在上述任一技术方案中,优选地,在执行着色代码,生成渲染结果的步骤之后,还包括:当接收到渲染树的节点添加指令或删除指令时,根据添加指令或删除指令为渲染树添加或删除节点,以更新渲染树;获取并执行更新后渲染树的着色代码,生成更新后渲染树对应的渲染结果。
在该技术方案中,在执行着色代码对渲染目标进行渲染之后,可以根据实时呈现的渲染效果为渲染树添加或删除节点,每次为渲染树添加或者删除一个节点,就会重新更新原有渲染树,生成新的渲染树,可以将一个渲染过程与另一个渲染过程连接,即将一个子节点与其他子节点连接,其他子节点再与根节点连接,从而实现获得更复杂的渲染效果;再执行一次渲染树遍历以及着色代码装配过程,进而呈现新的渲染效果,实现根据渲染过程的修改实时显示渲染效果,保证渲染过程的灵活调整,将美术过程与编码过程紧密结合在一起,实现渲染过程调整的准确性和直观性。
在上述任一技术方案中,优选地,渲染操作指令包括:颜色指令、合并与拆分指令、法线指令、标量指令、旋转坐标指令。
在该技术方案中,常规的图形图像操作包括颜色和法线调整、矢量标量运算、贴图和纹理设置等操作。根据已确定的6个基本属性,以及常规操作与基本属性的相关性,将所有常规操作分成5类,分别为:颜色(Color)、合并与拆分(Hub&Divider)、法线(Normal)、标量(Scalar)和旋转坐标(UV)。设置成允许为不同属性添加相同的渲染过程,实现了着色代码复用。
本发明的第二个方面,提出了一种基于渲染树的渲染系统,其特征在于,包括:第一获取单元,用于获取渲染树的预设根节点;配置单元,用于接收渲染操作指令,并根据渲染操作指令为预设根节点配置子节点,以构成渲染树;代码生成单元,用于根据预设根节点和子节点获取渲染树的着色代码;执行单元,用于执行着色代码,生成渲染结果。
本发明提供的基于渲染树的渲染系统,第一获取单元获取预设的渲染树的根节点,配置单元将对图像的渲染操作以添加节点的方式为渲染树的根节点添加子节点,构建成渲染树,代码生成单元再根据渲染树中根节点以及各个子节点来获得完整的着色代码,执行单元编译执行着色代码,并实时呈现渲染效果。本发明通过构建渲染树,并根据渲染树的各个节点得到着色代码,一方面,可根据需要选择渲染树的子节点,实现了对渲染过程的灵活调整,避免了传统着色代码修改困难的问题;另一方面,通过执行着色代码并实时呈现渲染效果,任何参数的调整与修改都能实时获得最终渲染效果,实现将美术过程与编码过程紧密结合在一起,保证了渲染过程调整的准确性。
根据本发明的上述基于渲染树的渲染系统,还可以具有以下技术特征:
在上述技术方案中,优选地,配置单元具体包括:第一设置单元,用于根据接收的渲染操作指令,将渲染操作指令包含的渲染操作设置为子节点;第二获取单元,用于获取子节点的参数值,根据参数值配置子节点;第三获取单元,用于根据渲染操作指令的指令内容,获取预设根节点和子节点的第一连接关系以及各个子节点之间的第二连接关系;连接单元,用于根据第一连接关系连接预设根节点和子节点,以及根据第二连接关系连接各个子节点,以构成渲染树。
在该技术方案中,配置单元接收渲染操作指令,并根据渲染操作指令为预设根节点配置子节点,构成渲染树的过程,当用户在编辑器界面进行渲染操作,第一设置单元接收到相应的渲染操作指令,将渲染操作设置与渲染树的根节点相关联的子节点,将对图像的渲染过程设置为对渲染树根节点的配置操作,第二获取单元再根获取用户为各个子节点选择的参数值,根据每个子节点的参数值配置每个子节点,第三获取单元根据渲染操作指令的指令内容获取各个节点的连接关系,连接单元基于该连接关系连接各个节点,如此,形成渲染树,在此过程,可以根据渲染需要选择一个或多个节点作为子节点,并进行节点连接,可以为不同根节点连接相同子节点,实现了代码的复用;通过对节点的选取及节点的连接,实现了根据渲染需求灵活构建渲染树,进而实现了渲染过程的灵活性。
在上述任一技术方案中,优选地,代码生成单元具体包括:遍历单元,用于获得渲染树中每个节点的层级关系,按照层级关系中从上层到下层的顺序,遍历渲染树;函数单元,用于按照层级关系中从下层到上层的顺序,依次从预设渲染函数库中获取每个节点对应的渲染函数;装配单元,用于根据层级关系,装配渲染函数,生成着色代码。
在该技术方案中,所有渲染函数预先编码完成,构建成为渲染函数库,对已经生成的渲染树,遍历单元获得渲染树中每个节点的层级关系,从根节点开始遍历整个渲染树,直到位于叶节点的渲染过程,函数单元按照层级关系中从下层到上层的顺序,即从叶节点开始,从渲染函数库中找出节点所对应的函数,装配单元根据节点间的上下层级与嵌套关系,将所有函数装配成完整的着色代码,并编译执行,最后呈现渲染效果,实现了自动生成着色代码。设置子节点与渲染树根节点和/或其他子节点的连接关系,表示通过该子节点实现对根节点和/或其他子节点的操控,在用户编辑界面中,连接关系可以体现为线条连接,在着色代码生成过程中,连接关系为父子节点之间函数调用的嵌套关系。
在上述任一技术方案中,优选地,对应单元,用于将不同的渲染效果对应为预设渲染属性;第二设置单元,用于将预设渲染属性设置为预设根节点;其中,预设渲染属性包括:自发光、基础色、粗糙度、法线、镜面反射强度、金属性。
在该技术方案中,在获取渲染树的预设根节点之前,对应单元根据Cook-Torrance的数学模型原理,将不同的渲染效果对应为预设渲染基础属性,基本属性确定为6个,分别为:自发光(emissive)、基础色(base)、粗糙度(roughness)、法线(normal)、镜面反射强度(Specular)和金属性(metallic),第二设置单元将此6个基本属性设置为渲染树的根节点,如此,将渲染的效果被抽象为对6个基础属性的操作。
在上述任一技术方案中,优选地,还包括:更新单元,用于当接收到渲染树的子节点添加指令或删除指令时,根据添加指令或删除指令为渲染树添加或删除子节点,以更新渲染树;执行单元,还用于获取并执行更新后渲染树的着色代码,生成更新后渲染树对应的渲染结果。
在该技术方案中,在执行着色代码对渲染目标进行渲染之后,可以根据实时呈现的渲染效果为渲染树添加或删除子节点,每次为渲染树添加或者删除一个子节点,更新单元就会重新更新原有渲染树,生成新的渲染树,可以将一个渲染过程与另一个渲染过程连接,即将一个子节点与其他子节点连接,其他子节点再与根节点连接,从而实现获得更复杂的渲染效果;执行单元再执行一次渲染树遍历以及着色代码装配过程,进而呈现新的渲染效果,实现根据渲染过程的修改实时显示渲染效果,保证渲染过程的灵活调整,将美术过程与编码过程紧密结合在一起,实现渲染过程调整的准确性和直观性。
在上述任一技术方案中,优选地,渲染操作指令包括:颜色指令、合并与拆分指令、法线指令、标量指令、旋转坐标指令。
在该技术方案中,常规的图形图像操作包括颜色和法线调整、矢量标量运算、贴图和纹理设置等操作。根据已确定的6个基本属性,以及常规操作与基本属性的相关性,将所有常规操作分成5类,分别为:颜色(Color)、合并与拆分(Hub&Divider)、法线(Normal)、标量(Scalar)和旋转坐标(UV)。设置成允许为不同属性添加相同的渲染过程,实现了着色代码复用。
根据本发明的第三个方面,本发明提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行计算机程序时实现以下步骤:获取渲染树的预设根节点;接收渲染操作指令,并根据渲染操作指令为预设根节点配置子节点,以构成渲染树;根据预设根节点和子节点获取渲染树的着色代码;执行着色代码,生成渲染结果。
本发明提供的一种计算机设备,处理器执行计算机程序时实现:获取预设的渲染树的根节点,将对图像的渲染操作以添加节点的方式为渲染树的根节点添加子节点,构建成渲染树,再根据渲染树中根节点以及各个子节点来获得完整的着色代码,编译执行着色代码,并实时呈现渲染效果。本发明通过构建渲染树,并根据渲染树的各个节点得到着色代码,一方面,可根据需要选择渲染树的子节点,实现了对渲染过程的灵活调整,避免了传统着色代码修改困难的问题;另一方面,通过执行着色代码并实时呈现渲染效果,任何函数调整与参数修改都能实时获得最终渲染效果,实现将美术过程与编码过程紧密结合在一起,保证了渲染过程调整的准确性。
根据本发明的第四个方面,本发明提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现以下步骤:获取渲染树的预设根节点;接收渲染操作指令,并根据渲染操作指令为预设根节点配置子节点,以构成渲染树;根据预设根节点和子节点获取渲染树的着色代码;执行着色代码,生成渲染结果。
本发明提供的一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现:获取预设的渲染树的根节点,将对图像的渲染操作以添加节点的方式为渲染树的根节点添加子节点,构建成渲染树,再根据渲染树中根节点以及各个子节点来获得完整的着色代码,编译执行着色代码,并实时呈现渲染效果。本发明通过构建渲染树,并根据渲染树的各个节点得到着色代码,一方面,可根据需要选择渲染树的子节点,实现了对渲染过程的灵活调整,避免了传统着色代码修改困难的问题;另一方面,通过执行着色代码并实时呈现渲染效果,任何函数调整与参数修改都能实时获得最终渲染效果,实现将美术过程与编码过程紧密结合在一起,保证了渲染过程调整的准确性。
根据本发明的附加方面和优点将在下面的描述部分中给出,部分将从下面的描述中变得明显,或通过本发明的实践了解到。
附图说明
本发明的上述和/或附加的方面和优点从结合下面附图对实施例的描述中将变得明显和容易理解,其中:
图1示出了本发明的一个实施例的基于渲染树的渲染方法的流程示意图;
图2示出了本发明的另一个实施例的基于渲染树的渲染方法的流程示意图;
图3示出了本发明的一个实施例的渲染树根节点示意图;
图4示出了本发明的再一个实施例的基于渲染树的渲染方法的流程示意图;
图5示出了本发明的一个实施例的渲染树子节点选择示意图;
图6示出了本发明的一个实施例的渲染树子节点参数配置及连接示意图;
图7示出了本发明的一个实施例的渲染结果示意图;
图8示出了本发明的一个具体实施例的渲染树子节点增删过程示意图,其中,图8(a)为节点未连接的渲染效果示意图,图8(b)为节点连接的渲染效果示意图;
图9示出了本发明的一个实施例的基于渲染树的渲染系统的示意框图;
图10示出了本发明的另一个实施例的基于渲染树的渲染系统的示意框图;
图11示出了本发明的一个实施例中的计算机设备示意框图。
具体实施方式
为了能够更清楚地理解本发明的上述目的、特征和优点,下面结合附图和具体实施方式对本发明进行进一步的详细描述。需要说明的是,在不冲突的情况下,本申请的实施例及实施例中的特征可以相互组合。
在下面的描述中阐述了很多具体细节以便于充分理解本发明,但是,本发明还可以采用其他不同于在此描述的其他方式来实施,因此,本发明的保护范围并不限于下面公开的具体实施例的限制。
本发明第一方面的实施例,提出一种基于渲染树的渲染方法,图1示出了本发明的一个实施例的基于渲染树的渲染方法的流程示意图。其中,基于渲染树的渲染方法包括:
步骤102,获取渲染树的预设根节点;
步骤104,接收渲染操作指令,并根据渲染操作指令为预设根节点配置子节点,以构成渲染树;
步骤106,根据预设根节点和子节点获取渲染树的着色代码;
步骤108,执行着色代码,生成渲染结果。
本发明提供的基于渲染树的渲染方法,获取预设的渲染树的根节点,将对图像的渲染操作以添加节点的方式为渲染树的根节点添加子节点,构建成渲染树,再根据渲染树中根节点以及各个子节点来获得完整的着色代码,编译执行着色代码,并实时呈现渲染效果。本发明通过构建渲染树,并根据渲染树的各个节点得到着色代码,一方面,可根据需要选择渲染树的子节点,实现了对渲染过程的灵活调整,避免了传统着色代码修改困难的问题;另一方面,通过执行着色代码并实时呈现渲染效果,任何函数调整与参数修改都能实时获得最终渲染效果,实现将美术过程与编码过程紧密结合在一起,保证了渲染过程调整的准确性。
图2示出了本发明的另一个实施例的基于渲染树的渲染方法的流程示意图。其中,该方法包括:
步骤202,将不同的渲染效果对应为预设渲染属性,将预设渲染属性设置为预设根节点;
步骤204,获取渲染树的预设根节点;
步骤206,接收渲染操作指令,并根据渲染操作指令为预设根节点配置子节点,以构成渲染树;
步骤208,根据预设根节点和子节点获取渲染树的着色代码;
步骤210,执行着色代码,生成渲染结果。
其中,预设渲染属性包括:自发光、基础色、粗糙度、法线、镜面反射强度、金属性。
在该实施例中,在获取渲染树的预设根节点之前,根据Cook-Torrance的数学模型原理,将不同的渲染效果对应为预设渲染基础属性,基本属性确定为6个,分别为:自发光(emissive)、基础色(base)、粗糙度(roughness)、法线(normal)、镜面反射强度(Specular)和金属性(metallic),将此6个基本属性设置为渲染树的根节点,如此,将渲染的效果被抽象为对6个基础属性的操作,如图3所示,将此6个根节点在客户端的编辑器界面中进行显示,通过对6个基本属性添加子节点实现对基本属性的操控,进而达到调节渲染效果的目的。
在该实施例中,常规的图形图像操作包括颜色和法线调整、矢量标量运算、贴图和纹理设置等操作。根据已确定的6个基本属性,以及常规操作与基本属性的相关性,将所有常规操作分成5类,分别为:颜色(Color)、合并与拆分(Hub&Divider)、法线(Normal)、标量(Scalar)和旋转坐标(UV)。设置成允许为不同属性添加相同的渲染过程,实现了着色代码复用。
图4示出了本发明的再一个实施例的基于渲染树的渲染方法的流程示意图。其中,该方法包括:
步骤402,将不同的渲染效果对应为预设渲染属性,将预设渲染属性设置为预设根节点;
步骤404,获取渲染树的预设根节点;
步骤406,根据接收的渲染操作指令,将渲染操作指令包含的渲染操作设置为子节点,获取子节点的参数值,根据参数值配置子节点;
步骤408,根据渲染操作指令的指令内容,获取预设根节点和子节点的第一连接关系以及各个子节点之间的第二连接关系;
步骤410,根据第一连接关系连接预设根节点和子节点,以及根据第二连接关系连接各个子节点,以构成渲染树;
步骤412,获得渲染树中每个节点的层级关系,按照层级关系中从上层到下层的顺序,遍历渲染树;
步骤414,按照层级关系中从下层到上层的顺序,依次从预设渲染函数库中获取每个节点对应的渲染函数,根据层级关系,装配渲染函数,生成着色代码;
步骤416,执行着色代码,生成渲染结果;
步骤418,当接收到渲染树的子节点添加指令或删除指令时,根据添加指令或删除指令为渲染树添加或删除子节点,以更新渲染树;
步骤420,获取并执行更新后渲染树的着色代码,生成更新后渲染树对应的渲染结果。
在该实施例中,接收渲染操作指令,并根据渲染操作指令为预设根节点配置子节点,构成渲染树的过程,当用户在编辑器界面进行渲染操作,系统接收到相应的渲染操作指令,将渲染操作设置与渲染树的根节点相关联的子节点,如图5所示的一个实施例中,用户在客户端进行渲染操作,将渲染操作过程设置与对渲染树根节点的配置操作,再根获取用户为各个子节点选择的参数值,根据每个子节点的参数值配置每个子节点,根据渲染操作指令的指令内容获取各个节点的连接关系,基于该连接关系连接各个节点,如图6所示,渲染过程所需的参数,可以在编辑器界面中设定,子节点选取完成后,可对选取的子节点进行参数配置,如编辑Color菜单下的颜色值colorRGB可由编辑器界面中的滑条控制,或者在文本框中直接输入颜色值;ImageBase菜单下的colorRGB以贴图形式添加渲染效果,挑选贴图可以通过在文件管理器中选择;ImageBase菜单下的UV用于对ImageBase菜单下的colorRGB的贴图法线旋转坐标进行调整,对UV的调整可以在预设的参数之中根据索引值修改。通过对节点的选取及节点的连接,实现了根据渲染需求灵活构建渲染树,进而实现了渲染过程的灵活性。
在该实施例中,所有渲染函数预先编码完成,构建成为渲染函数库,对已经生成的渲染树,从根节点开始遍历整个渲染树,直到位于叶节点的渲染过程,按照层级关系中从下层到上层的顺序,即从叶节点开始,从渲染函数库中找出节点所对应的函数,根据节点间的上下层级与嵌套关系,将所有函数装配成完整的着色代码,并编译执行,最后呈现渲染效果,实现根据渲染树自动生成着色代码。执行着色代码,生成渲染结果,在客户端显示该渲染结果,如图7所示的一个实施例渲染效果。其中,设置子节点与渲染树根节点和/或其他子节点的连接关系,表示通过该子节点实现对根节点和/或其他子节点的操控,在用户编辑界面中,连接关系可以体现为线条连接,在着色代码生成过程中,连接关系为父子节点之间函数调用的嵌套关系。
在该实施例中,在执行着色代码对渲染目标进行渲染之后,可以根据实时呈现的渲染效果为渲染树添加或删除子节点,每次为渲染树添加或者删除一个子节点,就会重新更新原有渲染树,生成新的渲染树,可以将一个渲染过程与另一个渲染过程连接,即将一个子节点与其他子节点连接,其他子节点再与根节点连接,从而实现获得更复杂的渲染效果;再执行一次渲染树遍历以及着色代码装配过程,进而呈现新的渲染效果,实现根据渲染过程的修改实时显示渲染效果,保证渲染过程的灵活调整,将美术过程与编码过程紧密结合在一起,实现渲染过程调整的准确性和直观性。
图8示出了本发明的一个实施例的渲染树子节点增删过程示意图,其中,如图8(a)所示,ImageBase菜单下的colorRGB未与根节点base相连接时,colorRGB节点对应的贴图对渲染效果没有影响,如图8(b)所示,当colorRGB与根节点base相连接时,由于为colorRGB节点选择的贴图为网状图,通过colorRGB与base的连接,将网状图添加到渲染效果中,实现对渲染效果的灵活调整。
本发明第二方面的实施例,提出一种基于渲染树的渲染系统,图9示出了本发明的一个实施例的基于渲染树的渲染系统200的示意框图,其中,基于渲染树的渲染系统200包括:第一获取单元20、配置单元22、代码生成单元24、执行单元26。
本发明提供的基于渲染树的渲染系统200,第一获取单元20获取预设的渲染树的根节点,配置单元22将对图像的渲染操作以添加节点的方式为渲染树的根节点添加子节点,构建成渲染树,代码生成单元24再根据渲染树中根节点以及各个子节点来获得完整的着色代码,执行单元26编译执行着色代码,并实时呈现渲染效果。本发明通过构建渲染树,并根据渲染树的各个节点得到着色代码,一方面,可根据需要选择渲染树的子节点,实现了对渲染过程的灵活调整,避免了传统着色代码修改困难的问题;另一方面,通过执行着色代码并实时呈现渲染效果,任何函数调整与参数修改都能实时获得最终渲染效果,实现将美术过程与编码过程紧密结合在一起,保证了渲染过程调整的准确性。
图10示出了本发明的另一个实施例的基于渲染树的渲染系统300的示意框图。其中,基于渲染树的渲染系统300包括:第一获取单元30、配置单元32、代码生成单元34、执行单元36、对应单元38、第二设置单元40、更新单元42。其中,配置单元32具体包括:第一设置单元322、第二获取单元324、第三获取单元326和连接单元328。代码生成单元34具体包括:遍历单元342、函数单元344和装配单元346。
在该实施例中,配置单元32接收渲染操作指令,并根据渲染操作指令为预设根节点配置子节点,构成渲染树的过程,当用户在编辑器界面进行渲染操作,第一设置单元322接收到相应的渲染操作指令,将渲染操作设置与渲染树的根节点相关联的子节点,将对图像的渲染过程设置与对渲染树根节点的配置操作,第二获取单元324再根获取用户为各个子节点选择的参数值,根据每个子节点的参数值配置每个子节点,第三获取单元326根据渲染操作指令的指令内容获取各个节点的连接关系,连接单元328基于该连接关系连接各个节点,如此,形成渲染树在此过程,可以根据渲染需要选择一个或多个节点作为子节点,并进行节点连接,可以为不同根节点连接相同子节点,实现了代码的复用;通过对节点的选取及节点的连接,实现了根据渲染需求灵活构建渲染树,进而实现了渲染过程的灵活性。
在该实施例中,所有渲染函数预先编码完成,构建成为渲染函数库,对已经生成的渲染树,遍历单元342获得渲染树中每个节点的层级关系,从根节点开始遍历整个渲染树,直到位于叶节点的渲染过程,函数单元344按照层级关系中从下层到上层的顺序,即从叶节点开始,从渲染函数库中找出节点所对应的函数,装配单元346根据节点间的上下层级与嵌套关系,将所有函数装配成完整的着色代码,并编译执行,最后呈现渲染效果,实现根据渲染树自动生成着色代码。设置子节点与渲染树根节点和/或其他子节点的连接关系,表示通过该子节点实现对根节点和/或其他子节点的操控,在用户编辑界面中,连接关系可以体现为线条连接,在着色代码生成过程中,连接关系为父子节点之间函数调用的嵌套关系。
在该实施例中,在获取渲染树的预设根节点之前,对应单元38根据Cook-Torrance的数学模型原理,将不同的渲染效果对应为预设渲染基础属性,基本属性确定为6个,分别为:自发光(emissive)、基础色(base)、粗糙度(roughness)、法线(normal)、镜面反射强度(Specular)和金属性(metallic),第二设置单元40将此6个基本属性设置为渲染树的根节点,如此,将渲染的效果被抽象为对6个基础属性的操作。
在该实施例中,在执行着色代码对渲染目标进行渲染之后,可以根据实时呈现的渲染效果为渲染树添加或删除子节点,每次为渲染树添加或者删除一个子节点,更新单元42就会重新更新原有渲染树,生成新的渲染树,可以将一个渲染过程与另一个渲染过程连接,即将一个子节点与其他子节点连接,其他子节点再与根节点连接,从而实现获得更复杂的渲染效果;执行单元36再执行一次渲染树遍历以及着色代码装配过程,进而呈现新的渲染效果,实现根据渲染过程的修改实时显示渲染效果,保证渲染过程的灵活调整,将美术过程与编码过程紧密结合在一起,实现渲染过程调整的准确性和直观性。
在该实施例中,渲染操作指令包括:颜色指令、合并与拆分指令、法线指令、标量指令、旋转坐标指令。常规的图形图像操作包括颜色和法线调整、矢量标量运算、贴图和纹理设置等操作。根据已确定的6个基本属性,以及常规操作与基本属性的相关性,将所有常规操作分成5类,分别为:颜色(Color)、合并与拆分(Hub&Divider)、法线(Normal)、标量(Scalar)和旋转坐标(UV)。设置成允许为不同属性添加相同的渲染过程,实现了着色代码复用。
本发明第三方面的实施例,提出一种计算机设备,图11示出了本发明的一个实施例的计算机设备500的示意框图。其中,该计算机设备500包括:
存储器502、处理器504及存储在存储器502上并可在处理器504上运行的计算机程序,处理器504执行计算机程序时实现以下步骤:获取渲染树的预设根节点;接收渲染操作指令,并根据渲染操作指令为预设根节点配置子节点,以构成渲染树;根据预设根节点和子节点获取渲染树的着色代码;执行着色代码,生成渲染结果。
本发明提供的一种计算机设备500,处理器504执行计算机程序时实现:获取预设的渲染树的根节点,将对图像的渲染操作以添加节点的方式为渲染树的根节点添加子节点,构建成渲染树,再根据渲染树中根节点以及各个子节点来获得完整的着色代码,编译执行着色代码,并实时呈现渲染效果。本发明通过构建渲染树,并根据渲染树的各个节点得到着色代码,一方面,可根据需要选择渲染树的子节点,实现了对渲染过程的灵活调整,避免了传统着色代码修改困难的问题;另一方面,通过执行着色代码并实时呈现渲染效果,任何函数调整与参数修改都能实时获得最终渲染效果,实现将美术过程与编码过程紧密结合在一起,保证了渲染过程调整的准确性。
本发明第四方面的实施例,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现以下步骤:获取渲染树的预设根节点;接收渲染操作指令,并根据渲染操作指令为预设根节点配置子节点,以构成渲染树;根据预设根节点和子节点获取渲染树的着色代码;执行着色代码,生成渲染结果。
本发明提供的一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现:获取预设的渲染树的根节点,将对图像的渲染操作以添加节点的方式为渲染树的根节点添加子节点,构建成渲染树,再根据渲染树中根节点以及各个子节点来获得完整的着色代码,编译执行着色代码,并实时呈现渲染效果。本发明通过构建渲染树,并根据渲染树的各个节点得到着色代码,一方面,可根据需要选择渲染树的子节点,实现了对渲染过程的灵活调整,避免了传统着色代码修改困难的问题;另一方面,通过执行着色代码并实时呈现渲染效果,任何函数调整与参数修改都能实时获得最终渲染效果,实现将美术过程与编码过程紧密结合在一起,保证了渲染过程调整的准确性。
在本说明书的描述中,术语“一个实施例”、“一些实施例”、“具体实施例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施例或实例。而且,描述的具体特征、结构、材料或特点可以在任何的一个或多个实施例或示例中以合适的方式结合。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (14)

1.一种基于渲染树的渲染方法,其特征在于,包括:
获取所述渲染树的预设根节点;
接收渲染操作指令,并根据所述渲染操作指令为所述预设根节点配置子节点,以构成所述渲染树;
根据所述预设根节点和所述子节点获取所述渲染树的着色代码;
执行所述着色代码,生成渲染结果。
2.根据权利要求1所述的基于渲染树的渲染方法,其特征在于,所述接收渲染操作指令,并根据所述渲染操作指令为所述预设根节点配置子节点,以构成所述渲染树的步骤,具体包括:
根据接收的所述渲染操作指令,将所述渲染操作指令包含的渲染操作设置为所述子节点;
获取所述子节点的参数值,根据所述参数值配置所述子节点;
根据所述渲染操作指令的指令内容,获取所述预设根节点和所述子节点的第一连接关系以及各个所述子节点之间的第二连接关系;
根据所述第一连接关系连接所述预设根节点和所述子节点,以及根据所述第二连接关系连接各个所述子节点,以构成所述渲染树。
3.根据权利要求1所述的基于渲染树的渲染方法,其特征在于,所述根据所述预设根节点和所述子节点获取图像渲染的着色代码的步骤,具体包括:
获得所述渲染树中每个节点的层级关系,按照所述层级关系中从上层到下层的顺序,遍历所述渲染树;
按照所述层级关系中从下层到上层的顺序,依次从预设渲染函数库中获取所述每个节点对应的渲染函数;
根据所述层级关系,装配所述渲染函数,生成所述着色代码。
4.根据权利要求1所述的基于渲染树的渲染方法,其特征在于,在所述获取所述渲染树的预设根节点之前,还包括:
将不同的渲染效果对应为预设渲染属性;
将所述预设渲染属性设置为所述预设根节点;
其中,所述预设渲染属性包括:自发光、基础色、粗糙度、法线、镜面反射强度、金属性。
5.根据权利要求1所述的基于渲染树的渲染方法,其特征在于,在所述执行所述着色代码,生成渲染结果的步骤之后,还包括:
当接收到所述渲染树的节点添加指令或删除指令时,根据所述添加指令或所述删除指令为所述渲染树添加或删除节点,以更新所述渲染树;
获取并执行更新后渲染树的着色代码,生成所述更新后渲染树对应的渲染结果。
6.根据权利要求1至5中任一项所述的基于渲染树的渲染方法,其特征在于,
所述渲染操作指令包括:颜色指令、合并与拆分指令、法线指令、标量指令、旋转坐标指令。
7.一种基于渲染树的渲染系统,其特征在于,包括:
第一获取单元,用于获取所述渲染树的预设根节点;
配置单元,用于接收渲染操作指令,并根据所述渲染操作指令为所述预设根节点配置子节点,以构成所述渲染树;
代码生成单元,用于根据所述预设根节点和所述子节点获取所述渲染树的着色代码;
执行单元,用于执行所述着色代码,生成渲染结果。
8.根据权利要求7所述的基于渲染树的渲染系统,其特征在于,所述配置单元具体包括:
第一设置单元,用于根据接收的所述渲染操作指令,将所述渲染操作指令包含的渲染操作设置为所述子节点;
第二获取单元,用于获取所述子节点的参数值,根据所述参数值配置所述子节点;
第三获取单元,用于根据所述渲染操作指令的指令内容,获取所述预设根节点和所述子节点的第一连接关系以及各个所述子节点之间的第二连接关系;
连接单元,用于根据所述第一连接关系连接所述预设根节点和所述子节点,以及根据所述第二连接关系连接各个所述子节点,以构成所述渲染树。
9.根据权利要求7所述的基于渲染树的渲染系统,其特征在于,所述代码生成单元具体包括:
遍历单元,用于获得所述渲染树中每个节点的层级关系,按照所述层级关系中从上层到下层的顺序,遍历所述渲染树;
函数单元,用于按照所述层级关系中从下层到上层的顺序,依次从预设渲染函数库中获取所述每个节点对应的渲染函数;
装配单元,用于根据所述层级关系,装配所述渲染函数,生成所述着色代码。
10.根据权利要求7所述的基于渲染树的渲染系统,其特征在于,还包括:
对应单元,用于将不同的渲染效果对应为预设渲染属性;
第二设置单元,用于将所述预设渲染属性设置为所述预设根节点;
其中,所述预设渲染属性包括:自发光、基础色、粗糙度、法线、镜面反射强度、金属性。
11.根据权利要求7所述的基于渲染树的渲染系统,其特征在于,还包括:
更新单元,用于当接收到所述渲染树的节点添加指令或删除指令时,根据所述添加指令或所述删除指令为所述渲染树添加或删除节点,以更新所述渲染树;
所述执行单元,还用于获取并执行更新后渲染树的着色代码,生成所述更新后渲染树对应的渲染结果。
12.根据权利要求7至11中任一项所述的基于渲染树的渲染系统,其特征在于,
所述渲染操作指令包括:颜色指令、合并与拆分指令、法线指令、标量指令、旋转坐标指令。
13.一种计算机设备,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如权利要求1至6中任一项所述基于渲染树的渲染方法的步骤。
14.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至6中任一项所述基于渲染树的渲染方法的步骤。
CN201711294318.5A 2017-12-08 2017-12-08 基于渲染树的渲染方法和渲染系统 Pending CN109903365A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201711294318.5A CN109903365A (zh) 2017-12-08 2017-12-08 基于渲染树的渲染方法和渲染系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201711294318.5A CN109903365A (zh) 2017-12-08 2017-12-08 基于渲染树的渲染方法和渲染系统

Publications (1)

Publication Number Publication Date
CN109903365A true CN109903365A (zh) 2019-06-18

Family

ID=66940304

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201711294318.5A Pending CN109903365A (zh) 2017-12-08 2017-12-08 基于渲染树的渲染方法和渲染系统

Country Status (1)

Country Link
CN (1) CN109903365A (zh)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110688531A (zh) * 2019-08-26 2020-01-14 北京旷视科技有限公司 树组件渲染方法和装置、数据处理设备及介质
CN110807761A (zh) * 2019-09-18 2020-02-18 腾讯科技(深圳)有限公司 标注面板生成方法、装置、存储介质和计算机设备
CN110930491A (zh) * 2019-11-14 2020-03-27 北京达佳互联信息技术有限公司 节点渲染方法、装置、电子设备和存储介质
CN112650899A (zh) * 2020-12-30 2021-04-13 中国平安人寿保险股份有限公司 数据可视化渲染方法、装置、计算机设备及存储介质
CN112685110A (zh) * 2020-12-23 2021-04-20 广东三维家信息科技有限公司 数据处理方法、装置、计算机设备和存储介质
CN116166255A (zh) * 2021-11-25 2023-05-26 华为技术有限公司 界面生成方法及电子设备

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106296785A (zh) * 2016-08-09 2017-01-04 腾讯科技(深圳)有限公司 一种图片渲染方法及图片渲染设备

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106296785A (zh) * 2016-08-09 2017-01-04 腾讯科技(深圳)有限公司 一种图片渲染方法及图片渲染设备

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
日)掌田津耶乃(王娜 李利译)): "《Unreal Engine 4蓝图完全学习教程:典藏中文版》", 30 June 2017, 中国青年出版社 *

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110688531A (zh) * 2019-08-26 2020-01-14 北京旷视科技有限公司 树组件渲染方法和装置、数据处理设备及介质
CN110688531B (zh) * 2019-08-26 2022-08-26 北京旷视科技有限公司 树组件渲染方法和装置、数据处理设备及介质
CN110807761A (zh) * 2019-09-18 2020-02-18 腾讯科技(深圳)有限公司 标注面板生成方法、装置、存储介质和计算机设备
CN110807761B (zh) * 2019-09-18 2023-11-21 腾讯科技(深圳)有限公司 标注面板生成方法、装置、存储介质和计算机设备
CN110930491A (zh) * 2019-11-14 2020-03-27 北京达佳互联信息技术有限公司 节点渲染方法、装置、电子设备和存储介质
CN110930491B (zh) * 2019-11-14 2024-02-13 北京达佳互联信息技术有限公司 节点渲染方法、装置、电子设备和存储介质
CN112685110A (zh) * 2020-12-23 2021-04-20 广东三维家信息科技有限公司 数据处理方法、装置、计算机设备和存储介质
CN112650899A (zh) * 2020-12-30 2021-04-13 中国平安人寿保险股份有限公司 数据可视化渲染方法、装置、计算机设备及存储介质
CN112650899B (zh) * 2020-12-30 2023-10-03 中国平安人寿保险股份有限公司 数据可视化渲染方法、装置、计算机设备及存储介质
CN116166255A (zh) * 2021-11-25 2023-05-26 华为技术有限公司 界面生成方法及电子设备

Similar Documents

Publication Publication Date Title
CN109903365A (zh) 基于渲染树的渲染方法和渲染系统
US6606092B2 (en) System and method for generating and using systems of cooperating and encapsulated shaders and shader DAGs for use in a computer graphics system
CA2795739C (en) File format for representing a scene
US6570578B1 (en) System for automatic generation of selective partial renderings of complex scenes
US10372308B2 (en) Predictive material editor
US7808501B2 (en) Method of shading using sample vectors
US8584084B2 (en) System for library content creation
CN109448089A (zh) 一种渲染方法及装置
EP3788603A1 (en) Authoring content in three-dimensional environment
KR20170078651A (ko) 하이브리드 슬라이드-캔버스 프리젠테이션을 합성하기 위한 저작 도구
CN108597014B (zh) 一种基于可视化编程的跨平台渲染效果的编辑系统
CN110124318B (zh) 虚拟植被制作的方法及装置、电子设备、存储介质
WO2023142614A1 (zh) 游戏对象的编辑方法、装置和电子设备
US7917535B1 (en) Task membership and task masks
CN102760304A (zh) 一种基于可视化编辑的高级材质合成系统与方法
CN116485981A (zh) 三维模型贴图制作方法、装置、设备及存储介质
WO2014151998A1 (en) Look-based selection for rendering a computer-generated animation
Lazor et al. Automation of the avatar animation process in FBX file format
Zhong et al. Realistic Visualization of Car Configurator Based On Unreal Engine 4 (UE4)
Nystedt Procedural 3D art in game development
Sasso et al. A Tool for the Procedural Generation of Shaders using Interactive Evolutionary Algorithms
CN117453097A (zh) 材质实例的生成方法、装置、电子设备及可读存储介质
Andersson Attributes of Tool Development: Proceduralism for the Environment Artist
CN115607960A (zh) 显示方法、装置、电子设备及存储介质
CN102663798B (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
RJ01 Rejection of invention patent application after publication
RJ01 Rejection of invention patent application after publication

Application publication date: 20190618