CN118365766A - 图像渲染方法、装置、电子设备、存储介质及程序产品 - Google Patents
图像渲染方法、装置、电子设备、存储介质及程序产品 Download PDFInfo
- Publication number
- CN118365766A CN118365766A CN202410790319.2A CN202410790319A CN118365766A CN 118365766 A CN118365766 A CN 118365766A CN 202410790319 A CN202410790319 A CN 202410790319A CN 118365766 A CN118365766 A CN 118365766A
- Authority
- CN
- China
- Prior art keywords
- light source
- hit point
- rendered
- light
- dimensional scene
- 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.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 72
- 238000009877 rendering Methods 0.000 title claims abstract description 66
- 238000003860 storage Methods 0.000 title claims abstract description 14
- 230000000694 effects Effects 0.000 claims abstract description 115
- 230000001795 light effect Effects 0.000 claims description 46
- 238000012360 testing method Methods 0.000 claims description 46
- 238000004590 computer program Methods 0.000 claims description 12
- 238000004040 coloring Methods 0.000 claims description 8
- 239000000463 material Substances 0.000 claims description 6
- 230000004927 fusion Effects 0.000 claims description 4
- 238000005286 illumination Methods 0.000 description 31
- 230000008569 process Effects 0.000 description 11
- 238000012545 processing Methods 0.000 description 9
- 238000010586 diagram Methods 0.000 description 8
- 238000004891 communication Methods 0.000 description 7
- 238000005266 casting Methods 0.000 description 4
- 238000005315 distribution function Methods 0.000 description 4
- 230000003993 interaction Effects 0.000 description 4
- 230000009471 action Effects 0.000 description 3
- 230000008859 change Effects 0.000 description 3
- 238000010276 construction Methods 0.000 description 3
- 230000000007 visual effect Effects 0.000 description 3
- 238000003491 array Methods 0.000 description 2
- 230000002457 bidirectional effect Effects 0.000 description 2
- 238000004519 manufacturing process Methods 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 239000007787 solid Substances 0.000 description 2
- 238000013500 data storage Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000000802 evaporation-induced self-assembly Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 238000002310 reflectometry Methods 0.000 description 1
Landscapes
- Image Generation (AREA)
- Processing Or Creating Images (AREA)
Abstract
本申请实施例提供了一种图像渲染方法、装置、电子设备、存储介质及程序产品,涉及图形渲染技术领域,方法包括:针对待渲染三维场景在观测视点下的待渲染图像中的每一像素位置,基于光束投射法,确定以观测视点为起点且经过该像素位置的光线在待渲染三维场景内击中的该像素位置对应的击中点;针对该像素位置对应的每一击中点,基于各光源的第一和第二绑定关系以及该击中点的位置与非光源对象的位置之间的关系,确定各光源在该击中点处产生的光影效果;基于各光源在该击中点处产生的光影效果,计算该击中点处的像素值;基于对该像素位置对应的各击中点的像素值进行融合,得到该像素位置处的像素值。如此,能够降低人工成本,提高图像渲染的效率。
Description
技术领域
本申请涉及图形渲染技术领域,特别是涉及一种图像渲染方法、装置、电子设备、存储介质及程序产品。
背景技术
目前计算机图像渲染在影视制作、虚拟现实、电子游戏等各个方面都有着广泛的应用。在计算机图像渲染的过程中,可以通过光束投射法(ray tracing)模拟光线与虚拟三维空间中物体(即非光源对象)的相互作用,以渲染得到逼真的二维图像。
虚拟三维空间中设置的光源与物体相互作用,能够在背景环境或物体上产生照亮区域与阴影区域。在初步建立虚拟三维空间之后,往往还需要对照亮区域或者阴影区域进行调整。例如,需要增加或去除某一物体上的高亮效果,即,增加或去除该物体上的照亮区域;或者,增加或去除某一物体上的阴影效果,即,增加或去除该物体上的阴影区域。
相关技术中,如果需要增加该物体上的照亮区域或者去除该物体上的阴影区域,只能通过增加光源或者去除遮挡的物体实现;如果需要去除该物体上的照亮区域或者增加该物体上的阴影区域,只能通过移除光源或者增加遮挡的物体实现。然而,增加或移除光源以及增加或移除物体均会导致虚拟三维空间中原本不需要调整的光影效果发生变化。为了恢复原本不需要调整的光影效果,需要通过人工重新基于改变后的虚拟三维空间搭建光照阴影效果,大大增加人工成本,且会导致图像渲染的效率较低。
发明内容
本申请实施例的目的在于提供一种图像渲染方法、装置、电子设备、存储介质及程序产品,以降低人工成本,提高图像渲染的效率。具体技术方案如下:
本申请实施例的第一方面,提供了一种图像渲染方法,所述方法包括:
针对待渲染三维场景在观测视点下的待渲染图像中的每一像素位置,基于光束投射法,确定以所述观测视点为起点且经过该像素位置的光线在所述待渲染三维场景内击中的各点,作为该像素位置对应的击中点;
针对该像素位置对应的每一击中点,基于各光源当前待利用的第一绑定关系和第二绑定关系,以及在所述待渲染三维场景中该击中点的位置与非光源对象的位置之间的关系,确定各光源在该击中点处产生的光影效果;其中,任一光源的第一绑定关系,用于记录所述待渲染三维场景中允许被该光源照亮的非光源对象;任一光源的第二绑定关系,用于记录所述待渲染三维场景中在该光源的影响下允许产生阴影的非光源对象;
基于各光源在该击中点处产生的光影效果,计算该击中点处的像素值;
基于对该像素位置对应的各击中点的像素值进行融合,得到该像素位置处的像素值。
可选的,所述针对该像素位置对应的每一击中点,基于各光源当前待利用的第一绑定关系和第二绑定关系,以及在所述待渲染三维场景中该击中点的位置与非光源对象的位置之间的关系,确定各光源在该击中点处产生的光影效果,包括:
对于该像素位置对应的每一击中点,针对每一光源,在该击中点位于所述待渲染三维场景中第一非光源对象上面向该光源的一侧,且该光源当前待利用的第一绑定关系中未记录有所述第一非光源对象的对象标识的情况下,确定该光源在该击中点处不产生光影效果;
在该击中点未位于所述待渲染三维场景中非光源对象上的情况下,或者,在该击中点位于所述第一非光源对象上面向该光源的一侧,且该光源当前待利用的第一绑定关系中记录有所述第一非光源对象的对象标识的情况下,确定以该击中点为起点且指向该光源的第一测试射线,是否经过所述待渲染三维场景中除所述第一非光源对象以外的其他非光源对象;
在所述第一测试射线未经过除所述第一非光源对象以外的其他非光源对象的情况下,确定该光源在该击中点处产生的光影效果为:该光源照亮该击中点;
在所述第一测试射线经过除所述第一非光源对象以外的其他非光源对象的情况下,基于该光源当前待利用的第二绑定关系,确定该光源在该击中点处产生的光影效果。
可选的,所述基于该光源当前待利用的第二绑定关系,确定该光源在该击中点处产生的光影效果,包括:
在所述第一测试射线经过除所述第一非光源对象以外的其他非光源对象的情况下,若该其他的非光源对象中存在对象标识属于该光源当前待利用的第二绑定关系的第二非光源对象,确定该光源在该击中点处产生的光影效果为:在该光源的影响下,所述第二非光源对象在该击中点处产生阴影;
若该其他的非光源对象中不存在所述第二非光源对象,确定该光源在该击中点处产生的光影效果为:该光源照亮该击中点。
可选的,一个光源在一个击中点处产生的光影效果为:该光源照亮该击中点,或者,在该光源的影响下,以该击中点为起点且指向该光源的射线经过的非光源对象在该击中点处产生阴影;
所述基于各光源在该击中点处产生的光影效果,计算该击中点处的像素值,包括:
基于各光源在该击中点处产生的光影效果,以及该击中点的属性信息,通过预设着色模型计算该击中点处的像素值;其中,该击中点的属性信息包括:在所述待渲染三维场景中,该击中点的颜色和材质。
可选的,在针对该像素位置对应的每一击中点,基于各光源当前待利用的第一绑定关系和第二绑定关系,以及在所述待渲染三维场景中该击中点的位置与非光源对象的位置之间的关系,确定各光源在该击中点处产生的光影效果之前,所述方法还包括:
获取各光源初始的第一绑定关系和第二绑定关系;
当接收到用于指示使所述待渲染三维场景中的第一指定光源照亮待调整光影效果的第三非光源对象的第一指令时,将所述第三非光源对象的对象标识添加至所述第一指定光源初始的第一绑定关系中,得到所述第一指定光源当前待利用的第一绑定关系;
当接收到用于指示使所述待渲染三维场景中的第二指定光源不照亮待调整光影效果的第四非光源对象的第二指令时,将所述第四非光源对象的对象标识从所述第二指定光源初始的第一绑定关系中删除,得到所述第二指定光源当前待利用的第一绑定关系;
当接收到用于指示使在所述待渲染三维场景中的第三指定光源的影响下,第五非光源对象在待调整光影效果的第六非光源对象处产生阴影的第三指令时,将所述第五非光源对象的对象标识添加至所述第三指定光源初始的第二绑定关系中,得到所述第三指定光源当前待利用的第二绑定关系;
当接收到用于指示使在所述待渲染三维场景中的第四指定光源的影响下,第七非光源对象在待调整光影效果的第八非光源对象处不产生阴影的第四指令时,将所述第七非光源对象的对象标识从所述第四指定光源初始的第二绑定关系中删除,得到所述第四指定光源当前待利用的第二绑定关系。
可选的,任一光源的第一绑定关系为空表示:所述待渲染三维场景中所有非光源对象均允许被该光源照亮;任一光源的第二绑定关系为空表示:所述待渲染三维场景中所有非光源对象在该光源的影响下均允许产生阴影。
本申请实施例的第二方面,还提供了一种图像渲染装置,所述装置包括:
击中点确定模块,用于针对待渲染三维场景在观测视点下的待渲染图像中的每一像素位置,基于光束投射法,确定以所述观测视点为起点且经过该像素位置的光线在所述待渲染三维场景内击中的各点,作为该像素位置对应的击中点;
第一确定模块,用于针对该像素位置对应的每一击中点,基于各光源当前待利用的第一绑定关系和第二绑定关系,以及在所述待渲染三维场景中该击中点的位置与非光源对象的位置之间的关系,确定各光源在该击中点处产生的光影效果;其中,任一光源的第一绑定关系,用于记录所述待渲染三维场景中允许被该光源照亮的非光源对象;任一光源的第二绑定关系,用于记录所述待渲染三维场景中在该光源的影响下允许产生阴影的非光源对象;
像素值计算模块,用于基于各光源在该击中点处产生的光影效果,计算该击中点处的像素值;
像素值融合模块,用于基于对该像素位置对应的各击中点的像素值进行融合,得到该像素位置处的像素值。
可选的,所述第一确定模块,包括:
第一确定子模块,用于对于该像素位置对应的每一击中点,针对每一光源,在该击中点位于所述待渲染三维场景中第一非光源对象上面向该光源的一侧,且该光源当前待利用的第一绑定关系中未记录有所述第一非光源对象的对象标识的情况下,确定该光源在该击中点处不产生光影效果;
第二确定子模块,用于在该击中点未位于所述待渲染三维场景中非光源对象上的情况下,或者,在该击中点位于所述第一非光源对象上面向该光源的一侧,且该光源当前待利用的第一绑定关系中记录有所述第一非光源对象的对象标识的情况下,确定以该击中点为起点且指向该光源的第一测试射线,是否经过所述待渲染三维场景中除所述第一非光源对象以外的其他非光源对象;
第三确定子模块,用于在所述第一测试射线未经过除所述第一非光源对象以外的其他非光源对象的情况下,确定该光源在该击中点处产生的光影效果为:该光源照亮该击中点;
第四确定子模块,用于在所述第一测试射线经过除所述第一非光源对象以外的其他非光源对象的情况下,基于该光源当前待利用的第二绑定关系,确定该光源在该击中点处产生的光影效果。
可选的,所述第四确定子模块,具体用于在所述第一测试射线经过除所述第一非光源对象以外的其他非光源对象的情况下,若该其他的非光源对象中存在对象标识属于该光源当前待利用的第二绑定关系的第二非光源对象,确定该光源在该击中点处产生的光影效果为:在该光源的影响下,所述第二非光源对象在该击中点处产生阴影;若该其他的非光源对象中不存在所述第二非光源对象,确定该光源在该击中点处产生的光影效果为:该光源照亮该击中点。
可选的,一个光源在一个击中点处产生的光影效果为:该光源照亮该击中点,或者,在该光源的影响下,以该击中点为起点且指向该光源的射线经过的非光源对象在该击中点处产生阴影;
所述像素值计算模块,具体用于基于各光源在该击中点处产生的光影效果,以及该击中点的属性信息,通过预设着色模型计算该击中点处的像素值;其中,该击中点的属性信息包括:在所述待渲染三维场景中,该击中点的颜色和材质。
可选的,所述装置还包括:
绑定关系获取模块,用于在针对该像素位置对应的每一击中点,基于各光源当前待利用的第一绑定关系和第二绑定关系,以及在所述待渲染三维场景中该击中点的位置与非光源对象的位置之间的关系,确定各光源在该击中点处产生的光影效果之前,获取各光源初始的第一绑定关系和第二绑定关系;
第一添加模块,用于当接收到用于指示使所述待渲染三维场景中的第一指定光源照亮待调整光影效果的第三非光源对象的第一指令时,将所述第三非光源对象的对象标识添加至所述第一指定光源初始的第一绑定关系中,得到所述第一指定光源当前待利用的第一绑定关系;
第一删除模块,用于当接收到用于指示使所述待渲染三维场景中的第二指定光源不照亮待调整光影效果的第四非光源对象的第二指令时,将所述第四非光源对象的对象标识从所述第二指定光源初始的第一绑定关系中删除,得到所述第二指定光源当前待利用的第一绑定关系;
第二添加模块,用于当接收到用于指示使在所述待渲染三维场景中的第三指定光源的影响下,第五非光源对象在待调整光影效果的第六非光源对象处产生阴影的第三指令时,将所述第五非光源对象的对象标识添加至所述第三指定光源初始的第二绑定关系中,得到所述第三指定光源当前待利用的第二绑定关系;
第二删除模块,用于当接收到用于指示使在所述待渲染三维场景中的第四指定光源的影响下,第七非光源对象在待调整光影效果的第八非光源对象处不产生阴影的第四指令时,将所述第七非光源对象的对象标识从所述第四指定光源初始的第二绑定关系中删除,得到所述第四指定光源当前待利用的第二绑定关系。
可选的,任一光源的第一绑定关系为空表示:所述待渲染三维场景中所有非光源对象均允许被该光源照亮;任一光源的第二绑定关系为空表示:所述待渲染三维场景中所有非光源对象在该光源的影响下均允许产生阴影。
本申请实施例的第三方面,还提供了一种电子设备,包括:
存储器,用于存放计算机程序;
处理器,用于执行存储器上所存放的程序时,实现上述任一所述的图像渲染方法。
本申请实施例的第四方面,还提供了一种计算机可读存储介质,所述计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现上述任一所述的图像渲染方法。
本申请实施例还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述任一所述的图像渲染方法。
本申请实施例提供的一种图像渲染方法,可以针对待渲染三维场景在观测视点下的待渲染图像中的每一像素位置,基于光束投射法,确定以观测视点为起点且经过该像素位置的光线在待渲染三维场景内击中的各点,作为该像素位置对应的击中点;针对该像素位置对应的每一击中点,基于各光源当前待利用的第一绑定关系和第二绑定关系,以及在待渲染三维场景中该击中点的位置与非光源对象的位置之间的关系,确定各光源在该击中点处产生的光影效果;其中,任一光源的第一绑定关系,用于记录待渲染三维场景中允许被该光源照亮的非光源对象;任一光源的第二绑定关系,用于记录待渲染三维场景中在该光源的影响下允许产生阴影的非光源对象;基于各光源在该击中点处产生的光影效果,计算该击中点处的像素值;基于对该像素位置对应的各击中点的像素值进行融合,得到该像素位置处的像素值。
基于上述处理,针对每一光源,在当前需要渲染的虚拟三维空间(即待渲染三维场景)中,该光源仅允许照亮该光源的第一绑定关系中记录的非光源对象。在该光源的影响下,仅允许该光源的第二绑定关系中记录的非光源对象产生阴影。相应的,通过在一个光源的第一绑定关系中添加一个非光源对象,可以实现使该光源在该非光源对象上产生照亮区域,且不会影响该光源在其他非光源对象上产生的照亮区域。通过在一个光源的第一绑定关系中删除一个非光源对象,可以实现使该光源在该非光源对象上不产生照亮区域,且不会影响该光源在其他非光源对象上产生的照亮区域。通过在一个光源的第二绑定关系中添加待设置非光源对象,可以实现使在该光源的影响下,待设置非光源对象在另一个非光源对象(可以称为待调整非光源对象)上产生阴影区域,且不会影响待设置非光源对象在其他光源的影响下产生的阴影区域。通过在一个光源的第二绑定关系中删除待设置非光源对象,可以实现使在该光源的影响下,待设置非光源对象在待调整非光源对象上不产生阴影区域,且不会影响待设置非光源对象在其他光源的影响下产生的阴影区域。
如此,用户通过设置各光源的第一绑定关系和第二绑定关系,可以实现仅对当前需要调整光影效果的非光源对象上的照亮区域和阴影区域进行调整,不会对不需要调整照亮区域和阴影区域的其他非光源对象产生影响。相对于相关技术中通过减少增加或移除光源以及增加或移除物体调整光影效果的方案,用户仅需要设置各光源的第一绑定关系和第二绑定关系,能够降低对虚拟三维空间中原本不需要调整的光影效果的影响,也就无需通过人工重新基于改变后的虚拟三维空间搭建光照阴影效果,能够降低人工成本,提高图像渲染的效率。
当然,实施本申请的任一产品或方法并不一定需要同时达到以上所述的所有优点。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,还可以根据这些附图获得其他的实施例。
图1a为本申请实施例提供的一种照亮区域与阴影区域的示意图;
图1b为本申请实施例提供的另一种照亮区域与阴影区域的示意图;
图2为本申请实施例提供的一种光束投射过程中产生照亮区域和阴影区域的示意图;
图3为本申请实施例提供的图像渲染方法的第一种流程示意图;
图4为本申请实施例提供的图像渲染方法的第二种流程示意图;
图5为本申请实施例提供的一种未设置光源的绑定关系时确定光影效果的流程示意图;
图6为本申请实施例提供的一种仅设置光源的第一绑定关系时确定光影效果的流程示意图;
图7为本申请实施例提供的一种仅设置光源的第二绑定关系时确定光影效果的流程示意图;
图8为本申请实施例提供的一种待渲染三维场景的示意图;
图9为本申请实施例提供的一种图像渲染装置的结构示意图;
图10为本申请实施例提供的一种电子设备的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员基于本申请所获得的所有其他实施例,都属于本申请保护的范围。
目前计算机图像渲染在影视制作、虚拟现实、电子游戏等各个方面都有着广泛的应用。在计算机图像渲染的过程中,可以通过光束投射法模拟光线与虚拟三维空间中物体(即非光源对象)的相互作用,以渲染得到逼真的二维图像。
虚拟三维空间中设置的光源与物体相互作用,能够在背景环境或物体上产生照亮区域与阴影区域。如图1a和图1b所示,图1a为本申请实施例提供的一种照亮区域与阴影区域的示意图。图1a中的光源可以在物体X上产生照亮区域,在光源的影响下,物体X可以在背向光源的一侧的水平面上产生阴影区域。光源还可以在物体Y上产生照亮区域,在光源的影响下,物体Y可以在背向光源的一侧的水平面上产生阴影区域。图1b为本申请实施例提供的另一种照亮区域与阴影区域的示意图。图1b中的光源可以在物体M上产生照亮区域,在光源的影响下,物体M可以在物体N上产生阴影区域。光源还可以在物体N上产生照亮区域,在光源的影响下,物体N可以在背向光源的一侧的竖直面上产生阴影区域。
参见图2,图2为本申请实施例提供的一种光束投射过程中产生照亮区域和阴影区域的示意图。图2中的相机视点(Camera),也可以称为观测视点,图像(Image)也可以称为待渲染图像,待渲染图像中的每一个小方格表示一个像素位置。图2中的虚拟三维空间(也可以称为待渲染三维场景)中设置有一个光源(Light Source),以及一个场景对象(SceneObject),也可以称为非光源对象,即,图2中的球体。
针对待渲染图像中的每一像素位置,确定以相机视点为起点且经过该像素位置的光线(可以称为视点射线,View Ray)在待渲染三维场景内击中的点,作为该像素位置对应的击中点。如,图2中的像素位置a对应的击中点A,以及像素位置b对应的击中点B。以击中点为起点且指向光源的射线可以称为阴影测试射线(Shadow Ray)。以击中点A为起点的阴影测试射线在行进过程中未击中其他非光源对象,因此,光源可以照亮击中点A。相应的,光源可以在球体上产生包含击中点A在内的照亮区域。以击中点B为起点的阴影测试射线在行进过程中击中了球体,因此,在光源的影响下,球体在击中点B处产生阴影。相应的,在光源的影响下,球体可以在背向光源的一侧的平面上产生包含击中点B在内的阴影区域。
在初步建立虚拟三维空间之后,往往还需要对照亮区域或者阴影区域进行调整。例如,需要增加或去除某一物体上的高亮效果,即,增加或去除该物体上的照亮区域;或者,增加或去除某一物体上的阴影效果,即,增加或去除该物体上的阴影区域。
相关技术中,如果需要增加该物体上的照亮区域或者去除该物体上的阴影区域,只能通过增加光源或者去除遮挡的物体实现;如果需要去除该物体上的照亮区域或者增加该物体上的阴影区域,只能通过移除光源或者增加遮挡的物体实现。然而,增加或移除光源以及增加或移除物体均会导致虚拟三维空间中原本不需要调整的光影效果发生变化。为了恢复原本不需要调整的光影效果,需要通过人工重新基于改变后的虚拟三维空间搭建光照阴影效果,大大增加人工成本,且会导致图像渲染的效率较低。
为了避免通过人工重新基于改变后的虚拟三维空间搭建光照阴影效果,降低人工成本,提高图像渲染的效率,本申请实施例提供了一种图像渲染方法,应用于电子设备,参加图3,图3为本申请实施例提供的图像渲染方法的第一种流程示意图。方法可以包括:
步骤S301:针对待渲染三维场景在观测视点下的待渲染图像中的每一像素位置,基于光束投射法,确定以观测视点为起点且经过该像素位置的光线在待渲染三维场景内击中的各点,作为该像素位置对应的击中点。
步骤S302:针对该像素位置对应的每一击中点,基于各光源当前待利用的第一绑定关系和第二绑定关系,以及在待渲染三维场景中该击中点的位置与非光源对象的位置之间的关系,确定各光源在该击中点处产生的光影效果。
其中,任一光源的第一绑定关系,用于记录待渲染三维场景中允许被该光源照亮的非光源对象;任一光源的第二绑定关系,用于记录待渲染三维场景中在该光源的影响下允许产生阴影的非光源对象。
步骤S303:基于各光源在该击中点处产生的光影效果,计算该击中点处的像素值。
步骤S304:基于对该像素位置对应的各击中点的像素值进行融合,得到该像素位置处的像素值。
基于上述处理,针对每一光源,在当前需要渲染的虚拟三维空间(即待渲染三维场景)中,该光源仅允许照亮该光源的第一绑定关系中记录的非光源对象。在该光源的影响下,仅允许该光源的第二绑定关系中记录的非光源对象产生阴影。相应的,通过在一个光源的第一绑定关系中添加一个非光源对象,可以实现使该光源在该非光源对象上产生照亮区域,且不会影响该光源在其他非光源对象上产生的照亮区域。通过在一个光源的第一绑定关系中删除一个非光源对象,可以实现使该光源在该非光源对象上不产生照亮区域,且不会影响该光源在其他非光源对象上产生的照亮区域。通过在一个光源的第二绑定关系中添加待设置非光源对象,可以实现使在该光源的影响下,待设置非光源对象在另一个非光源对象(可以称为待调整非光源对象)上产生阴影区域,且不会影响待设置非光源对象在其他光源的影响下产生的阴影区域。通过在一个光源的第二绑定关系中删除待设置非光源对象,可以实现使在该光源的影响下,待设置非光源对象在待调整非光源对象上不产生阴影区域,且不会影响待设置非光源对象在其他光源的影响下产生的阴影区域。
如此,用户通过设置各光源的第一绑定关系和第二绑定关系,可以实现仅对当前需要调整光影效果的非光源对象上的照亮区域和阴影区域进行调整,不会对不需要调整照亮区域和阴影区域的其他非光源对象产生影响。相对于相关技术中通过减少增加或移除光源以及增加或移除物体调整光影效果的方案,用户仅需要设置各光源的第一绑定关系和第二绑定关系,能够降低对虚拟三维空间中原本不需要调整的光影效果的影响,也就无需通过人工重新基于改变后的虚拟三维空间搭建光照阴影效果,能够降低人工成本,提高图像渲染的效率。
针对步骤S301,用户可以预先通过电子设备构建待渲染三维场景,例如,用户可以预先在虚拟三维空间中设置表示光源或者非光源对象的三维模型,得到待渲染三维场景。如,用户可以通过编写代码或者可视化界面构建实现在虚拟三维空间中三维模型的设置。如,待渲染三维场景可以为样品房间,光源可以为样品房间中设置的灯具,非光源对象可以为样品房间中的家具,如,桌子和椅子。在观测视点下对待渲染三维场景进行观测的二维图像可以称为待渲染图像。观测视点可以根据需要设置,不作具体限定。
针对待渲染图像中的每一像素位置,基于光束投射法(例如,蒙特卡洛光束投射法),电子设备可以模拟以观测视点为起点且经过该像素位置的光线(可以称为虚拟光线),虚拟光线第一次击中待渲染三维场景内的一个位置(可以称为击中位置),产生一个击中点。且虚拟光线在击中位置会发生反射与折射,可以模拟反射产生的反射光线,以及折射产生的折射光线。
反射光线和折射光线可以击中待渲染三维场景内的其他位置,得到新的击中点,并产生新的反射光线和折射光线。新的反射光线和折射光线也可以击中待渲染三维场景内的其他位置,得到新的击中点,且还会继续产生新的反射光线和折射光线。即,基于光束投射法,可以递归地确定光线的反射和折射情况,得到该像素位置对应的各击中点,直至光线击中光源、光线离开场景或者达到预设次数。可以对上述过程中的各光线进行采样,将采样的各光线对应的击中点,作为该像素位置对应的击中点。采样的数目可以根据需要设置,不作具体限定。
针对步骤S302,各光源当前待利用的第一绑定关系和第二绑定关系为各光源当前最新的第一绑定关系和第二绑定关系。
在构建得到待渲染三维场景之后,用户可以预先设置待渲染三维场景中各光源的第一绑定关系和第二绑定关系,得到各光源初始的第一绑定关系和第二绑定关系。当需要对在一个光源的影响下产生的照亮区域和阴影区域进行调整时,用户可以触发调整该光源的第一绑定关系和第二绑定关系的指令(可以称为调整指令)。例如,调整指令可以包括后续实施例中的第一指令、第二指令、第三指令以及第四指令。
相应的,在接收到调整指令时,电子设备可以对各光源初始的第一绑定关系和第二绑定关系进行调整,以得到各光源最新的第一绑定关系和第二绑定关系。若再次接收到调整指令,电子设备可以对接收到调整指令时各光源的第一绑定关系和第二绑定关系进行更新,得到各光源最新的第一绑定关系和第二绑定关系。如此,电子设备也就能够根据各光源当前最新的第一绑定关系和第二绑定关系,确定各光源产生的光影效果。具体根据调整指令确定各光源当前最新的第一绑定关系和第二绑定关系的方式可以参考后续实施例中的相关描述。
任一光源的第一绑定关系,用于记录待渲染三维场景中允许被该光源照亮的非光源对象。也就是说,任一光源的第一绑定关系用于记录该光源与待渲染三维场景中非光源对象的绑定关系。针对每一光源,在待渲染三维场景中,该光源仅允许照亮该光源的第一绑定关系中记录的非光源对象。相应的,在待渲染三维场景中,若该光源的第一绑定关系中未记录某一非光源对象,则该光源并不会照亮该非光源对象。
任一光源的第二绑定关系,用于记录待渲染三维场景中在该光源的影响下允许产生阴影的非光源对象。也就是说,任一光源的第二绑定关系用于记录该光源与待渲染三维场景中非光源对象的绑定关系。针对每一光源,在待渲染三维场景中,在该光源的影响下,仅允许该光源的第二绑定关系中记录的非光源对象产生阴影。相应的,在待渲染三维场景中,若该光源的第二绑定关系中未记录某一非光源对象,则在该光源的影响下,该非光源对象并不会产生阴影。
例如,待渲染三维场景中设置的非光源对象均设置有自身对应的对象标识(也可以称为实例ID),相应的,任一光源的第一绑定关系和第二绑定关系中可以记录有非光源对象的对象标识。如此,用户通过设置任一光源的第一绑定关系,可以对该光源在各非光源对象处产生的照亮区域进行调整。用户通过设置任一光源的第二绑定关系,可以对在该光源影响下各非光源对象产生的阴影区域进行调整。
在一个实施例中,任一光源的第一绑定关系为空表示:待渲染三维场景中所有非光源对象均允许被该光源照亮。任一光源的第二绑定关系为空表示:待渲染三维场景中所有非光源对象在该光源的影响下均允许产生阴影。
在本申请实施例中,为了保证待渲染三维场景中的光影效果不失真,大部分光源(可以称为普通光源)在待渲染三维场景中产生的光影效果仍符合光线传播原理。用户仅需要对少部分光源(可以称为待设置光源)针对待渲染三维场景中的部分非光源对象(可以称为待设置对象)产生的光影效果进行调整,而不需要待设置光源针对除待设置对象以外的非光源对象产生的光影效果进行调整,也不需要对除待设置光源以外的其他光源在待渲染三维场景中产生的光影效果进行调整。例如,需要待设置光源在待设置对象上产生照亮区域,以在待设置对象上产生高亮效果,或者,在待设置光源的影响下,待设置对象需要在其他非光源对象上产生阴影区域,以在该其他非光源对象上产生阴影效果。且在实现高亮效果或者阴影效果的同时,不影响待设置光源针对除待设置对象以外的非光源对象产生的光影效果,以及除待设置光源以外的其他光源在待渲染三维场景中产生的光影效果。
基于上述处理,可以直接将普通光源的第一绑定关系和第二绑定关系设置为空,也就无需在大部分光源的绑定关系中记录非光源对象,可以仅在待设置光源的绑定关系中记录非光源对象,即,仅在少部分光源的绑定关系中记录非光源对象,以实现照亮区域和阴影区域的调整。如此,也就可以减少需要记录非光源对象的绑定关系,可以较快地完成待渲染三维场景中各光源的绑定关系的设置,且可以减少各光源的绑定关系占用的存储空间。即,可以提高绑定关系设置的效率,也就能够进一步提高图像渲染的效率,并节约存储空间。
根据待渲染三维场景中该击中点的位置与非光源对象的位置之间的关系,电子设备可以确定该击中点是否属于非光源对象,以及非光源对象和该击中点之间的遮挡关系,以确定非光源对象是否会影响各光源在该击中点处产生的光影效果。针对每一光源,结合该光源的第一绑定关系和第二绑定关系,电子设备也就能够进一步确定该光源是否允许照亮该击中点,或者,在该光源的影响下,是否允许非光源对象在该击中点处产生阴影。若一个光源未照亮一个击中点,且在该光源的影响下,也不存在非光源对象在该击中点处产生阴影,则该光源在该击中点处不产生光影效果。
针对步骤S303,针对该像素位置对应的每一击中点,在确定各光源在该击中点处产生的光影效果之后,电子设备可以根据各光源在该击中点处产生的光影效果,结合该击中点的属性信息,计算该击中点处的像素值。
在一个实施例中,一个光源在一个击中点处产生的光影效果为:该光源照亮该击中点,或者,在该光源的影响下,以该击中点为起点且指向该光源的射线经过的非光源对象在该击中点处产生阴影。
步骤S303,包括:
基于各光源在该击中点处产生的光影效果,以及该击中点的属性信息,通过预设着色模型计算该击中点处的像素值。
其中,该击中点的属性信息包括:在待渲染三维场景中,该击中点的颜色和材质。
在本申请实施例中,一个光源可以照亮一个击中点,或者,在该光源的影响下,以该击中点为起点且指向该光源的射线经过的非光源对象可以在该击中点处产生阴影。一个光源在一个击中点处产生的光影效果可以对该击中点处的亮度或者颜色产生影响,也就会对该击中点处的像素值产生影响。
针对该像素位置对应的每一击中点,电子设备可以预先获取该击中点的属性信息。例如,该击中点的属性信息可以包括该击中点的颜色和材质。根据该击中点的材质可以确定该击中点的折射率和反射率,进而,将各光源在该击中点处产生的光影效果以及该击中点的属性信息输入预设着色模型,计算得到该击中点处的像素值。例如,电子设备可以根据各光源在该击中点处产生的光影效果,确定照亮该击中点的光源(可以称为待利用光源),并可以模拟待利用光源在该击中点处的入射光线。相应的,预设着色模型可以根据模拟出的入射光线,得到在该击中点处产生的反射光线的方向以及亮度。进而,结合产生的反射光线的方向和亮度,以及该击中点的颜色,可以计算得到该击中点处的像素值。如,预设着色模型可以是BRDF(Bidirectional Reflectance Distribution Function,双向反射分布函数)或者BSDF(Bidirectional scattering distribution function,双向散射分布函数)。
基于上述处理,电子设备可以计算得到该像素位置对应的击中点处的像素值,后续,根据该像素位置对应的击中点处的像素值,可以确定该像素位置处的像素值,也就能够得到待渲染图像,实现图像渲染。且在图像渲染的过程中,考虑了待渲染三维场景中光源和非光源对象相互作用产生照亮区域与阴影区域,也就能够提高得到的待渲染图像的视觉效果,保证用户浏览待渲染图像的体验。
针对步骤S304,在光束投射的过程中,该像素位置对应的各击中点的像素值均会影响该像素位置的像素值,因此,可以对该像素位置对应的各击中点的像素值进行融合,得到该像素位置处的像素值。例如,可以计算该像素位置对应的各击中点的像素值的加权和,得到该像素位置处的像素值。如此,也就能够得到待渲染图像中每一像素位置处的像素值,即,可以得到待渲染图像,完成图像渲染。
在一个实施例中,可以对各光源的第一绑定关系和第二绑定关系进行调整,得到各光源最新的第一绑定关系和第二绑定关系,以根据各光源最新的第一绑定关系和第二绑定关系,确定各光源在一个像素位置对应的击中点处产生的光影效果。
在步骤S302之前,方法还包括:
步骤1:获取各光源初始的第一绑定关系和第二绑定关系。
步骤2:当接收到用于指示使待渲染三维场景中的第一指定光源照亮待调整光影效果的第三非光源对象的第一指令时,将第三非光源对象的对象标识添加至第一指定光源初始的第一绑定关系中,得到第一指定光源当前待利用的第一绑定关系。
步骤3:当接收到用于指示使待渲染三维场景中的第二指定光源不照亮待调整光影效果的第四非光源对象的第二指令时,将第四非光源对象的对象标识从第二指定光源初始的第一绑定关系中删除,得到第二指定光源当前待利用的第一绑定关系。
步骤4:当接收到用于指示使在待渲染三维场景中的第三指定光源的影响下,第五非光源对象在待调整光影效果的第六非光源对象处产生阴影的第三指令时,将第五非光源对象的对象标识添加至第三指定光源初始的第二绑定关系中,得到第三指定光源当前待利用的第二绑定关系。
步骤5:当接收到用于指示使在待渲染三维场景中的第四指定光源的影响下,第七非光源对象在待调整光影效果的第八非光源对象处不产生阴影的第四指令时,将第七非光源对象的对象标识从第四指定光源初始的第二绑定关系中删除,得到第四指定光源当前待利用的第二绑定关系。
在本申请实施例中,用户可以在虚拟三维空间中设置表示光源或者非光源对象的三维模型,得到待渲染三维场景,且可以设置各光源初始的第一绑定关系和第二绑定关系。相应的,电子设备可以获取各光源初始的第一绑定关系和第二绑定关系。用户可以根据当前需要调整的照亮区域和阴影区域,触发对应的调整指令。
若基于各光源初始的第一绑定关系进行渲染,待渲染三维场景中的第一指定光源无法照亮待调整光源效果的第三非光源对象,则当需要使第一指定光源照亮第三非光源对象时,用户可以触发用于指示使第一指定光源照亮第三非光源对象的指令(即第一指令)。相应的,在接收到第一指令时,电子设备可以将第三非光源对象的对象标识添加至第一指定光源初始的第一绑定关系中,得到第一指定光源当前待利用的第一绑定关系。基于第一指定光源当前待利用的第一绑定关系进行渲染,也就能够允许第一指定光源照亮第三非光源对象,且不影响第一指定光源在除第三非光源对象以外的其他非光源对象上产生的照亮区域。
若基于各光源初始的第一绑定关系进行渲染,待渲染三维场景中的第二指定光源照亮待调整光源效果的第四非光源对象,则当需要使第二指定光源不照亮第三非光源对象时,用户可以触发用于指示使第二指定光源不照亮第三非光源对象的指令(即第二指令)。相应的,在接收到第二指令时,电子设备可以将第三非光源对象的对象标识从第二指定光源初始的第一绑定关系中删除,得到第一指定光源当前待利用的第一绑定关系。基于第二指定光源当前待利用的第一绑定关系进行渲染,也就能够不允许第二指定光源照亮第四非光源对象,且不影响第二指定光源在除第四非光源对象以外的其他非光源对象上产生的照亮区域。
若基于各光源初始的第二绑定关系进行渲染,在待渲染三维场景中的第三指定光源的影响下,第五非光源对象无法在待调整光影效果的第六非光源对象处产生阴影,则当需要使在第三指定光源的影响下,第五非光源对象在第六非光源对象处产生阴影时,用户可以触发用于指示在第三指定光源的影响下,第五非光源对象在第六非光源对象处产生阴影的指令(即第三指令)。相应的,在接收到第三指令时,电子设备可以将第五非光源对象的对象标识添加至第三指定光源初始的第二绑定关系中,得到第三指定光源当前待利用的第二绑定关系。基于第三指定光源当前待利用的第二绑定关系进行渲染,也就能够在第三指定光源的影响下,允许第五非光源对象在第六非光源对象处产生阴影,且不影响第五非光源对象在其他光源的影响下产生的阴影区域。
若基于各光源初始的第二绑定关系进行渲染,在待渲染三维场景中的第四指定光源的影响下,第七非光源对象在待调整光影效果的第八非光源对象处产生阴影,则当需要使在待渲染三维场景中的第四指定光源的影响下,第七非光源对象在第八非光源对象处不产生阴影时,用户可以触发用于指示在第四指定光源的影响下,第七非光源对象在第八非光源对象处不产生阴影的指令(即第四指令)。相应的,在接收到第四指令时,电子设备可以将第七非光源对象的对象标识从第四指定光源初始的第二绑定关系中删除,得到第四指定光源当前待利用的第二绑定关系。基于第四指定光源当前待利用的第二绑定关系进行渲染,也就能够在第四指定光源的影响下,不允许第七非光源对象在第八非光源对象处产生阴影,且不影响第七非光源对象在其他光源的影响下产生的阴影区域。
上述第一指定光源、第二指定光源、第三指定光源和第四指定光源,以及第三非光源对象、第四非光源对象、……、第八非光源对象,均可以是根据当前需要调整的照亮区域和阴影区域选择的,不作具体限定。
基于上述处理,用户可以根据当前需要调整的照亮区域和阴影区域,触发对应的指令,以使电子设备在接收到对应的指令时,对各光源的第一绑定关系和第二绑定关系进行调整,得到各光源最新的第一绑定关系和第二绑定关系。即,可以根据用户最新的需求,对各光源的第一绑定关系和第二绑定关系进行调整,并不需要改变待渲染三维场景。进而,电子设备可以基于各光源最新的第一绑定关系和第二绑定关系,确定待渲染三维场景中光源和非光源对象相互作用产生的照亮区域和阴影区域,以渲染得到待渲染三维场景在观测视点下的图像(即待渲染图像),即,实现图像渲染。
如此,用户可以通过触发指令,调整各光源的第一绑定关系和第二绑定关系,实现对照亮区域和阴影区域进行调整,可以实现仅对当前需要调整光影效果的非光源对象上的照亮区域和阴影区域进行调整,不会对不需要调整照亮区域和阴影区域的其他非光源对象产生影响,也不会改变待渲染三维场景中光源和非光源对象的布局。无需通过人工重新基于改变后的虚拟三维空间搭建光照阴影效果,能够降低人工成本,提高图像渲染的效率。
在一个实施例中,步骤S302,包括:
步骤一:对于该像素位置对应的每一击中点,针对每一光源,在该击中点位于待渲染三维场景中第一非光源对象上面向该光源的一侧,且该光源当前待利用的第一绑定关系中未记录有第一非光源对象的对象标识的情况下,确定该光源在该击中点处不产生光影效果。
步骤二:在该击中点未位于待渲染三维场景中非光源对象上的情况下,或者,在该击中点位于第一非光源对象上面向该光源的一侧,且该光源当前待利用的第一绑定关系中记录有第一非光源对象的对象标识的情况下,确定以该击中点为起点且指向该光源的第一测试射线,是否经过待渲染三维场景中除第一非光源对象以外的其他非光源对象。
步骤三:在第一测试射线未经过除第一非光源对象以外的其他非光源对象的情况下,确定该光源在该击中点处产生的光影效果为:该光源照亮该击中点。
步骤四:在第一测试射线经过除第一非光源对象以外的其他非光源对象的情况下,基于该光源当前待利用的第二绑定关系,确定该光源在该击中点处产生的光影效果。
在本申请实施例中,对于该像素位置对应的每一击中点,针对每一光源,电子设备可以确定该击中点是否位于待渲染三维场景中非光源对象上。若该击中点位于非光源对象(即第一非光源对象)上,电子设备还可以根据该光源和第一非光源对象的位置之间的关系,确定该击中点是否位于第一非光源对象上面向该光源的一侧。例如,电子设备可以根据该光源和第一非光源对象的位置之间的关系,确定出第一非光源对象上面向该光源的一侧的区域(可以称为第一区域),以及第一非光源对象上背向该光源的一侧的区域(可以称为第二区域)。相应的,可以确定该击中点属于第一区域还是第二区域,也就能够确定该击中点是否位于第一非光源对象上面向该光源的一侧。
若该击中点位于第一非光源对象上面向该光源的一侧,电子设备还可以确定该光源当前待利用的第一绑定关系中是否记录有第一非光源对象的对象标识。
在该击中点位于第一非光源对象上且未位于第一非光源对象上面向该光源的一侧的情况下,或者,在该击中点位于第一非光源对象上面向该光源的一侧,且该光源当前待利用的第一绑定关系中未记录有第一非光源对象的对象标识的情况下,确定该光源在该击中点处不产生光影效果。
在该击中点未位于待渲染三维场景中非光源对象上的情况下,例如,该击中点位于待渲染三维场景中的地面或者墙壁上,或者,在该击中点位于第一非光源对象上面向该光源的一侧,且该光源当前待利用的第一绑定关系中记录有第一非光源对象的对象标识的情况下,电子设备可以并根据待渲染三维场景中非光源对象的位置、该击中点的位置以及该光源的位置,确定以该击中点为起点且指向该光源的测试射线(即第一测试射线)是否经过待渲染三维场景中除第一非光源对象以外的其他非光源对象。
在第一测试射线未经过除第一非光源对象以外的其他非光源对象的情况下,也就表示第一测试射线未被阻挡,该光源可以照亮该击中点。在第一测试射线经过除第一非光源对象以外的其他非光源对象的情况下,也就表示第一测试射线被阻挡,可以进一步结合该光源当前待利用的第二绑定关系,确定第一测试射线经过的非光源对象是否会在该光源的影响下,在该击中点处产生阴影,以得到该光源在该击中点处产生的光影效果。
基于上述处理,能够实现根据各光源当前待利用的第一绑定关系和第二绑定关系,以及该击中点的位置与非光源对象的位置之间的关系,确定各光源在该击中点处产生的光影效果。后续,也就可以根据确定出的光影效果,渲染得到待渲染三维场景在观测视点下的图像(即待渲染图像),即,实现图像渲染。如此,用户通过设置各光源的第一绑定关系和第二绑定关系,可以实现仅对当前需要调整光影效果的非光源对象上的照亮区域和阴影区域进行调整,不会对不需要调整照亮区域和阴影区域的其他非光源对象产生影响。无需通过人工重新基于改变后的虚拟三维空间搭建光照阴影效果,能够降低人工成本,提高图像渲染的效率。
在一个实施例中,步骤三,包括:
在第一测试射线经过除第一非光源对象以外的其他非光源对象的情况下,若该其他的非光源对象中存在对象标识属于该光源当前待利用的第二绑定关系的第二非光源对象,确定该光源在该击中点处产生的光影效果为:在该光源的影响下,第二非光源对象在该击中点处产生阴影;
若该其他的非光源对象中不存在第二非光源对象,确定该光源在该击中点处产生的光影效果为:该光源照亮该击中点。
在本申请实施例中,根据该光源当前待利用的第二绑定关系,可以确定第一测试射线经过的非光源对象(可以称为第六非光源对象)是否会在该光源的影响下,在该击中点处产生阴影。第六非光源对象可以为一个或者多个。
若第六非光源对象中存在对象标识属于该光源当前待利用的第二绑定关系的非光源对象(即第二非光源对象),由于第二非光源对象在该光源的影响下允许产生阴影,因此,在该光源的影响下,第二非光源对象在该击中点处产生阴影。若第六非光源对象中不存在第二非光源对象,也就表示在该光源的影响下,第六非光源对象均不允许产生阴影,也就表示第一测试射线未被遮挡,则该光源可以照亮该击中点。
基于上述处理,在第一测试射线经过除第一非光源对象以外的其他非光源对象的情况下,可以进一步根据该光源当前待利用的第二绑定关系,确定该光源在该击中点处产生的光影效果。能够进一步保证可以实现根据各光源当前待利用的第一绑定关系和第二绑定关系,以及该击中点的位置与非光源对象的位置之间的关系,确定各光源在该击中点处产生的光影效果。后续,也就可以根据确定出的光影效果,渲染得到待渲染三维场景在观测视点下的图像(即待渲染图像),即,实现图像渲染。
如此,用户通过设置各光源的第一绑定关系和第二绑定关系,可以实现仅对当前需要调整光影效果的非光源对象上的照亮区域和阴影区域进行调整,不会对不需要调整照亮区域和阴影区域的其他非光源对象产生影响。无需通过人工重新基于改变后的虚拟三维空间搭建光照阴影效果,能够降低人工成本,提高图像渲染的效率。
在一个实施例中,参见图4,图4为本申请实施例提供的图像渲染方法的第二种流程示意图。方法包括:
步骤S401:构建三维场景。即,构建待渲染三维场景。具体的,用户可以通过编写代码或者可视化界面实现在三维场景中放入一个或多个光源以及三维物体模型(即非光源对象)。每个非光源对象都有独立的实例ID(即上述实施例中的对象标识),可以用于区分各非光源对象。
步骤S402:光源物体绑定照亮与阴影关系。即,设置各光源的第一绑定关系和第二绑定关系。具体的,针对每一光源,可以在该光源的参数设置中增加两个数组,记录非光源对象的实例ID,分别表示该光源的第一绑定关系和第二绑定关系。表示该光源的第一绑定关系的数组可以命名为Light Group(照亮组),表示该光源的第二绑定关系的数组可以命名为Shadow Group(阴影组)。例如,待渲染三维场景中的非光源对象的对象标识包括:ID0、ID1、ID2、ID3、ID4、……,相应的,两个数组可以表示为:Light Group = {ID0, ID1, ID2,… },Shadow Group = { ID0, ID3, ID4, … }。
当一个光源的Light Group为空时,也就表示待渲染三维场景中所有非光源对象均允许被该光源照亮。当该光源的Light Group中设置了实例ID时,只有Light Group中设置的实例ID所表征的非光源对象才允许被该光源照亮,Light Group中未设置的实例ID所表征的非光源对象不允许被该光源照亮。
当一个光源的Shadow Group为空时,表示在该光源的影响下,待渲染三维场景中所有非光源对象均允许产生阴影。当该光源的Shadow Group中设置了实例ID时,在该光源的影响下,只有Shadow Group中设置的实例ID所表征的非光源对象才允许产生阴影,Shadow Group中未设置的实例ID所表征的非光源对象不允许产生阴影。
步骤S403:光束投射渲染。即,上述实施例中的步骤S301-步骤S304,得到待渲染图像。
基于本申请实施例提供的图像渲染方法,可以通过设置各光源的第一绑定关系和第二绑定关系,实现在基于光束投射的图像渲染过程中对照亮区域和阴影区域进行控制。具体的,用户可以通过设置光源的Light Group和/或Shadow Group,以绑定待渲染三维场景中的各光源和非光源对象。基于各光源的第一绑定关系和第二绑定关系,可以在图像渲染过程中控制各光源是否对非光源对象产生影响,从而快速便捷地实现光影效果变化。即,只需要单独设置光源与非光源对象的关联关系,就可以实现照亮区域或阴影区域的增加与减少,避免了重新进行场景修改的操作,大大节省人力成本,实现了一个高效率、低成本的待渲染场景搭建和渲染方案。
参见图5,图5为本申请实施例提供的一种未设置光源的绑定关系时确定光影效果的流程示意图。视点发射光线,即,上述实施例中的步骤S301。在光线击中场景物体的情况下,即,在以观测视点为起点且经过该像素位置的光线在待渲染三维场景内击中非光源对象(即上述实施例中的第一非光源对象)的情况下,可以从击中点向光源发射射线(也可以称为阴影测试射线)。即,电子设备可以模拟以一个击中点为起点且指向一个光源的射线(即上述实施例中的第一测试射线),并可以判断射线(即第一测试射线)是否击中物体,即,确定第一测试射线是否经过除第一非光源对象以外的其他非光源对象。若射线击中物体,则确定该击中点被物体遮挡产生阴影,即,在该光源的影响下,该第一测试射线经过的非光源对象在该击中点处产生阴影。若射线未击中物体,则确定该击中点无遮挡被光源照亮,即,该光源照亮该击中点。后续,在图6和图7中,与图5中相同的步骤可以参考图5中的相关描述。
参见图6,图6为本申请实施例提供的一种仅设置光源的第一绑定关系时确定光影效果的流程示意图。视点发射光线,在光线击中场景物体的情况下,可以判断击中物体(即上述实施例中的第一非光源对象)是否在光源LG(Light Group)中,即,确定一个光源的第一绑定关系中是否记录有第一非光源对象的对象标识。若击中物体不在光源LG中,即,该光源的第一绑定关系中未记录有第一非光源对象的对象标识,则光源忽略该物体,该物体无法被光源照亮,即,该光源在第一非光源对象上不产生光影效果。
若击中物体在光源LG中,则可以从击中点向光源发射射线,判断射线是否击中物体。若射线击中物体,则确定该击中点被物体遮挡产生阴影。若射线未击中物体,则确定该击中点无遮挡被光源照亮。以图2所示的待渲染三维场景为例,设置图2中光源的LightGroup中不包括球体的实例ID且Light Group不为空。针对击中点A,由于击中点A所属的球体的实例ID不在光源的Light Group中,因此,击中点A不会向该光源发射阴影测试射线,击中点A也不会该光源被照亮。若在该光源的Light Group中加入击中点A所属的球体的实例ID,则击中点A能够被该光源照亮。
参见图7,图7为本申请实施例提供的一种仅设置光源的第二绑定关系时确定光影效果的流程示意图。视点发射光线,在光线击中场景物体的情况下,可以从击中点向光源发射射线,并可以判断射线(即第一测试射线)是否击中物体。若射线未击中物体,则确定该击中点无遮挡被光源照亮。若射线击中物体,则可以判断击中物体是否在光源SG(ShadowGroup)中,此处的击中物体表示第一测试射线击中的物体,即,上述实施例中的第二非光源对象。即,可以确定一个光源的第二绑定关系中是否记录有第二非光源对象的对象标识。若击中物体不在光源SG中,即,该光源的第二绑定关系中未记录有第二非光源对象的对象标识,则光源忽略该物体,无遮挡不产生阴影,即,在该光源的影响下,第二非光源对象在击中点处不产生阴影,该光源可以照亮击中点。
若击中物体在光源SG中,即,该光源的第二绑定关系中记录有第二非光源对象的对象标识,则被物体遮挡产生阴影,即,在该光源的影响下,第二非光源对象在击中点处产生阴影。以图2所示的待渲染三维场景为例,设置图2中光源的Shadow Group中不包括球体的实例ID且Shadow Group不为空。以地面的击中点B为起点,向光源方向发射一条阴影测试射线,该射线在行进过程中击中球体。由于球体的实例ID不在光源的Shadow Group中,因此,阴影测试射线会忽略球体,直接到达光源,表示在光源的影响下,球体不会在击中点B处产生阴影,光源可以照亮击中点B。若在该光源的Shadow Group中加入球体的实例ID,则在光源的影响下,球体在击中点B处产生阴影。
在一个实施例中,参见图8,图8为本申请实施例提供的一种待渲染三维场景的示意图。图8所示的待渲染三维场景中设置有两个光源Light1(也可以称为L1)和Light2(也可以称为L2),以及五个非光源对象。五个非光源对象分别可以称为物体C、D、E、F、G,物体C、D、E、F、G实例ID分别设置为ID0、ID1、ID2、ID3、ID4。且设置有:Light1.LightGroup = {ID1、ID2};Light1.ShadowGroup = {ID0、ID1、ID2};Light2.LightGroup = {ID0、ID1、ID2};Light2.ShadowGroup = {ID0、ID1}。Light1.LightGroup和Light1.ShadowGroup分别表示光源L1的第一绑定关系和第二绑定关系。Light2.LightGroup和Light2.ShadowGroup分别表示光源L2的第一绑定关系和第二绑定关系。
如图8所示,以观测视点(Viewer)A为起点经过待渲染图像(Image)中像素位置B的光线击中物体C,得到击中点C1。由于物体C(ID0)不在光源L1的Light Group中,因此,击中点C1不能被光源L1照亮。以观测视点A为起点经过待渲染图像中另一个像素位置的光线(图8中未示出)击中物体D,得到击中点D1。以击中点D1为起点且指向光源L1的测试射线经过物体C,由于物体C(ID0)在光源L1的Shadow Group中,因此,在光源L1的影响下,物体C能在击中点D1处产生阴影。以击中点C1为起点且指向光源L2的测试射线经过物体E,由于物体E(ID2)不在光源L2的Shadow Group中,因此,在光源L2的影响下,物体E不能在击中点C1处产生阴影,光源L2可以直接照亮击中点C1。
可见,基于本申请实施例提供的图像渲染方法,通过设置待渲染三维场景中各光源的第一绑定关系和第二绑定关系,可以在不改变待渲染三维场景中光源以及非光源对象的数量和位置的条件下,实现改变非光源对象的照亮与阴影效果(即光影效果)。大大提升了待渲染三维场景搭建的效果,且可以提高待渲染三维场景的搭建开发效率,提高图像渲染的效率。
基于相同的发明构思,本申请实施例还提供了一种图像渲染装置,参见图9,图9为本申请实施例提供的一种图像渲染装置的结构示意图,所述装置包括:
击中点确定模块901,用于针对待渲染三维场景在观测视点下的待渲染图像中的每一像素位置,基于光束投射法,确定以所述观测视点为起点且经过该像素位置的光线在所述待渲染三维场景内击中的各点,作为该像素位置对应的击中点;
第一确定模块902,用于针对该像素位置对应的每一击中点,基于各光源当前待利用的第一绑定关系和第二绑定关系,以及在所述待渲染三维场景中该击中点的位置与非光源对象的位置之间的关系,确定各光源在该击中点处产生的光影效果;其中,任一光源的第一绑定关系,用于记录所述待渲染三维场景中允许被该光源照亮的非光源对象;任一光源的第二绑定关系,用于记录所述待渲染三维场景中在该光源的影响下允许产生阴影的非光源对象;
像素值计算模块903,用于基于各光源在该击中点处产生的光影效果,计算该击中点处的像素值;
像素值融合模块904,用于基于对该像素位置对应的各击中点的像素值进行融合,得到该像素位置处的像素值。
基于本申请实施例提供的图像渲染装置,针对每一光源,在当前需要渲染的虚拟三维空间(即待渲染三维场景)中,该光源仅允许照亮该光源的第一绑定关系中记录的非光源对象。在该光源的影响下,仅允许该光源的第二绑定关系中记录的非光源对象产生阴影。相应的,通过在一个光源的第一绑定关系中添加一个非光源对象,可以实现使该光源在该非光源对象上产生照亮区域,且不会影响该光源在其他非光源对象上产生的照亮区域。通过在一个光源的第一绑定关系中删除一个非光源对象,可以实现使该光源在该非光源对象上不产生照亮区域,且不会影响该光源在其他非光源对象上产生的照亮区域。通过在一个光源的第二绑定关系中添加待设置非光源对象,可以实现使在该光源的影响下,待设置非光源对象在另一个非光源对象(可以称为待调整非光源对象)上产生阴影区域,且不会影响待设置非光源对象在其他光源的影响下产生的阴影区域。通过在一个光源的第二绑定关系中删除待设置非光源对象,可以实现使在该光源的影响下,待设置非光源对象在待调整非光源对象上不产生阴影区域,且不会影响待设置非光源对象在其他光源的影响下产生的阴影区域。
如此,用户通过设置各光源的第一绑定关系和第二绑定关系,可以实现仅对当前需要调整光影效果的非光源对象上的照亮区域和阴影区域进行调整,不会对不需要调整照亮区域和阴影区域的其他非光源对象产生影响。相对于相关技术中通过减少增加或移除光源以及增加或移除物体调整光影效果的方案,用户仅需要设置各光源的第一绑定关系和第二绑定关系,能够降低对虚拟三维空间中原本不需要调整的光影效果的影响,也就无需通过人工重新基于改变后的虚拟三维空间搭建光照阴影效果,能够降低人工成本,提高图像渲染的效率。
在一个实施例中,所述第一确定模块902,包括:
第一确定子模块,用于对于该像素位置对应的每一击中点,针对每一光源,在该击中点位于所述待渲染三维场景中第一非光源对象上面向该光源的一侧,且该光源当前待利用的第一绑定关系中未记录有所述第一非光源对象的对象标识的情况下,确定该光源在该击中点处不产生光影效果;
第二确定子模块,用于在该击中点未位于所述待渲染三维场景中非光源对象上的情况下,或者,在该击中点位于所述第一非光源对象上面向该光源的一侧,且该光源当前待利用的第一绑定关系中记录有所述第一非光源对象的对象标识的情况下,确定以该击中点为起点且指向该光源的第一测试射线,是否经过所述待渲染三维场景中除所述第一非光源对象以外的其他非光源对象;
第三确定子模块,用于在所述第一测试射线未经过除所述第一非光源对象以外的其他非光源对象的情况下,确定该光源在该击中点处产生的光影效果为:该光源照亮该击中点;
第四确定子模块,用于在所述第一测试射线经过除所述第一非光源对象以外的其他非光源对象的情况下,基于该光源当前待利用的第二绑定关系,确定该光源在该击中点处产生的光影效果。
在一个实施例中,所述第四确定子模块,具体用于在所述第一测试射线经过除所述第一非光源对象以外的其他非光源对象的情况下,若该其他的非光源对象中存在对象标识属于该光源当前待利用的第二绑定关系的第二非光源对象,确定该光源在该击中点处产生的光影效果为:在该光源的影响下,所述第二非光源对象在该击中点处产生阴影;若该其他的非光源对象中不存在所述第二非光源对象,确定该光源在该击中点处产生的光影效果为:该光源照亮该击中点。
在一个实施例中,一个光源在一个击中点处产生的光影效果为:该光源照亮该击中点,或者,在该光源的影响下,以该击中点为起点且指向该光源的射线经过的非光源对象在该击中点处产生阴影;
所述像素值计算模块903,具体用于基于各光源在该击中点处产生的光影效果,以及该击中点的属性信息,通过预设着色模型计算该击中点处的像素值;其中,该击中点的属性信息包括:在所述待渲染三维场景中,该击中点的颜色和材质。
在一个实施例中,所述装置还包括:
绑定关系获取模块,用于在针对该像素位置对应的每一击中点,基于各光源当前待利用的第一绑定关系和第二绑定关系,以及在所述待渲染三维场景中该击中点的位置与非光源对象的位置之间的关系,确定各光源在该击中点处产生的光影效果之前,获取各光源初始的第一绑定关系和第二绑定关系;
第一添加模块,用于当接收到用于指示使所述待渲染三维场景中的第一指定光源照亮待调整光影效果的第三非光源对象的第一指令时,将所述第三非光源对象的对象标识添加至所述第一指定光源初始的第一绑定关系中,得到所述第一指定光源当前待利用的第一绑定关系;
第一删除模块,用于当接收到用于指示使所述待渲染三维场景中的第二指定光源不照亮待调整光影效果的第四非光源对象的第二指令时,将所述第四非光源对象的对象标识从所述第二指定光源初始的第一绑定关系中删除,得到所述第二指定光源当前待利用的第一绑定关系;
第二添加模块,用于当接收到用于指示使在所述待渲染三维场景中的第三指定光源的影响下,第五非光源对象在待调整光影效果的第六非光源对象处产生阴影的第三指令时,将所述第五非光源对象的对象标识添加至所述第三指定光源初始的第二绑定关系中,得到所述第三指定光源当前待利用的第二绑定关系;
第二删除模块,用于当接收到用于指示使在所述待渲染三维场景中的第四指定光源的影响下,第七非光源对象在待调整光影效果的第八非光源对象处不产生阴影的第四指令时,将所述第七非光源对象的对象标识从所述第四指定光源初始的第二绑定关系中删除,得到所述第四指定光源当前待利用的第二绑定关系。
在一个实施例中,任一光源的第一绑定关系为空表示:所述待渲染三维场景中所有非光源对象均允许被该光源照亮;任一光源的第二绑定关系为空表示:所述待渲染三维场景中所有非光源对象在该光源的影响下均允许产生阴影。
本申请实施例还提供了一种电子设备,如图10所示,包括:
存储器1001,用于存放计算机程序;
处理器1002,用于执行存储器1001上所存放的程序时,实现如下步骤:
针对待渲染三维场景在观测视点下的待渲染图像中的每一像素位置,基于光束投射法,确定以所述观测视点为起点且经过该像素位置的光线在所述待渲染三维场景内击中的各点,作为该像素位置对应的击中点;
针对该像素位置对应的每一击中点,基于各光源当前待利用的第一绑定关系和第二绑定关系,以及在所述待渲染三维场景中该击中点的位置与非光源对象的位置之间的关系,确定各光源在该击中点处产生的光影效果;其中,任一光源的第一绑定关系,用于记录所述待渲染三维场景中允许被该光源照亮的非光源对象;任一光源的第二绑定关系,用于记录所述待渲染三维场景中在该光源的影响下允许产生阴影的非光源对象;
基于各光源在该击中点处产生的光影效果,计算该击中点处的像素值;
基于对该像素位置对应的各击中点的像素值进行融合,得到该像素位置处的像素值。
并且上述电子设备还可以包括通信总线和/或通信接口,处理器1002、通信接口、存储器1001通过通信总线完成相互间的通信。
上述电子设备提到的通信总线可以是外设部件互连标准(Peripheral ComponentInterconnect,PCI)总线或扩展工业标准结构(Extended Industry StandardArchitecture,EISA)总线等。该通信总线可以分为地址总线、数据总线、控制总线等。为便于表示,图中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
通信接口用于上述电子设备与其他设备之间的通信。
存储器可以包括随机存取存储器(Random Access Memory,RAM),也可以包括非易失性存储器(Non-Volatile Memory,NVM),例如至少一个磁盘存储器。可选的,存储器还可以是至少一个位于远离前述处理器的存储装置。
上述的处理器可以是通用处理器,包括中央处理器(Central Processing Unit,CPU)、网络处理器(Network Processor,NP)等;还可以是数字信号处理器(Digital SignalProcessor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
在本申请提供的又一实施例中,还提供了一种计算机可读存储介质,该计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现上述任一图像渲染方法的步骤。
在本申请提供的又一实施例中,还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述实施例中任一图像渲染方法。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本申请实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者固态硬盘(Solid StateDisk,SSD)等。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置、电子设备、存储介质及程序产品实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上所述仅为本申请的较佳实施例,并非用于限定本申请的保护范围。凡在本申请的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本申请的保护范围内。
Claims (10)
1.一种图像渲染方法,其特征在于,所述方法包括:
针对待渲染三维场景在观测视点下的待渲染图像中的每一像素位置,基于光束投射法,确定以所述观测视点为起点且经过该像素位置的光线在所述待渲染三维场景内击中的各点,作为该像素位置对应的击中点;
针对该像素位置对应的每一击中点,基于各光源当前待利用的第一绑定关系和第二绑定关系,以及在所述待渲染三维场景中该击中点的位置与非光源对象的位置之间的关系,确定各光源在该击中点处产生的光影效果;其中,任一光源的第一绑定关系,用于记录所述待渲染三维场景中允许被该光源照亮的非光源对象;任一光源的第二绑定关系,用于记录所述待渲染三维场景中在该光源的影响下允许产生阴影的非光源对象;
基于各光源在该击中点处产生的光影效果,计算该击中点处的像素值;
基于对该像素位置对应的各击中点的像素值进行融合,得到该像素位置处的像素值。
2.根据权利要求1所述的方法,其特征在于,所述针对该像素位置对应的每一击中点,基于各光源当前待利用的第一绑定关系和第二绑定关系,以及在所述待渲染三维场景中该击中点的位置与非光源对象的位置之间的关系,确定各光源在该击中点处产生的光影效果,包括:
对于该像素位置对应的每一击中点,针对每一光源,在该击中点位于所述待渲染三维场景中第一非光源对象上面向该光源的一侧,且该光源当前待利用的第一绑定关系中未记录有所述第一非光源对象的对象标识的情况下,确定该光源在该击中点处不产生光影效果;
在该击中点未位于所述待渲染三维场景中非光源对象上的情况下,或者,在该击中点位于所述第一非光源对象上面向该光源的一侧,且该光源当前待利用的第一绑定关系中记录有所述第一非光源对象的对象标识的情况下,确定以该击中点为起点且指向该光源的第一测试射线,是否经过所述待渲染三维场景中除所述第一非光源对象以外的其他非光源对象;
在所述第一测试射线未经过除所述第一非光源对象以外的其他非光源对象的情况下,确定该光源在该击中点处产生的光影效果为:该光源照亮该击中点;
在所述第一测试射线经过除所述第一非光源对象以外的其他非光源对象的情况下,基于该光源当前待利用的第二绑定关系,确定该光源在该击中点处产生的光影效果。
3.根据权利要求2所述的方法,其特征在于,所述基于该光源当前待利用的第二绑定关系,确定该光源在该击中点处产生的光影效果,包括:
在所述第一测试射线经过除所述第一非光源对象以外的其他非光源对象的情况下,若该其他的非光源对象中存在对象标识属于该光源当前待利用的第二绑定关系的第二非光源对象,确定该光源在该击中点处产生的光影效果为:在该光源的影响下,所述第二非光源对象在该击中点处产生阴影;
若该其他的非光源对象中不存在所述第二非光源对象,确定该光源在该击中点处产生的光影效果为:该光源照亮该击中点。
4.根据权利要求1所述的方法,其特征在于,一个光源在一个击中点处产生的光影效果为:该光源照亮该击中点,或者,在该光源的影响下,以该击中点为起点且指向该光源的射线经过的非光源对象在该击中点处产生阴影;
所述基于各光源在该击中点处产生的光影效果,计算该击中点处的像素值,包括:
基于各光源在该击中点处产生的光影效果,以及该击中点的属性信息,通过预设着色模型计算该击中点处的像素值;其中,该击中点的属性信息包括:在所述待渲染三维场景中,该击中点的颜色和材质。
5.根据权利要求1所述的方法,其特征在于,在针对该像素位置对应的每一击中点,基于各光源当前待利用的第一绑定关系和第二绑定关系,以及在所述待渲染三维场景中该击中点的位置与非光源对象的位置之间的关系,确定各光源在该击中点处产生的光影效果之前,所述方法还包括:
获取各光源初始的第一绑定关系和第二绑定关系;
当接收到用于指示使所述待渲染三维场景中的第一指定光源照亮待调整光影效果的第三非光源对象的第一指令时,将所述第三非光源对象的对象标识添加至所述第一指定光源初始的第一绑定关系中,得到所述第一指定光源当前待利用的第一绑定关系;
当接收到用于指示使所述待渲染三维场景中的第二指定光源不照亮待调整光影效果的第四非光源对象的第二指令时,将所述第四非光源对象的对象标识从所述第二指定光源初始的第一绑定关系中删除,得到所述第二指定光源当前待利用的第一绑定关系;
当接收到用于指示使在所述待渲染三维场景中的第三指定光源的影响下,第五非光源对象在待调整光影效果的第六非光源对象处产生阴影的第三指令时,将所述第五非光源对象的对象标识添加至所述第三指定光源初始的第二绑定关系中,得到所述第三指定光源当前待利用的第二绑定关系;
当接收到用于指示使在所述待渲染三维场景中的第四指定光源的影响下,第七非光源对象在待调整光影效果的第八非光源对象处不产生阴影的第四指令时,将所述第七非光源对象的对象标识从所述第四指定光源初始的第二绑定关系中删除,得到所述第四指定光源当前待利用的第二绑定关系。
6.根据权利要求1-5任一项所述的方法,其特征在于,任一光源的第一绑定关系为空表示:所述待渲染三维场景中所有非光源对象均允许被该光源照亮;任一光源的第二绑定关系为空表示:所述待渲染三维场景中所有非光源对象在该光源的影响下均允许产生阴影。
7.一种图像渲染装置,其特征在于,所述装置包括:
击中点确定模块,用于针对待渲染三维场景在观测视点下的待渲染图像中的每一像素位置,基于光束投射法,确定以所述观测视点为起点且经过该像素位置的光线在所述待渲染三维场景内击中的各点,作为该像素位置对应的击中点;
第一确定模块,用于针对该像素位置对应的每一击中点,基于各光源当前待利用的第一绑定关系和第二绑定关系,以及在所述待渲染三维场景中该击中点的位置与非光源对象的位置之间的关系,确定各光源在该击中点处产生的光影效果;其中,任一光源的第一绑定关系,用于记录所述待渲染三维场景中允许被该光源照亮的非光源对象;任一光源的第二绑定关系,用于记录所述待渲染三维场景中在该光源的影响下允许产生阴影的非光源对象;
像素值计算模块,用于基于各光源在该击中点处产生的光影效果,计算该击中点处的像素值;
像素值融合模块,用于基于对该像素位置对应的各击中点的像素值进行融合,得到该像素位置处的像素值。
8.一种电子设备,其特征在于,包括:
存储器,用于存放计算机程序;
处理器,用于执行存储器上所存放的程序时,实现权利要求1-6任一所述的方法。
9.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现权利要求1-6任一所述的方法。
10.一种计算机程序产品,其特征在于,当所述计算机程序产品在计算机上运行时,使得所述计算机执行权利要求1-6任一所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410790319.2A CN118365766B (zh) | 2024-06-19 | 2024-06-19 | 图像渲染方法、装置、电子设备、存储介质及程序产品 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410790319.2A CN118365766B (zh) | 2024-06-19 | 2024-06-19 | 图像渲染方法、装置、电子设备、存储介质及程序产品 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN118365766A true CN118365766A (zh) | 2024-07-19 |
CN118365766B CN118365766B (zh) | 2024-08-30 |
Family
ID=91886076
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202410790319.2A Active CN118365766B (zh) | 2024-06-19 | 2024-06-19 | 图像渲染方法、装置、电子设备、存储介质及程序产品 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN118365766B (zh) |
Citations (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2008073798A2 (en) * | 2006-12-08 | 2008-06-19 | Mental Images Gmbh | Computer graphics shadow volumes using hierarchical occlusion culling |
CA2630654A1 (en) * | 2007-05-08 | 2008-11-08 | Dreamworks Animation Llc | System and method for rendering computer graphics utilizing a shadow illuminator |
CN102467752A (zh) * | 2010-11-05 | 2012-05-23 | 上海威塔数字科技有限公司 | 一种物理实时渲染三维场景的方法及系统 |
US8872824B1 (en) * | 2010-03-03 | 2014-10-28 | Nvidia Corporation | System, method, and computer program product for performing shadowing utilizing shadow maps and ray tracing |
CN109658494A (zh) * | 2019-01-07 | 2019-04-19 | 北京达美盛科技有限公司 | 一种在三维可视化图形中的阴影渲染方法 |
CN111292405A (zh) * | 2020-02-06 | 2020-06-16 | 腾讯科技(深圳)有限公司 | 一种图像渲染的方法以及相关装置 |
CN112419472A (zh) * | 2019-08-23 | 2021-02-26 | 南京理工大学 | 一种基于虚拟阴影图的增强现实实时阴影生成方法 |
CN113205586A (zh) * | 2021-04-19 | 2021-08-03 | Oppo广东移动通信有限公司 | 图像处理方法及装置、电子设备、计算机可读存储介质 |
US11232628B1 (en) * | 2020-11-10 | 2022-01-25 | Weta Digital Limited | Method for processing image data to provide for soft shadow effects using shadow depth information |
WO2023273115A1 (zh) * | 2021-06-28 | 2023-01-05 | 完美世界(北京)软件科技发展有限公司 | 阴影效果的渲染方法、装置、设备、程序和可读介质 |
CN115619839A (zh) * | 2021-07-14 | 2023-01-17 | 上海米哈游璃月科技有限公司 | 一种阴影调整方法、装置、设备及存储介质 |
CN115797539A (zh) * | 2022-10-24 | 2023-03-14 | 网易(杭州)网络有限公司 | 阴影效果的渲染方法、装置和电子设备 |
CN115830208A (zh) * | 2023-01-09 | 2023-03-21 | 腾讯科技(深圳)有限公司 | 全局光照渲染方法、装置、计算机设备和存储介质 |
CN115859662A (zh) * | 2022-12-19 | 2023-03-28 | 北京航空航天大学 | 一种裸眼光场3d显示仿真方法 |
-
2024
- 2024-06-19 CN CN202410790319.2A patent/CN118365766B/zh active Active
Patent Citations (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2008073798A2 (en) * | 2006-12-08 | 2008-06-19 | Mental Images Gmbh | Computer graphics shadow volumes using hierarchical occlusion culling |
CA2630654A1 (en) * | 2007-05-08 | 2008-11-08 | Dreamworks Animation Llc | System and method for rendering computer graphics utilizing a shadow illuminator |
US8872824B1 (en) * | 2010-03-03 | 2014-10-28 | Nvidia Corporation | System, method, and computer program product for performing shadowing utilizing shadow maps and ray tracing |
CN102467752A (zh) * | 2010-11-05 | 2012-05-23 | 上海威塔数字科技有限公司 | 一种物理实时渲染三维场景的方法及系统 |
CN109658494A (zh) * | 2019-01-07 | 2019-04-19 | 北京达美盛科技有限公司 | 一种在三维可视化图形中的阴影渲染方法 |
CN112419472A (zh) * | 2019-08-23 | 2021-02-26 | 南京理工大学 | 一种基于虚拟阴影图的增强现实实时阴影生成方法 |
CN111292405A (zh) * | 2020-02-06 | 2020-06-16 | 腾讯科技(深圳)有限公司 | 一种图像渲染的方法以及相关装置 |
US11232628B1 (en) * | 2020-11-10 | 2022-01-25 | Weta Digital Limited | Method for processing image data to provide for soft shadow effects using shadow depth information |
CN113205586A (zh) * | 2021-04-19 | 2021-08-03 | Oppo广东移动通信有限公司 | 图像处理方法及装置、电子设备、计算机可读存储介质 |
WO2023273115A1 (zh) * | 2021-06-28 | 2023-01-05 | 完美世界(北京)软件科技发展有限公司 | 阴影效果的渲染方法、装置、设备、程序和可读介质 |
CN115619839A (zh) * | 2021-07-14 | 2023-01-17 | 上海米哈游璃月科技有限公司 | 一种阴影调整方法、装置、设备及存储介质 |
CN115797539A (zh) * | 2022-10-24 | 2023-03-14 | 网易(杭州)网络有限公司 | 阴影效果的渲染方法、装置和电子设备 |
CN115859662A (zh) * | 2022-12-19 | 2023-03-28 | 北京航空航天大学 | 一种裸眼光场3d显示仿真方法 |
CN115830208A (zh) * | 2023-01-09 | 2023-03-21 | 腾讯科技(深圳)有限公司 | 全局光照渲染方法、装置、计算机设备和存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN118365766B (zh) | 2024-08-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11113830B2 (en) | Method for generating simulated point cloud data, device, and storage medium | |
US7479960B2 (en) | Object visibility control for ray tracing | |
CN111340928B (zh) | 一种结合光线跟踪的Web端实时混合渲染方法、装置及计算机设备 | |
KR102223064B1 (ko) | 영상 처리 장치 및 방법 | |
WO2024148928A1 (zh) | 全局光照渲染方法、装置、计算机设备和存储介质 | |
CN102467752A (zh) | 一种物理实时渲染三维场景的方法及系统 | |
US20090046099A1 (en) | Real-time display system | |
CN111467801B (zh) | 模型消隐方法及装置、存储介质及电子设备 | |
CN110503581B (zh) | 基于Unity3D的可视化培训系统 | |
CN111870952B (zh) | 一种高度图生成方法、装置、设备及存储介质 | |
CN110704915A (zh) | 视线分析方法、装置、计算机设备和存储介质 | |
US6366283B1 (en) | Generating image data | |
CN116228960A (zh) | 虚拟博物馆展示系统的构建方法、构建系统和展示系统 | |
CN115908716A (zh) | 虚拟场景灯光渲染方法、装置、存储介质及电子设备 | |
CN118365766B (zh) | 图像渲染方法、装置、电子设备、存储介质及程序产品 | |
US11625900B2 (en) | Broker for instancing | |
CN117095150A (zh) | 一种视野自由度分析方法及装置 | |
US11487408B1 (en) | Method for associating production elements with a production approach | |
CN113470161B (zh) | 虚拟环境中容积云的光照确定方法、相关设备及存储介质 | |
US20230325908A1 (en) | Method of providing interior design market platform service using virtual space content data-based realistic scene image and device thereof | |
KR20220164441A (ko) | 그래픽 프로세싱 | |
CN115374520A (zh) | 基于虚拟场景的公共区域整体风格变换系统和方法 | |
CN116740255A (zh) | 渲染处理方法、装置、设备以及介质 | |
CN114821010A (zh) | 虚拟场景的处理方法及装置、存储介质、电子设备 | |
CN113221378A (zh) | 一种在unity中构建自动驾驶仿真测试场景的方法 |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |