一种基于三维噪声图的三维体积云渲染方法及系统与流程

文档序号:22968640发布日期:2020-11-19 21:46阅读:150来源:国知局
一种基于三维噪声图的三维体积云渲染方法及系统与流程

本发明涉及图像处理技术领域,特别涉及一种基于三维噪声图的三维体积云渲染方法及系统。



背景技术:

在计算机渲染的虚拟场景中(特别是开发式的场景),丰富而逼真的三维云的渲染能大大提高场景的真实度,例如巨大的乌云会让人望而生畏,浓雾会让人沮丧,日落时被点燃的云彩会让人产生一种惊奇的感觉。

对于云的渲染,常见的实现方式是基于云图像库的,实现简单,但是存在不少缺点。如果只为某种形态的云在某个角度下存储一张图片,当视点移动时,天空中的静止情况下看起来不错的云会撕裂般的散开消失,移动的越远越明显。这个问题可以通过从不同角度存储多个图像,并在视点移动时呈现不同的图像来解决,然而,由于必须存储多个图像(一般是高分辨率的图像),图像纹理将占用大量的存储空间,想要表现云的细节度越高,存储空间越大。并且这种实现方式,一般只能渲染出低空的层云,基本不能实现很厚的柱状层积云或高空积云,云的真实照明效果也表现的很不真实。



技术实现要素:

本发明目的之一在于提供了一种基于三维噪声图的三维体积云渲染方法,只需两组三维噪声纹理图,减少了存储空间,并且可以对层云,积云,层积云进行渲染,通过渲染后显示出云的真实照明效果。

本发明实施例提供的一种基于三维噪声图的三维体积云渲染方法,包括:

步骤s1:构建三维噪声纹理空间,并在三维噪声纹理空间中构建三维体积云;

步骤s2:构建真实三维空间,将三维体积云映射到真实三维空间;

步骤s3:获取像素点的视线方向,确定视线方向上三维体积云的总体密度,基于总体密度确定像素点渲染云的透明度;

步骤s4:获取太阳的位置、光照强度、预设颜色,结合总体密度、视线方向,确定像素点渲染云的颜色。

优选的,步骤s1:构建三维噪声纹理空间,并在三维噪声纹理空间中构建三维体积云;具体包括:

步骤s11:获取一组第一三维噪声纹理图、一组第二三维噪声纹理图和高度-密度函数;

步骤s12:在三维噪声纹理空间中基于第一三维噪声纹理图、第二三维噪声纹理图和高度-密度函数构建三维体积云。

优选的,第一三维噪声纹理图包括:低频perlin-worly噪声;

第二三维噪声纹理图包括:高频的worly噪声。

优选的,步骤s3:获取像素点的视线方向,确定视线方向上三维体积云的总体密度,基于总体密度确定像素点渲染云的透明度,具体包括:

步骤s31:在真实三维空间中提取视线方向上三维体积云各个采样点的密度,

步骤s32:将各个采样点的密度累加作为视线方向上三维体积云的总体密度。

优选的,步骤s4:获取太阳的位置、光照强度、预设颜色,结合总体密度、视线方向,确定像素点渲染云的颜色,具体包括:

步骤s41:获取太阳的位置、光照强度、预设颜色;

步骤s42:基于总体密度、太阳位置、光照强度、预设颜色和实现方向,结合太阳光的散射定律和henyey-greenstein相位函数,确定像素的rgb颜色;

步骤s43:采用tonemap算法将rgb颜色转换为高动态范围颜色;将高动态范围颜色作为像素点渲染云的颜色。

本发明还提供一种基于三维噪声图的三维体积云渲染系统,包括:

三维体积云构建模块,用于构建三维噪声纹理空间,并在三维噪声纹理空间中构建三维体积云;

映射模块,用于构建真实三维空间,将三维体积云映射到真实三维空间;

透明度确定模块,用于获取像素点的视线方向,确定视线方向上三维体积云的总体密度,基于总体密度确定像素点渲染云的透明度;

颜色确定模块,用于基于总体密度、视线方向,确定像素点渲染云的颜色。

优选的,三维体积云构建模块包括:

第一参数获取子模块,用于获取一组第一三维噪声纹理图、一组第二三维噪声纹理图和高度-密度函数;

第一构建子模块,用于在三维噪声纹理空间中基于第一三维噪声纹理图、第二三维噪声纹理图和高度-密度函数构建三维体积云。

优选的,第一三维噪声纹理图包括:低频perlin-worly噪声;

第二三维噪声纹理图包括:高频的worly噪声。

优选的,透明度确定模块包括:

采样子模块,用于在真实三维空间中提取视线方向上三维体积云各个采样点的密度,

第一计算模块,用于将各个采样点的密度累加作为视线方向上三维体积云的总体密度。

优选的,颜色确定模块包括:

第二参数获取模块,用于获取太阳的位置、光照强度、预设颜色;

第二计算模块,用于基于总体密度、太阳位置、光照强度、预设颜色和实现方向,结合太阳光的散射定律和henyey-greenstein相位函数,确定像素的rgb颜色;

转换模块,用于采用tonemap算法将rgb颜色转换为高动态范围颜色;将高动态范围颜色作为像素点渲染云的颜色。

本发明的有益效果:

一、依赖的纹理资源较少,两组噪声纹理都是预先生成,加载后占用的存储空间不大。

二、充分利用了现代gpu的性能特征,渲染速度快。

三、显示效果逼真,类型丰富,不会因为视点变化产生意想不到的错误,具有真实的光照效果。

本发明的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点可通过在所写的说明书、权利要求书、以及附图中所特别指出的结构来实现和获得。

下面通过附图和实施例,对本发明的技术方案做进一步的详细描述。

附图说明

附图用来提供对本发明的进一步理解,并且构成说明书的一部分,与本发明的实施例一起用于解释本发明,并不构成对本发明的限制。在附图中:

图1为本发明实施例中一种基于三维噪声图的三维体积云渲染方法的示意图。

具体实施方式

以下结合附图对本发明的优选实施例进行说明,应当理解,此处所描述的优选实施例仅用于说明和解释本发明,并不用于限定本发明。

本发明实施例提供了一种基于三维噪声图的三维体积云渲染方法,如图1所示,包括:

步骤s1:构建三维噪声纹理空间,并在三维噪声纹理空间中构建三维体积云;

步骤s2:构建真实三维空间,将三维体积云映射到真实三维空间;

步骤s3:获取像素点的视线方向,确定视线方向上三维体积云的总体密度,基于总体密度确定像素点渲染云的透明度;

步骤s4:获取太阳的位置、光照强度、预设颜色,结合总体密度、视线方向,确定像素点渲染云的颜色。

上述技术方案的工作原理及有益效果为:

首先,构建三维噪声纹理空间,并在三维噪声纹理空间中构建三维体积云,在构建的三维体积云中各个采样点存在信号值代表三维体积云的对应点的位置的密度。然后,构建真实三维空间,将三维体积云映射到真实三维空间;需要实现真实的云层渲染效果,需要构建包括屏幕空间的像素点的真实三维空间。当构建好真实三维空间时,获取屏幕空间的各个像素点的视线方向,该视线方向为预先设置的;在真实三维空间中以像素点及视线方向的延长线上的三维体积云的总体密度,将总体密度确定像素点渲染云的透明度;最后,获取太阳的位置、光照强度、预设颜色,结合总体密度、视线方向,确定像素点渲染云的颜色。重复步骤s3和步骤s4依次确定所有的预设的显示三维体积云的像素点的透明度和颜色;从而实现显示渲染后的三维体积云。

在一个实施例中,步骤s1:构建三维噪声纹理空间,并在三维噪声纹理空间中构建三维体积云;具体包括:

步骤s11:获取一组第一三维噪声纹理图、一组第二三维噪声纹理图和高度-密度函数;

步骤s12:在三维噪声纹理空间中基于第一三维噪声纹理图、第二三维噪声纹理图和高度-密度函数构建三维体积云。

上述技术方案的工作原理及有益效果为:

一组第一三维噪声纹理图为一组大小为128*128*128的三维噪声纹理图(低频perlin-worly噪声),一组第二三维噪声纹理图一组大小为32*32*32的三维噪声纹理图(高频的worly噪声),噪声图中的某个确定的信号值可以映射到空间中某点的体积云的密度,前者用于描述体积云的基本形状;后者用于描述体积云的蓬松的细节形状。高度-密度函数包括remap函数;此函数的作用是用于偏移或缩放噪声信号,控制不同高度下的体积云的形态---层云,积云,层积云。

首先,建立三维噪声纹理空间,然后采用高度-密度函数对两组三维噪声纹理图中的噪声信号进行处理;然后将处理后的两组三维噪声纹理图带入预先建立的模型中,从而获得三维体积云。因此只需两组三维噪声纹理图即可,从而节约了存储空间。

在一个实施例中,第一三维噪声纹理图包括:低频perlin-worly噪声;

第二三维噪声纹理图包括:高频的worly噪声。

在一个实施例中,步骤s3:获取像素点的视线方向,确定视线方向上三维体积云的总体密度,基于总体密度确定像素点渲染云的透明度,具体包括:

步骤s31:在真实三维空间中提取视线方向上三维体积云各个采样点的密度,

步骤s32:将各个采样点的密度累加作为视线方向上三维体积云的总体密度。

上述技术方案的工作原理及有益效果为:

步骤3主要核心为体积云密度采样;ray-match(三维空间射线检测),该算法的作用是将真实三维空间的点映射到三维噪声纹理空间(三维空间坐标映射到三维纹理坐标)。先计算屏幕空间中某个像素点的视线方向,延视线方向计算云底(预设的体积云出现的最低高度,例如1000m)和云顶((预设的体积云出现的最高高度,例如20000m)球壳的两个交点,然后以这两个交点为起点和终点,按照一定的步长,将线段上某点的三维空间坐标运用球体投影算法,归一化映射到三维纹理坐标,采样出该点的云的密度,随着步长递进,累加每个采样点的密度值,形成云在视线方向下的总体密度,作为此像素点渲染云的透明度的参考。其中,像素点的视线方向为预先设置的;总体密度与透明度呈反比,即总体密度越大透明度越低,总体密度越小透明度越高。

在一个实施例中,步骤s4:获取太阳的位置、光照强度、预设颜色,结合总体密度、视线方向,确定像素点渲染云的颜色,具体包括:

步骤s41:获取太阳的位置、光照强度、预设颜色;

步骤s42:基于总体密度、太阳位置、光照强度、预设颜色和实现方向,结合太阳光的散射定律和henyey-greenstein相位函数,确定像素的rgb颜色;

步骤s43:采用tonemap算法将rgb颜色转换为高动态范围颜色;将高动态范围颜色作为像素点渲染云的颜色。

上述技术方案的工作原理及有益效果为:

首先计算出rgb图像颜色,主要是体积云在光照下呈现的颜色;利用体积云采样算法得出的确定像素点下的云的总体密度,视线方向,太阳方位,利用beer散射定律,henyey-greenstein相位函数,计算出具有真实物理规律的云的颜色,具体为基于总体密度、太阳位置、光照强度、预设颜色和实现方向,结合太阳光的散射定律和henyey-greenstein相位函数,确定像素的rgb颜色。

但是rgb颜色不能更好符合人眼的视觉,需要将其转换为高动态范围颜色值【高斯图像颜色】,因此需要后处理;即利用tonemap算法将前几步计算的颜色值(具有云的本体物理特种)转换成高动态范围颜色值(更好的反映出真实环境中的视觉效果),产生出更容易让人眼接受的画面。通过高动态范围颜色值使显示的三维体积云的照明效果更加真实。

本发明还提供一种基于三维噪声图的三维体积云渲染系统,包括:

三维体积云构建模块,用于构建三维噪声纹理空间,并在三维噪声纹理空间中构建三维体积云;

映射模块,用于构建真实三维空间,将三维体积云映射到真实三维空间;

透明度确定模块,用于获取像素点的视线方向,确定视线方向上三维体积云的总体密度,基于总体密度确定像素点渲染云的透明度;

颜色确定模块,用于基于总体密度、视线方向,确定像素点渲染云的颜色。

上述技术方案的工作原理及有益效果为:

首先,构建三维噪声纹理空间,并在三维噪声纹理空间中构建三维体积云,在构建的三维体积云中各个采样点存在信号值代表三维体积云的对应点的位置的密度。然后,构建真实三维空间,将三维体积云映射到真实三维空间;需要实现真实的云层渲染效果,需要构建包括屏幕空间的像素点的真实三维空间。当构建好真实三维空间时,获取屏幕空间的各个像素点的视线方向,该视线方向为预先设置的;在真实三维空间中以像素点及视线方向的延长线上的三维体积云的总体密度,将总体密度确定像素点渲染云的透明度;最后,获取太阳的位置、光照强度、预设颜色,结合总体密度、视线方向,确定像素点渲染云的颜色。通过透明度确定模块和颜色确定模块依次确定所有的预设的显示三维体积云的像素点的透明度和颜色;从而实现显示渲染后的三维体积云。

在一个实施例中,三维体积云构建模块包括:

第一参数获取子模块,用于获取一组第一三维噪声纹理图、一组第二三维噪声纹理图和高度-密度函数;

第一构建子模块,用于在三维噪声纹理空间中基于第一三维噪声纹理图、第二三维噪声纹理图和高度-密度函数构建三维体积云。

上述技术方案的工作原理及有益效果为:

一组第一三维噪声纹理图为一组大小为128*128*128的三维噪声纹理图(低频perlin-worly噪声),一组第二三维噪声纹理图一组大小为32*32*32的三维噪声纹理图(高频的worly噪声),噪声图中的某个确定的信号值可以映射到空间中某点的体积云的密度,前者用于描述体积云的基本形状;后者用于描述体积云的蓬松的细节形状。高度-密度函数;此函数的作用是用于偏移或缩放噪声信号,控制不同高度下的体积云的形态---层云,积云,层积云。

首先,建立三维噪声纹理空间,然后采用高度-密度函数对两组三维噪声纹理图中的噪声信号进行处理;然后将处理后的两组三维噪声纹理图带入预先建立的模型中,从而获得三维体积云。因此,只需两组三维噪声纹理图即可,从而节约了存储空间。

在一个实施例中,第一三维噪声纹理图包括:低频perlin-worly噪声;

第二三维噪声纹理图包括:高频的worly噪声。

在一个实施例中,透明度确定模块包括:

采样子模块,用于在真实三维空间中提取视线方向上三维体积云各个采样点的密度,

第一计算模块,用于将各个采样点的密度累加作为视线方向上三维体积云的总体密度。

上述技术方案的工作原理及有益效果为:

透明度确定模块主要核心为体积云密度采样;ray-match(三维空间射线检测),该算法的作用是将真实三维空间的点映射到三维噪声纹理空间(三维空间坐标映射到三维纹理坐标)。先计算屏幕空间中某个像素点的视线方向,延视线方向计算云底(预设的体积云出现的最低高度,例如1000m)和云顶((预设的体积云出现的最高高度,例如20000m)球壳的两个交点,然后以这两个交点为起点和终点,按照一定的步长,将线段上某点的三维空间坐标运用球体投影算法,归一化映射到三维纹理坐标,采样出该点的云的密度,随着步长递进,累加每个采样点的密度值,形成云在视线方向下的总体密度,作为此像素点渲染云的透明度的参考。其中,像素点的视线方向为预先设置的;总体密度与透明度呈反比,即总体密度越大透明度越低,总体密度越小透明度越高。

在一个实施例中,颜色确定模块包括:

第二参数获取模块,用于获取太阳的位置、光照强度、预设颜色;

第二计算模块,用于基于总体密度、太阳位置、光照强度、预设颜色和实现方向,结合太阳光的散射定律和henyey-greenstein相位函数,确定像素的rgb颜色;

转换模块,用于采用tonemap算法将rgb颜色转换为高动态范围颜色;将高动态范围颜色作为像素点渲染云的颜色。

上述技术方案的工作原理及有益效果为:

首先计算出rgb图像颜色,主要是体积云在光照下呈现的颜色;利用体积云采样算法得出的确定像素点下的云的总体密度,视线方向,太阳方位,利用beer散射定律,henyey-greenstein相位函数,计算出具有真实物理规律的云的颜色,具体为基于总体密度、太阳位置、光照强度、预设颜色和实现方向,结合太阳光的散射定律和henyey-greenstein相位函数,确定像素的rgb颜色。

但是rgb颜色不能更好符合人眼的视觉,需要将其转换为高动态范围颜色值【高斯图像颜色】,因此需要后处理;即利用tonemap算法将前几步计算的颜色值(具有云的本体物理特种)转换成高动态范围颜色值(更好的反映出真实环境中的视觉效果),产生出更容易让人眼接受的画面。通过高动态范围颜色值使显示的三维体积云的照明效果更加真实。

显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1