CN110827391A - 图像渲染方法、装置、设备及存储介质 - Google Patents
图像渲染方法、装置、设备及存储介质 Download PDFInfo
- Publication number
- CN110827391A CN110827391A CN201911102050.XA CN201911102050A CN110827391A CN 110827391 A CN110827391 A CN 110827391A CN 201911102050 A CN201911102050 A CN 201911102050A CN 110827391 A CN110827391 A CN 110827391A
- Authority
- CN
- China
- Prior art keywords
- points
- noise
- point
- value
- sampling
- 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
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/08—Volume rendering
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/04—Texture mapping
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/50—Lighting effects
- G06T15/506—Illumination models
Landscapes
- Engineering & Computer Science (AREA)
- Computer Graphics (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Image Generation (AREA)
Abstract
本申请实施例公开了一种图像渲染方法、装置、设备及存储介质,属于图像处理技术领域。方法包括:确定在同一平面上排布的多个位置点;对于多个位置点中的每个位置点:根据多个第一特征点以及所述多个第一特征点的第一噪声值,选取位于同一直线上的多个第一特征点作为采样点;根据当前设置的渲染参数,对每个采样点的第一噪声值进行修改,得到每个采样点的第二噪声值,采样点的第二噪声值指示体积云在采样点的厚度;根据每个采样点的第二噪声值,获取位置点的像素值;根据多个位置点的像素值生成体积云图像。修改第一噪声值得到第二噪声值,渲染出的体积云图像发生变化。当渲染参数动态变化时,第二噪声值动态变化,从而渲染出动态变化的体积云。
Description
技术领域
本申请涉及图像处理技术领域,特别涉及一种图像渲染方法、装置、设备及存储介质。
背景技术
体渲染技术(Volume Rendering)是一种常用的体积云渲染技术。利用体渲染技术可以在界面中渲染出体积云,模拟真实云雾半透明、无规则的表现效果,而如何使渲染出的体积云更加真实,成为当前亟需解决的问题。
由于采用柏林噪声算法,生成的柏林噪声值具有良好的随机性和连续性,因此,目前采用柏林噪声算法来渲染体积云。如图1所示,采用柏林噪声算法,生成纹理数据,该纹理数据包括多个特征点以及该多个特征点的柏林噪声值,确定在同一平面上依次排布的多个位置点,根据多个位置点中的任一位置点,从三维纹理图片中选取多个特征点作为采样点,该多个采样点位于同一直线上;获取每个采样点的噪声值,该噪声值指示体积云在该采样点的厚度。根据每个采样点的噪声值获取每个采样点对应的颜色值;将多个采样点的颜色值进行叠加,将叠加后的颜色值作为该位置点的像素值,根据多个位置点的像素值生成体积云图像。
采用上述方法生成的纹理数据中的噪声值是固定不变的,因此,生成的体积云图像中的体积云也是固定不变的,若要体积云的形状发生变化,需要重新生成纹理数据,但是生成纹理数据的运算量较大,应用效果较差。
发明内容
本申请实施例提供了一种图像渲染方法、装置、设备及存储介质,解决了相关技术存在的改变体积云形状,需要的运算量较大的问题。所述技术方案如下:
一方面,提供了一种图像渲染方法,所述方法包括:
确定在同一平面上排布的多个位置点;
对于所述多个位置点中的每个位置点:
根据多个第一特征点以及所述多个第一特征点的第一噪声值,选取位于同一直线上的多个第一特征点作为采样点;
根据当前设置的渲染参数,对每个采样点的第一噪声值进行修改,得到所述每个采样点的第二噪声值,所述采样点的第二噪声值指示体积云在所述采样点的厚度;
根据所述每个采样点的第二噪声值,获取所述位置点的像素值;
根据所述多个位置点的像素值生成体积云图像。
在一种可能实现方式中,所述采用沃利噪声算法,生成第三纹理数据,包括:
将目标空间划分为多个单位立方体,在每个单位立方体内随机选取一个第三特征点;
确定选取的多个第三特征点的第三噪声值,所述第三特征点的第三噪声值与所述目标空间内的特征点构成的特征点集满足以下关系:
根据所述每个第三特征点的第三噪声值,生成所述第三纹理数据。
在一种可能实现方式中,所述第一特征点的第一噪声值、所述第二特征点的第二噪声值和所述第三特征点的第三噪声值满足以下关系:
Mix(P1)=remap(Perlin(P2),1-Worley(P3),1,0,1);
其中,P1为所述第一特征点,Mix(P1)为所述第一特征点的第一噪声值,P2 为所述第二特征点,Perlin(P2)为所述第二特征点的第二噪声值,P3为所述第三特征点,Worley(P3)为所述第三特征点的第三噪声值;remap为映射函数, remap(value,a,b,c,d)指示将value从[a,b]的区间内映射到[c,d]的区间内,a、 b、c、d为任意数值。
在一种可能实现方式中,所述第四特征点的第四噪声值、所述第四特征点的高度值和所述第四特征点的腐蚀参数满足以下关系:
FErode(P4)=mix(Erode(P4),1-Erode(P4),fh);
mix(a,b,x)=(1-x)·a+x·b;
fh=clamp(10·h(P4),0,1);
其中,P4为所述第四特征点,FErode(P4)为所述第四特征点的腐蚀参数, Erode(P4)为所述第四特征点的第四噪声值,fh为目标参数,h(P4)为所述第四特征点的高度值,clamp(a,b,c)表示将a限制在[b,c]的区间内,a、b、c为任意数值,mix为混合函数。
在一种可能实现方式中,所述第二特征点的第二噪声值、所述第三特征点的第三噪声值和所述第五特征点的第五噪声值满足以下关系:
base(P5)=remap(Perlin(P2),1-Worley(P3),1,0,1);
其中,P2为所述第二特征点,Perlin(P2)为所述第二特征点的第二噪声值, P3为所述第三特征点,Worley(P3)为所述第三特征点的第三噪声值,P5为所述第五特征点,base(P5)为所述第五特征点的第五噪声值,remap为映射函数, remap(value,a,b,c,d)指示将value从[a,b]的区间内映射到[c,d]的区间内,a、 b、c、d为任意数值。
在一种可能实现方式中,所述第四特征点的腐蚀参数、所述第五特征点的第五噪声值和所述第一特征点的第一噪声值满足以下关系:
Mix(P1)=remap(2·base(P5)-FErode(P4)·(1-base(P5)),0.2·FErode(P4),1,0,1) ;
其中,P1为所述第一特征点,Mix(P1)为所述第一特征点的第一噪声值,P5 为所述第五特征点,base(P5)为所述第五特征点的第五噪声值,P4为所述第四特征点,FErode(P4)为所述第四特征点的腐蚀参数,remap为映射函数, remap(value,a,b,c,d)指示将value从[a,b]的区间内映射到[c,d]的区间内,a、 b、c、d为任意数值。
在一种可能实现方式中,所述类型参数与所述类型参数对应的梯度满足以下关系:
gra=fs·gras+fsc·grasc+fc·grac;
fs=1-clamp(2·Type,0,1);
fsc=1-2·|Type-0.5|;
fsc=2·clamp(Type-0.5,0,1);
其中,Type为所述类型参数,gra为所述类型参数对应的梯度,fs为第一体积云类型对应的第一权重,fsc为第二体积云类型对应的第二权重,fc为第二体积云类型对应的第三权重,gras为所述第一体积云类型对应的梯度,grasc为所述第二体积云类型对应的梯度,grac为所述第三体积云类型对应的梯度, clamp(a,b,c)表示将a限制在[b,c]的区间内,a、b、c为任意数值,|a|表示a 的绝对值。
在一种可能实现方式中,所述第一影响参数、所述类型参数、所述体积云的梯度和所述体积云的高度值满足以下关系:
其中,P为采样点,FType(P)为所述采样点的第一影响参数,smooth函数为平滑函数,clamp(a,b,c)表示将a限制在[b,c]的区间内,a、b、c为任意数值, grax为所述梯度的x分量、gray为所述梯度的y分量、graz为所述梯度的z分量、 graw为所述梯度的w分量,h(P)为所述采样点的高度值。
在一种可能实现方式中,所述第二噪声值、所述第一噪声值和所述第一影响参数满足以下关系:
W(P)=FType(P)·Mix(P);
其中,P为所述采样点,W(P)为所述采样点的第二噪声值,Mix(P)为所述采样点的第一噪声值,FType(P)为所述采样点的第一影响参数。
在一种可能实现方式中,所述第二影响参数、所述第六噪声值和所述覆盖率参数满足以下关系:
FCoverage(P)=Animate(P+speed·time)·Coverage;
其中,P为所述采样点,Coverage为所述采样点的覆盖率参数,Animate(P) 为所述采样点对应的运动噪声值,speed表示体积云的运动速度,time表示时间, FCoverage(P)为所述采样点的第二影响参数。
在一种可能实现方式中,所述第二噪声值、所述第一噪声值和所述覆盖率参数满足以下关系:
W(P)=FCoverage(P)·Mix(P);
其中,P为所述采样点,W(P)为所述采样点的第二噪声值,Mix(P)为所述采样点的第一噪声值,FCoverage(P)为所述采样点的第二影响参数。
在一种可能实现方式中,所述环境光参数包括太阳的直射光颜色值和天空的颜色值;
所述体积云的颜色值、所述太阳的直射光颜色值和所述天空的颜色值满足以下关系:
C(P)=mix[Cbase,Cambient,W(P)];
Cambient=mix(Csky,Csum,μ);
Csky=mix[mix(C3,Csum,hsun),C1+C2·(cosβ)α,fsky];
mix(a,b,x)=(1-x)·a+x·b;
fsky=[max(hsky,0)]w;
其中,P为采样点,C(P)表示在所述采样点处体积云的颜色值,Cbase表示所述体积云的第一颜色值,Cambient表示环境光的颜色值,W(P)表示所述采样点的第二噪声值,Csky表示天空的颜色值,Csum表示太阳的直射光的颜色值,μ表示大气散射光和太阳光对Cbase的影响程度,C1表示蓝色的颜色值,C2表示黄白色的颜色值,C3表示橘红色的颜色值,hsum表示太阳的高度,β为所述平面至所述采样点方向与所述平面至太阳方向的夹角,α为聚焦因子,fsky表示天空的颜色受太阳光的影响程度,hsky表示天空的高度,mix为混合函数,max为最大值函数。
再一方面,提供了一种图像渲染装置,所述装置包括:
确定模块,用于确定在同一平面上排布的多个位置点;
获取模块,用于对于所述多个位置点中的每个位置点:
根据多个第一特征点以及所述多个第一特征点的第一噪声值,选取位于同一直线上的多个第一特征点作为采样点;
根据当前设置的渲染参数,对每个采样点的第一噪声值进行修改,得到所述每个采样点的第二噪声值,所述采样点的第二噪声值指示体积云在所述采样点的厚度;
根据所述每个采样点的第二噪声值,获取所述位置点的像素值;
图像生成模块,用于根据所述多个位置点的像素值生成体积云图像。
在一种可能实现方式中,所述装置还包括:
数据生成模块,用于采用噪声算法,生成第一纹理数据,所述第一纹理数据包括所述多个第一特征点以及所述多个第一特征点的第一噪声值。
在一种可能实现方式中,所述数据生成模块,包括:
第一生成单元,用于采用柏林噪声算法,生成第二纹理数据,所述第二纹理数据包括多个第二特征点以及所述多个第二特征点的第二噪声值;
第二生成单元,用于采用沃利噪声算法,生成第三纹理数据,所述第三纹理数据包括多个第三特征点以及所述多个第三特征点的第三噪声值,所述多个第二特征点与所述多个第三特征点一一对应;
融合单元,用于将所述多个第二特征点的第二噪声值与所述第三多个特征点的第三噪声值进行融合,得到所述多个第一特征点的第一噪声值;
第三生成单元,用于根据所述多个第一特征点的第一噪声值,生成所述第一纹理数据。
在一种可能实现方式中,所述第二生成单元,用于将目标空间划分为多个单位立方体,在每个单位立方体内随机选取一个第三特征点;
所述第二生成单元,还用于确定选取的多个第三特征点的第三噪声值,所述第三特征点的第三噪声值与所述目标空间内的特征点构成的特征点集满足以下关系:
所述第二生成单元,还用于根据所述每个第三特征点的第三噪声值,生成所述第三纹理数据。
在一种可能实现方式中,所述第一特征点的第一噪声值、所述第二特征点的第二噪声值和所述第三特征点的第三噪声值满足以下关系:
Mix(P1)=remap(Perlin(P2),1-Worley(P3),1,0,1);
其中,P1为所述第一特征点,Mix(P1)为所述第一特征点的第一噪声值,P2 为所述第二特征点,Perlin(P2)为所述第二特征点的第二噪声值,P3为所述第三特征点,Worley(P3)为所述第三特征点的第三噪声值;remap为映射函数, remap(value,a,b,c,d)指示将value从[a,b]的区间内映射到[c,d]的区间内,a、 b、c、d为任意数值。
在一种可能实现方式中,所述融合单元,用于采用腐蚀噪声算法,生成第四纹理数据,所述第四纹理数据包括多个第四特征点以及所述多个第四特征点的第四噪声值;
所述融合单元,还用于根据所述多个第四特征点的第四噪声值和每个第四特征点的高度值,获取所述每个第四特征点的腐蚀参数;
所述融合单元,还用于将所述多个第二特征点的第二噪声值与所述多个第三特征点的第三噪声值进行融合,得到多个第五特征点的第五噪声值;
所述融合单元,还用于根据每个第四特征点的腐蚀参数,对所述多个第五特征点的第五噪声值进行腐蚀处理,得到所述多个第一特征点的第一噪声值。
在一种可能实现方式中,所述第四特征点的第四噪声值、所述第四特征点的高度值和所述第四特征点的腐蚀参数满足以下关系:
FErode(P4)=mix(Erode(P4),1-Erode(P4),fh);
mix(a,b,x)=(1-x)·a+x·b;
fh=clamp(10·h(P4),0,1);
其中,P4为所述第四特征点,FErode(P4)为所述第四特征点的腐蚀参数, Erode(P4)为所述第四特征点的第四噪声值,fh为目标参数,h(P4)为所述第四特征点的高度值,clamp(a,b,c)表示将a限制在[b,c]的区间内,a、b、c为任意数值,mix为混合函数。
在一种可能实现方式中,所述第二特征点的第二噪声值、所述第三特征点的第三噪声值和所述第五特征点的第五噪声值满足以下关系:
base(P5)=remap(Perlin(P2),1-Worley(P3),1,0,1);
其中,P2为所述第二特征点,Perlin(P2)为所述第二特征点的第二噪声值, P3为所述第三特征点,Worley(P3)为所述第三特征点的第三噪声值,P5为所述第五特征点,base(P5)为所述第五特征点的第五噪声值,remap为映射函数, remap(value,a,b,c,d)指示将value从[a,b]的区间内映射到[c,d]的区间内,a、 b、c、d为任意数值。
在一种可能实现方式中,所述第四特征点的腐蚀参数、所述第五特征点的第五噪声值和所述第一特征点的第一噪声值满足以下关系:
Mix(P1)=remap(2·base(P5)-FErode(P4)·(1-base(P5)),0.2·FErode(P4),1,0,1)
其中,P1为所述第一特征点,Mix(P1)为所述第一特征点的第一噪声值,P5 为所述第五特征点,base(P5)为所述第五特征点的第五噪声值,P4为所述第四特征点,FErode(P4)为所述第四特征点的腐蚀参数,remap为映射函数, remap(value,a,b,c,d)指示将value从[a,b]的区间内映射到[c,d]的区间内,a、 b、c、d为任意数值。
在一种可能实现方式中,所述获取模块包括:
第一选取单元,用于在渲染区域中选取位于同一直线上的多个采样点,所述渲染区域采用第一坐标系,所述第一纹理数据采用第二坐标系;
第二选取单元,用于根据所述多个采样点在所述第一坐标系中的坐标以及所述第一坐标系和所述第二坐标系的映射关系,选取所述多个采样点在所述第一纹理数据中对应的采样点。
在一种可能实现方式中,所述获取模块还包括:
调整单元,用于按照目标数值,对所述第一纹理数据中选取的多个采样点的坐标进行调整,根据调整后的多个坐标,在所述第一纹理数据中重新选取所述多个坐标对应的采样点。
在一种可能实现方式中,所述获取模块还包括:
第一确定单元,用于以目标位置点为球心,以第一半径为球半径,确定第一球面区域;
第二确定单元,用于以所述目标位置为球心,以第二半径为球半径,确定第二球面区域,所述第一半径大于所述第二半径;
所述第二确定单元,还用于将所述第一球面区域与所述第二球面区域之间的区域,作为所述渲染区域。
在一种可能实现方式中,所述第一选取单元,用于以所述位置点为起点,在指向所述渲染区域的方向创建一条射线;
所述第一选取单元,还用于在所述射线与所述渲染区域重叠的线段中,选取所述多个采样点。
在一种可能实现方式中,所述渲染参数包括类型参数,所述类型参数指示体积云的类型,所述获取模块,包括:
第三确定单元,用于根据所述类型参数对应的梯度,确定所述类型参数对所述第一噪声值的第一影响参数;
修改单元,用于根据所述第一影响参数,对所述每个采样点的第一噪声值进行修改,得到所述每个采样点的第二噪声值。
在一种可能实现方式中,所述类型参数与所述类型参数对应的梯度满足以下关系:
gra=fs·gras+fsc·grasc+fc·grac;
fs=1-clamp(2·Type,0,1);
fsc=1-2·|Type-0.5|;
fsc=2·clamp(Type-0.5,0,1);
其中,Type为所述类型参数,gra为所述类型参数对应的梯度,fs为第一体积云类型对应的第一权重,fsc为第二体积云类型对应的第二权重,fc为第二体积云类型对应的第三权重,gras为所述第一体积云类型对应的梯度,grasc为所述第二体积云类型对应的梯度,grac为所述第三体积云类型对应的梯度, clamp(a,b,c)表示将a限制在[b,c]的区间内,a、b、c为任意数值,|a|表示a 的绝对值。
在一种可能实现方式中,所述第一影响参数、所述类型参数、所述体积云的梯度和所述体积云的高度值满足以下关系:
其中,P为采样点,FType(P)为所述采样点的第一影响参数,smooth函数为平滑函数,clamp(a,b,c)表示将a限制在[b,c]的区间内,a、b、c为任意数值, grax为所述梯度的x分量、gray为所述梯度的y分量、graz为所述梯度的z分量、 graw为所述梯度的w分量,h(P)为所述采样点的高度值。
在一种可能实现方式中,所述第二噪声值、所述第一噪声值和所述第一影响参数满足以下关系:
W(P)=FType(P)·Mix(P);
其中,P为所述采样点,W(P)为所述采样点的第二噪声值,Mix(P)为所述采样点的第一噪声值,FType(P)为所述采样点的第一影响参数。
在一种可能实现方式中,所述渲染参数包括覆盖率参数,所述覆盖率参数指示体积云的厚度,所述获取模块,包括:
第一获取单元,用于采用运动噪声算法,获取所述每个采样点的第六噪声值;
第四确定单元,用于根据所述覆盖率参数和所述每个采样点的第六噪声值,确定对所述第一噪声值的第二影响参数;
修改单元,用于根据所述第二影响参数,对所述每个采样点的第一噪声值进行修改,得到所述每个采样点的第二噪声值。
在一种可能实现方式中,所述第二影响参数、所述第六噪声值和所述覆盖率参数满足以下关系:
FCoverage(P)=Animate(P+speed·time)·Coverage;
其中,P为所述采样点,Coverage为所述采样点的覆盖率参数,Animate(P) 为所述采样点对应的运动噪声值,speed表示体积云的运动速度,time表示时间, FCoverage(P)为所述采样点的第二影响参数。
在一种可能实现方式中,所述第二噪声值、所述第一噪声值和所述覆盖率参数满足以下关系:
W(P)=FCoverage(P)·Mix(P);
其中,P为所述采样点,W(P)为所述采样点的第二噪声值,Mix(P)为所述采样点的第一噪声值,FCoverage(P)为所述采样点的第二影响参数。
在一种可能实现方式中,所述获取模块,包括:
第二获取单元,用于根据所述每个采样点的第二噪声值,获取所述每个采样点的颜色值;
叠加单元,用于将所述多个采样点的颜色值进行叠加,将叠加后的颜色值作为所述位置点的像素值。
在一种可能实现方式中,所述第二获取单元,用于根据所述每个采样点的第二噪声值和虚拟环境的环境光参数,获取所述每个采样点的颜色值。
在一种可能实现方式中,所述环境光参数包括太阳的直射光颜色值和天空的颜色值;
所述体积云的颜色值、所述太阳的直射光颜色值和所述天空的颜色值满足以下关系:
C(P)=mix[Cbase,Cambient,W(P)];
Cambient=mix(Csky,Csum,μ);
Csky=mix[mix(C3,Csun,hsun),C1+C2·(cosβ)α,fsky];
mix(a,b,x)=(1-x)·a+x·b;
fsky=[max(hsky,0)]w;
其中,P为采样点,C(P)表示在所述采样点处体积云的颜色值,Cbase表示所述体积云的第一颜色值,Cambient表示环境光的颜色值,W(P)表示所述采样点的第二噪声值,Csky表示天空的颜色值,Csun表示太阳的直射光的颜色值,μ表示大气散射光和太阳光对Cbase的影响程度,C1表示蓝色的颜色值,C2表示黄白色的颜色值,C3表示橘红色的颜色值,hsum表示太阳的高度,β为所述平面至所述采样点方向与所述平面至太阳方向的夹角,α为聚焦因子,fsky表示天空的颜色受太阳光的影响程度,hsky表示天空的高度,mix为混合函数,max为最大值函数。
再一方面,提供了一种计算机设备,所述计算机设备包括处理器和存储器,所述存储器中存储有至少一条指令,所述指令由所述处理器加载并执行以实现上述方面所述的图像渲染方法中所执行的操作。
再一方面,提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有至少一条指令,所述指令由处理器加载并执行以实现上述方面所述的图像渲染方法中所执行的操作。
本申请实施例提供的技术方案带来的有益效果至少包括:
本申请实施例提供的图像渲染方法、装置、设备及存储介质,通过获取当前设置的渲染参数,对采样点的第一噪声值进行修改,得到采样点的第二噪声值,无需生成新的纹理数据,即可获取到与第一噪声值不同的第二噪声值。并且渲染参数包括类型参数和覆盖率参数,因此可以按照用户的需求生成相应的体积云。当渲染参数动态变化时,计算机设备还可以根据动态变化的渲染参数不断生成新的体积云图像,从而实现了体积云的动态变化。
并且,采用沃利噪声算法和腐蚀噪声算法,对第二纹理数据进行融合和腐蚀处理,从而生成的第一纹理数据中的第一噪声值具有球状凸起特征,和不规则的波浪状凸起特征,从而基于第一噪声值生成的体积云与真实世界的云彩更加相似,更具有真实感。
并且,考虑到了真实环境中光线多级散射的问题,从而在将多个采样点的颜色值进行叠加时,考虑到了多个采样点的亮度,根据多个采样点的亮度,将多个采样点的颜色值进行叠加,得到位置点的像素值,从而渲染出的体积云更加具有真实感。并且,在确定采样点的颜色值时,不仅考虑了太阳光的颜色,还考虑了天空的颜色,因此,渲染出的体积云颜色更加符合实际,从而更具真实感。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是相关技术提供的一种图像渲染方法的示意图;
图2是本申请实施例提供的一种实施环境的示意图;
图3是本申请实施例提供的一种渲染系统的示意图;
图4是本申请实施例提供的一种渲染界面的示意图;
图5是本申请实施例提供的一种生成纹理数据的方法的流程图;
图6是本申请实施例提供的一种纹理数据的示意图;
图7是本申请实施例提供的一种体积云图像的示意图;
图8是本申请实施例提供的一种体积云图像的示意图;
图9是本申请实施例提供的一种确定采样点的噪声值的方法的流程图;
图10是本申请实施例提供的一种渲染区域的示意图;
图11是本申请实施例提供的一种体积云图像的示意图;
图12是本申请实施例提供的一种体积云图像的示意图;
图13是本申请实施例提供的一种体积云图像的示意图;
图14是本申请实施例提供的一种体积云类型与海拔高度关系的示意图;
图15是本申请实施例提供的一种体积云图像的示意图;
图16是本申请实施例提供的一种体积云图像的示意图;
图17是本申请实施例提供的一种体积云图像的示意图;
图18是本申请实施例提供的一种体积云图像的示意图;
图19是本申请实施例提供的一种体积云图像的示意图;
图20是本申请实施例提供的一种体积云图像的示意图;
图21是本申请实施例提供的一种体积云图像渲染方法的流程图;
图22是本申请实施例提供的一种体积云多级散射的示意图;
图23是本申请实施例提供的一种体积云出散射的示意图;
图24是本申请实施例提供的一种体积云入散射的示意图;
图25是本申请实施例提供的一种体积云渲染方法的流程图;
图26是本申请实施例提供的一种图像渲染装置的结构示意图;
图27是本申请实施例提供的另一种图像渲染装置的结构示意图;
图28是本申请实施例提供的一种终端的结构框图;
图29是本申请实施例提供的一种服务器的结构示意图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。
可以理解,本申请所使用的术语“第一”、“第二”等可在本文中用于描述各种概念,但除非特别说明,这些概念不受这些术语限制。这些术语仅用于将一个概念与另一个概念区分。举例来说,在不脱离本申请的范围的情况下,可以将第一特征点称为第二特征点,且类似地,可将第二特征点称为第一特征点。
体积云:将采用计算机设备生成的虚拟云彩称为体积云。体积云与真实世界的云彩类似,具有半透明、无规则的特性,并且具有一定的形状和厚度。
位置点:位置点与计算机设备的屏幕像素点对应,通过确定位置点的像素值来确定屏幕像素点的像素值,可以是一个位置点对应一个屏幕像素点,也可以是一个位置点对应多个屏幕像素点。
纹理数据:是采用噪声算法生成的数据,可以表示为纹理图片的形式,纹理数据包括多个特征点和该多个特征点的噪声值,其中,每个特征点对应一个噪声值。
特征点:是纹理数据中具有噪声值的点,每个特征点的位置不同。
本申请实施例提供的图像渲染方法可以应用于计算机设备中,在一种可能实现方式中,该计算机设备可以为手机、电脑、平板电脑等终端。终端可以生成第一纹理数据,对于在同一平面上排布的多个位置点中的每个位置点,选取位于同一直线上的多个第一特征点作为该位置点的采样点,获取该多个采样点的第一噪声值,并根据当前设置的渲染参数,对每个采样点的第一噪声值进行修改,得到每个采样点的第二噪声值,根据每个采样点的第二噪声值,获取该位置点的像素值,从而根据多个位置点的像素值生成体积云图像。
在另一种可能实现方式中,计算机设备还可以是与终端上安装的目标应用相关的服务器。图2是本申请实施例提供的一种实施环境的示意图,参见图2,该实施环境包括:终端201和服务器202,终端201和服务器202通过网络连接。
该终端201可以为手机、电脑、平板电脑等安装有应用或者具有安装应用功能的终端,该服务器202可以是一台服务器,也可以是若干台服务器组成的服务器集群,或者是一个云计算服务中心。
服务器202可以生成第一纹理数据,对于在同一平面上排布的多个位置点中的每个位置点,选取位于同一直线上的多个第一特征点作为该位置点的采样点,获取该多个采样点的第一噪声值,并根据当前设置的渲染参数,对每个采样点的第一噪声值进行修改,得到每个采样点的第二噪声值,根据每个采样点的第二噪声值,获取该位置点的像素值,从而可以根据多个位置点的像素值生成体积云图像。之后,服务器202可以将生成的体积云图像发送给终端201,由终端201 显示该体积云图像;或者,服务器在获取到多个位置点的像素值后,将多个位置点的像素值发送给终端201,由终端201根据该多个位置点的像素值渲染出体积云图像。
上述计算机设备中可以安装有体积云渲染系统,通过该体积云渲染系统渲染体积云图像。图3是本申请实施例提供的一种体积云渲染系统,该体积云渲染系统可以包括:参数控件301、渲染引擎302和显示控件303,其中,参数控件301与渲染引擎302连接,渲染引擎302与显示控件303连接。
其中,参数控件301用于接收用户输入的渲染参数;渲染引擎302用于根据用户输入的渲染参数,生成体积云图像;显示控件303用于显示渲染引擎302 生成的体积云图像。
在一种可能实现方式中,该体积云渲染系统上存储有渲染程序。当参数控件 301接收到用户操作时,可以获取用户设置的渲染参数,根据获取到的渲染参数修改渲染程序中的渲染参数,通过该渲染程序向渲染引擎302发送执行渲染的指令,该指令中携带获取的渲染参数,渲染引擎302根据获取的渲染参数,生成体积云图像,体积云系统通过该渲染程序将体积云图像发送至显示控件303。
在一种可能实现方式中,该体积云渲染系统还包括图形库304,图形库304 为用于在计算机设备的显示器上渲染图形的程序库。该图形库304与渲染引擎 302连接,渲染引擎302在渲染体积云图像时,调用图形库304,通过该图形库完成体积云图像的渲染。
安装有体积云渲染系统的计算机设备可以在界面上显示渲染参数和体积云图像,该渲染参数与体积云图像可以位于同一显示界面上,也可以位于两个显示界面上,如,在设置渲染参数时,仅显示参数设置界面,在渲染参数设置完成之后,仅显示体积云图像。
例如,安装有体积云渲染系统的计算机设备可以显示如图4所示的界面,在该界面的左侧显示渲染参数设置窗口,在该界面的右侧显示体积云显示窗口。当左侧的渲染参数发生变化时,右侧的体积云图像也随之变化。
本申请实施例提供的图像渲染方法可以应用在下述任一场景中:
例如,渲染游戏的虚拟场景:
虚拟场景中可以包括人物、风景或者其他虚拟对象等,在渲染虚拟场景时,可以采用本申请实施例提供的图像渲染方法,在虚拟场景中渲染出体积云,并且,可以设置动态变化的渲染参数,从而在虚拟场景中渲染出动态变化的体积云。
采用本申请实施例提供的图像渲染方法,只需生成一次纹理数据,之后,可以根据动态变化的渲染参数,来动态改变纹理数据中噪声值,无需通过生成新的纹理数据来使噪声值发生变化,从而减少了生成体积云图像的运算量,使得体积云图像能够随着虚拟场景中的其他虚拟对象的变化而实时变化。
例如,特效生成场景:
在动画制作或者电视剧制作的过程中,可能会需要在画面中添加特效,例如,体积云的生成、体积云的消散等动态变化的体积云,采用本申请实施例提供的图像渲染方法,能够通过调节渲染参数,实现体积云的生成、体积云的消散等过程,并且减少了生成体积云图像的运算量,简化了生成体积云图像的过程。
图5是本申请实施例提供的一种生成纹理数据的方法的流程图,可以应用于计算机设备,该计算机设备可以是手机、电脑等终端,也可以服务器,如一台服务器、若干台服务器组成的服务器集群、一个云计算服务中心等。参见图3,该方法包括:
501、采用柏林噪声算法,生成第二纹理数据,该第二纹理数据包括多个第二特征点以及该多个第二特征点的第二噪声值。
柏林噪声算法是一种自然噪声生成算法,柏林噪声算法可以看做是一个噪声函数,将任一个整数作为该噪声函数的参数,该噪声函数可以根据该整数随机生成该整数的噪声值。由于柏林噪声具有良好的连续性,因此,本申请实施例采用柏林噪声算法,生成第二纹理数据,以便后续基于纹理数据生成体积云图像时,图像中的体积云具有良好的连续性。
第二纹理数据可以是一个三维纹理图片,第二特征点为三维纹理图片中具有噪声值的点,在一种可能实现方式中,采用柏林噪声算法,生成第二纹理数据可以包括:根据任一第二特征点的坐标值,采用柏林噪声算法,生成该第二特征点的第二噪声值,通过生成的多个第二特征点的第二噪声值,得到第二纹理数据。
例如,三维纹理图片可以为一个128*128*128的三维图片。其中,第二特征点的坐标值可以是第二特征点在三维坐标系中的坐标值,通过将三维坐标系中 (0,0,0)至(128,128,128)区间内的整数点作为第二特征点,并将第二特征点的坐标值作为柏林噪声算法的参数,从而得到三维坐标系中(0,0,0)至(128,128,128) 区间内的整数点的噪声值,因此,生成的第二纹理数据为一个128*128*128的三维图片。
由于采用柏林噪声算法生成的柏林噪声值具有随机性,因此,当下次采用柏林噪声算法,生成另一纹理数据的过程中,生成的这个纹理数据与上次生成的纹理数据可能会不同。
502、采用沃利噪声算法,生成第三纹理数据,该第三纹理数据包括多个第三特征点以及该多个第三特征点的第三噪声值,该多个第二特征点与该多个第三特征点一一对应。
考虑到仅使用柏林噪声算法生成的第二纹理数据渲染体积云图像,得到的体积云边缘可能没有较好的球状凸起特征,若想要纹理数据拥有球状凸起特征,就意味着在纹理数据中,每个小区域的噪声值应该基于同一个特征点计算得到,这种计算噪声值的方法,我们称之为基于点的噪声算法。
沃利噪声算法是一种基于点的噪声算法,通过在空间内随机选择一系列的特征点,计算任一特征点与其他特征点组成的特征点集的最短距离,来获取该特征点的噪声值。如图6所示,示出了一种采用沃利噪声算法生成的第三纹理数据,根据图6可以看出,该第三纹理数据具有明显的球状特征。因此,使用沃利噪声可以增强体积云的球状凸起特征,使得渲染出的体积云具有良好的层状结构,在体积云的边缘还可以出现明显的球状凸起。
在一种可能实现方式中,采用沃利噪声算法,生成第三纹理数据可以包括:在目标空间内随机选取一系列第三特征点,计算每个第三特征点与特征点集之间的最短距离,将该最短距离作为该第三特征点的噪声值,根据每个第三特征点的噪声值,生成第三纹理数据。其中,第三纹理数据可以表示为三维纹理图片的形式,目标空间为三维纹理图片的空间,特征点集是目标空间内一系列特征点组成的集合。在计算每个第三特征点与特征点集之间的最短距离时,是确定该第三特征点与除该第三特征点之外的特征点集之间的最短距离。
在另一种可能实现方式中,采用沃利噪声算法,生成第三纹理数据可以包括:将目标空间划分为多个单位立方体,在每个单位立方体内随机选取一个第三特征点;确定选取的多个第三特征点的第三噪声值,根据每个第三特征点的第三噪声值,生成第三纹理数据。其中,第三特征点的第三噪声值与目标空间内的特征点构成的特征点集满足以下关系:
其中,value为第三特征点的第三噪声值,sd为第三特征点与特征点集的最短距离。
在一种可能实现方式中,多个第二特征点与多个第三特征点一一对应,包括:多个第二特征点的数量与多个第三特征点的数量相同。在另一种可能实现方式中,多个第二特征点的数量与多个第三特征点的数量相同,且在纹理坐标系中,第二特征点的位置与第三特征点的位置一一对应。例如,第二特征点的位置与第三特征点的位置对应是指:在纹理坐标系中,该第二特征点的坐标位置隶属于该第三特征点所属的目标空间。
503、将多个第二特征点的第二噪声值与多个第三特征点的第三噪声值进行融合,得到多个第五特征点的第五噪声值。
由于第二纹理数据具有良好的连续性,而第三纹理数据具有球状凸起特征,因此,可以将第三纹理数据与第二纹理数据进行融合,得到第五纹理数据,该第五纹理数据包括多个第五特征点和多个第五特征点的第五噪声值。该第五纹理数据具有良好的连续性和球状凸起特征。
在本申请实施例中,第二特征点、第三特征点和第五特征点均是具有位置属性的点,第二特征点、第三特征点和第五特征点是在不同的纹理数据中表示位置的点,但是第二特征点、第三特征点和第五特征点可以相互对应,例如,第二特征点、第三特征点和第五特征点在纹理坐标系中指示同一位置或者同一位置区域。
在一种可能实现方式中,将多个第二特征点的第二噪声值与多个第三特征点的第三噪声值进行融合,可以包括:将第二特征点的第二噪声值与第三特征点的第三噪声值进行叠加,得到第五特征点的第五噪声值,其中,该第二特征点、第三特征点和第五特征点相互对应。
该第二特征点的第二噪声值、该第三特征点的第三噪声值和该第五特征点的第五噪声值满足以下关系:
base(P5)=remap(Perlin(P2),1-Worley(P3),1,0,1);
其中,P2为第二特征点,Perlin(P2)为第二特征点的第二噪声值,P3为第三特征点,Worley(P3)为第三特征点的第三噪声值,P5为第五特征点,base(P5)为第五特征点的第五噪声值,remap为映射函数,remap(value,a,b,c,d)指示将 value从[a,b]的区间内映射到[c,d]的区间内,a、b、c、d为任意数值。
504、采用腐蚀噪声算法,生成第四纹理数据,该第四纹理数据包括多个第四特征点以及该多个第四特征点的第四噪声值。
考虑到自然界中云彩的边缘通常呈现不规则的波浪状凸起,若仅适用第五纹理数据生成体积云图像,则生成的体积云边缘可能会比较平滑,因此,还需要采用腐蚀噪声算法,对第五纹理数据进行腐蚀处理,使其具备不规则的波浪状凸起特征。
其中,腐蚀噪声算法可以是一种三维沃利噪声算法,也可以是其他噪声算法,本申请实施例对此不做限定,生成的第四纹理数据可以是一个三维纹理图片,如, 32*32*32的三维纹理图片。
当腐蚀噪声算法为三维沃利噪声算法时,采用腐蚀噪声算法,生成第四纹理数据的过程与采用沃利噪声算法,生成第三纹理数据的方法类似,在此不再一一赘述。
505、根据多个第四特征点的第四噪声值和每个第四特征点的高度值,获取每个第四特征点的腐蚀参数。
由于自然界面中云彩的底部通常比较平坦,因此,为了避免在体积云的底部边缘形成波浪状凸起,因此,可以利用第四噪声,得到随高度变化的腐蚀因子。
其中,第四特征点的第四噪声值、第四特征点的高度值和第四特征点的腐蚀参数满足以下关系:
FErode(P4)=mix(Erode(P4),1-Erode(P4),fh);
mix(a,b,x)=(1-x)·a+x·b;
fh=clamp(10·h(P4),0,1);
其中,P4为第四特征点,FErode(P4)为第四特征点的腐蚀参数,Erode(P4)为第四特征点的第四噪声值,fh为目标参数,h(P4)为第四特征点P4的高度值, clamp(a,b,c)表示将a限制在[b,c]的区间内,例如,当a小于b时,clamp函数输出b;当a属于[b,c]的区间时,clamp函数输出a;当a大于c时,clamp 函数输出c。其中,a、b、c为任意数值,且c大于b。mix为混合函数,mix(a,b,x) 表示将a和b进行混合,并且a所占比例为1-x,b所占比例为x。
506、根据每个第四特征点的腐蚀参数,对多个第五特征点的第五噪声值进行腐蚀处理,得到多个第一特征点的第一噪声值。
根据每个第四特征点的腐蚀参数,对第五纹理数据进行腐蚀处理,可以得到第一纹理数据,该第一纹理数据包括多个第一特征点和该多个第一特征点的第一噪声值。后续若采用第一纹理数据渲染体积云图像,则渲染出的体积云与真实世界的云彩类似,在边缘部分具有波浪状凸起,更具有真实性。
其中,第四特征点的腐蚀参数、第五特征点的第五噪声值和第一特征点的第一噪声值满足以下关系:
Mix(P1)=remap(2·base(P5)-FErode(P4)·(1-base(P5)),0.2·FErode(P4),1,0,1) ;
其中,P1为第一特征点,Mix(P1)为第一特征点的第一噪声值,P5为第五特征点,base(P5)为第五特征点的第五噪声值,P4为第四特征点,FErode(P4)为第四特征点的腐蚀参数,remap为映射函数,remap(value,a,b,c,d)指示将value从[a,b]的区间内映射到[c,d]的区间内,a、b、c、d为任意数值。
需要说明的是,本申请实施例仅是以通过第二纹理数据、第三纹理数据、第四纹理数据和第五纹理数据,生成第一纹理数据为例,对生成第一纹理数据的过程进行示例性说明。而在另一实施例中,还可以通过其他方式来生成第一纹理数据。
在第一种可能实现方式中,采用噪声算法,生成第一纹理数据,该第一纹理数据包括多个第一特征点以及该多个第一特征点的第一噪声值。其中,该噪声算法可以是柏林噪声算法,图7示出了一种基于柏林噪声算法生成的体积云,基于柏林噪声算法生成的体积云具有良好的连续性。
在第二种可能实现中,采用柏林噪声算法,生成第二纹理数据;采用沃利噪声算法,生成第三纹理数据,将第二纹理数据与第三纹理数据进行融合,得到第一纹理数据。图8示出了基于该第一纹理数据生成的体积云,基于该第一纹理数据生成的体积云具有良好的连续性,并且,体积云边缘具有较好的球状凸起特征。
在一种可能实现方式中,将第二纹理数据与第三纹理数据进行融合可以包括:将多个第二特征点的第二噪声值与多个第三特征点的第三噪声值进行融合,得到多个第一特征点的第一噪声值。
另外,还可以采用其他方式来生成第一纹理数据,本申请实施例对生成第一纹理数据的方式不做限定。
需要说明的是,在本申请实施例中仅是以采用噪声算法,生成第一纹理数据,在该第一纹理数据中选取多个采样点,获取该多个采样点的第一噪声值为例进行说明,而在另一实施例中,可以采用多个噪声算法,生成多个纹理数据,当确定在同一平面上排布的多个位置点时,对于多个位置点中的每个位置点,在每个纹理数据中选取多个采样点,将每个采样点在每个纹理数据中的噪声值进行融合,得到对应采样点的第一噪声值。
其中,多个噪声算法的数量与多个纹理数据的数量可以相同。例如,采用柏林噪声算法,生成第二纹理数据;采用沃利噪声算法,生成第三纹理数据。在第二纹理数据中选取5个采样点,获取这5个采样点的第二噪声值,根据第二纹理数据中的5个采样点,确定第三纹理数据中的5个采样点,获取这5个采样点的第三噪声值,将每个采样点的第二噪声值和第三噪声值进行融合,得到每个采样点的第一噪声值。
需要说明的是,第一纹理数据可以为渲染体积云的源数据,因此,可以基于多个噪声算法,生成该第一纹理数据,之后采用其他噪声算法,对第一纹理数据中多个采样点的第一噪声值进行修改。例如,采用柏林噪声算法,生成第二纹理数据;采用沃利噪声算法,生成第三纹理数据,将第一纹理数据和第二纹理数据进行融合,得到第一纹理数据。在第一纹理数据中,选取多个采样点,获取该多个采样点对应的第一噪声值;采用腐蚀噪声算法,生成第四纹理数据,该第四纹理数据包括多个第四特征点和该多个第四特征点的第四噪声值,根据多个第四特征点的第四噪声值和每个第四特征点的高度值,获取每个第四特征点的腐蚀参数。根据多个采样点的坐标确定该多个采样点的腐蚀参数,根据每个采样点的腐蚀参数,对该每个采样点的第一噪声值进行腐蚀处理,得到每个采样点的第三噪声值。
相对于根据第四纹理数据对第五纹理数据进行腐蚀处理,得到第一纹理数据来说,采用该方案,体积云的源数据可以较快生成,从而加快了第一个体积云图像的渲染速度。并且,根据每个采样点的腐蚀参数对第一噪声值进行腐蚀处理,也减少了腐蚀处理的运算量。
本申请实施例提供的生成纹理数据的方法,采用沃利噪声算法和腐蚀噪声算法,对第二纹理数据进行融合和腐蚀处理,从而生成的第一纹理数据中的第一噪声值具有球状凸起特征,和不规则的波浪状凸起特征,从而基于第一噪声值生成的体积云与真实世界的云彩更加相似,更具有真实感。
在生成第一纹理数据之后,相当于生成了渲染体积云的源数据,从而后续渲染体积云图像时,渲染每一帧的体积云图像时,均可以从第一纹理数据中获取多个采样点的第一噪声值,基于该多个采样点的第一噪声值来渲染体积云图像。通过下述实施例对选取采样点,以及获取采样点的第二噪声值的过程进行了示例性说明。
图9是本申请实施例提供的一种确定采样点的噪声值的方法的流程图,可以应用于计算机设备,该计算机设备可以是手机、电脑等终端,也可以服务器,如一台服务器、若干台服务器组成的服务器集群、一个云计算服务中心等。参见图9,该方法包括:
901、确定在同一平面上排布的多个位置点。
计算机设备在渲染体积云图像时,会根据显示屏幕的多个像素点对应的像素值生成体积云图像。为了生成体积云图像,先确定在同一平面上排布的多个位置点,在同一平面上排布的多个位置点与显示屏幕的多个像素点为对应关系,可以获取该多个位置点的像素值,从而将该多个位置点的像素值作为显示屏幕的多个像素点的像素值。
在同一平面上排布的多个位置点可以看做是虚拟摄像机上提供的多个位置点,从而能够模拟通过该虚拟摄像机拍摄体积云图像,将拍摄的体积云图像显示在显示屏幕上的场景。为了将体积云图像在显示屏幕上更好地展示,多个像素点所在的平面与显示屏幕显示体积云图像的区域可以大小和形状相同。在一种可能实现方式中,根据显示屏幕的目标区域的大小和形状,确定在同一平面上排布的多个位置点,该目标区域为显示屏幕显示体积云图像的区域。
在一种可能实现方式中,根据显示屏幕的目标区域的大小和形状,确定在同一平面上排布的多个位置点,包括:根据目标区域的形状,确定多个位置点组成的形状;其中,目标区域的形状与多个位置点组成的形状相同。根据目标区域的像素点数量,确定多个位置点的数量;其中,目标区域的像素点数量与多个位置点的数量相同,或者,目标区域的像素点数量为多个位置点数量的整数倍。例如,目标区域的形状为长宽比例为43的长方形,多个位置点组成的形状也为长宽比例为4:3的长方形,目标区域的像素点数量为1024,多个位置点的数量为256,通过一个位置点的像素值,可以确定4个像素点的像素值,该4个像素点组成的区域为2*2的正方形区域。
另外,可以拖动显示屏幕显示的体积云图像,从而显示其他区域的体积云图像。当显示其他区域的体积云图像时,可以调整多个位置点所在平面的朝向,从而渲染出其他区域的体积云。
902、对于多个位置点中的每个位置点,在渲染区域中选取位于同一直线上的多个采样点。
其中,渲染区域为体积云图像所在的区域,真实世界中,体积云出现在一定的高度范围内,在地球表面不会出现体积云,在大气层外侧也不会出现体积云,因此,需要根据真实世界中云彩所在的高度,确定体积云图像所在的区域。
在一种可能实现方式中,如图10所示,以目标位置点为球心,以第一半径为球半径,确定第一球面区域;以该目标位置为球心,以第二半径为球半径,确定第二球面区域,第一半径大于第二半径;将第一球面区域与所述第二球面区域之间的区域,作为渲染区域。
例如,目标位置点为地心,第一半径为地球半径,第二半径为大气层与地心的距离。另外,第一半径还可以是大于地球半径,小于大气层与地心的距离的任一数值。
由于在同一平面上排布的多个位置点可以看做是虚拟摄像机上提供的多个位置点,每个位置点可以看做是虚拟摄像机的像素单元,而每个像素单元可以获取与该像素单元在同一直线上,且垂直于该像素单元所在平面的体积云图像,因此,在一种可能实现方式中,对于多个位置点中的每个位置点,在渲染区域中选取位于同一直线上的多个采样点,包括:以该位置点为起点,在指向渲染区域的方向创建一条射线,该射线与多个位置点所在的平面垂直;在该射线与渲染区域重叠的线段中,选取多个采样点,该多个采样点为该位置点对应的采样点,则每个位置点对应多个采样点。
由于体积云图像只需出现在渲染区域即可,因此,只需在射线与渲染区域重叠的线段中,选取采样点即可。在该射线与渲染区域重叠的线段中,选取多个采样点时,可以每隔目标距离均匀选取一个采样点,也可以在该线段上随机选取多个采样点,本申请实施例对此不做限定。
903、根据多个采样点在第一坐标系中的坐标以及第一坐标系和第二坐标系的映射关系,选取多个采样点在第一纹理数据中对应的采样点。
其中,渲染区域采用第一坐标系,第一纹理数据采用第二坐标系。根据渲染区域的确定方式可知,渲染区域可以采用世界坐标系,而第一纹理数据可以采用纹理坐标系。
因此,在渲染区域中确定多个采样点之后,还需要在第一纹理数据中选取该多个采样点在第一纹理数据中对应的采样点。在一种可能实现方式中,根据该多个采样点在第一坐标系中的坐标以及第一坐标系和第二坐标系的映射关系,选取该多个采样点,可以包括:根据该多个采样点在第一坐标系中的坐标以及第一坐标系和第二坐标系的映射关系,确定该多个采样点在第二坐标系中的坐标,将第一纹理数据中该坐标对应的特征点作为第一纹理数据中的采样点。
其中,采样点在第一纹理坐标系中的坐标和采样点在第二纹理坐标系中的坐标满足以下关系:
其中,P表示采样点在第一坐标系中的坐标,h(P)表示采样点在第二坐标系中的高度值,Pcenter为球心的坐标,Rinner为第一半径的长度,Router为第二半径的长度,length(P-Pcenter)为采样点与球心的距离。tex(Pw)为采样点在第二坐标系中的坐标,Px为采样点坐标的x分量,Pz为采样点坐标的z分量。其中,第二坐标系可以为二维坐标系。
由于在渲染体积云图像时,显示屏幕的像素点的像素值由采样点的颜色值决定,因此,采样点数量会决定采样精度以及渲染效果,采样点数量较少会导致采样点之间的距离较大,采样精度较低,像素值的误差较大,从而渲染出的体积云可能会出现带状条纹,降低体积云的真实感,如图11所示,采样点的数量为 64时,生成的体积云。因此,若出现这种情况,可以采用增加采样点个数,缩小采样点距离的方法来消除带状条纹,如图12所示,采样点数量为128时,生成的体积云。
另外,若增加采样点的数量也会相应增加渲染体积云图像所需的运算量,因此,还可以通过修改多个位置点对应的采样点的位置,从而对相邻位置点的像素值做平滑处理,消除采样精度较低产生的带状条纹,如图13所示,采样点数量为64时,生成的体积云。
在一种可能实现方式中,根据该多个采样点在第一坐标系中的坐标以及第一坐标系和第二坐标系的映射关系,选取该多个采样点,可以包括:根据该多个采样点在第一坐标系中的坐标以及第一坐标系和第二坐标系的映射关系,确定该多个采样点在第二坐标系中的坐标,按照目标数值,对第一纹理数据中选取的多个采样点的坐标进行调整,根据调整后的多个坐标,在第一纹理数据中重新选取该多个坐标对应的采样点。
其中,按照目标数值,对第一纹理数据中选取的多个采样点的坐标进行调整,可以包括:将每个采样点的坐标与目标数值进行统计处理,得到新的坐标值。其中,将每个采样点的坐标与目标数值进行统计处理可以是,将每个采样点的坐标与目标数值进行相加运算,或者是将每个采样点的坐标与目标数值进行相减运算,或者是将每个采样点的坐标与目标数值进行相乘运算,或者是将每个采样点的坐标与目标数值进行相除运算。
例如,采用拜耳滤波器修改采样点的位置,将多个位置点划分为n个4*4的小方格,其中,n可以为任一整数,对于任一小方格中的16个位置点,第一个位置点[0,0],那么将第一个位置点对应的采样点的坐标均加上u*[0,0],第二个位置点[0,1],那么将第一个位置点对应的采样点的坐标均加上u*[0,1],依次类推,得到多个位置点对应的采样点坐标。
其中,u表示拜耳滤波器的影响系数,u越大,采样点的位置偏移越明显。另外,u的值过大会导致采样点位置偏移过大而得到错误的结果,因此u的值一般不超过1。在一种可能实现方式中,拜耳滤波器可以表示为如下的矩阵:
另外,选取多个采样点在第一纹理数据中对应的采样点之后,由于第一纹理数据中的采样点也是第一纹理数据中的第一特征点,将第一特征点作为采样点之后,第一特征点的第一噪声值也即是采样点的第一噪声值。
904、获取当前设置的渲染参数,该渲染参数包括类型参数和覆盖率参数。
其中,渲染参数可以是用户当前输入的渲染参数,在每次渲染参数发生变化时,都可以根据当前设置的渲染参数,重新生成体积云图像。
渲染参数还可以是自动发生变化的参数,可以设置渲染参数随时间变化的曲线,计算机设备可以根据获取的动态变化的渲染参数,实时渲染出相应的体积云图像,从而生成动态变化的体积云。
不同类型的体积云的特点不同,如图14所示,示出了不同海拔高度生成的不同类型的体积云,根据多种类型的体积云的形状可以确定不同类型的体积云的特点。例如,卷云的云体较薄,没有明显的形态特征,而积云和层云的形态特征则比较明显,而层积云、雨积云、高层云、雨层云、卷积云等都是由积云或者层云发展而来的。并且体积云随着海拔高度的增高,晕的厚度会变薄,体积云的底部较为平坦,顶部较为高耸,且球状凸起较多。
类型参数指示体积云的类型,用于确定体积云的形态更像积云还是像层云。因此,可以将体积云划分为积云类型和层云类型,根据类型参数确定层云和积云的形态特征对生成的体积云的影响权重。或者,为了让云的形态变化更加平滑自然,将体积云划分为积云类型、层云类型和处于层云和积云中间形态的层积云类型,还可以引入层积云的影响权重。
在一种可能实现方式中,将体积云划分为第一体积云类型和第二体积云类型,根据类型参数,确定第一体积云类型的第一权重和第二体积云类型的第二权重,第一权重和第二权重的和值为1。
在一种可能实现方式中,将体积云划分为第一体积云类型、第二体积云类型和第三体积云类型,根据类型参数,确定第一体积云类型的第一权重、第二体积云类型的第二权重和第三体积云类型的第三权重,第一权重、第二权重和第三权重的和值为1。
在一种可能实现方式中,类型参数、第一权重、第二权重和第三权重满足以下关系:
fs=1-clamp(2·Type,0,1);
fsc=1-2·|Type-0.5|;
fsc=2·clamp(Type-0.5,0,1);
其中,Type为类型参数,其取值范围可以为[0,1],gra为类型参数对应的梯度,fs为第一体积云类型对应的第一权重,fsc为第二体积云类型对应的第二权重, fc为第二体积云类型对应的第三权重,gras为第一体积云类型对应的梯度,grasc为第二体积云类型对应的梯度,grac为第三体积云类型对应的梯度, clamp(a,b,c)表示将a限制在[b,c]的区间内,a、b、c为任意数值,例如,当a小于b时,clamp函数输出b;当a属于[b,c]的区间时,clamp函数输出a;当a大于c时,clamp函数输出c。其中,a、b、c为任意数值,且c大于b。|a| 表示a的绝对值。
905、根据类型参数对应的梯度,确定类型参数对第一噪声值的第一影响参数,体积云的梯度由体积云的类型和体积云的高度值确定。
由于层云、层积云和积云的厚度分布不同,因此还需要根据体积云类型获取该体积云类型对应的梯度,体积云类型对应的梯度用于描述该体积云类型的体积云的厚度随高度的变化情况。根据类型参数与体积云类型的对应关系、以及体积云类型与梯度的对应关系,从而获取到体积云厚度随高度的变化梯度。
在一种可能实现方式中,体积云类型对应的梯度可以是预先设置的。该梯度可以根据多次渲染体积云的实验的实验结果确定,也可以根据真实世界的云彩的特征确定,本申请实施例对该梯度的获取方式不做限定。
例如,体积云类型与梯度的对应关系可以如表1所示。其中,梯度值(0.0, 0.1,0.2,0.3)表示层云的梯度值随层云的高度的变化情况。
表1
云的类型 | 梯度值 |
层云 | (0.0,0.1,0.2,0.3) |
层积云 | (0.008,0.165,0.048,0.625) |
积云 | (0.02,0.2,0.88,0.98) |
其中,类型参数、类型参数对应的梯度、第一影响参数、体积云的高度值满足以下关系:
gra=fs·gras+fsc·grasc+fc·grac;
其中,gra为类型参数对应的梯度,gras为第一体积云类型对应的梯度,grasc为第二体积云类型对应的梯度,grac为第三体积云类型对应的梯度。FType(P)为采样点P的第一影响参数,smooth函数为平滑函数,clamp(a,b,c)表示将a限制在[b,c]的区间内,a、b、x为任意数值,grax为梯度的x分量、gray为梯度的y分量、graz为梯度的z分量、graw为梯度的w分量,h(P)为采样点的高度值。
906、采用运动噪声算法,获取每个采样点的第六噪声值。
其中,运动噪声算法是用于实现体积云运动的噪声算法,该运动噪声算法可以为二维柏林噪声算法,该二维柏林噪声算法生成的纹理数据可以为二维纹理图片形式。
907、根据覆盖率参数和每个采样点的第六噪声值,确定对第一噪声值的第二影响参数。
其中,第二影响参数、第六噪声值和覆盖率参数满足以下关系:
FCoverage(P)=Animate(P+speed·time)·Coverage;其中,P为采样点,Coverage为采样点的覆盖率参数,取值范围为[0,1],Animate(P)为采样点对应的运动噪声值,speed表示体积云的运动速度,time表示时间,FCoverage(P)为采样点的第二影响参数。
其中,覆盖率参数用于控制体积云的厚度,通过运动噪声算法使得生成的体积云具有移动效果的同时,由于采用了覆盖率参数控制体积云的厚度,可以使得在覆盖率参数增大时,达到体积云不断膨胀的效果,来模拟体积云的生成;在覆盖率参数减小时,达到体积云不断缩小的效果,来模拟体积云的消散。
908、根据第一影响参数和第二影响参数,修改每个采样点的第一噪声值,得到每个采样点的第二噪声值。
其中,第二噪声值、第一噪声值和覆盖率参数满足以下关系:
W(P)=FType·FCoverage(P)·Mix(P);
其中,P为采样点,W(P)为采样点的第二噪声值,Mix(P)为采样点的第一噪声值,FType(P)为采样点P的第一影响参数,FCoverag(P)为采样点P的第二影响参数。其中,采样点的第二噪声值指示体积云在该采样点的厚度。
当Type=0,Coverage=0.45时,渲染出的体积云如图15所示;
当Type=0.5,Coverage=0.45时,渲染出的体积云如图16所示;
当Type=1,Coverage=0.45时,渲染出的体积云如图17所示;
当Type=1,Coverage=1时,渲染出的体积云如图18所示。
根据图15至18可知,通过渲染参数可以调整生成的体积云类型以及生成的体积云的厚度,从而可以根据渲染参数生成任一用户需要的体积云形状。例如,用户想要晴天时体积云的效果,此时,可以将Type设置为0.1,将Coverage设置为0.45,从而得到如图19所示的体积云。又如,用户想要阴天时体积云的效果,此时,可以将Type设置为0.711,将Coverage设置为1,从而得到如图20 所示的体积云。
本申请实施例仅是以渲染参数包括类型参数和覆盖率参数为例进行说明,而在另一实施例中,渲染参数还可以仅包括类型参数,根据该类型参数,确定对第一噪声值的第一影响参数,根据该第一影响参数,修改每个采样点的第一噪声值,得到每个采样点的第二噪声值。
其中,第二噪声值、第一噪声值和第一影响参数满足以下关系:
W(P)=FType(P)·Mix(P);
其中,W(P)为采样点P的第二噪声值,Mix(P)为采样点P的第一噪声值, FType(P)为采样点P的第一影响参数。
在另一实施例中,渲染参数还可以仅包括覆盖率参数,根据覆盖率参数和每个采样点的第六噪声值,确定对第一噪声值的第二影响参数,根据第二影响参数,修改每个采样点的第一噪声值,得到每个采样点的第二噪声值。
其中,第二噪声值、第一噪声值和覆盖率参数满足以下关系:
W(P)=FCoverage(P)·Mix(P);
其中,W(P)为采样点p的第二噪声值,Mix(P)为采样点P的第一噪声值, FCoverage(P)为采样点P的第二影响参数。
本申请实施例提供的获取采样点的噪声值方法,通过渲染参数,对采样点的第一噪声值进行修改,得到采样点的第二噪声值,无需生成新的纹理数据,即可获取到与第一噪声值不同的第二噪声值。并且渲染参数包括类型参数和覆盖率参数,因此可以按照用户的需求生成相应的体积云。当渲染参数动态变化时,计算机设备还可以根据动态变化的渲染参数不断生成新的体积云图像,从而实现了体积云的动态变化。
在获取到每个采样点的第二噪声值之后,可以根据虚拟环境的环境光参数和每个采样点的第二噪声值,获取每个采样点的颜色值,根据每个位置点的多个采样点获取到每个位置点的像素值。下述实施例对获取每个采样点的颜色值的过程、以及根据每个采样点的颜色值确定每个位置点的像素值的过程进行了示例性说明。
图21是本申请实施例提供的一种体积云图像渲染方法的流程图,可以应用于计算机设备,该计算机设备可以是手机、电脑等终端,也可以服务器,如一台服务器、若干台服务器组成的服务器集群、一个云计算服务中心等。参见图21,该方法包括:
2101、获取虚拟环境的环境光参数。
由于眼睛看到的物体颜色,是根据该物体的反射光的颜色确定的,因此在确定体积云的颜色值时,需要根据虚拟环境的环境光参数,来确定采样点出反射光的颜色值,从而确定体积云的颜色值,该环境光参数可以包括太阳的直射光颜色值和天空的颜色值。
其中,虚拟环境中的环境光参数可以是由设置好的虚拟环境确定的,例如,在游戏的虚拟场景中渲染体积云,获取虚拟环境的环境光参数可以包括:获取游戏中已设置好的虚拟环境的环境光参数。
虚拟环境的环境光参数还可以是由用户确定的,在计算机设备上可以显示调节环境光参数的按键,如图4所示,可以在显示界面上调节太阳的高度、太阳的照射角度等。获取虚拟环境的环境光参数可以包括:当检测到用户对环境光参数的输入操作时,获取用户输入的环境光参数。
2102、根据每个采样点的第二噪声值和环境光参数,获取每个采样点的颜色值。
该环境光参数可以包括太阳的直射光颜色值和天空的颜色值。可以根据太阳的直射光颜色值、天空的颜色值和每个采样点的第二噪声值,确定每个采样点的颜色值。
其中,体积云的颜色值、太阳的直射光颜色值和天空的颜色值满足以下关系:
C(P)=mix[Cbase,Cambient,W(P)];
Cambient=mix(Csky,Csun,μ);
Csky=mix[mix(C3,Csun,hsun),C1+C2·(cosβ)α,fsky];
mix(a,b,x)=(1-x)·a+x·b;
fsky=[max(hsky,0)]w;
其中,P为采样点,C(P)表示在采样点处体积云的颜色值,Cbase表示体积云的第一颜色值,Cambient表示环境光的颜色值,W(P)表示采样点的第二噪声值, Csky表示天空的颜色值,Csun表示太阳的直射光的颜色值,μ表示大气散射光和太阳光对Cbase的影响程度,C1表示蓝色的颜色值,C2表示黄白色的颜色值,C3表示橘红色的颜色值,hsum表示太阳的高度,p为平面至采样点方向与平面至太阳方向的夹角,α为聚焦因子,fsky表示天空的颜色受太阳光的影响程度,hsky表示天空的高度,mix为混合函数,max为最大值函数,mix(hsky,0)表示当hsky大于0 时输出hsky,当hsky小于0时输出0。
考虑到真实世界中白天的时候太阳附近呈黄白色,天空呈蓝色;在日落的时候,太阳附近的天空呈橘红色,太阳本身呈黄白色,而离太阳较远的天空仍旧呈蓝色。因此,使用C1表示天空呈现的蓝色,使用C2表示太阳的呈现的黄白色,使用C3表示日落时太阳附近的天空呈现的橘红色,使用Csun表示太阳直射光的颜色。
考虑到真实世界中在没有太阳直射光且大气散射光较弱的晚上,云彩仍旧会呈现淡淡的灰白色。因此用Cbase来表示体积云云在晚上呈现的颜色。从而根据上述环境光的影响,获取到体积云在每个采样点处的颜色值。
其中,W(P)为是采样点P的第二噪声值,
该第二噪声值可以是通过对第一噪声值进行修改得到的,也可以是根据采样点P与太阳之间的多个采样点的第二噪声值确定的。在一种可能实现方式中,对于每个采样点,根据该采样点和太阳的位置,确定目标区域,获取目标区域内至少一个采样点的第二噪声值,根据至少一个采样点的第二噪声值,确定该采样点的第二噪声值。
其中,确定目标区域可以包括:以采样点P的位置为顶点,以采样点P和太阳之间的直线为中心,确定一个圆锥形区域,将该圆锥形区域作为目标区域。
其中,根据目标区域内至少一个采样点的第二噪声值,确定该采样点P的第二噪声值可以包括:根据至少一个采样点与采样点P的位置关系,为该至少一个采样点分配权重,将至少一个采样点中的每个采样点的权重和第二噪声值进行加权处理,得到采样点P的第二噪声值。其中,至少一个采样点中的任一采样点与采样点P的距离越近,权重越高;或者,至少一个采样点中的任一采样点与采样点P的距离越近,权重越小。
2103、将多个采样点的颜色值进行叠加,将叠加后的颜色值作为位置点的像素值。
其中,将多个采样点的颜色值进行叠加,将叠加后的颜色值作为位置点的像素点可以包括:将多个采样点的颜色值进行平均处理,得到多个采样点的平均颜色值,将该平均颜色值,作为该位置点的像素值。
或者,将多个采样点的颜色值进行叠加,将叠加后的颜色值作为位置点的像素点可以包括:根据采样点与位置点的距离,为每个采样点分配权重,将每个采样点的颜色值与权重进行加权处理,得到目标颜色值,将该目标颜色值作为该位置点的像素值。其中,采样点的位置与位置点的距离越近,该采样点的权重越高。
另外,在真实世界中,云彩是由可见液滴、冰晶以及其他多种微粒所构成的集合体。太阳的直射光线可以进入云彩,部分直射光线会直接被散射到云彩之外,部分直射光线在构成云彩的微粒间进行多级散射。此外,除了太阳的直射光线,被地表和附近大气散射出来的环境光线也会作为入射光的一部分在云彩内进行散射。并且,在散射的过程中,构成云的微粒会吸收光线的能量,让光线的强度逐渐衰减。如图22所示,示出了一种太阳的直射光线与环境光线在云彩中的散射过程图。
因此,在将多个采样点的颜色值进行叠加,将叠加后的颜色值作为位置点的像素值时,还可以考虑散射因素,从而确定在将多个采样点的亮度,根据多个采样点的亮度,将多个采样点的颜色值进行叠加,将叠加后的颜色值作为位置点的像素值。
云彩内的光线散射比较复杂,为了尽可能地使渲染出的体积云更具有真实感,本申请实施例将云彩对入射光的多级散射过程分为光线衰减过程、出散射过程和入散射过程。其中,光线衰减过程用于模拟入射光在多级散射的过程中被微粒吸收的现象。出散射过程用于模拟多级散射造成的各向异性散射现象。入散射过程用于模拟多级散射过程中不同位置的微粒接收到的光强度不同的现象。
在光线衰减过程中,入射光的光照强度、出射光的光照强度满足以下关系:
I=I0·e-r·τ(ΔS);
其中,I0表示入射光的光照强度,I表示入射光被吸收之后的光照强度,也即是出射光的光照强度,ΔS表示入射光进入体积云的长度,r表示体积云对入射光的吸收系数,而τ(ΔS)表示入射光进入体积云的光学厚度,也就是在ΔS距离上体积云的厚度。考虑到当ΔS足够小时,体积云可视为均匀的光学介质,假设 PΔS为处于ΔS距离内的一个点,则τ(ΔS)=ΔS·Mix(PΔS)。
另外,在真实世界中,当入射光进入云彩之后会从不同的方向散射不同强度的散射光,这种现象称为云彩的各向异性异性散射。而云彩的各向异性散射遵循米氏散射定律,入射光在进入云彩之后,大部分的入射光线会沿着入射光的方向进行散射,如图23所示。
其中,p(g,θ)为不同方向的散射光强度,g是一个用于描述散射光的分布特点的参数,其取值范围为[-1,1],θ表示视线与太阳光直射方向的夹角。
入散射则近似地模拟了多级散射过程中不同位置的微粒接收到的光强度不同的现象。由于云彩对入射光的多级散射,微粒越处于云彩的内部,其周围的微粒数越多,其能接收到来自其他微粒的散射光的概率也就越高,如图24所示。
因为直接计算云彩的多级散射的路径所需的运算量非常大,所以为了减少运算量,可以将云彩抽象为一个光的接收器,并使用接收率表示微粒接收到来自其他微粒的散射光的概率,微粒接收到来自其他微粒的散射光的概率越高,该微粒对光的接收率也就越高,入射光的强度也就越大。这里,可以使用以下公式计算微粒对光的接受率:Pr(d)=1-e-r·τ(d);其中,r表示体积云对入射光的吸收系数, d表示入射光进入体积云的长度,τ(d)表示入射光进入体积云的光学厚度,Pr(d) 表示位于d处的采样点对光的接受率。
在一种可能实现方式中,位置点的像素值、采样点的颜色值满足以下关系:
其中,Ccloud(θ)表示位置点的像素值,θ表示视线方向与太阳光直射方向的夹角,其中,视线方向为位置点指向采样点的方向。L(P,θ)表示在采样点P处的入射光的强度,C(P)表示采样点P处体积云的颜色值,ΔS表示入射光进入体积云的长度,r表示体积云对入射光的吸收系数,τ(ΔS)=ΔS·W(P);τ(ΔS)表示入射光进入体积云的光学厚度,W(P)表示采样点的第二噪声值,Pend为位于同一直线上的多个采样点中距离目标位置点最远的采样点,Pstart为位于同一直线上的多个采样点中距离目标位置点最近的采样点。
2104、根据多个位置点的像素值生成体积云图像。
在一种可能实现方式中,每个位置点对应一个显示屏幕的像素点,将该位置点的像素值,作为该像素点的像素值,根据显示屏幕上多个像素点的像素值,生成体积云图像。
在另一种可能实现方式中,每个位置点对应多个显示屏幕的像素点,将该位置点的像素值,作为该多个像素点的像素值,根据显示屏幕上多个像素点的像素值,生成体积云图像。
本申请实施例提供的体积云图像渲染方法,考虑到了真实环境中光线多级散射的问题,从而在将多个采样点的颜色值进行叠加时,考虑到了多个采样点的亮度,根据多个采样点的亮度,将多个采样点的颜色值进行叠加,得到位置点的像素值,从而渲染出的体积云更加具有真实感。并且,在确定采样点的颜色值时,不仅考虑了太阳光的颜色,还考虑了天空的颜色,避免了天空颜色为红色时,生成的体积云颜色仍为白色,导致的体积云颜色与天空颜色不匹配的缺陷,因此,渲染出的体积云颜色更加符合实际,从而更具真实感。
综合上述实施例,本方案的图像渲染流程可以包括以下步骤:
步骤1:采用噪声算法,生成第一纹理数据,该第一纹理数据包括多个第一特征点以及该多个第一特征点的第一噪声值。
如图25所示,可以采用柏林噪声算法和沃利噪声算法,生成第五纹理数据,采用腐蚀噪声算法,生成第四纹理数据,通过第四纹理数据对第五纹理数据进行腐蚀处理,得到第一纹理数据,该第一纹理数据具有体积云的基本特征,该基本特征可以是无规则性、边缘具有波浪状凸起等。
步骤2:确定在同一平面上排布的多个位置点。
步骤3:对于多个位置点中的每个位置点:
选取位于同一直线上的多个第一特征点作为采样点,获取选取的多个采样点的第一噪声值;根据当前设置的渲染参数,对每个采样点的第一噪声值进行修改,得到该每个采样点的第二噪声值,该采样点的第二噪声值指示体积云在该采样点的厚度;根据该每个采样点的第二噪声值以及虚拟环境的环境光参数,获取该位置点的像素值。
其中,该渲染参数可以包括类型参数和覆盖率参数,可以通过覆盖率参数和采用运动噪声算法生成的第六纹理数据改变体积云的厚度,通过类型因子,改变体积云的形状。
步骤4:根据该多个位置点的像素值生成体积云图像。
图26是本发明实施例提供的一种图像渲染装置的结构示意图,参见图 26,该装置包括:确定模块2601、获取模块2602和图像生成模块2603。
确定模块2601,用于确定在同一平面上排布的多个位置点;
获取模块2602,用于对于该多个位置点中的每个位置点:
选取位于同一直线上的多个第一特征点作为采样点,获取选取的多个采样点的第一噪声值;
根据当前设置的渲染参数,对每个采样点的第一噪声值进行修改,得到该每个采样点的第二噪声值,该采样点的第二噪声值指示体积云在该采样点的厚度;
根据该每个采样点的第二噪声值,获取该位置点的像素值;
图像生成模块2603,用于根据该多个位置点的像素值生成体积云图像。
如图27所示,在一种可能实现方式中,该装置还包括:
数据生成模块2604,用于采用噪声算法,生成第一纹理数据,该第一纹理数据包括多个第一特征点以及该多个第一特征点的第一噪声值。
在一种可能实现方式中,该数据生成模块2604,包括:
第一生成单元26041,用于采用柏林噪声算法,生成第二纹理数据,该第二纹理数据包括多个第二特征点以及该多个第二特征点的第二噪声值;
第二生成单元26042,用于采用沃利噪声算法,生成第三纹理数据,该第三纹理数据包括多个第三特征点以及该多个第三特征点的第三噪声值,该多个第二特征点与该多个第三特征点一一对应;
融合单元26043,用于将该多个第二特征点的第二噪声值与该第三多个特征点的第三噪声值进行融合,得到该多个第一特征点的第一噪声值;
第三生成单元26044,用于根据该多个第一特征点的第一噪声值,生成该第一纹理数据。
在一种可能实现方式中,该第二生成单元26042,用于将目标空间划分为多个单位立方体,在每个单位立方体内随机选取一个第三特征点;
该第二生成单元26042,还用于确定选取的多个第三特征点的第三噪声值,该第三特征点的第三噪声值与该目标空间内的特征点构成的特征点集满足以下关系:
该第二生成单元26042,还用于根据该每个第三特征点的第三噪声值,生成该第三纹理数据。
在一种可能实现方式中,该第一特征点的第一噪声值、该第二特征点的第二噪声值和该第三特征点的第三噪声值满足以下关系:
Mix(P1)=remap(Perlin(P2),1-Worley(P3),1,0,1);
其中,P1为该第一特征点,Mix(P1)为该第一特征点的第一噪声值,P2为该第二特征点,Perlin(P2)为该第二特征点的第二噪声值,P3为该第三特征点, Worley(P3)为该第三特征点的第三噪声值;remap为映射函数, remap(value,a,b,c,d)指示将value从[a,b]的区间内映射到[c,d]的区间内,a、 b、c、d为任意数值。
在一种可能实现方式中,该融合单元26043,用于采用腐蚀噪声算法,生成第四纹理数据,该第四纹理数据包括多个第四特征点以及该多个第四特征点的第四噪声值;
该融合单元26043,还用于根据该多个第四特征点的第四噪声值和每个第四特征点的高度值,获取该每个第四特征点的腐蚀参数;
该融合单元26043,还用于将该多个第二特征点的第二噪声值与该多个第三特征点的第三噪声值进行融合,得到多个第五特征点的第五噪声值;
该融合单元26043,还用于根据每个第四特征点的腐蚀参数,对该多个第五特征点的第五噪声值进行腐蚀处理,得到该多个第一特征点的第一噪声值。
在一种可能实现方式中,该第四特征点的第四噪声值、该第四特征点的高度值和该第四特征点的腐蚀参数满足以下关系:
FErode(P4)=mix(Erode(P4),1-Erode(P4),fh);
mix(a,b,x)=(1-x)·a+x·b;
fh=clamp(10·h(P4),0,1);
其中,P4为该第四特征点,FErode(P4)为该第四特征点的腐蚀参数,Erode(P4) 为该第四特征点的第四噪声值,fh为目标参数,h(P4)为该第四特征点的高度值, clamp(a,b,c)表示将a限制在[b,c]的区间内,a、b、c为任意数值。
在一种可能实现方式中,该第二特征点的第二噪声值、该第三特征点的第三噪声值和该第五特征点的第五噪声值满足以下关系:
base(P5)=remap(Perlin(P2),1-Worley(P3),1,0,1);
其中,P2为该第二特征点,Perlin(P2)为该第二特征点的第二噪声值,P3为该第三特征点,Worley(P3)为该第三特征点的第三噪声值,P5为该第五特征点, base(P5)为该第五特征点的第五噪声值,remap为映射函数, remap(value,a,b,c,d)指示将value从[a,b]的区间内映射到[c,d]的区间内,a、 b、c、d为任意数值。
在一种可能实现方式中,该第四特征点的腐蚀参数、该第五特征点的第五噪声值和该第一特征点的第一噪声值满足以下关系:
Mix(P1)=remap(2·base(P5)-FErode(P4)·(1-base(P5)),0.2·FErode(P4),1,0,1) ;
其中,P1为该第一特征点,Mix(P1)为该第一特征点的第一噪声值,P5为该第五特征点,base(P5)为该第五特征点的第五噪声值,P4为该第四特征点, FErode(P4)为该第四特征点的腐蚀参数,remap为映射函数, remap(value,a,b,c,d)指示将value从[a,b]的区间内映射到[c,d]的区间内,a、 b、c、d为任意数值。
在一种可能实现方式中,该获取模块2602包括:
第一选取单元26021,用于在渲染区域中选取位于同一直线上的多个采样点,该渲染区域采用第一坐标系,该第一纹理数据采用第二坐标系;
第二选取单元26022,用于根据该多个采样点在该第一坐标系中的坐标以及该第一坐标系和该第二坐标系的映射关系,选取该多个采样点在该第一纹理数据中对应的采样点。
在一种可能实现方式中,该获取模块2602还包括:
调整单元26023,用于按照目标数值,对该第一纹理数据中选取的多个采样点的坐标进行调整,根据调整后的多个坐标,在该第一纹理数据中重新选取该多个坐标对应的采样点。
在一种可能实现方式中,该获取模块2602还包括:
第一确定单元26024,用于以目标位置点为球心,以第一半径为球半径,确定第一球面区域;
第二确定单元26025,用于以该目标位置为球心,以第二半径为球半径,确定第二球面区域,该第一半径大于该第二半径;
该第二确定单元26025,还用于将该第一球面区域与该第二球面区域之间的区域,作为该渲染区域。
在一种可能实现方式中,该第一选取单元26021,用于以该位置点为起点,在指向该渲染区域的方向创建一条射线;
该第一选取单元26021,还用于在该射线与该渲染区域重叠的线段中,选取该多个采样点。
在一种可能实现方式中,该渲染参数包括类型参数,该类型参数指示体积云的类型,该获取模块2602,包括:
第三确定单元26026,用于根据该类型参数对应的梯度,确定该类型参数对该第一噪声值的第一影响参数;
修改单元26027,用于根据该第一影响参数,对该每个采样点的第一噪声值进行修改,得到该每个采样点的第二噪声值。
在一种可能实现方式中,该类型参数与该类型参数对应的梯度满足以下关系:
gra=fs·gras+fsc·grasc+fc·grac;
fs=1-clamp(2·Type,0,1);
fsc=1-2·|Type-0.5|;
fsc=2·clamp(Type-0.5,0,1);
其中,Type为该类型参数,gra为该类型参数对应的梯度,fs为第一体积云类型对应的第一权重,fsc为第二体积云类型对应的第二权重,fc为第二体积云类型对应的第三权重,gras为该第一体积云类型对应的梯度,grasc为该第二体积云类型对应的梯度,grac为该第三体积云类型对应的梯度。
在一种可能实现方式中,该第一影响参数、该类型参数、该体积云的梯度和该体积云的高度值满足以下关系:
其中,P为采样点,FType(P)为该采样点的第一影响参数,smooth函数为平滑函数,clamp(a,b,c)表示将a限制在[b,c]的区间内,a、b、c为任意数值,grax 为该梯度的x分量、gray为该梯度的y分量、graz为该梯度的z分量、graw为该梯度的w分量,h(P)为该采样点的高度值。
在一种可能实现方式中,该第二噪声值、该第一噪声值和该第一影响参数满足以下关系:
W(P)=FType(P)·Mix(P);
其中,P为该采样点,W(P)为该采样点的第二噪声值,Mix(P)为该采样点的第一噪声值,FType(P)为该采样点的第一影响参数。
在一种可能实现方式中,该渲染参数包括覆盖率参数,该覆盖率参数指示体积云的厚度,该获取模块,包括:
第一获取单元26028,用于采用运动噪声算法,获取该每个采样点的第六噪声值;
第四确定单元26029,用于根据该覆盖率参数和该每个采样点的第六噪声值,确定对该第一噪声值的第二影响参数;
修改单元26027,用于根据该第二影响参数,对该每个采样点的第一噪声值进行修改,得到该每个采样点的第二噪声值。
在一种可能实现方式中,该第二影响参数、该第六噪声值和该覆盖率参数满足以下关系:
FCoverage(P)=Animate(P+speed·time)·Coverage;
其中,P为该采样点,Coverage为该采样点的覆盖率参数,Animate(P)为该采样点对应的运动噪声值,speed表示体积云的运动速度,time表示时间, FCoverage(P)为该采样点的第二影响参数。
在一种可能实现方式中,该第二噪声值、该第一噪声值和该覆盖率参数满足以下关系:
W(P)=FCoverage(P)·Mix(P);
其中,P为该采样点,W(P)为该采样点的第二噪声值,Mix(P)为该采样点的第一噪声值,FCoverage(P)为该采样点的第二影响参数。
在一种可能实现方式中,该获取模块2602,包括:
第二获取单元,用于根据该每个采样点的第二噪声值,获取该每个采样点的颜色值;
叠加单元,用于将该多个采样点的颜色值进行叠加,将叠加后的颜色值作为该位置点的像素值。
在一种可能实现方式中,该第二获取单元,用于根据该每个采样点的第二噪声值和虚拟环境的环境光参数,获取该每个采样点的颜色值。
在一种可能实现方式中,该环境光参数包括太阳的直射光颜色值和天空的颜色值;
该体积云的颜色值、该太阳的直射光颜色值和该天空的颜色值满足以下关系:
C(P)=mix[Cbase,Cambient,W(P)];
Cambient=mix(Csky,Csun,μ);
Csky=mix[mix(C3,Csun,hsun),C1+C2·(cosβ)α,fsky];
mix(a,b,x)=(1-x)·a+x·b;
fsky=[max(hsky,0)]w;
其中,P为采样点,C(P)表示在该采样点处体积云的颜色值,Cbase表示该体积云的第一颜色值,Cambient表示环境光的颜色值,W(P)表示该采样点的第二噪声值,Csky表示天空的颜色值,Csun表示太阳的直射光的颜色值,μ表示大气散射光和太阳光对Cbase的影响程度,C1表示蓝色的颜色值,C2表示黄白色的颜色值, C3表示橘红色的颜色值,hsun表示太阳的高度,β为该平面至该采样点方向与该平面至太阳方向的夹角,α为聚焦因子,fsky表示天空的颜色受太阳光的影响程度, hsky表示天空的高度。
图28是本申请实施例提供的一种终端的结构框图。该终端2800用于执行上述实施例中终端或智能设备执行的步骤,可以是便携式移动终端,比如:智能手机、平板电脑、MP3播放器(Moving Picture Experts Group Audio Layer III,动态影像专家压缩标准音频层面3)、MP4(Moving Picture Experts Group Audio Layer IV,动态影像专家压缩标准音频层面4)播放器、笔记本电脑或台式电脑。终端2800还可能被称为用户设备、便携式终端、膝上型终端、台式终端等其他名称。
通常,终端2800包括有:处理器2801和存储器2802。
处理器2801可以包括一个或多个处理核心,比如4核心处理器、8核心处理器等。处理器2801可以采用DSP(Digital Signal Processing,数字信号处理)、FPGA(Field-Programmable Gate Array,现场可编程门阵列)、PLA (Programmable Logic Array,可编程逻辑阵列)中的至少一种硬件形式来实现。处理器2801也可以包括主处理器和协处理器,主处理器是用于对在唤醒状态下的数据进行处理的处理器,也称CPU(Central ProcessingUnit,中央处理器);协处理器是用于对在待机状态下的数据进行处理的低功耗处理器。在一些实施例中,处理器2801可以在集成有GPU(Graphics Processing Unit,图像处理器),GPU用于负责显示屏所需要显示的内容的渲染和绘制。一些实施例中,处理器2801还可以包括AI(Artificial Intelligence,人工智能)处理器,该AI处理器用于处理有关机器学习的计算操作。
存储器2802可以包括一个或多个计算机可读存储介质,该计算机可读存储介质可以是非暂态的。存储器2802还可包括高速随机存取存储器,以及非易失性存储器,比如一个或多个磁盘存储设备、闪存存储设备。在一些实施例中,存储器2802中的非暂态的计算机可读存储介质用于存储至少一个指令,该至少一个指令用于被处理器2801所执行以实现本申请中方法实施例提供的图像渲染方法。
在一些实施例中,终端2800还可选包括有:外围设备接口2803和至少一个外围设备。处理器2801、存储器2802和外围设备接口2803之间可以通过总线或信号线相连。各个外围设备可以通过总线、信号线或电路板与外围设备接口2803相连。具体地,外围设备包括:射频电路2804、触摸显示屏2805、摄像头组件2806、音频电路2807、定位组件2808和电源2809中的至少一种。
外围设备接口2803可被用于将I/O(Input/Output,输入/输出)相关的至少一个外围设备连接到处理器2801和存储器2802。在一些实施例中,处理器 2801、存储器2802和外围设备接口2803被集成在同一芯片或电路板上;在一些其他实施例中,处理器2801、存储器2802和外围设备接口2803中的任意一个或两个可以在单独的芯片或电路板上实现,本申请实施例对此不加以限定。
射频电路2804用于接收和发射RF(Radio Frequency,射频)信号,也称电磁信号。射频电路2804通过电磁信号与通信网络以及其他通信设备进行通信。射频电路2804将电信号转换为电磁信号进行发送,或者,将接收到的电磁信号转换为电信号。可选地,射频电路2804包括:天线系统、RF收发器、一个或多个放大器、调谐器、振荡器、数字信号处理器、编解码芯片组、用户身份模块卡等等。射频电路2804可以通过至少一种无线通信协议来与其它终端进行通信。该无线通信协议包括但不限于:万维网、城域网、内联网、各代移动通信网络(2G、3G、4G及5G)、无线局域网和/或WiFi(Wireless Fidelity,无线保真)网络。在一些实施例中,射频电路2804还可以包括NFC (Near Field Communication,近距离无线通信)有关的电路,本申请对此不加以限定。
显示屏2805用于显示UI(User Interface,用户界面)。该UI可以包括图形、文本、图标、视频及其它们的任意组合。当显示屏2805是触摸显示屏时,显示屏2805还具有采集在显示屏2805的表面或表面上方的触摸信号的能力。该触摸信号可以作为控制信号输入至处理器2801进行处理。此时,显示屏2805还可以用于提供虚拟按钮和/或虚拟键盘,也称软按钮和/或软键盘。在一些实施例中,显示屏2805可以为一个,设置终端2800的前面板;在另一些实施例中,显示屏2805可以为至少两个,分别设置在终端2800的不同表面或呈折叠设计;在再一些实施例中,显示屏2805可以是柔性显示屏,设置在终端2800的弯曲表面上或折叠面上。甚至,显示屏2805还可以设置成非矩形的不规则图形,也即异形屏。显示屏2805可以采用LCD(Liquid Crystal Display,液晶显示屏)、OLED(Organic Light-Emitting Diode,有机发光二极管)等材质制备。
摄像头组件2806用于采集图像或视频。可选地,摄像头组件2806包括前置摄像头和后置摄像头。通常,前置摄像头设置在终端的前面板,后置摄像头设置在终端的背面。在一些实施例中,后置摄像头为至少两个,分别为主摄像头、景深摄像头、广角摄像头、长焦摄像头中的任意一种,以实现主摄像头和景深摄像头融合实现背景虚化功能、主摄像头和广角摄像头融合实现全景拍摄以及VR(Virtual Reality,虚拟现实)拍摄功能或者其它融合拍摄功能。在一些实施例中,摄像头组件2806还可以包括闪光灯。闪光灯可以是单色温闪光灯,也可以是双色温闪光灯。双色温闪光灯是指暖光闪光灯和冷光闪光灯的组合,可以用于不同色温下的光线补偿。
音频电路2807可以包括麦克风和扬声器。麦克风用于采集用户及环境的声波,并将声波转换为电信号输入至处理器2801进行处理,或者输入至射频电路2804以实现语音通信。出于立体声采集或降噪的目的,麦克风可以为多个,分别设置在终端2800的不同部位。麦克风还可以是阵列麦克风或全向采集型麦克风。扬声器则用于将来自处理器2801或射频电路2804的电信号转换为声波。扬声器可以是传统的薄膜扬声器,也可以是压电陶瓷扬声器。当扬声器是压电陶瓷扬声器时,不仅可以将电信号转换为人类可听见的声波,也可以将电信号转换为人类听不见的声波以进行测距等用途。在一些实施例中,音频电路2807还可以包括耳机插孔。
定位组件2808用于定位终端2800的当前地理位置,以实现导航或LBS (LocationBased Service,基于位置的服务)。定位组件2808可以是基于美国的GPS(GlobalPositioning System,全球定位系统)、中国的北斗系统或俄罗斯的格雷纳斯系统或欧盟的伽利略系统的定位组件。
电源2809用于为终端2800中的各个组件进行供电。电源2809可以是交流电、直流电、一次性电池或可充电电池。当电源2809包括可充电电池时,该可充电电池可以支持有线充电或无线充电。该可充电电池还可以用于支持快充技术。
本领域技术人员可以理解,图28中示出的结构并不构成对终端2800的限定,可以包括比图示更多或更少的组件,或者组合某些组件,或者采用不同的组件布置。
图29是本申请实施例提供的一种服务器的结构示意图,该服务器2900可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上处理器 (Central ProcessingUnits,CPU)2901和一个或一个以上的存储器2902,其中,存储器3902中存储有至少一条指令,至少一条指令由处理器2901加载并执行以实现上述各个方法实施例提供的方法。当然,该服务器还可以具有有线或无线网络接口、键盘以及输入输出接口等部件,以便进行输入输出,该服务器还可以包括其他用于实现设备功能的部件,在此不做赘述。
服务器2900可以用于执行上述图像渲染中计算机设备所执行的步骤。
本申请实施例还提供了一种计算机设备,该计算机设备包括处理器和存储器,该存储器中存储有至少一条指令,该指令由该处理器加载并执行上述实施例的图像渲染方法中所执行的操作。
本申请实施例还提供了一种计算机可读存储介质,该计算机可读存储介质中存储有至少一条指令,该指令由处理器加载并执行以实现上述实施例的图像渲染方法中所执行的操作。
本申请实施例还提供了一种计算机程序,该计算机程序中存储有至少一条指令,该至少一条指令由处理器加载并执行,以实现上述实施例的图像渲染方法中所执行的操作。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上所述仅为本申请的可选实施例,并不用以限制本申请,凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。
Claims (15)
1.一种图像渲染方法,其特征在于,所述方法包括:
确定在同一平面上排布的多个位置点;
对于所述多个位置点中的每个位置点:
根据多个第一特征点以及所述多个第一特征点的第一噪声值,选取位于同一直线上的多个第一特征点作为采样点;
根据当前设置的渲染参数,对每个采样点的第一噪声值进行修改,得到所述每个采样点的第二噪声值,所述采样点的第二噪声值指示体积云在所述采样点的厚度;
根据所述每个采样点的第二噪声值,获取所述位置点的像素值;
根据所述多个位置点的像素值生成体积云图像。
2.根据权利要求1所述的方法,其特征在于,所述根据多个第一特征点以及所述多个第一特征点的第一噪声值,选取位于同一直线上的多个第一特征点作为采样点之前,所述方法还包括:
采用噪声算法,生成第一纹理数据,所述第一纹理数据包括所述多个第一特征点以及所述多个第一特征点的第一噪声值。
3.根据权利要求2所述的方法,其特征在于,所述采用噪声算法,生成第一纹理数据,包括:
采用柏林噪声算法,生成第二纹理数据,所述第二纹理数据包括多个第二特征点以及所述多个第二特征点的第二噪声值;
采用沃利噪声算法,生成第三纹理数据,所述第三纹理数据包括多个第三特征点以及所述多个第三特征点的第三噪声值,所述多个第二特征点与所述多个第三特征点一一对应;
将所述多个第二特征点的第二噪声值与所述第三多个特征点的第三噪声值进行融合,得到所述多个第一特征点的第一噪声值;
根据所述多个第一特征点的第一噪声值,生成所述第一纹理数据。
4.根据权利要求3所述的方法,其特征在于,所述将所述多个第二特征点的第二噪声值与所述第三多个特征点的第三噪声值进行融合,得到所述多个第一特征点的第一噪声值,包括:
采用腐蚀噪声算法,生成第四纹理数据,所述第四纹理数据包括多个第四特征点以及所述多个第四特征点的第四噪声值;
根据所述多个第四特征点的第四噪声值和每个第四特征点的高度值,获取所述每个第四特征点的腐蚀参数;
将所述多个第二特征点的第二噪声值与所述多个第三特征点的第三噪声值进行融合,得到多个第五特征点的第五噪声值;
根据每个第四特征点的腐蚀参数,对所述多个第五特征点的第五噪声值进行腐蚀处理,得到所述多个第一特征点的第一噪声值。
5.根据权利要求2所述的方法,其特征在于,所述选取位于同一直线上的多个第一特征点作为采样点,包括:
在渲染区域中选取位于同一直线上的多个采样点,所述渲染区域采用第一坐标系,所述第一纹理数据采用第二坐标系;
根据所述多个采样点在所述第一坐标系中的坐标以及所述第一坐标系和所述第二坐标系的映射关系,选取所述多个采样点在所述第一纹理数据中对应的采样点。
6.根据权利要求5所述的方法,其特征在于,所述根据所述多个采样点在所述第一坐标系中的位置以及所述第一坐标系和所述第二坐标系的映射关系,选取所述多个采样点在所述第一纹理数据中对应的采样点之后,所述方法还包括:
按照目标数值,对所述第一纹理数据中选取的多个采样点的坐标进行调整,根据调整后的多个坐标,在所述第一纹理数据中重新选取所述多个坐标对应的采样点。
7.根据权利要求5所述的方法,其特征在于,所述在渲染区域中选取位于同一直线上的多个采样点之前,所述方法还包括:
以目标位置点为球心,以第一半径为球半径,确定第一球面区域;
以所述目标位置为球心,以第二半径为球半径,确定第二球面区域,所述第一半径大于所述第二半径;
将所述第一球面区域与所述第二球面区域之间的区域,作为所述渲染区域。
8.根据权利要求5所述的方法,其特征在于,所述在渲染区域中选取位于同一直线上的多个采样点,包括:
以所述位置点为起点,在指向所述渲染区域的方向创建一条射线;
在所述射线与所述渲染区域重叠的线段中,选取所述多个采样点。
9.根据权利要求1所述的方法,其特征在于,所述渲染参数包括类型参数,所述类型参数指示体积云的类型,所述根据当前设置的渲染参数,对所述每个采样点的第一噪声值进行修改,获取所述每个采样点的第二噪声值,包括:
根据所述类型参数对应的梯度,确定所述类型参数对所述第一噪声值的第一影响参数;
根据所述第一影响参数,对所述每个采样点的第一噪声值进行修改,得到所述每个采样点的第二噪声值。
10.根据权利要求1所述的方法,其特征在于,所述渲染参数包括覆盖率参数,所述覆盖率参数指示体积云的厚度,所述根据当前设置的渲染参数,对所述每个采样点的第一噪声值进行修改,得到所述每个采样点的第二噪声值,包括:
采用运动噪声算法,获取所述每个采样点的第六噪声值;
根据所述覆盖率参数和所述每个采样点的第六噪声值,确定对所述第一噪声值的第二影响参数;
根据所述第二影响参数,对所述每个采样点的第一噪声值进行修改,得到所述每个采样点的第二噪声值。
11.根据权利要求1所述的方法,其特征在于,所述根据所述每个采样点的第二噪声值,获取所述位置点的像素值,包括:
根据所述每个采样点的第二噪声值,获取所述每个采样点的颜色值;
将所述多个采样点的颜色值进行叠加,将叠加后的颜色值作为所述位置点的像素值。
12.根据权利要求11所述的方法,其特征在于,所述根据所述每个采样点的第二噪声值,获取所述每个采样点对应的颜色值,包括:
根据所述每个采样点的第二噪声值和虚拟环境的环境光参数,获取所述每个采样点的颜色值。
13.一种图像渲染装置,其特征在于,所述装置包括:
确定模块,用于确定在同一平面上排布的多个位置点;
获取模块,用于对于所述多个位置点中的每个位置点:
根据多个第一特征点以及所述多个第一特征点的第一噪声值,选取位于同一直线上的多个第一特征点作为采样点;
根据当前设置的渲染参数,对每个采样点的第一噪声值进行修改,得到所述每个采样点的第二噪声值,所述采样点的第二噪声值指示体积云在所述采样点的厚度;
根据所述每个采样点的第二噪声值,获取所述位置点的像素值;
图像生成模块,用于根据所述多个位置点的像素值生成体积云图像。
14.一种计算机设备,其特征在于,所述计算机设备包括处理器和存储器,所述存储器中存储有至少一条指令,所述指令由所述处理器加载并执行以实现如权利要求1至12任一项所述的图像渲染方法中所执行的操作。
15.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有至少一条指令,所述指令由处理器加载并执行以实现如权利要求1至12任一项所述的图像渲染方法中所执行的操作。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911102050.XA CN110827391B (zh) | 2019-11-12 | 2019-11-12 | 图像渲染方法、装置、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911102050.XA CN110827391B (zh) | 2019-11-12 | 2019-11-12 | 图像渲染方法、装置、设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110827391A true CN110827391A (zh) | 2020-02-21 |
CN110827391B CN110827391B (zh) | 2021-02-12 |
Family
ID=69554376
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911102050.XA Active CN110827391B (zh) | 2019-11-12 | 2019-11-12 | 图像渲染方法、装置、设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110827391B (zh) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112150598A (zh) * | 2020-09-25 | 2020-12-29 | 网易(杭州)网络有限公司 | 云层的渲染方法、装置、设备及存储介质 |
CN112190935A (zh) * | 2020-10-09 | 2021-01-08 | 网易(杭州)网络有限公司 | 动态体积云的渲染方法、装置及电子设备 |
CN112767522A (zh) * | 2020-11-27 | 2021-05-07 | 成都完美时空网络技术有限公司 | 虚拟对象风动画的渲染方法及装置、存储介质、电子装置 |
US11276227B2 (en) | 2019-12-24 | 2022-03-15 | Tencent Technology (Shenzhen) Company Limited | Object rendering method and apparatus, storage medium, and electronic device using a simulated pre-integration map |
WO2022116659A1 (zh) * | 2020-12-02 | 2022-06-09 | 成都完美时空网络技术有限公司 | 一种体积云渲染方法、装置、程序和可读介质 |
WO2023061232A1 (zh) * | 2021-10-13 | 2023-04-20 | 北京字节跳动网络技术有限公司 | 图像渲染方法、装置、设备及介质 |
CN116030179A (zh) * | 2023-03-29 | 2023-04-28 | 腾讯科技(深圳)有限公司 | 一种数据处理方法、装置、计算机设备及存储介质 |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2014049346A1 (en) * | 2012-09-26 | 2014-04-03 | Bergen Teknologioverføring As | Image filtering |
CN105405162A (zh) * | 2015-10-16 | 2016-03-16 | 北京师范大学 | 基于局部结构和方向感知的树点云三维重建方法 |
CN106408639A (zh) * | 2016-08-31 | 2017-02-15 | 上海交通大学 | 一种基于曲率流的屏幕空间流体渲染方法 |
CN106570929A (zh) * | 2016-11-07 | 2017-04-19 | 北京大学(天津滨海)新代信息技术研究院 | 一种动态体积云的构建与绘制方法 |
CN106846447A (zh) * | 2017-01-25 | 2017-06-13 | 腾讯科技(深圳)有限公司 | 渲染次表面散射效果的方法和装置 |
CN108573524A (zh) * | 2018-04-12 | 2018-09-25 | 东南大学 | 基于渲染管线的交互式实时自由立体显示方法 |
CN109448099A (zh) * | 2018-09-21 | 2019-03-08 | 腾讯科技(深圳)有限公司 | 画面的渲染方法、装置、存储介质及电子装置 |
CN109754452A (zh) * | 2018-12-28 | 2019-05-14 | 北京达佳互联信息技术有限公司 | 图像渲染的处理方法、装置、电子设备及存储介质 |
CN109840879A (zh) * | 2017-11-28 | 2019-06-04 | 腾讯科技(深圳)有限公司 | 图像渲染方法、装置、计算机存储介质及终端 |
CN109948581A (zh) * | 2019-03-28 | 2019-06-28 | 腾讯科技(深圳)有限公司 | 图文渲染方法、装置、设备及可读存储介质 |
-
2019
- 2019-11-12 CN CN201911102050.XA patent/CN110827391B/zh active Active
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2014049346A1 (en) * | 2012-09-26 | 2014-04-03 | Bergen Teknologioverføring As | Image filtering |
CN105405162A (zh) * | 2015-10-16 | 2016-03-16 | 北京师范大学 | 基于局部结构和方向感知的树点云三维重建方法 |
CN106408639A (zh) * | 2016-08-31 | 2017-02-15 | 上海交通大学 | 一种基于曲率流的屏幕空间流体渲染方法 |
CN106570929A (zh) * | 2016-11-07 | 2017-04-19 | 北京大学(天津滨海)新代信息技术研究院 | 一种动态体积云的构建与绘制方法 |
CN106846447A (zh) * | 2017-01-25 | 2017-06-13 | 腾讯科技(深圳)有限公司 | 渲染次表面散射效果的方法和装置 |
CN109840879A (zh) * | 2017-11-28 | 2019-06-04 | 腾讯科技(深圳)有限公司 | 图像渲染方法、装置、计算机存储介质及终端 |
CN108573524A (zh) * | 2018-04-12 | 2018-09-25 | 东南大学 | 基于渲染管线的交互式实时自由立体显示方法 |
CN109448099A (zh) * | 2018-09-21 | 2019-03-08 | 腾讯科技(深圳)有限公司 | 画面的渲染方法、装置、存储介质及电子装置 |
CN109754452A (zh) * | 2018-12-28 | 2019-05-14 | 北京达佳互联信息技术有限公司 | 图像渲染的处理方法、装置、电子设备及存储介质 |
CN109948581A (zh) * | 2019-03-28 | 2019-06-28 | 腾讯科技(深圳)有限公司 | 图文渲染方法、装置、设备及可读存储介质 |
Non-Patent Citations (2)
Title |
---|
CSDN博客: "[OpenGL]体积云实现探索", 《HTTPS://BLOG.CSDN.NET/ZJU_FISH1996/ARTICLE/DETAILS/89430718》 * |
腾讯游戏学院: "Unity3D教程:PerlinNoise原理及实现", 《HTTPS://GAMEINSTITUTE.QQ.COM/COMMUNITY/DETAIL/106827》 * |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11276227B2 (en) | 2019-12-24 | 2022-03-15 | Tencent Technology (Shenzhen) Company Limited | Object rendering method and apparatus, storage medium, and electronic device using a simulated pre-integration map |
CN112150598A (zh) * | 2020-09-25 | 2020-12-29 | 网易(杭州)网络有限公司 | 云层的渲染方法、装置、设备及存储介质 |
CN112190935A (zh) * | 2020-10-09 | 2021-01-08 | 网易(杭州)网络有限公司 | 动态体积云的渲染方法、装置及电子设备 |
CN112767522A (zh) * | 2020-11-27 | 2021-05-07 | 成都完美时空网络技术有限公司 | 虚拟对象风动画的渲染方法及装置、存储介质、电子装置 |
WO2022116659A1 (zh) * | 2020-12-02 | 2022-06-09 | 成都完美时空网络技术有限公司 | 一种体积云渲染方法、装置、程序和可读介质 |
WO2023061232A1 (zh) * | 2021-10-13 | 2023-04-20 | 北京字节跳动网络技术有限公司 | 图像渲染方法、装置、设备及介质 |
CN116030179A (zh) * | 2023-03-29 | 2023-04-28 | 腾讯科技(深圳)有限公司 | 一种数据处理方法、装置、计算机设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN110827391B (zh) | 2021-02-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110827391B (zh) | 图像渲染方法、装置、设备及存储介质 | |
US20210225067A1 (en) | Game screen rendering method and apparatus, terminal, and storage medium | |
WO2020207202A1 (zh) | 阴影渲染方法、装置、计算机设备及存储介质 | |
CN110880204B (zh) | 虚拟植被显示方法、装置、计算机设备及存储介质 | |
CN112870707B (zh) | 虚拟场景中的虚拟物体展示方法、计算机设备及存储介质 | |
CN110033503B (zh) | 动画显示方法、装置、计算机设备及存储介质 | |
CN112245926B (zh) | 虚拟地形的渲染方法、装置、设备及介质 | |
CN111311757B (zh) | 一种场景合成方法、装置、存储介质及移动终端 | |
CN112907716B (zh) | 虚拟环境中的云朵渲染方法、装置、设备及存储介质 | |
CN112884874A (zh) | 在虚拟模型上贴花的方法、装置、设备及介质 | |
US20240087219A1 (en) | Method and apparatus for generating lighting image, device, and medium | |
CN113436348B (zh) | 三维模型处理方法、装置、电子设备及存储介质 | |
CN112884873B (zh) | 虚拟环境中虚拟物体的渲染方法、装置、设备及介质 | |
CN113724309A (zh) | 图像生成方法、装置、设备及存储介质 | |
CN116672706A (zh) | 光照渲染方法、装置、终端和存储介质 | |
CN112750190A (zh) | 三维热力图生成方法、装置、设备及存储介质 | |
CN112950753B (zh) | 虚拟植物显示方法、装置、设备及存储介质 | |
CN112308767B (zh) | 一种数据展示方法、装置、存储介质以及电子设备 | |
CN114093020A (zh) | 动作捕捉方法、装置、电子设备及存储介质 | |
CN113689484B (zh) | 深度信息的确定方法、装置、终端及存储介质 | |
EP4343683A1 (en) | Light supplementing model training method, image processing method, and related device thereof | |
CN113409235B (zh) | 一种灭点估计的方法及装置 | |
CN117065330A (zh) | 流体特效处理方法、装置、计算机设备和存储介质 | |
CN116993946A (zh) | 模型生成方法、装置、终端及存储介质 | |
CN118135081A (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 | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: DE Ref document number: 40022102 Country of ref document: HK |
|
GR01 | Patent grant | ||
GR01 | Patent grant |