掌桥专利:专业的专利平台
掌桥专利
首页

体积光柱渲染方法及其装置、设备、介质、产品

文献发布时间:2023-06-19 19:30:30


体积光柱渲染方法及其装置、设备、介质、产品

技术领域

本申请涉及图像处理技术,尤其涉及一种体积光柱渲染方法及其装置、设备、介质、产品。

背景技术

体积光效果是由光线在潮湿、多烟、多尘的环境中发生散射造成的,即丁达尔现象。体积光的渲染技术是计算机图形学中的重要课题,在3D游戏、增强现实、虚拟现实等领域有广泛的应用。

体积光的渲染方法一般可以分为三大类:1.基于物理的渲染方法;2.基于Billboard的顶点膨胀算法(部分3D游戏,如ShadowGun);3.基于图像后处理的渲染算法。

1.基于物理的渲染方法。此类方法一般需要使用光线步进(Ray Marching)或空间体素划分,计算过程中存在大量的循环迭代。此种方法效果最为逼真,但是对硬件要求高,计算量大,耗时长,所以一般只应用在PC端。

2.基于Billboard的顶点膨胀算法。此方法在发光体上渲染一个预制的网格平面,令顶点沿着法线方向膨胀,制造出发光效果。此方法一般用于发光体固定不动的场景中,效率高,对硬件要求低,但是灵活性差,应用范围窄,如果有3D物体穿越光束,则真实感较差。

3.基于图像后处理的渲染算法。此类方法一般分两步,首先使用图像处理算法,提取图像中的高光部分,然后对高光区域使用镜像模糊(screen blur)算法。此类方法的优点是灵巧简单、效率较高,对于光源在图像中较明确的场景,能实现较为理想的光束效果。缺点是应用场景受限,需要光源(高光部分)在图像中,也无法很好地处理前景物体的遮挡问题。

综上可见,目前常用体积光渲染技术,各有优劣,或对软硬件要求较高,或场景受限,或效果不佳,相关技术仍有提升空间。

发明内容

本申请的目的在于解决上述问题而提供一种体积光柱渲染方法及其相应的装置、设备、非易失性可读存储介质,以及计算机程序产品。

根据本申请的一个方面,提供一种体积光柱渲染方法,包括如下步骤:

获取原始图像的三维场景图;

根据预设光源相对应的光效调节数据构造所述预设光源的体积光柱坐落于所述三维场景图的三维光柱模型;

对所述三维光柱模型进行片元着色,在所述原始图像中渲染出所述体积光柱。

根据本申请的另一方面,提供一种体积光柱渲染装置,包括:

原图获取模块,设置为获取原始图像的三维场景图;

光柱构造模块,设置为根据预设光源相对应的光效调节数据构造所述预设光源的体积光柱坐落于所述三维场景图的三维光柱模型;

着色渲染模块,设置为对所述三维光柱模型进行片元着色,在所述原始图像中渲染出所述体积光柱。

根据本申请的另一方面,提供一种体积光柱渲染设备,包括中央处理器和存储器,所述中央处理器用于调用运行存储于所述存储器中的计算机程序以执行本申请所述的体积光柱渲染方法的步骤。

根据本申请的另一方面,提供一种非易失性可读存储介质,其以计算机可读指令的形式存储有依据所述的体积光柱渲染方法所实现的计算机程序,所述计算机程序被计算机调用运行时,执行该方法所包括的步骤。

根据本申请的另一方面,提供一种计算机程序产品,包括计算机程序/指令,所述计算机程序/指令被处理器执行时实现本申请任意一种实施例中所述方法的步骤。

相对于现有技术,本申请利用预设光源相对应的光效调节数据直接构造所述预设光源的体积光柱的三维光柱模型,将三维光柱模型置于原始图像的三维场景图中,然后对三维光柱模型进行片元着色渲染,获得在所述原始图像基础上生成了预设光源相对应的体积光柱的成像效果,可见,本申请以轻量运算的方式,高效地为原始图像合成出体积光柱图像效果,对软硬件资源要求低,且具有更广泛的场景适应性,其成像效果优良。

附图说明

为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本申请的技术方案的应用环境的网络架构示意图;

图2为本申请的体积光柱渲染方法的一种实施例的流程示意图;

图3为从左到右分别是本申请示例性的原始图像、所述原始图像的三维场景图与法线图;

图4为本申请示例性采用的柱状模型的效果示意图;

图5为本申请根据柱状模型进行变换获得的三维光柱模型的效果示意图;

图6为本申请在示例性的原始图像的基础上合成体积光柱,且基于光强衰减值控制所述体积光柱的生成相对应的效果示意图;

图7为本申请在示例性的原始图像的基础上合成体积光柱,且基于颜色衰减值控制所述体积光柱的生成相对应的效果示意图;

图8为本申请在示例性的原始图像的基础上合成体积光柱,且基于遮挡截断系数控制所述体积光柱的片元着色相对应的效果示意图;

图9为本申请的实施例根据光效调节数据构造三维光柱模型的流程示意图;

图10为本申请的实施例中对三维光柱模型进行片元着色的流程示意图;

图11为本申请示例性的图形用户界面,其中示出用于获取光效调节数据的光效编辑框;

图12为本申请的实施例中基于体积光柱模板获取光效调节数据的流程示意图;

图13为本申请的体积光柱渲染装置的原理框图;

图14为本申请所采用的一种体积光柱渲染设备的结构示意图。

具体实施方式

请参阅图1,本申请一种示例性的应用场景所采用的网络架构,包括终端设备80、媒体服务器81和应用服务器82,所述应用服务器82可用于部署网络直播服务。所述媒体服务器81可用于部署体积光柱渲染服务。所述终端设备80上的用户可以登录直播间应用程序使用所述应用服务器82提供的网络直播服务,接收由媒体服务器转发的直播视频流,将其解码后播放。所述媒体服务器81可运行根据本申请的体积光柱渲染方法编程实现的计算机程序产品,通过所述计算机程序产品的进程执行所述体积光柱渲染方法的步骤,为直播视频流中的图像帧合成体积光柱,使得相应的直播视频流在终端设备80播放时,可以在显示直播视频流的原始图像内容的同时,也能观看到合成到其中的体积光柱所营造的图像效果。

需要指出的是,图1的应用场景仅是给出一种平台化部署的示例,在另外一些示例性的实施例中,本申请的所述计算机程序产品也可以运行于任意具备足够算力的计算机设备中。例如,可以运行于所述终端设备80中,对所接收到的直播视频流提供体积光柱渲染服务,在本地终端为直播视频流的图像帧合成相应的体积光柱。所述的终端设备80可以是各种移动终端,包括但不限于智能手机、平板电脑、笔记本电脑、其他形式的个人计算机等。

本申请的体积光柱渲染方法所适用的业务场景,也不局限于网络直播场景,其可进一步推广到3D游戏、增强现实、虚拟现实等领域相对应的业务场景中,为其中的图像合成体积光柱,使图像内的场景内容更为丰富。

在参考以上揭示的原理的基础上,请参阅图2,根据本申请提供的一种体积光柱渲染方法,在其一个实施例中,包括如下步骤:

步骤S1100、获取原始图像的三维场景图;

所述原始图像的来源,根据本申请所应用的业务场景的不同,可以有不同的来源。例如,所述原始图像可以是取自图片文件、视频文件、内存空间等等任意可供计算机指令调用的来源。

提供所述原始图像的载体应用程序,根据不同的业务场景,也可以有所不同,例如,可以是游戏应用程序、网络直播应用程序、视频播放器,以及其他各种增强现实或虚拟现实的应用程序等。

所述原始图像的表现形式,可以是各种应用程序场景界面的截图、视频流的图像帧、三维模型的渲染结果图像等等任意形式。

所述原始图像的数据格式,可以是二维图像,也可以是三维模型图像。当为二维图像时,可以借助任意一种成熟的三维场景还原技术,还原出其三维场景模型作为三维场景图。所述三维场景模型按照三维顶点数据进行表示,所述三维顶点数据中,包含有多个顶点坐标信息和顶点法线信息。

一种实施例中,在二维图像的基础上还原出三维场景图,可以采用预先训练好的深度学习模型来实现,所述深度学习模型通过大量具有视差效果的样本图像进行学习,习得能够将图像中的二维场景还原出其三维场景相对应的三维顶点数据的能力,从而将所述原始图像输入所述深度学习模型中,便可获得相应的三维场景模型,得到三维场景图。

图3中从左到右分别示例性出原始图像及其三维场景图及其法线图可供参考,后文也将继续以此为示例进行结合说明。

步骤S1200、根据预设光源相对应的光效调节数据构造所述预设光源的体积光柱坐落于所述三维场景图的三维光柱模型;

用于构造体积光柱的光源一般是预先设置的,既可以由系统提供默认设置,例如将其默认定位至原始图像的图像空间范围之内或之外的一个确定位置,也可以是用户预先设置的。基于所述光源的设置,可以获得预设光源的光源位置数据,所述光源位置数据可以表示为所述原始图像的三维场景图中的三维坐标信息。根据所述光源位置数据,便可确定预设光源在所述三维场景图中的目标位置,从而可以该目标位置为基点继续设定其体积光柱。由于所述光源位置数据也会影响光源的体积光柱所处的位置及其所涵盖的区域,因而,所述光源位置数据也可视为一种光效调节数据。

所述光效调节数据,是用于定义预设光源的体积光柱的生成所需的全部信息。一种实施例中,所述光效调节数据除包括所述光源位置数据之外,还可以进一步包含光柱形态数据,所述光柱形态数据可以包括一个或多个属性数据,用于分别控制所述体积光柱的一个形状属性,使得所述体积光柱在所述属性数据的作用下而呈现特定的形态。

在所述光效调节数据的基础上,可以采用一个基础三维模型来应用其中的光柱形态数据中的各个属性数据,实现对所述基础三维模型的形态的修改,使其空间形状得以改变,在其最终定型时,便构造出所述体积光柱的三维光柱模型。同理,所述三维光柱模型也以三维顶点数据的方式进行表示,包括顶点坐标信息和顶点法线信息。

在构造所述三维光柱模型的过程中使用的所述基础三维模型,可以是圆柱状、圆锥状、方柱状等任意便于进行几何变换的规则形状,当需要根据该基础三维模型构造相应的三维光柱模型时,根据相应的体积光柱的光柱形态数据中的各个属性数据,分别对所述基础三维模型的相应属性做几何变换,使所述基础三维模型改变为由所述各个属性数据所定义的形态,从而获得三维光柱模型。

如图4和图5分别示出所述一个作为基础三维模型的柱状模型和对该柱状模型变换而得的三维光柱模型可供参考。

所述三维光柱模型描述了点光源的光路特性,一般呈截顶的圆锥柱状,一个实施例中,其较窄的锥顶定位于所述光源位置数据所确定的目标位置处,其辐射方向朝向前及向下默认设置。当然,其他实施例中,也允许对所述体积光柱的辐射方向做其他方向的设置,或者,将其朝向或其光路传播方向定义在所述光柱形态数据中,作为其中的另一属性数据,以便根据这个属性数据并结合所述光源位置数据所确定的目标位置,综合确定体积光柱的三维光柱模型在原始图像的三维场景图中的三维空间位置。

可见,当预设光源坐落在所述三维场景图中的目标位置得以确定,根据三维光柱模型以及三维场景图各自的三维顶点数据,便可确定其体积光柱的三维光柱模型在所述三维场景图中的三维空间位置,从而完成所述三维光柱模型的顶点着色过程,实现将体积光柱的三维光柱模型渲染到所述三维场景图中。

步骤S1300、对所述三维光柱模型进行片元着色,在所述原始图像中渲染出所述体积光柱。

当在所述三维场景图中确定了所述三维光柱模型的定位后,便可对所述三维光柱模型进行片元着色。主要是通过全部或者按需修改所述三维光柱模型中的各个片元相对应的像素的像素值来实现着色,而对像素值的修改主要是取决于对其中的颜色值的修改。在确定每个片元的颜色值时,可以在预设光源的颜色值的基础上,关联体积光柱的光传播特性确定一个或多个调节系数,利用所述调节系数计算出片元的颜色值,并根据所述颜色值对片元相对应的像素的像素值进行更新,从而对相应片元实现重新着色。

一种实施例中,所述调节系数可以包括光强衰减系数,表现为光强衰减值,其根据片元在所述体积光柱中的光传播长度也即到达所述预设光源的距离来确定,因而,当所述光效调节数据中包含表示光传播长度的属性数据例如光柱长度时,可以利用该属性数据确定出来的三维顶点数据来确定所述的光强衰减值。根据光强衰减值对体积光柱进行片元着色所得的效果图如图6所示,从图6可以看出,体积光柱在光的传播方向上,出现颜色渐淡的效果。

另一实施例中,所述调节系数可以包括颜色衰减系数,表现为颜色衰减值,其根据光源在其中心轴线的径向上的辐射色散效果来确定,因而,当所述光效调节数据包含表示这种辐射色散效果的属性数据时,可以利用该属性数据来确定所述的颜色衰减值。根据颜色衰减值对体积光柱进行片元着色所得的效果图如图7所示,从图7可以看出,体积光柱在光的中心轴线的径向上,出现颜色渐弱的效果。

所述光强衰减值和所述颜色衰减值可以择一用于对相应的片元的颜色值进行更新,也可以共同作用于预设光源的颜色值来确定相应片元的颜色值。当两者共同作用于各个片元时,能根据光传播特性,从光传播方向的光强和光传播横向的色散两个方面联合约束各个片元的颜色渐变关系,可以实现对现实光柱的高仿真效果。

在一些实施例中,当需要对所述三维光柱模型的片元进行着色时,可以根据特定条件来控制是否更新。具体而言,在这些实施例中,所述调节系数可以包括以二值化数值表示的遮挡截断系数,其根据所述三维光柱模型的每个片元在光传播方向上是否被所述三维场景图中的物体模型所遮挡而确定,在片元未被遮挡时将数值表示为1,表示相应的片元需要关联所述光强衰减值和/或所述颜色衰减值而更新其颜色值,在片元被遮挡时将数值表示为0,表示无需对相应的片元进行颜色值的更新。通过关联所述遮挡截断系数来控制片元的颜色值的更新,实际上也就是根据体积光柱与三维场景图中的物体模型的遮挡关系,对所述体积光柱在其光传播方向被遮挡部分进行截断,从而使光传播效果更符合客观世界的真实情形,实现高度仿真的效果。如图8所示,当应用遮挡截断系数控制三维光柱模型的着色时,体积光柱在图8中,在其光传播方向的末端处,被图中物体所正确截断。

当按照以上原理,对所述三维光柱模型中的各个片元完成片元着色后,便完成渲染过程,从而在所述原始图像中产生所述体积光柱。渲染出的原始图像可以输出到终端设备的图形用户界面中显示,也可重新组织为图像文件或视频流或其他图形用户界面,从而为相应的业务场景所提供的原始图像完成体积光柱的合成。

根据以上实施例可知,本申请利用预设光源相对应的光效调节数据直接构造所述预设光源的体积光柱的三维光柱模型,将三维光柱模型置于原始图像的三维场景图中,然后对三维光柱模型进行片元着色渲染,获得在所述原始图像基础上生成了预设光源相对应的体积光柱的成像效果,可见,本申请以轻量运算的方式,高效地为原始图像合成出体积光柱图像效果,对软硬件资源要求低,且具有更广泛的场景适应性,其成像效果优良。

在本申请任意实施例的基础上,获取原始图像的三维场景图,包括:

步骤S1110、获取直播视频流中的图像帧,作为原始图像;

在网络直播服务场景中,直播间内的主播用户所在的终端设备,会启动其摄像单元用于获取环境录像,然后编码为直播视频流,通过网络直播的媒体服务器推送给直播间的观众用户,在观众用户的终端设备中播放显示。

可以在直播视频流传输的任意一个环节,包括主播用户的终端设备、所述媒体服务器、所述观众用户的终端设备中,应用本申请的方法来为所述直播视频流生成体积光柱。

为此,允许由所述主播用户人工设置所述的光效调节数据,当需要应用本申请的方法时,使用所述光效调节数据而为所述直播视频流生成所述的体积光柱。例如:

当需要在主播用户的终端设备为直播视频流生成体积光柱时,可以在主播用户的终端设备中,获取所述摄像单元摄录所得的各个图像帧,将该图像帧作为本申请的原始图像,在原始图像的基础上根据所述光效调节数据生成所述体积光柱后,将其替换原图像帧重构所述的直播视频流,再推送到网络直播间。

当需要在媒体服务器为所述直播视频流生成体积光柱时,可以在媒体服务器中,获取主播用户上传的直播视频流及所述光效调节数据,对所述直播视频流解码后,从图像空间中获取解码所得的各个图像帧,同理将其作为原始图像并根据所述光效调节数据生成相应的体积光柱后,替换原图像帧重新编码成直播视频流推送到观众用户的终端设备中解码播放。

当需要在观众用户的终端设备为所述直播视频流生成体积光柱时,可以在所述观众用户的终端设备下载所述直播视频流及光效调节数据后,对所述直播视频流进行解码,获取解码所得的各个图像帧,将其作为原始图像,并根据所述光效调节数据生成相应的体积光柱后,渲染显示到图像用户界面中。

步骤S1120、根据所述原始图像还原出其中的场景相对应的三维顶点数据,构成所述三维场景图。

为了基于所述原始图像生成体积光柱,需要借助任意一种成熟的三维场景还原技术,例如前文所述的深度学习模型,以所述原始图像为输入,而获得所述原始图像相对应的三维场景图,所述三维场景图中,包括多个物体模型,每个物体模型对应所述原始图像中的一个图像内容,各个物体模型均以三维顶点数据的方式进行表示。

根据以上实施例可知,对于网络直播场景而言,可以应用本申请的方法,将直播视频流中的图像帧作为本申请的原始图像进行体积光柱的合成,从而为直播视频流合成出光效,实现增强现实或虚拟现实的效果,提升网络直播服务的用户体验,而且,由于本申请实现体积光柱合成相对应的方法主要是在三维顶点数据的基础上进行变换,其运算量较低,系统资源占用低,运行高效,适合部署到各种终端设备中。

在本申请任意实施例的基础上,请参阅图9,根据预设光源相对应的光效调节数据构造所述预设光源的体积光柱坐落于所述三维场景图的三维光柱模型,包括:

步骤S1210、获取预设光源的光效调节数据,所述光效调节数据包括光源位置数据和光柱形态数据;

当需要构造体积光柱的三维光柱模型时,需要先调用其相对应的预设光源的光效调节数据。如前所述,所述光效调节数据可以是事先设定的,可经网络传输到达负责执行体积光柱合成的计算机设备,一旦获知所述光效调节数据,便可对其进行调用。

本实施例中,所述光效调节数据包括两类预先给定的数据,即光源位置数据和光柱形态数据。所述光源位置数据用于指示预设的光源在所述原始图像的三维场景图中的目标位置,因而通常可以是一个三维表示的点坐标。所述光柱形态数据,如前所述,用于定义所述光源发光所形成的体积光柱的三维结构,根据所述光柱形态数据可以确定所述体积光柱的三维光柱模型,且可进一步确定所述三维光柱模型中各个片元相对应的多种调节系数,包括光强衰减值和颜色衰减值等。

步骤S1220、根据所述光源位置数据确定所述预设光源相对于所述原始图像的目标位置,将标准的柱状模型定位于该目标位置;

所述光源位置数据所描述的三维空间位置,既可以是在所述原始图像所占据的三维空间范围之内,也可以是在所述原始图像所占据的三维空间范围之外,为此,根据所述光源位置数据确定所述预设光源在所述原始图像的三维场景图中的目标位置,也就确定了所述预设光源在所述三维场景图的三维空间中的空间位置,从而也就实现了对所述预设光源的体积光柱的基础定位,如图4所示。

为了构造所述体积光柱的三维光柱模型,通过顶点着色器,采用一个标准化的柱状模型作为变换出所述三维光柱模型的基础三维模型,将该柱状模型定位于所述目标位置处,以所述目标位置作为所述柱状模型的一个端面的几何中心的位置。为便于运算,所述柱状模型可以采用圆柱状模型。同理,所述柱状模型也以三维顶点数据的方式表示,包含顶点坐标信息和顶点法线信息。

步骤S1230、根据所述光柱形态数据,对所述柱状模型的三维顶点数据进行变换,获得所述体积光柱坐落于所述三维场景图的三维光柱模型。

在所述柱状模型的基础上构造三维光柱模型,可以借助顶点着色器,利用所述光柱形态数据来实现。所述光柱形态数据所包括各种属性数据,在一个实施例中,可以包含描述所述预设光源的光传播路径的属性数据,或者光传播路径的属性数据也可以是默认设置的,例如默认设置为朝图像的左下或右下45°角的方向传播。无论如何,利用所述属性数据,可以定义出所述体积光柱的光传播方向,由此,利用所述光源位置数据和所述光传播路径的属性数据,便可以确定出所述整个体积光柱的姿态,也就确定出所述柱状模型的中心轴线的具体方位。

在其他实施例中,所述光柱形态数据的属性数据中,还可以包括光柱张角和/或光柱长度,针对光柱张角、光柱长度,可以按照如下相应的步骤,对所述柱状模型做几何变换,以便获得所述体积光柱的三维光柱模型,具体如下:

针对所述光柱形态数据中的光柱张角,采用步骤S1231、根据所述光柱形态数据中的光柱张角对坐落于所述目标位置的柱状模型的三维顶点数据进行形变处理,获得锥状光柱的三维顶点数据;

由于点光源的体积光柱具有喇叭状的辐射特性,因而可以使用光柱张角作为其属性数据之一来定义。所述光柱张角,顾名思义,决定了所述体积光柱相对应的截顶圆锥体的开口角度。因而,根据所述光柱张角,在所述柱状模型坐落于三维场景图中的目标位置的基础上,以所述柱状模型的三维顶点数据为基础,对所述柱状模型的光传播方向的远端开口进行径向的拉伸变换,使拉伸后的截顶圆锥体的开口角度与所述光柱张角一致,获得一个锥状光柱的三维顶点数据。

针对所述光柱形态数据中的光柱长度,采用步骤S1232、根据所述光柱形态数据中的光柱长度对所述锥状光柱的三维顶点数据进行拉伸处理,获得所述体积光柱以三维顶点数据描述的所述三维光柱模型。

光柱长度决定了体积光柱的三维光柱模型所占的跨度,其对应的性质,是点光源能够传播多远,根据这个特性,在所述锥状光柱的三维顶点数据,或者当未执行步骤S1231时在所述柱状模型的三维顶点数据的基础上,根据所述光柱长度进行拉伸变换处理,获得三维光柱模型的三维顶点数据,所述三维光柱模型相对于所述锥状模型或柱状模型,实现了沿光传播方向上的长度拉伸效果,决定了体积光柱的最大光传播长度。

经过以上过程,便完成对三维光柱模型的构造,如图5所示,从而确定了体积光柱在所述原始图像的三维场景图中的位置和姿态以及空间体积等信息,后续只需要对所述三维光柱模型进行渲染,便可生成相应的体积光柱图像。

根据以上实施例可知,在构造体积光柱的三维光柱模型的过程中,仅借助光效调节数据,基于几何定位和变换操作,便可实现所述三维光柱模型的构造,此类操作的运算量低,运算效率高,且不局限光源所处的空间位置,使得根据本申请的方法编程实现的计算机程序产品可以不受软硬件资源的限制,可以部署到各类计算机设备中,并且能够拓展至多种业务场景。

在本申请任意实施例的基础上,请参阅图10,对所述三维光柱模型进行片元着色,在所述原始图像中渲染出所述体积光柱,包括:

步骤S1310、根据所述三维光柱模型的三维顶点数据,确定所述三维光柱模型所涵盖的各个片元到所述预设光源的光传播相对应的光强衰减值;

所述三维光柱模型在所述三维场景图所涵盖的片元,特别是所述三维光柱模型的前景部分所涵盖的片元,可以通过片元着色实现将相应的体积光柱的图像内容合成到所述原始图像中。对片元着色时,可以根据相应片元到达预设光源的光传播距离的远近来调节相应片元的颜色值。由于光柱形态数据中给出了光柱长度,而光柱长度决定了体积光柱的三维光柱模型的轴向长度,从而决定片元到所述预设光源的距离,因而,可以在根据所述光柱形态数据中的光柱长度来确定出三维光柱模型后,根据三维光柱模型的三维顶点数据,计算所述片元到达预设光源的距离,然后根据该距离确定相应的光强衰减值,根据该光强衰减值来确定需要着色的片元的颜色值。

一种实施例中,采用如下公式来为每个片元确定所述光强衰减值Attenuation:

其中,z为塔三维光柱模型的某个三角顶点到所述预设光源所在的目标位置的距离。

在为各个所述的片元计算其光强衰减值时,既可以在片元着色器中计算,也可以是顶点着色器中运算,在顶点着色器中进行统一运算,可以获得更高的运算效率。

步骤S1320、根据所述光柱形态数据中的光柱边缘硬度确定所述三维光柱模型所涵盖的各个片元的颜色衰减值;

所述光柱形态数据中还可以包含光柱边缘硬度作为所述体积光柱的属性数据之一,其用于描述体积光柱中光从中心轴线向其径向色散的色散效果调节系数,可以理解为光路横向的颜色值的控制系数。

根据菲涅尔方程(The Fresnel Equation)的Fresnel-Schlick近似公式:

R(θ)=R

其中,θ为入射光的角度;R

基础反射率R

在所述菲涅尔方程的公式的基础上做变换,可获得如下变换公式:

F=R

其中,N为片元顶点的法线向量,V为视角向量,ρ为控制边缘硬度的调节系数,即所述光柱边缘硬度。

可见,根据菲涅尔方程的变换公式,可以计算出所述体积光柱的三维光柱模型中的各个片元的菲涅尔项作为颜色衰减值F,用于控制每个片元的颜色值的更新。片元的光柱边缘硬度作为光柱形态数据的属性数据之一可以预先设定,通过调整光柱边缘硬度,可以实现柔光调节。

步骤S1330、将所述预设光源的颜色值关联所述光强衰减值和颜色衰减值确定片元的颜色值;

在对所述三维光柱模型的各个片元进行着色时,一个实施例中,可以先按照如下公式确定各个片元的颜色值:

Color

其中,Attenuation是片元的光强衰减值,F是片元的颜色衰减值,而Color

一种实施例中,所述预设光源的颜色值,也可以作为所述光效调节数据的一个属性数据而预先设定,或者也可以是一个默认设置的颜色值。

步骤S1340、根据各个片元的颜色值对所述三维光柱模型进行片元着色,在所述原始图像中渲染出所述体积光柱。

在确定了所述三维光柱模型的片元的颜色值之后,便可以按照坐标对应关系,以该颜色值修正原始图像中的相应像素的像素值,从而完成渲染。经片元着色渲染之后,便可在所述原始图像的基础上,生成所述体积光柱的图像效果,体积光柱的发光效果符合由所述光柱长度、光柱边缘硬度所限定的光传播特性,较为自然。

根据以上实施例可知,在构造好体积光柱的三维光柱模型的基础上,利用三维光柱模型的三维顶点数据,可以计算出各个片元的光强衰减值和颜色衰减值,进而利用光强衰减值和颜色衰减值可以调整体积光柱中各个片元的颜色值,使各个片元的颜色值能够按照光传播特征产生合理的渐变效果,模拟出聚光灯之类的点光源的光路的渐变效果,实现对现实世界的光柱效果的高度仿真,使所生成的体积光柱更为自然细腻。

在本申请任意实施例的基础上,对所述三维光柱模型进行片元着色,在所述原始图像中渲染出所述体积光柱之前,包括:

步骤S2100、确定所述三维场景图的片元到所述预设光源的光传播深度,获得传播深度图;

当确定了所述预设光源在所述原始图像相对应的三维场景图的三维空间中的目标位置之后,便可确定出所述原始图像的三维场景图中的各个片元到所述预设光源的光传播深度。具体而言,由于预设光源在所述三维场景图中的目标位置已经确定,根据三维场景图中各个片元的坐标与所述预设光源的目标位置的坐标便可以确定出其彼此之间的空间距离,从而获得各个片元的光传播深度,构成传播深度图。一个实施例中,由于三维场景图已经以三维顶点数据的方式进行表示,因而,基于所述三维顶点数据与所述目标位置的坐标数据做坐标空间变换即可获得所述的传播深度图。

步骤S2200、根据所述体积光柱所涵盖的各个片元在所述传播深度图中的光传播深度确定相应的片元是否被所述三维场景图中的物体模型所遮挡,根据片元是否未被遮挡相应控制所述片元是否着色。

在获得所述传播深度图的基础上,在对所述体积光柱的三维光柱模型进行着色渲染时,便可根据所述传播深度图来确定其中各个片元的透明度,从而进一步修正相应的片元的颜色值。所述透明度本质上是一个调节系数,一种实施例中,主要考虑三维光柱模型中的片元,按照其所在三维场景图中的空间位置是否被遮挡,从而将透明度设置为二值化数值,即为0或1,当为0时,表示无需修正相应片元的颜色值,当为1时,表示需要修正相应片元的颜色值。由此可见,所述透明度在本实施例中表现为一个遮挡截断系数,本质上也是一个调节系数,用于表示在所述预设光源的光传播方向上的片元上的光线是否应被遮挡而截断。

对于体积光柱的三维光柱模型中的每个片元来说,根据其在所述传播深度图中的光传播深度,可以确定其在所述三维场景图中的空间位置,据此,利用所述三维场景图的三维顶点数据可以进一步判断所述空间位置的光线是否处于被遮挡的状态,当处于被遮挡的状态时,相应片元的透明度置为0,以表示无需更新该片元的颜色值;当处于未被遮挡的状态时,相应片元的透明度置为1,以表示需要更新该片元的颜色值,从而,通过透明度的取值实现对所述片元是否着色进行有效控制。

根据以上的原理,一种实施例中,可以将前文实施例的公式的基础上进一步关联所述遮挡截断系数,在片元着色器中确定每个片元的颜色值:

Color

其中,Occulusion表示片元相对应的透明度。

根据以上的公式可以看出,当透明度Occulusion为0时,片元的颜色值Color

Color

也就是说,在透明度为1时,利用片元的光强衰减值和颜色衰减值对所述片元的颜色值进行更新,以便完成片元着色,进而更新所述三维光柱模型的片元的像素值而实现对体积光柱的渲染。

根据以上实施例可知,在进行片元着色时,可以利用三维光柱模型的各个片元所在空间位置相对应的光传播深度与三维场景图中物体模型之间的相对空间位置关系,来控制是否对所述片元进行着色,从而将被三维光柱模型被三维场景图中的物体模型遮挡部分截断,使体积光柱能够呈现出被原始图像中的相应物体截断的效果,如图8所示,使其更符合客观世界的自然现象,实现高度仿真。

在本申请任意实施例的基础上,获取原始图像的三维场景图之前,包括:

步骤S3100、响应光效配置事件,在直播间的图形用户界面显示光效编辑框,用于获取光效调节数据,所述光效调节数据包括用于设定光源的目标位置的光源位置数据和用于控制所述光源的体积光柱的发光效果的光柱形态数据;

以网络直播业务场景为例,可以在主播用户自行配置体积光柱的发光效果,预先提供一个用于配置体积光效的特效控件,当主播用户触控该特效控件后,便触发相应的光效配置事件。

响应所述光效配置事件,便如图11所示,在主播用户的直播间图形用户界面中显示光效编辑控件,用于获取光效调节数据。所述光效调节数据可以按需包括各种允许主播用户自定义的具体数据,所述光效编辑控件中,对应各种具体数据提供相应的录入控件即可。例如,一种实施例中,可以包括光源位置数据相对应的录入控件、光柱形态数据中各种属性数据相对应的录入控件、光源颜色等。需要获取的所述光柱形态数据的具体属性数据,也可按需由主播用户录入,包含但不限于光柱张角、光柱长度、光柱边缘硬度等等。对于本申请生成体积光柱所需但并未由主播用户录入的各种具体数据,则可事先作为默认设置,以需要时调用即可。

步骤S3200、响应用户确认事件,获取在所述光效编辑框中设定的光效调节数据,启动为所述直播间的直播视频流合成根据所述光效调节数据生成的体积光柱。

当用户在所述光效编辑框中完成各种具体数据的设定之后,便可确认提交,从而触发用户确认事件。响应于所述用户确认事件,便可根据所述光效编辑框中用户录入的具体数据,封装成光效调节数据,然后开始根据所述光效调节数据,为所述直播间的直播视频流合成根据所述光效调节数据生成的体积光柱,并将合成了体积光柱的直播视频流推送到直播间中播放。

根据以上实施例可见,通过为主播用户开放光效编辑框来获取光效调节数据中的各种具体数据,方便主播用户自定义体积光效,控制聚光灯之类的点光源的虚拟效果,主播用户可以在直播运行期间动态调整光柱张角、光路颜色、光柱边缘硬度、光柱长度等效果属性数据,从而实现对体积光柱的实际效果的有效控制,设计非常友好,且实施时的运算量小,对软硬件要求低,避免了基于物理的体积光渲染算法中的十分耗时的循环和迭代,适用于Android、IOS等移动平台。

在本申请任意实施例的基础上,请参阅图12,获取原始图像的三维场景图之前,包括:

步骤S4100、响应光效配置事件,在直播间的直播视频流的播放窗口显示体积光柱模板;

仍以网络直播业务场景为例,当主播用户开户直播开始推送直播视频流,且在其直播间图形用户界面中触控特效控件之后,触发所述光效配置事件。响应于所述光效配置事件,在其直播视频流的播放窗口中,可以显示一个聚光灯的体积光柱模板,所述体积光柱模板可以示例为锥状半透明图案,可以在所述直播视频流的播放窗口中随机定位以供用户实施调节控制,为此,也可以在所述体积光柱模板上显示出相应的控制锚点,对应所需获取的各种具体的光效调节数据,可以提供对应的控制锚点,例如光柱长度相对应的控制锚点、光柱边缘硬度相对应的控制锚点、光源目标位置相对应的控制锚点等,此外,如需主播用户设定光源的颜色,还可提供一个调色板等,以此类推,可方便用户操作,提升人机交互体验。

步骤S4200、监听所述体积光柱模板的形态调节事件,确定所述体积光柱模板所处位置确定的光源位置数据和根据所述体积光柱模板的形变结果确定的光柱形态数据;

在显示了所述体积光柱模板之后,可以启动对用户操作的监听,具体是监听主播用户对于所述体积光柱模板的形态进行操作而相应产生的形态调节事件。具体而言,当用户对所述各个控制锚路和/或调色板进行相应的操作以录入相应的具体数据时,均可触发相应的形态操作事件。

响应于所述形态操作事件,便可获取主播用户录入的相应的数据,将这些数据为其对应的属性数据赋值,便可获得整个体积光柱模板相对应的光效调节数据。

例如,当主播用户将所述体积光柱模板从既定位置移动到新位置时,便可相应更新光效调节数据中的光源位置数据;当主播用户旋转体积光柱模板后,便可相应更新光效调节数据的光柱形态数据中的传播路径数据;当主播用户通过边框的角点或者中点调节所述体积光柱模板的开口张角、轴向长度时,便可相应更新所述光柱形态数据中的光柱张角、光柱长度;当主播用户通过调色板重设聚光灯的颜色时,便可将所定的颜色的颜色值,作为光效调节数据中的颜色值。

步骤S4300、响应用户确认事件,将所述光源位置数据和光柱形态数据构成光效调节数据,清除所述体积光柱模板,启动为所述直播间的直播视频流合成根据所述光效调节数据生成的体积光柱。

当主播用户完成对所述光效调节数据的设定后,可以便可确认提交,从而触发用户确认事件。响应于所述用户确认事件,便可将所述光源位置数据及光柱形态数据构造成光效调节数据,根据该光效调节启动为所述直播间的直播视频流合成根据所述光效调节数据生成的体积光柱,并将合成了体积光柱的直播视频流推送到直播间中播放。

为避免遮挡主播用户的视觉,在所述用户确认事件触发之后,可将所述体积光柱模板从直播视频流的播放窗口中清除,在需要时再通过所述特效控件唤出即可。

根据以上实施例可见,通过为主播用户开放更易操作的体积光柱模板来获取光效调节数据,更为高效,方便主播用户灵活操作快速定义体积光效,控制聚光灯之类的点光源的虚拟效果,主播用户可以在直播运行期间动态调整光柱张角、光路颜色、光柱边缘硬度、光柱长度等效果属性数据,从而实现对体积光柱的实际效果的有效控制,设计非常友好,且实施时的运算量小,对软硬件要求低,避免了基于物理的体积光渲染算法中的十分耗时的循环和迭代,适用于Android、IOS等移动平台。

请参阅图13,根据本申请的一个方面提供的一种体积光柱渲染装置,包括原图获取模块1100、光柱构造模块1200,以及着色渲染模块1300,其中:所述原图获取模块1100,设置为获取原始图像的三维场景图;所述光柱构造模块1200,设置为根据预设光源相对应的光效调节数据构造所述预设光源的体积光柱坐落于所述三维场景图的三维光柱模型;所述着色渲染模块1300,设置为对所述三维光柱模型进行片元着色,在所述原始图像中渲染出所述体积光柱。

在本申请任意实施例的基础上,所述原图获取模块1100,包括:图像帧提取单元,设置为获取直播视频流中的图像帧,作为原始图像;图像空间转换单元,设置为根据所述原始图像还原出其中的场景相对应的三维顶点数据,构成所述三维场景图。

在本申请任意实施例的基础上,所述图像空间转换单元,包括:数据调用子单元,设置为获取预设光源的光效调节数据,所述光效调节数据包括光源位置数据和光柱形态数据;位置锚定子单元,设置为根据所述光源位置数据确定所述预设光源相对于所述原始图像的目标位置,将标准的柱状模型定位于该目标位置;变换处理子单元,设置为根据所述光柱形态数据,对所述柱状模型的三维顶点数据进行变换,获得所述体积光柱坐落于所述三维场景图的三维光柱模型。

在本申请任意实施例的基础上,根据所述光柱形态数据,所述变换处理子单元,包括:第一变换子单元,设置为根据所述光柱形态数据中的光柱张角对坐落于所述目标位置的柱状模型的三维顶点数据进行形变处理,获得锥状光柱的三维顶点数据;第二变换子单元,设置为根据所述光柱形态数据中的光柱长度对所述锥状光柱的三维顶点数据进行拉伸处理,获得所述体积光柱以三维顶点数据描述的所述三维光柱模型。

在本申请任意实施例的基础上,所述着色渲染模块1300,包括:光强确定单元,设置为根据所述三维光柱模型的三维顶点数据,确定所述三维光柱模型所涵盖的各个片元到所述预设光源的光传播相对应的光强衰减值;颜色确定单元,设置为根据所述光柱形态数据中的光柱边缘硬度确定所述三维光柱模型所涵盖的各个片元的颜色衰减值;像素更新单元,设置为将所述预设光源的颜色值关联所述光强衰减值和颜色衰减值确定片元的颜色值;片元着色单元,设置为根据各个片元的颜色值对所述三维光柱模型进行片元着色,在所述原始图像中渲染出所述体积光柱。

在本申请任意实施例的基础上,本申请的体积光柱渲染装置,包括:深度确定模块,设置为确定所述三维场景图的片元到所述预设光源的光传播深度,获得传播深度图;遮挡控制模块,设置为根据所述体积光柱所涵盖的各个片元在所述传播深度图中的光传播深度确定相应的片元是否被所述三维场景图中的物体模型所遮挡,根据片元是否未被遮挡相应控制所述片元是否着色。

在本申请任意实施例的基础上,本申请的体积光柱渲染装置,包括:第一配置模块,设置为响应光效配置事件,在直播间的图形用户界面显示光效编辑框,用于获取光效调节数据,所述光效调节数据包括用于设定光源的目标位置的光源位置数据和用于控制所述光源的体积光柱的发光效果的光柱形态数据;第一启动模块,设置为响应用户确认事件,获取在所述光效编辑框中设定的光效调节数据,启动为所述直播间的直播视频流合成根据所述光效调节数据生成的体积光柱。

在本申请任意实施例的基础上,本申请的体积光柱渲染装置,包括:第二配置模块,设置为响应光效配置事件,在直播间的直播视频流的播放窗口显示体积光柱模板;数据构造模块,设置为监听所述体积光柱模板的形态调节事件,确定所述体积光柱模板所处位置确定的光源位置数据和根据所述体积光柱模板的形变结果确定的光柱形态数据;第二启动模块,设置为响应用户确认事件,将所述光源位置数据和光柱形态数据构成光效调节数据,清除所述体积光柱模板,启动为所述直播间的直播视频流合成根据所述光效调节数据生成的体积光柱。

本申请的另一实施例还提供一种体积光柱渲染设备。如图14所示,体积光柱渲染设备的内部结构示意图。该体积光柱渲染设备包括通过系统总线连接的处理器、计算机可读存储介质、存储器和网络接口。其中,该体积光柱渲染设备的计算机可读的非易失性可读存储介质,存储有操作系统、数据库和计算机可读指令,数据库中可存储有信息序列,该计算机可读指令被处理器执行时,可使得处理器实现一种体积光柱渲染方法。

该体积光柱渲染设备的处理器用于提供计算和控制能力,支撑整个体积光柱渲染设备的运行。该体积光柱渲染设备的存储器中可存储有计算机可读指令,该计算机可读指令被处理器执行时,可使得处理器执行本申请的体积光柱渲染方法。该体积光柱渲染设备的网络接口用于与终端连接通信。

本领域技术人员可以理解,图14中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的体积光柱渲染设备的限定,具体的体积光柱渲染设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。

本实施方式中处理器用于执行图13中的各个模块的具体功能,存储器存储有执行上述模块或子模块所需的程序代码和各类数据。网络接口用于实现用户终端或服务器之间的数据传输。本实施方式中的非易失性可读存储介质中存储有本申请的体积光柱渲染装置中执行所有模块所需的程序代码及数据,服务器能够调用服务器的程序代码及数据执行所有模块的功能。

本申请还提供一种存储有计算机可读指令的非易失性可读存储介质,计算机可读指令被一个或多个处理器执行时,使得一个或多个处理器执行本申请任一实施例的体积光柱渲染方法的步骤。

本申请还提供一种计算机程序产品,包括计算机程序/指令,该计算机程序/指令被一个或多个处理器执行时实现本申请任一实施例所述方法的步骤。

本领域普通技术人员可以理解,实现本申请上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,该计算机程序可存储于一非易失性可读存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,前述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)等计算机可读存储介质,或随机存储记忆体(Random Access Memory,RAM)等。

综上所述,本申请以轻量运算的方式,高效地为原始图像合成出体积光柱图像效果,对软硬件资源要求低,成像效果优良,适于部署到移动终端、个人计算机之类的终端设备中,且具有更广泛的场景适应性,可以应用于3D游戏、增强现实、虚拟现实、网络直播等场景中。

相关技术
  • 小程序的界面渲染方法、装置、电子设备和存储介质
  • 渲染立体图形线框的方法、装置、计算机设备和存储介质
  • 一种页面渲染方法、装置、设备和存储介质
  • 页面渲染方法、装置、计算机设备及存储介质
  • 在canvas中渲染数据的方法、装置、电子设备及存储介质
  • 体积精度调控、渲染、动画制作方法、装置、介质和设备
  • 体积雾渲染方法、装置、设备及存储介质
技术分类

06120115930036