一种用于渲染的方法、设备和计算机可读存储介质
文献发布时间:2023-06-19 10:38:35
技术领域
本申请涉及图像处理领域,具体而言,涉及一种用于渲染的方法、设备和计算机可读存储介质。
背景技术
在当今的游戏中为表现出一个好的渲染效果和艺术表达会引入大量的透明物体和特效。而在引入透明物体和特效的同时就引入了一个渲染排序的问题。在处理透明混合物体的渲染时,一个排序前后错误会造成渲染效果很大的差别。
在现有的游戏中为了解决透明排序问题一般是使用距离排序,具体的,首先计算出现有透明物体、特效中各个物体离相机的距离,然后按照距离大小按照降序排序,先绘制距离远的物体,再绘制近处的透明物体,这样就能使得透明物体和特效中的各物体按照正确的绘制顺序混合,画出正确的效果。
按照上述固定的渲染方法对常规效果可以正常渲染,但是难以满足某些特殊效果的渲染需求,因此如何满足特殊效果的渲染需求成为亟待解决的问题。
发明内容
本申请实施例的目的在于提供一种用于渲染的方法、设备和计算机可读存储介质,能够满足某些特殊效果的渲染需求。
第一方面,本申请实施例提供一种用于渲染的方法,包括:获取待渲染的多个物体,其中,所述多个物体包括特效内的至少两个物体;确定所述多个物体分别到观察者的距离值,其中,所述至少两个物体中每个物体到所述观察者的距离值为所述每个物体与所述特效的距离偏移值与所述特效到所述观察者的距离值之和;按照所述多个物体对应的多个距离值由大到小的顺序对所述多个物体进行渲染。
在上述实现过程中,在特效内的各透明物体的距离排序中引入距离偏移值,将该特效到观察者的距离作为该特效内部所有透明物体到观察者的基本距离,在此基础上,叠加各透明物体的距离偏移值,得到该特效内各透明物体到观察者的最终距离值,将多个透明物体按最终距离值进行渲染,从而能够实现在保持与其他物体距离排序基础上,在任何角度下特效内的透明物体都能按照需求的渲染顺序进行渲染。
结合第一方面,在一种实施方式中,所述方法还包括:获取所述至少两个物体的渲染排序顺序需求;根据所述至少两个物体的渲染排序顺序需求确定所述至少两个物体中每个物体与所述特效的距离偏移值,其中,所述至少两个物体中渲染排序顺序在前的物体的距离偏移值大于渲染排序顺序在后的物体的距离偏移值。
在上述实现过程中,将渲染排序顺序在前的物体的距离偏移值大于渲染排序顺序在后的物体的距离偏移值,从而能够实现各透明物体按照需求的渲染顺序进行渲染。
结合第一方面,在另一种实施方式中,所述每个物体与所述特效的距离偏移值是指所述每个物体到所述特效的中心的距离值,所述特效到所述观察者的距离值是指所述特效的中心到所述观察者的距离值。
在上述实现过程中,在各特效内的透明物体的距离排序中引入距离偏移值,从而为特效内各透明物体的渲染排序中引入差距,从而实现特效内各透明物体按照需求顺序进行渲染。
结合第一方面,在另一种实施方式中,所述至少两个物体为透明物体。
在上述实现过程中,特效中的各物体为透明物体,从而将特效中的各物体进行渲染排序。
第二方面,本申请实施例提供了一种用于渲染的设备,包括:信息获取单元,用于获取待渲染的多个物体,其中,所述多个物体包括特效内的至少两个物体;所述信息获取单元还用于确定所述多个物体分别到观察者的距离值,其中,所述至少两个物体中每个物体到所述观察者的距离值为所述每个物体与所述特效的距离偏移值与所述特效到所述观察者的距离值之和;处理单元,用于按照所述多个物体对应的多个距离值由大到小的顺序对所述多个物体进行渲染。
结合第二方面,在一种实施方式中,所述信息获取单元还用于:获取所述至少两个物体的渲染排序顺序需求;根据所述至少两个物体的渲染排序顺序需求确定所述至少两个物体中每个物体与所述特效的距离偏移值,其中,所述至少两个物体中渲染排序顺序在前的物体的距离偏移值大于渲染排序顺序在后的物体的距离偏移值。
结合第二方面,在另一种实施方式中,所述每个物体与所述特效的距离偏移值是指所述每个物体到所述特效的中心的距离值,所述特效到所述观察者的距离值是指所述特效的中心到所述观察者的距离值。
结合第二方面,在另一种实施方式中,所述至少两个物体为透明物体。
第三方面,本申请实施例提供一种用于渲染的设备,包括:处理器、存储器和总线,所述处理器通过所述总线与所述存储器相连,所述存储器存储有计算机可读取指令,当所述计算机可读取指令由所述处理器执行时,运行如上述第一方面提供的所述方法中的步骤。
第四方面,本申请实施例提供一种可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被服务器执行时实现如上述第一方面提供的所述方法中的步骤。
本申请的其他特征和优点将在随后的说明书阐述,并且,部分地从说明书中变得显而易见,或者通过实施本申请实施例了解。本申请的目的和其他优点可通过在所写的说明书、权利要求书、以及附图中所特别指出的结构来实现和获得。
附图说明
为了更清楚地说明本申请实施例的技术方案,下面将对本申请实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本申请的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1为本申请实施例提供的一种用于渲染的方法流程图;
图2为本申请实施例提供一种用于渲染的设备结构框图;
图3为本申请实施例提供的一种用于渲染的设备结构示意图。
具体实施方式
下面将结合本申请实施例中附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本申请实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本申请的实施例的详细描述并非旨在限制要求保护的本申请的范围,而是仅仅表示本申请的选定实施例。基于本申请的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本申请保护的范围。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。同时,在本申请的描述中,术语“第一”、“第二”等仅用于区分描述,而不能理解为指示或暗示相对重要性。
在现有的游戏中为了解决透明排序问题一般是使用距离排序,具体的,首先计算出现有透明物体、特效中各个物体离相机的距离,然后按照距离大小按照降序排序,先绘制距离远的物体,再绘制近处的透明物体,这样就能使得透明物体和特效中的各物体按照正确的绘制顺序混合,画出正确的效果。
按照上述固定的渲染方法对常规效果可以正常渲染,但是难以满足一些特殊效果的渲染需求。
例如,在同一个特效内部,无论在任何角度看,A物体都在B物体之前渲染,又能满足和其它物体之间的距离排序。需要特效中A物体任何时候都要在B物体之前绘制,当在某一个视角下,A物体比B物体离相机远,能够得到正确的渲染效果;那相机在相反位置时那么B物体肯定就比A物体离相机远,那么就会得到一个错误的渲染效果。
鉴于上述问题,本申请实施例提供了一种用于渲染的方法,能够满足在同一个特效内部,无论在任何角度看,A物体都在B物体之前渲染,又能满足和其它物体之间的距离排序。
下面结合图1描述本申请实施例的用于渲染的方法,结合图2和图3描述本申请实施例用于渲染的设备。
请参照图1,图1为本申请实施例提供的一种用于渲染的方法流程图,该方法可以应用于图2所示的用于渲染的设备200,具体的,如图1所示的方法包括:
110,获取待渲染的多个物体,其中,所述多个物体包括特效内的至少两个物体。
至少两个物体为透明物体。
需要说明的是,在本申请实施例中,特效可以认为是一个盒子,特效内包裹着多个透明物体,这些透明物体被称为特效内的透明物体。
需要说明的是,在本申请实施例中,待渲染的多个物体可以是指只有特效内的多个物体,也可以是指特效内的多个物体与特效外的多个物体的总称,但本申请实施例并不限于此。
需要说明的是,在本申请实施例中,待渲染的多个物体可以为透明物体,也可以为半透明物体,也可以为不透明物体,也可以为透明物体与半透明物体的组合,也可以为透明物体与不透明物体的组合,但本申请实施例并不限于此。
需要说明的是,在本申请实施例中,特效内至少包括两个物体,且特效内的至少两个物体都可以为透明物体,也可以为透明物体与半透明物体的组合,也可以为透明物体与不透明物体的组合,但本申请实施例并不限于此。
作为一种实施例,获取待渲染的多个物体,其中,待渲染的多个物体包括特效内的至少两个物体。此处待渲染的多个物体是指特效内的多个物体与特效外的多个物体的总称,且特效内的多个物体与特效外的多个物体都为透明物体。
为了便于区分,此处待渲染的两个透明物体分别用A和B表示,特效用E表示,特效内的两个透明物体分别用C和D表示。
需要说明的是,此处仅选取A、B两个透明物体作为一种实施例,本申请实施例中可以有三个透明物体,也可以有四个透明物体,但本申请并不限于此。此处仅选取特效内的C、D两个透明物体,本申请实施例中特效内可以有三个透明物体,也可以有四个透明物体,但本申请并不限于此。
120,确定所述多个物体分别到观察者的距离值,其中,所述至少两个物体中每个物体到所述观察者的距离值为所述每个物体与所述特效的距离偏移值与所述特效到所述观察者的距离值之和。
获取至少两个物体的渲染排序顺序需求;
根据至少两个物体的渲染排序顺序需求确定至少两个物体中每个物体与特效的距离偏移值,其中,至少两个物体中渲染排序顺序在前的物体的距离偏移值大于渲染排序顺序在后的物体的距离偏移值。
每个物体与特效的距离偏移值是指每个物体到特效的中心的距离值,特效到观察者的距离值是指特效的中心到观察者的距离值。
需要说明的是,在本申请实施例中,每个物体与特效的距离偏移值也可以是指每个物体到特效的边缘的距离值,特效到观察者的距离值是指特效的边缘到观察者的距离值;每个物体与特效的距离偏移值也可以是指每个物体到特效的指定点的距离值,特效到观察者的距离值是指特效的该指定点到观察者的距离值,但本申请并不限于此。
作为一种实施例,确定上述多个物体分别到观察者的距离值,其中,特效内的至少两个物体中每个物体到观察者的距离值为每个物体与特效的距离偏移值与特效到观察者的距离值之和。
需要说明的是,上述观察者可以是相机,也可以是其他拍摄装置或观察装置,本申请实施例不限于此。
作为一种实施例,此处的观察者为相机(此处的视角为第一视角),确定上述多个物体分别到相机的距离值,其中,透明物体A、B到相机的距离值分别为10m、30m,特效E到相机的距离值为15m,特效内的两个透明物体C和D此时到相机的距离值分别为16m、14m。
现在有特殊的显示需求,无论在任何角度看C物体都在D物体之前渲染,又要满足和其它物体之间的距离排序。
按照现有的渲染方法,计算出现有透明物体、特效中各个透明物体离相机的距离,按照距离大小按照降序排序,先绘制距离远的物体,再绘制近处的透明物体。这样就能使得透明物体和特效中的各透明物体按照正确的绘制顺序混合,画出正确的效果。
按照上述规则,相机在第一视角时,上述各透明物体的渲染顺序为:B、C、D、A,此时能满足C物体在D物体之前渲染。
但当相机在相反方向观察各物体时(此处的视角为第二视角),A、B、C、D、E的距离变为30m、10m、14m、16m和15m,按照上述距离的绘制顺序是A、D、C、B,不满足需求的渲染顺序是A、C、D、B,即,不满足C物体在D物体之前渲染。
为了使任何相机角度下C物体都在D物体之前绘制的渲染排序,且又要满足和其它物体之间的距离排序。此时,C、D物体到观察者的距离值为每个物体的距离偏移值与特效到观察者的距离值之和。
即,C物体到观察者的距离值为特效E到观察者的距离值加上C物体的距离偏移值;
D物体到观察者的距离值为特效E到观察者的距离值加上D物体的距离偏移值;
假设各透明物体的距离偏移值时,渲染排序顺序在前的物体的距离偏移值大于渲染排序顺序在后的物体的距离偏移值。
在上述实现过程中,在各特效内的透明物体的距离排序中引入距离偏移值,从而为特效内各透明物体的渲染排序中引入差距,从而实现特效内各透明物体按照需求顺序进行渲染。
需要说明的是,C、D物体的距离偏移不超出包裹着C、D的特效E的范围。
作为一种实施例,假设C物体的距离偏移值为1m,D物体的距离偏移值为0m,但本申请实施例并不限于此。
此时,C物体到观察者的距离值为15m+1m=16m,D物体到观察者的距离值为15m+0m=15m。
进一步地,当相机在第一视角时,A、B、C、D到相机的距离分别为:10m、30m、16m、15m;当相机在第一视角时,A、B、C、D到相机的距离分别为:30m、10m、16m、15m。
在上述实现过程中,将渲染排序顺序在前的物体的距离偏移值大于渲染排序顺序在后的物体的距离偏移值,从而能够实现各透明物体按照需求的渲染顺序进行渲染。
130,按照所述多个物体对应的多个距离值由大到小的顺序对所述多个物体进行渲染。
根据现有的渲染方法,将各透明物体到相机的距离值按照从大到小排序,对各个透明物体进行渲染,得到的需求的渲染效果。
将上述各透明物体按照从大到小排序,当相机在第一视角时,各透明物体的渲染绘制顺序是B、C、D、A,满足C物体在D物体之前渲染,且能够满足与A、B的距离排序;
当相机在第二视角时,各透明物体的渲染绘制顺序A、C、D、B,满足C物体在D物体之前渲染,且能够满足与A、B的距离排序。
在上述实现过程中,将特效作为一个黑盒,特效内部的所有物体采用特效到相机的距离作为物体到相机的距离基本值,然后,在这个基础上叠加各自的距离偏移值作为最终的排序距离,并依据最终的排序距离进行排序渲染透明物体,从而实现了在在保持与其他物体距离排序基础上,任何相机角度下C物体都在D物体之前绘制的渲染排序问题,进一步实现更好的渲染效果。
上文结合图1描述了本申请实施例的用于渲染的方法,下面结合图2和图3描述本申请实施例用于渲染的设备。
请参照图2,图2为本申请实施例一种用于渲染的设备结构框图,图2所提供的用于渲染的设备200与图1所述的方法对应,包括能够实现图1所述方法的各个功能模块。
在一种实施方式中,图2所提供的用于渲染的设备200包括:
信息获取单元210和处理单元220;
信息获取单元,用于获取待渲染的多个物体,其中,所述多个物体包括特效内的至少两个物体;
上述至少两个物体为透明物体。
信息获取单元还用于确定所述多个物体分别到观察者的距离值,其中,至少两个物体中每个物体到观察者的距离值为每个物体与特效的距离偏移值与特效到观察者的距离值之和;
信息获取单元还用于:
获取至少两个物体的渲染排序顺序需求;
根据至少两个物体的渲染排序顺序需求确定至少两个物体中每个物体与特效的距离偏移值,其中,至少两个物体中渲染排序顺序在前的物体的距离偏移值大于渲染排序顺序在后的物体的距离偏移值。
每个物体与特效的距离偏移值是指每个物体到特效的中心的距离值,特效到观察者的距离值是指特效的中心到所述观察者的距离值。
处理单元,用于按照多个物体对应的多个距离值由大到小的顺序对所述多个物体进行渲染。
需要说明的是,图2所提供的用于渲染的设备200,能够实现图1方法实施例中涉及渲染的各个过程。用于渲染的设备200中的各个模块的操作和/或功能,分别为了实现图1中的方法实施例中的相应流程。具体可参见上述方法实施例中的描述,为避免重复,此处适当省略详细描述。
请参照图3,图3为本申请实施例提供的一种用于渲染的设备结构示意图,如图3所示的用于渲染的设备300可以包括:至少一个处理器310,该处理器310可以是CPU(中央处理器,Central Processing Unit),也可以是GPU(图形处理器,Graphics Processing Unit),也可以是CPU和GPU,本申请实施例不限于此,至少一个通信接口320,至少一个存储器330和至少一个通信总线340。其中,通信总线340用于实现这些组件直接的连接通信。其中,本申请实施例中设备的通信接口320用于与其他节点设备进行信令或数据的通信。存储器330可以是高速RAM(随机存取存储器,random access memory)存储器,也可以是非不稳定的存储器(non-volatile memory),例如至少一个磁盘存储器。存储器330可选的还可以是至少一个位于远离前述处理器的存储装置。存储器330中存储有计算机可读取指令,当所述计算机可读取指令由所述处理器310执行时,用于渲染的设备执行图1所示方法过程。
本申请实施例提供一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被服务器执行时实现图1所示的方法过程。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统和方法,也可以通过其它的方式实现。以上所描述的系统实施例仅仅是示意性的,例如,所述系统装置的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,又例如,多个装置或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。
另外,作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
以上所述仅为本申请的实施例而已,并不用于限制本申请的保护范围,对于本领域的技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。
- 一种用于渲染的方法、设备和计算机可读存储介质
- 弹幕渲染方法、装置、计算机可读存储介质和计算机设备