CN106228594A - 基于曲面细分的台风模式云动画显示方法 - Google Patents
基于曲面细分的台风模式云动画显示方法 Download PDFInfo
- Publication number
- CN106228594A CN106228594A CN201610567159.0A CN201610567159A CN106228594A CN 106228594 A CN106228594 A CN 106228594A CN 201610567159 A CN201610567159 A CN 201610567159A CN 106228594 A CN106228594 A CN 106228594A
- Authority
- CN
- China
- Prior art keywords
- cloud
- value
- texture
- tinter
- control point
- 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 42
- 230000008569 process Effects 0.000 claims abstract description 32
- 238000007906 compression Methods 0.000 claims abstract description 6
- 230000006835 compression Effects 0.000 claims abstract description 6
- 230000011218 segmentation Effects 0.000 claims description 35
- 239000011159 matrix material Substances 0.000 claims description 17
- 238000006243 chemical reaction Methods 0.000 claims description 14
- 238000012856 packing Methods 0.000 claims description 11
- 238000006073 displacement reaction Methods 0.000 claims description 7
- 239000000203 mixture Substances 0.000 claims description 6
- 238000005070 sampling Methods 0.000 claims description 6
- 238000013519 translation Methods 0.000 claims description 6
- 238000004364 calculation method Methods 0.000 claims description 5
- 238000004040 coloring Methods 0.000 claims description 5
- 238000013144 data compression Methods 0.000 claims description 5
- 230000007246 mechanism Effects 0.000 claims description 5
- 238000012545 processing Methods 0.000 claims description 4
- 230000009466 transformation Effects 0.000 claims description 4
- 230000003139 buffering effect Effects 0.000 claims description 3
- 241001269238 Data Species 0.000 claims description 2
- 241000208340 Araliaceae Species 0.000 claims 2
- 235000005035 Panax pseudoginseng ssp. pseudoginseng Nutrition 0.000 claims 2
- 235000003140 Panax quinquefolius Nutrition 0.000 claims 2
- 235000008434 ginseng Nutrition 0.000 claims 2
- 208000031481 Pathologic Constriction Diseases 0.000 claims 1
- 210000001215 vagina Anatomy 0.000 claims 1
- 238000009877 rendering Methods 0.000 abstract description 7
- 239000002699 waste material Substances 0.000 abstract description 2
- 230000000694 effects Effects 0.000 description 8
- 238000005516 engineering process Methods 0.000 description 5
- 238000011161 development Methods 0.000 description 3
- 230000018109 developmental process Effects 0.000 description 3
- 238000013507 mapping Methods 0.000 description 3
- 230000005540 biological transmission Effects 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 230000003993 interaction Effects 0.000 description 2
- 239000007787 solid Substances 0.000 description 2
- 230000003321 amplification Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 230000007812 deficiency Effects 0.000 description 1
- 238000000151 deposition Methods 0.000 description 1
- 235000013399 edible fruits Nutrition 0.000 description 1
- 238000003199 nucleic acid amplification method Methods 0.000 description 1
- 230000007704 transition Effects 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
Landscapes
- Engineering & Computer Science (AREA)
- Computer Graphics (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Image Generation (AREA)
- Processing Or Creating Images (AREA)
Abstract
一种基于曲面细分的台风模式云动画显示方法,首先对模式输出的网格格点上气象要素进行了数据量的压缩,这样处理过的数据不但占据空间小,同时也满足构建台风模型,体现台风云系形状细节的要求。还编制了渲染台风云动画所需的顶点着色器、外壳着色器、域着色器、像素点着色器。原始的台风网格顶点数据流进入上述各个着色器进行处理,之后便可以生成高清的模式台风云动画。本发明摒弃了以往固定管道的渲染管线,使用了基于Direct3D 11的显卡可编程管道,所有的计算都在显卡的流处理器阵列中完成,从根本上解决了为计算相邻时刻云模型顶点数据插值而造成系统计算资源的浪费。
Description
[发明领域]
本发明涉及一种Direct3D 11的数据处理与显示的技术,具体是一种基于曲面细分的台风模式云动画显示方法。
[技术背景]
随着数值预报和计算机技术的发展,气象预报人员常使用高分辨率数值天气预报模式(“数值天气预报模式”简称“数值预报模式”或“数值模式”)开展台风路径和强度的预报,比如基于WRF中尺度预报模式开发的台风数值预报业务系统等。
高分辨台风数值预报模式输出的结果,是分布于地球投影网格格点上的气象要素信息,包括温度、压力、风速、水汽含量、云顶高度等等。而使用三维动画显示的方法对于其中某些类型的数据进行云动画的显示,便可以直观地了解台风发生发展的过程。
对于每一帧的动画而言,就是构建当前帧的云模型,所有不同时刻的云模型连续起来播放,便组成了台风的云动画。
在以往固定管道的三维渲染流水线中,动画显示的网格数量是受限的,在相邻两个时刻云模型顶点数据的插值过程中,云模型的每一个顶点的位置和颜色都要通过CPU去计算,计算完毕再占用系统总线把数据传给显卡,然后显卡根据传递过来的新数据再修改模型中顶点的位置和颜色信息,在CPU计算和计算的结果通过系统总线传输的过程中,显卡只能白白地在等待,这样一来,动画的效率便大打折扣。以目前市面上的PC机的主流配置而言,构建云模型一般采用350×350左右的格点来构建三角面,格点数再增加,便发生明显的卡顿现象。350×350的格点密度来描述台风的云动画,其实是很粗糙的,因为台风是一个中尺度的天气系统,天气影响的范围通常为2000公里左右,在如此大的范围只用上述分辨率的格点来模拟云动画,那台风的结构是非常模糊的,连台风中心的台风眼都不清晰,当然,也可以把云模型的范围缩小至台风的螺旋状云带边缘,如此处理,范围小了,格点密度自然变大,台风云模型要比上述的要清晰,但这样便孤立了台风与周围的天气系统,无法体现台风与周围天气系统的相互作用。
所以用固定管道的渲染流水线来处理台风的云动画,显示效率一直是一个瓶颈,制约了云模型的精细度。
[发明内容]
本发明客服了上述技术的不足,提出了一个基于曲面细分技术的模式台风云动画的显示方法:
本文中:“云模型”即“台风云模型”;“云顶高度”即“云模型的顶点高度”;“台风云动画”即“台风模式云动画”;“台风云”即“台风模式云”;“台风云模型”简称“云模型”;“控制点网格”是一种包围原始模型,且形状上接近原始模型的网格结构,可以看做是云模型最简易的粗模型,后面的曲面细分,便是在每相邻的4个控制点组成的四边形内部细分三角面,从而构建较为精细的云模型结构。
首先对模式输出的网格格点上气象要素进行了数据量的压缩,这样处理过的数据不但占据空间小,同时也满足构建台风模型,体现台风云系形状细节的要求。还编制了渲染台风云动画所需的顶点着色器、外壳着色器、域着色器、像素点着色器。原始的台风网格顶点数据流进入上述各个着色器进行处理,之后便可以生成高清的模式台风云动画。
为实现上述目的,本发明采用了下述技术方案:
选用数值预报模式输出的云顶高度信息作为构建台风云模型顶点的位置和颜色信息。创建了3个Direct3D 11的纹理,其中2个纹理用来存放读取好的t和t+1时刻云模型的顶点高度数据,在对t和t+1时刻的云模型顶点数据插值计算的同时,从硬盘读取t+2时刻的云顶高度信息到剩下的一个纹理之中。编制了一个顶点着色器,作用是对云模型控制点网格依次进行世界矩阵的变换,得出控制点网格经过旋转,平移后新的三维空间坐标;编制了一个外壳着色器,作用是在控制网格内细分出更精细的三角面;编制了一个域着色器,作用是分别取样t时刻和t+1时刻对应的纹理,得到云顶的高度,然后将插值得到的高度信息和颜色信息给细分后的三角面的顶点赋值,并对该顶点进行摄像机矩阵和投影矩阵的变换,完成三维空间中的点在二维屏幕坐标空间的转化。最后编制的是一个像素点着色器,作用是将接收到的像素点送入像素点混合器,最终显示在屏幕上。
本技术方案具体为:
一个基于曲面细分的台风模式云动画的显示方法,步骤包括:编制了渲染台风云动画所需的顶点着色器102、外壳着色器103、域着色器105和像素点着色器106;
1)对数值预报模式输出的网格格点上的气象要素进行数据量的压缩;
2)进行台风云模型动画渲染:步骤1)压缩的原始的台风云网格顶点数据流依次经顶点着色器102、外壳着色器103、域着色器105和像素点着色器106处理,最后生成高清的台风模式云动画;
所述步骤1)中,
选用数值预报模式输出的云顶高度数据作为构建台风云模型顶点的位置和颜色信息;
创建3个Direct3D 11的纹理;其中2个纹理分别存放已读取的t时刻和t+1时刻的云模型的顶点高度数据,简称云顶高度数据;在对t时刻和t+1时刻的云顶高度数据进行插值计算的同时,读取t+2时刻的云顶高度数据到最后1个纹理之中;
所述步骤2)中,
2.1)由顶点着色器102对云模型的控制点网格进行世界矩阵的变换,得出控制点网格经过旋转或平移后的三维空间坐标;
2.2)由外壳着色器103在由相邻的四个控制点构成的四边形中设置四个边的细分参数,由随后的Direct3D 11的系统固定的细分模块进行三角面的细分;
2.3)由域着色器105分别取样t时刻和t+1时刻对应的纹理,得到云顶的高度;然后将云顶高度数据插值计算结果中的高度信息和颜色信息给细分出三角面的顶点赋值;并对该顶点进行摄像机矩阵和投影矩阵的变换,完成三维空间中的点在二维屏幕坐标空间的转换;
2.4)由像素点着色器106将接收到的像素点送入像素点混合器,最终显示在屏幕上。
所述步骤1)中,
创建一个在X轴和Z轴各自方向轴上间隔相等的网格控制点组成的网格控制点数据流,该数据流的数据结构为:控制顶点的位置坐标、控制顶点的纹理UV和控制顶点的颜色ARGB值;
各个控制点共同构成地球模型上的一个曲面即控制点网格,该曲面范围覆盖整个预报模式输出数据的经纬跨度;该控制点网格即为云模型的粗网格,控制点网格的功能包括:描述云模型的大体轮廓;在步骤2.2)的外壳着色器103的曲面细分的过程中,对该云模型的粗网格进行三角面细分的处理。
所述步骤2)中,
在步骤2.1)中,顶点着色器102接收网格控制点数据流,使用世界矩阵对网格控制点的坐标进行平移变换或旋转变换后,得到新的世界坐标系下的网格控制点坐标;然后把处理后的网格控制点数据流传给外壳着色器103;
在步骤2.2)中,外壳着色器103的曲面细分的步骤为:
首先,外壳着色器103指定细分参数:网格控制点构成的四边形内部小三角面细分的参数,即四边形四个边上每个边的分段个数;分段越多,该四边形被细分成的小三角面也就越多;
接下来,系统固定的细分模块104根据外壳着色器103指定的细分参数,生成细分的多个小三角面;该细分模块是Direct3D 11内部固定的模块;
在步骤2.3)中,域着色器105接收细分处理后的小三角面的顶点的数据;然后对这些顶点进行位移映射的操作,同时设置顶点的ARGB值,得到在前后两个时刻(即t时刻和t+1时刻)进行插值后的云模型;
在步骤2.4)中,像素点着色器106将域着色器105传来的像素点送入Direct3D 11的像素点混合器,最终显示在屏幕上。
对于步骤1)中的3个Direct3D 11的纹理,在步骤2.3)中,
首先,分别读取数值预报模式的云顶高度数据的t1和t2时刻的文件,分别给纹理数组107的前两个纹理T1和T2进行赋值;
动画渲染过程中,第一个线程对纹理数组107的纹理T1和T2取样,并进行云模型插值和渲染;同时,第二个线程读取数值预报模式的云顶高度数据的t3时刻的文件,给纹理T3赋值;
t1=t,t1=t+1,t3=t+2。
所述步骤1)中,对数值预报模式输出的云顶高度信息的进行数据处理:
数值预报模式输出的云顶高度值是32位的浮点型数据,对该云顶高度值进行数据压缩,数据压缩的方法为:首先,设定云顶高度的上限阈值Hmax和云顶高度的下限阈值Hmin,数值预报模式输出的云顶高度值在这两个高度阈值之间;然后,云顶高度值和Hmin的差再除以Hmax和Hmin的差,得到一个[0,1]区间内的浮点数;这个浮点数再乘以255,取结果中的整数部分;
如果数值预报模式输出的云顶高度值等于Hmax,则压缩的结果为255;如果数值预报模式输出的云顶高度值等于Hmin,则压缩的结果为0;如果数值预报模式输出的格点上没有云,则该格点云顶高度的值用Hmin来指定;
把数值预报模式某时段内的输出结果中的云顶高度值进行数据压缩后,作为一个文件进行存储,这个文件里的内容是数值预报模式输出网格的各个格点上的云顶高度的相对值,该相对值以二维数组的排列方式进行存储。
所述步骤1)中,数值预报模式输出网格的格点数是2000×2000像素点;
则在3个Direct3D 11的纹理中,纹理的尺寸和数值预报模式输出网格的格点数一致;设纹理的宽为2000像素点,高为2000像素点;定义纹理的格式是DXGI_FORMAT_R32F,表示一个像素是由一个32位浮点型数据构成;
读取所述云顶高度的相对值,然后除以255,得到一个在[0,1]之间的32位浮点数据,给纹理的每个像素值赋值。
所述步骤1)中,控制点纹理UV的赋值方法为:
U值:最左边一列控制点的U值为0,最右边一列控制点的U值为1,因为控制点在X轴方向上是等距的,所以U的值也是等距的,各列控制点的U值从左至右依次为0、0.1,0.2,……,0.9,1;
同理,在Z方向上,各行控制点的V值从前到后依次为0、0.1,0.2,……,0.9,1。
在步骤2.2)中,外壳着色器103首先对接收到的每个网格控制点分别作摄像机矩阵和投影矩阵的变换,得到网格控制点在屏幕空间的二维坐标;
然后判定构成四边形相邻的四个顶点是否在屏幕的范围内:
如果全都不在范围内,则该四边形内部不做细分的处理;
如果有任一个顶点在范围内,则由四个点在屏幕空间的二维坐标,计算出该四边形四个边在屏幕上的距离;
所述外壳着色器103处理得到的数据流的数据结构为:控制顶点的位置坐标、控制顶点的纹理UV和控制顶点的颜色ARGB值,其中,控制顶点的位置坐标是传入外壳着色器103的原始坐标值,而不是经过外壳着色器103处理后的在屏幕空间的二维坐标;
所述步骤2.3)中,读取云顶高度数据赋值给纹理过程具有缓冲机制:
如果出现读取延时,第一个线程在特定帧数的插值结束后,便停止插值,等待纹理T3的赋值完毕;
经过第一个线程在特定帧数的插值,如果纹理T3赋值也完毕,则在随后特定帧数的渲染中,从纹理T2和T3中取样,同时读取云顶高度t4时刻的文件给纹理T1赋值;
后面的特定帧数的处理机制依次类推。
所述步骤2.3)中,在特定帧数的动画渲染时,域着色器105分别对纹理T1和T2进行取样,得到对应的云顶高度数据S1和S2,插值权重I=t/特定帧数,t为取样时刻,插值后的高度值S=S1×(1-I)+S2×I;
把每个网格控制点离地球球心的距离设为地球半径的1.01倍,即由网格控制点构成的曲面离地球表面的距离为地球半径的1/100;把该曲面的高度设为Hmin所在的高度,Hmax和Hmin的距离也设为1/100个地球半径,即,如果曲面上各个控制点都达到Hmax的上限高度,则该曲面距离地球表面的距离就是2/100个地球半径;
通过上述的距离设置规范,对每个细分出来的顶点做三维空间位置的变换,步骤为:首先计算地球球心到相应顶点的方向矢量;然后将该顶点沿着方向矢量移动S×0.01×r的距离,得到高低起伏的云模型;这里的r是地球半径,S为插值后的高度值;
接下来对每个顶点的颜色进行赋值:云是白色的,则在细分出来的顶点的颜色值ARGB中,RGB都为1,代表纯白色;透明度A∈[0,1];
云顶高度越高的地方透明度越低,白色越明显,当云顶高度等于Hmax时,透明度A=1;
云顶高度越低的地方透明度越大,白色越淡,当云顶高度等于Hmin时,透明度A=0。
本发明的有益效果如下:
1、摒弃了以往固定管道的渲染管线,使用了基于Direct3D 11的显卡可编程管道,所有的计算都在显卡的流处理器阵列中完成,从根本上解决了为计算相邻时刻云模型顶点数据插值而造成系统计算资源的浪费。
2、采用细节层次级别LOD的方案动态地控制显示在屏幕上云模型的网格密度,并对模式云模型三角面在屏幕上的可见部分进行渲染,并舍弃了屏幕可见范围之外三角面的细分处理,进一步提高了模式云动画的渲染效率。
3、使用本发明渲染的模式云动画,可以清晰再现台风运动过程中自身对流的旺盛发展,以及台风云系和周围环境系统的相互作用过程;当观察点和台风云系比较接近时,也可以清晰地显示出台风云系的各个特征结构,如台风眼,台风眼墙和螺旋形云带等。
[附图说明]
图1为本发明各个着色器的工作流程图。
图2为几种典型网格的细分过程示意图,用于类比理解本控制点网格的细分;
图中,左边一列是最简单的几何体,然后逐步细分,直到得到右边的复杂的几何体。本文中提到的控制点网格,与左边的那一列类似,是最原始的、最粗糙的几何体。
[具体实施方式]
下面结合附图与本发明的实施方式作进一步详细地描述:
在本发明中,取数值预报模式输出的云顶高度值来构建云模型。这个高度值从模式输出时是32位的浮点型数据,一个数据在硬盘中占4个字节,为了减少硬盘的读盘时间,对其做数据的压缩,即用一个字节来表示。方案如下,根据气象上通常的云顶高度的上下限,设定Hmax和Hmin这两个高度阈值。模式输出的云顶高度值应该在这两个高度阈值之间。然后云顶高度值和高度下阈值Hmin的差再除以Hmax和Hmin的差,得到一个[0,1]区间内的浮点数,然后再乘以255,取整数部分。从这个算法中我们可以得知如果模式输出的云顶高度等于云顶高的上阈值Hmax,那压缩过的结果就是255;如果模式输出的云顶高度等于云顶高的下阈值Hmin,那压缩过的结果就是0。这种压缩方式,得到的其实是高度值的相对量。如果预报模式输出的格点上没有云,那该格点云顶高度的值用Hmin来指定。在中尺度范围里,云顶最高的高度一般设为9000米,这和2000公里的尺度比起来太过于渺小,云顶的高度如果用实际高度,那看上去也几乎是一个平面,所以本发明在构建云模型的时候,顶点的高度做了适当的放大,以突显出云顶的高低起伏。
把预报模式每10分钟输出结果中的云顶高度按上述压缩方案处理后作为一个文件保存到硬盘,这个文件里的内容便是预报模式输出网格各个格点上的云顶高度的相对值,并以二维数组的排列方式进行存储。格点数是2000×2000。
创建了3个Direct3D 11的纹理,纹理的尺寸和预报模式输出的网格数一致,所以这里设置纹理的宽为2000像素点,高为2000点。纹理的格式是DXGI_FORMAT_R32F,表示一个像素是由一个32位浮点型构成。从硬盘里读取字节型的高度相对值,然后除以255,得到一个在[0,1]之间的32位浮点数据,给纹理的每个像素值赋值。该3个纹理在随后的域着色器中使用。
创建一个10×10在X轴和Z轴各自方向轴上间隔相等的网格控制点组成的控制点数据流,该数据流的数据结构是:控制顶点的位置坐标、纹理UV、颜色ARGB值。该控制点构成了地球模型上的一个曲面,范围覆盖整个预报模式输出数据的经纬跨度,为了达到比较良好的显示效果,在本发明中,每个控制点离地球球心的距离设为地球半径的1.01倍,即控制点构成的曲面,离地球表面的距离为地球半径的1/100。该网格的控制点可以看作是云模型的粗网格,主要功能是描述了台风云模型的大体轮廓,在随后的曲面细分的过程中对该粗网格进行三角面细分的处理。控制点纹理UV的赋值方法如下:以U为例,最左边一列控制点的U值为0,最右边一列控制点的U值为1,因为控制点在X轴方向上是等距的,所以U的值也是等距的,各列控制点的U值从左至右依次为0、0.1,0.2,……,0.9,1。同理在Z方向上,各行控制点的V值从前到后依次为0、0.1,0.2,……,0.9,1。
在本发明中,每秒传输帧数(Frames Per Second)FPS设定为40,从t时刻的云模型插值计算变化到t+1时刻,中间过渡的帧数为60,时间的花费便是1.5秒。
在开启云模型动画渲染之前,首先要读取预报模式的云顶高度数据t1和t2时刻的文件对纹理数组107的前两个纹理T1和T2进行赋值,然后开始渲染云模型动画。动画渲染过程中的第一个1.5秒内,程序在主线程对纹理数组107的纹理T1和T2取样,并进行云模型插值和渲染的工作;同时,在另一个辅线程内,从硬盘中读取模式云顶高度数据t3时刻的文件,给纹理T3赋值。正常情况下,读取2000×2000个字节,即4M左右大小的文件,读盘时间远小于1.5秒,若万一出现读盘延时,那主程序在第60帧的插值结束后,便停止插值,等待纹理T3的赋值完毕。经过第一个60帧插值工作,若纹理T3赋值也完毕,那在随后60帧的渲染中,从纹理T2和T3中取样,同时读取云顶高度t4时刻的文件给纹理T1赋值。后面的每60帧的处理机制依次类推。这便构成了取样、赋值的一个缓冲机制。
在随后云模型每帧的渲染过程中,各个着色器的工作机理如下:
顶点着色器102:接收上述的10×10间隔相等的网格控制点101,使用世界矩阵对控制点进行坐标变换,得到控制点经过平移或旋转后新的世界坐标。然后把处理后的控制点数据流传给随后的外壳着色器。
曲面细分的过程,是由外壳着色器->系统固定的细分模块->域着色器依次工作完成的,外壳着色器的作用是指定控制点构成的四边形内部小三角面细分的参数,即四边形四个边上每个边的分段个数,分段越多,该四边形被细分成的小三角面也就越多。接下来的系统固定的细分模块的作用是根据外壳着色器指定的细分参数,开始生成细分的多个小三角面,这个是Direct3D 11内部固定的模块,不可编程,所以不多加描述。域着色器的作用是修改经过固定的细分模块生成的小三角面的顶点信息,通常进行位移映射的工作。下面具体说明本发明的外壳着色器103和域着色器105的工作机制。
外壳着色器103:对接收到的每个控制点分别作摄像机矩阵和投影矩阵的变换,得到控制点在屏幕空间的二维坐标。然后判定构成四边形相邻的四个顶点是否在屏幕的范围内,如果一个都不在,那该四边形内部不做细分的处理;如果有一个点落在屏幕的范围内,则作如下处理:由四个点在屏幕空间的二维坐标,可计算出该四边形四个边在屏幕上的距离。在本发明中,设定细分的小三角形在屏幕上的边长为6个像素点,所以用距离除以6,得到该边应该细分的段数,这样,用四条边每条边应该细分的段数作为参数,提交给系统的固定细分模块进行三角面的细分。上述的细分方案,便是本发明中的LOD分级的思路:因为在摄像机摄像的范围内,一个四边形里观察点越近,它的边长在屏幕上就越长,这样每个边被细分的段数就越多。同理越远的四边形,其四边被细分的段数就越少。该外壳着色器传出的数据流的数据结构是:控制顶点的位置坐标(该位置坐标是传入外壳着色器的原始坐标值,而不是经过外壳着色器处理后的在屏幕空间的二维坐标,因为在随后的域着色器中要对顶点的位置进行三维空间上的位移操作,所以不能使用被投影化后的二维坐标)、纹理UV、颜色ARGB值。
域着色器105:从系统的固定细分模块接收经过细分处理后的三角面的顶点数据,该顶点数据中的纹理UV,也是按照顶点在坐标轴上投影的距离而变化的。比如选取最左前方的四边形,四个控制点的U值:左边控制点为0,右边为0.1,均匀细分成10段后,顶点(包括原来的控制点和新细分出来的新顶点)的U值为0,0.01,0.02,……,0.09,0.1。在该着色器的主要工作是对这些顶点进行位移映射的操作,并同时设置顶点的ARGB值,这样便得到了在前后两个时刻进行插值后的云模型。具体实现方案如下:
首先解释一下位移映射,它是在域着色器中,取样含有高度信息的纹理,根据取样的高度信息将实际几何点的位置沿着表面法线方向进行移位的技术。在本发明的域着色器工作原理如下:以第一个60帧阶段的动画渲染中第t帧为例,域着色器分别对含有云顶高度信息的纹理T1和T2进行取样,得到高度数据S1和S2,插值权重I=t/60,插值后的高度值S=S1×(1-I)+S2×I。
上文说过,为了突出视觉上的效果,高度值其实是一个相对值,在本发明中:
初始10×10控制点构成的地球曲面,距离地球表面的距离是1/100个地球半径,我们把该曲面的高度定为云顶Hmin所在的高度,云顶Hmax和云顶Hmin的距离,也设定为1/100个地球半径,就是说如果曲面上各个控制点都达到Hmax的上限高度的话,那该曲面距离地球表面的距离就是2/100个地球半径。通过上述的距离设置规范,我们对每个细分出来的顶点做下述三维空间位置的变换:首先计算地球球心到该顶点的方向矢量,然后将该顶点沿着方向矢量移动S×0.01×R的距离,这里的R便是地球半径。经过上述位移映射后,云模型便有了高低起伏。然后对每个顶点的颜色进行赋值:云是白色的,所以在细分出来的顶点的颜色值ARGB中,RGB都为1,代表纯白色;透明度A=S。即云顶越高的地方透明度越低,白色越明显,云顶越低的地方透明度越大,白色越淡,当云顶高度等于Hmin时,A=0。
最后是像素点着色器106:该着色器无太复杂的工作处理,主要是将传递来的像素点送入Direct3D 11的像素点混合器,最终显示在屏幕上。
Claims (9)
1.一个基于曲面细分的台风模式云动画的显示方法,其特征是步骤包括:编制了渲染台风云动画所需的顶点着色器102、外壳着色器103、域着色器105和像素点着色器106;
1)对数值预报模式输出的网格格点上的气象要素进行数据量的压缩;
2)进行台风云模型动画渲染:步骤1)压缩的原始的台风云网格顶点数据流依次经顶点着色器102、外壳着色器103、域着色器105和像素点着色器106处理,最后生成高清的台风模式云动画;
所述步骤1)中,
选用数值预报模式输出的云顶高度数据作为构建台风云模型顶点的位置和颜色信息;
创建3个Direct3D 11的纹理;其中2个纹理分别存放已读取的t时刻和t+1时刻的云模型的顶点高度数据,简称云顶高度数据;在对t时刻和t+1时刻的云顶高度数据进行插值计算的同时,读取t+2时刻的云顶高度数据到最后1个纹理之中;
所述步骤2)中,
2.1)由顶点着色器102对云模型的控制点网格进行世界矩阵的变换,得出控制点网格经过旋转或平移后的三维空间坐标;
2.2)由外壳着色器103在由相邻的四个控制点构成的四边形中设置四个边的细分参数,由随后的Direct3D 11的系统固定的细分模块进行三角面的细分;
2.3)由域着色器105分别取样t时刻和t+1时刻对应的纹理,得到云顶的高度;然后将云顶高度数据插值计算结果中的高度信息和颜色信息给细分出三角面的顶点赋值;并对该顶点进行摄像机矩阵和投影矩阵的变换,完成三维空间中的点在二维屏幕坐标空间的转换;
2.4)由像素点着色器106将接收到的像素点送入像素点混合器,最终显示在屏幕上。
2.根据权利要求1所述的显示方法,其特征是
所述步骤1)中,
创建一个在X轴和Z轴各自方向轴上间隔相等的网格控制点组成的网格控制点数据流,该数据流的数据结构为:控制顶点的位置坐标、控制顶点的纹理UV和控制顶点的颜色ARGB值;
各个控制点共同构成地球模型上的一个曲面即控制点网格,该曲面范围覆盖整个预报模式输出数据的经纬跨度;该控制点网格即为云模型的粗网格,控制点网格的功能包括:描述云模型的大体轮廓;在步骤2.2)的外壳着色器103的曲面细分的过程中,对该云模型的粗网格进行三角面细分的处理。
所述步骤2)中,
在步骤2.1)中,顶点着色器102接收网格控制点数据流,使用世界矩阵对网格控制点的坐标进行平移变换或旋转变换后,得到新的世界坐标系下的网格控制点坐标;然后把处理后的网格控制点数据流传给外壳着色器103;
在步骤2.2)中,外壳着色器103的曲面细分的步骤为:
首先,外壳着色器103指定细分参数:网格控制点构成的四边形内部小三角面细分的参数,即四边形四个边上每个边的分段个数;分段越多,该四边形被细分成的小三角面也就越多;
接下来,系统固定的细分模块104根据外壳着色器103指定的细分参数,生成细分的多个小三角面;该细分模块是Direct3D 11内部固定的模块;
在步骤2.3)中,域着色器105接收细分处理后的小三角面的顶点的数据;然后对这些顶点进行位移映射的操作,同时设置顶点的ARGB值,得到在前后两个时刻进行插值后的云模型;
在步骤2.4)中,像素点着色器106将域着色器105传来的像素点送入Direct3D 11的像素点混合器,最终显示在屏幕上。
3.根据权利要求1或2所述的显示方法,其特征是对于步骤1)中的3个Direct3D 11的纹理,在步骤2.3)中,
首先,分别读取数值预报模式的云顶高度数据的t1和t2时刻的文件,分别给纹理数组107的前两个纹理T1和T2进行赋值;
动画渲染过程中,第一个线程对纹理数组107的纹理T1和T2取样,并进行云模型插值和渲染;同时,第二个线程读取数值预报模式的云顶高度数据的t3时刻的文件,给纹理T3赋值;
t1=t,t1=t+1,t3=t+2。
4.根据权利要求3所述的显示方法,其特征是所述步骤1)中,对数值预报模式输出的云顶高度信息的进行数据处理:
数值预报模式输出的云顶高度值是32位的浮点型数据,对该云顶高度值进行数据压缩,数据压缩的方法为:首先,设定云顶高度的上限阈值Hmax和云顶高度的下限阈值Hmin,数值预报模式输出的云顶高度值在这两个高度阈值之间;然后,云顶高度值和Hmin的差再除以Hmax和Hmin的差,得到一个[0,1]区间内的浮点数;这个浮点数再乘以255,取结果中的整数部分;
如果数值预报模式输出的云顶高度值等于Hmax,则压缩的结果为255;如果数值预报模式输出的云顶高度值等于Hmin,则压缩的结果为0;如果数值预报模式输出的格点上没有云,则该格点云顶高度的值用Hmin来指定;
把数值预报模式某时段内的输出结果中的云顶高度值进行数据压缩后,作为一个文件进行存储,这个文件里的内容是数值预报模式输出网格的各个格点上的云顶高度的相对值,该相对值以二维数组的排列方式进行存储。
5.根据权利要求4所述的显示方法,其特征是所述步骤1)中,数值预报模式输出网格的格点数是2000×2000像素点;
则在3个Direct3D 11的纹理中,纹理的尺寸和数值预报模式输出网格的格点数一致;设纹理的宽为2000像素点,高为2000像素点;定义纹理的格式是DXGI_FORMAT_R32F,表示一个像素是由一个32位浮点型数据构成;
读取所述云顶高度的相对值,然后除以255,得到一个在[0,1]之间的32位浮点数据,给纹理的每个像素值赋值。
6.根据权利要求2所述的显示方法,其特征是所述步骤1)中,控制点纹理UV的赋值方法为:
U值:最左边一列控制点的U值为0,最右边一列控制点的U值为1,因为控制点在X轴方向上是等距的,所以U的值也是等距的,各列控制点的U值从左至右依次为0、0.1,0.2,……,0.9,1;
同理,在Z方向上,各行控制点的V值从前到后依次为0、0.1,0.2,……,0.9,1。
7.根据权利要求2所述的显示方法,其特征是在步骤2.2)中,外壳着色器103首先对接收到的每个网格控制点分别作摄像机矩阵和投影矩阵的变换,得到网格控制点在屏幕空间的二维坐标;
然后判定构成四边形相邻的四个顶点是否在屏幕的范围内:
如果全都不在范围内,则该四边形内部不做细分的处理;
如果有任一个顶点在范围内,则由四个点在屏幕空间的二维坐标,计算出该四边形四个边在屏幕上的距离;
所述外壳着色器103处理得到的数据流的数据结构为:控制顶点的位置坐标、控制顶点的纹理UV和控制顶点的颜色ARGB值,其中,控制顶点的位置坐标是传入外壳着色器103的原始坐标值,而不是经过外壳着色器103处理后的在屏幕空间的二维坐标。
8.根据权利要求3所述的显示方法,其特征是所述步骤2.3)中,读取云顶高度数据赋值给纹理过程具有缓冲机制:
如果出现读取延时,第一个线程在特定帧数的插值结束后,便停止插值,等待纹理T3的赋值完毕;
经过第一个线程在特定帧数的插值,如果纹理T3赋值也完毕,则在随后特定帧数的渲染中,从纹理T2和T3中取样,同时读取云顶高度t4时刻的文件给纹理T1赋值;
后面的特定帧数的处理机制依次类推。
9.根据权利要求3所述的显示方法,其特征是所述步骤2.3)中,在特定帧数的动画渲染时,域着色器105分别对纹理T1和T2进行取样,得到对应的云顶高度数据S1和S2,插值权重I=t/特定帧数,t为取样时刻,插值后的高度值S=S1×(1-I)+S2×I;
把每个网格控制点离地球球心的距离设为地球半径的1.01倍,即由网格控制点构成的曲面离地球表面的距离为地球半径的1/100;把该曲面的高度设为Hmin所在的高度,Hmax和Hmin的距离也设为1/100个地球半径,即,如果曲面上各个控制点都达到Hmax的上限高度,则该曲面距离地球表面的距离就是2/100个地球半径;
通过上述的距离设置规范,对每个细分出来的顶点做三维空间位置的变换,步骤为:首先计算地球球心到相应顶点的方向矢量;然后将该顶点沿着方向矢量移动S×0.01×r的距离,得到高低起伏的云模型;这里的r是地球半径,S为插值后的高度值;
接下来对每个顶点的颜色进行赋值:云是白色的,则在细分出来的顶点的颜色值ARGB中,RGB都为1,代表纯白色;透明度A∈[0,1];
云顶高度越高的地方透明度越低,白色越明显,当云顶高度等于Hmax时,透明度A=1;
云顶高度越低的地方透明度越大,白色越淡,当云顶高度等于Hmin时,透明度A=0。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610567159.0A CN106228594B (zh) | 2016-07-18 | 2016-07-18 | 基于曲面细分的台风模式云动画显示方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610567159.0A CN106228594B (zh) | 2016-07-18 | 2016-07-18 | 基于曲面细分的台风模式云动画显示方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106228594A true CN106228594A (zh) | 2016-12-14 |
CN106228594B CN106228594B (zh) | 2018-11-09 |
Family
ID=57531493
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610567159.0A Expired - Fee Related CN106228594B (zh) | 2016-07-18 | 2016-07-18 | 基于曲面细分的台风模式云动画显示方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106228594B (zh) |
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106920271A (zh) * | 2017-01-18 | 2017-07-04 | 钱进 | 基于gs的粒子系统在风场驱动下构建流线动画的方法 |
CN107978011A (zh) * | 2017-12-18 | 2018-05-01 | 零空间(北京)科技有限公司 | 一种风的三维动态展示方法和设备 |
CN108629832A (zh) * | 2018-04-23 | 2018-10-09 | 广东奥园奥买家电子商务有限公司 | 一种3d球面坐标映射到二维平面的实现方法 |
CN109102472A (zh) * | 2018-07-23 | 2018-12-28 | 上海滚滚文化传播有限公司 | 一种三维仿二维建模渲染后制作漫画特效的方法 |
CN109801352A (zh) * | 2018-12-28 | 2019-05-24 | 宁波市气象台 | 一种气象格点数据动画显示方法 |
CN109934897A (zh) * | 2019-03-06 | 2019-06-25 | 珠海金山网络游戏科技有限公司 | 一种摆动效果模拟系统、方法、计算设备及存储介质 |
CN110298851A (zh) * | 2019-07-04 | 2019-10-01 | 北京字节跳动网络技术有限公司 | 人体分割神经网络的训练方法及设备 |
CN114049545A (zh) * | 2021-11-05 | 2022-02-15 | 中山大学 | 一种基于点云体素的台风定强方法、系统、设备及介质 |
CN117036444A (zh) * | 2023-10-08 | 2023-11-10 | 深圳市其域创新科技有限公司 | 三维模型输出方法、装置、设备及计算机可读存储介质 |
CN117237545A (zh) * | 2023-11-13 | 2023-12-15 | 武汉泽塔云科技股份有限公司 | 基于云桌面环境进行3d立体测图的方法、系统及存储介质 |
CN118428559A (zh) * | 2024-07-02 | 2024-08-02 | 国家气象中心(中央气象台) | 一种高性能数值天气预报分析方法 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2005104042A1 (en) * | 2004-04-20 | 2005-11-03 | The Chinese University Of Hong Kong | Block-based fragment filtration with feasible multi-gpu acceleration for real-time volume rendering on standard pc |
CN103365958A (zh) * | 2013-05-31 | 2013-10-23 | 南京信大高科技发展有限公司 | 台风预报平台及台风路径检索方法 |
CN104183008A (zh) * | 2014-07-31 | 2014-12-03 | 浙江大学 | 一种基于表面信号拟合和曲面细分的着色器简化方法、装置及图形渲染方法 |
CN105184492A (zh) * | 2015-09-10 | 2015-12-23 | 国网福建省电力有限公司 | 基于三维数字地球的电网抵御台风灾害仿真分析预警系统 |
CN105676290A (zh) * | 2016-04-03 | 2016-06-15 | 北京工业大学 | 基于曲面细分的地震数据三维显示方法 |
-
2016
- 2016-07-18 CN CN201610567159.0A patent/CN106228594B/zh not_active Expired - Fee Related
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2005104042A1 (en) * | 2004-04-20 | 2005-11-03 | The Chinese University Of Hong Kong | Block-based fragment filtration with feasible multi-gpu acceleration for real-time volume rendering on standard pc |
CN103365958A (zh) * | 2013-05-31 | 2013-10-23 | 南京信大高科技发展有限公司 | 台风预报平台及台风路径检索方法 |
CN104183008A (zh) * | 2014-07-31 | 2014-12-03 | 浙江大学 | 一种基于表面信号拟合和曲面细分的着色器简化方法、装置及图形渲染方法 |
CN105184492A (zh) * | 2015-09-10 | 2015-12-23 | 国网福建省电力有限公司 | 基于三维数字地球的电网抵御台风灾害仿真分析预警系统 |
CN105676290A (zh) * | 2016-04-03 | 2016-06-15 | 北京工业大学 | 基于曲面细分的地震数据三维显示方法 |
Cited By (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106920271B (zh) * | 2017-01-18 | 2020-06-02 | 钱进 | 基于gs的粒子系统在风场驱动下构建流线动画的方法 |
CN106920271A (zh) * | 2017-01-18 | 2017-07-04 | 钱进 | 基于gs的粒子系统在风场驱动下构建流线动画的方法 |
CN107978011A (zh) * | 2017-12-18 | 2018-05-01 | 零空间(北京)科技有限公司 | 一种风的三维动态展示方法和设备 |
CN107978011B (zh) * | 2017-12-18 | 2021-04-23 | 零空间(北京)科技有限公司 | 一种风的三维动态展示方法和设备 |
CN108629832A (zh) * | 2018-04-23 | 2018-10-09 | 广东奥园奥买家电子商务有限公司 | 一种3d球面坐标映射到二维平面的实现方法 |
CN109102472A (zh) * | 2018-07-23 | 2018-12-28 | 上海滚滚文化传播有限公司 | 一种三维仿二维建模渲染后制作漫画特效的方法 |
CN109801352A (zh) * | 2018-12-28 | 2019-05-24 | 宁波市气象台 | 一种气象格点数据动画显示方法 |
CN109801352B (zh) * | 2018-12-28 | 2023-05-16 | 宁波市气象台 | 一种气象格点数据动画显示方法 |
CN109934897A (zh) * | 2019-03-06 | 2019-06-25 | 珠海金山网络游戏科技有限公司 | 一种摆动效果模拟系统、方法、计算设备及存储介质 |
CN109934897B (zh) * | 2019-03-06 | 2023-01-10 | 珠海金山数字网络科技有限公司 | 一种摆动效果模拟系统、方法、计算设备及存储介质 |
CN110298851A (zh) * | 2019-07-04 | 2019-10-01 | 北京字节跳动网络技术有限公司 | 人体分割神经网络的训练方法及设备 |
CN110298851B (zh) * | 2019-07-04 | 2022-04-22 | 北京字节跳动网络技术有限公司 | 人体分割神经网络的训练方法及设备 |
CN114049545A (zh) * | 2021-11-05 | 2022-02-15 | 中山大学 | 一种基于点云体素的台风定强方法、系统、设备及介质 |
CN117036444A (zh) * | 2023-10-08 | 2023-11-10 | 深圳市其域创新科技有限公司 | 三维模型输出方法、装置、设备及计算机可读存储介质 |
CN117237545A (zh) * | 2023-11-13 | 2023-12-15 | 武汉泽塔云科技股份有限公司 | 基于云桌面环境进行3d立体测图的方法、系统及存储介质 |
CN117237545B (zh) * | 2023-11-13 | 2024-02-09 | 武汉泽塔云科技股份有限公司 | 基于云桌面环境进行3d立体测图的方法、系统及存储介质 |
CN118428559A (zh) * | 2024-07-02 | 2024-08-02 | 国家气象中心(中央气象台) | 一种高性能数值天气预报分析方法 |
CN118428559B (zh) * | 2024-07-02 | 2024-08-27 | 国家气象中心(中央气象台) | 一种高性能数值天气预报分析方法 |
Also Published As
Publication number | Publication date |
---|---|
CN106228594B (zh) | 2018-11-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106228594A (zh) | 基于曲面细分的台风模式云动画显示方法 | |
US9773343B2 (en) | Method for real-time and realistic rendering of complex scenes on internet | |
CN114219902B (zh) | 气象数据的体绘制渲染方法、装置和计算机设备 | |
US20080238919A1 (en) | System and method for rendering of texel imagery | |
CN102044089A (zh) | 一种三维模型的自适应化简、渐进传输和快速绘制的方法 | |
CN107918942A (zh) | 图块渲染系统中的被曲面细分的图元索引列表的压缩 | |
CN116051759B (zh) | 一种生成倾斜摄影lod简化模型的方法 | |
CN113436308B (zh) | 一种三维环境空气质量动态渲染方法 | |
CN101763657A (zh) | 一种用于视频制作的三维地形的显示方法 | |
CN102915559A (zh) | 一种基于三维点云的实时透明物体gpu并行生成方法 | |
CN106952328B (zh) | 一种大规模宏观虚拟场景的绘制方法与系统 | |
Zhang et al. | Tree branch level of detail models for forest navigation | |
Boudon et al. | Survey on computer representations of trees for realistic and efficient rendering | |
Jang et al. | View-Dependent Multiresolution Splatting of Non-Uniform Data. | |
Frommholz et al. | Inlining 3d reconstruction, multi-source texture mapping and semantic analysis using oblique aerial imagery | |
Hibbard | 4-d display of meteorological data | |
CN110232846A (zh) | 一种冲锋舟模拟驾驶方法、系统及相关装置 | |
CN113674419A (zh) | 气象云数据的三维展示方法、装置、电子设备及存储介质 | |
Amara et al. | A GPU Tile-Load-Map architecture for terrain rendering: theory and applications | |
Hill | An efficient, hardware-accelerated, level-of-detail rendering technique for large terrains | |
CN113327314A (zh) | 一种基于层次的覆盖全空域的云表示与实时绘制方法 | |
Gerstner et al. | A case study on multiresolution visualization of local rainfall from weather radar measurements | |
Nilsson | 3D Cloud Visualization In Real-Time | |
Yang et al. | Game engine support for terrain rendering in architectural design | |
Amara et al. | A GPU framework for the visualization and on-the-fly amplification of real terrains |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | 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 | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20181109 |
|
CF01 | Termination of patent right due to non-payment of annual fee |