CN102117497A - 一种三维地形建模方法及系统 - Google Patents
一种三维地形建模方法及系统 Download PDFInfo
- Publication number
- CN102117497A CN102117497A CN2009102442960A CN200910244296A CN102117497A CN 102117497 A CN102117497 A CN 102117497A CN 2009102442960 A CN2009102442960 A CN 2009102442960A CN 200910244296 A CN200910244296 A CN 200910244296A CN 102117497 A CN102117497 A CN 102117497A
- Authority
- CN
- China
- Prior art keywords
- data
- srtm
- file
- longitude
- information
- 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
Landscapes
- Processing Or Creating Images (AREA)
- Instructional Devices (AREA)
Abstract
本发明提供了一种三维地形建模方法及系统,所述方法包括:读取高度数据;将高度数据转换为三维空间坐标,建立三维模型;计算所述三维模型中每个顶点的颜色信息和法向量;对所述三维模型进行渲染。本发明使用D3D三维引擎构建三维模型,由于D3D三维引擎提供了建模、光照等模拟,很好地符合了制作三维地形的要求,所以不需要自己构建光照模型,提高了系统效率。
Description
技术领域
本发明涉及GIS技术领域,特别是涉及一种三维地形建模方法及系统。
背景技术
GIS即地理信息系统(Geographic Information System),是一种基于计算机的工具,它可以对地球上存在的东西和发生的事件进行成图和分析。GIS技术把地图这种独特的视觉化效果和地理分析功能与一般的数据库操作(例如查询和统计分析等)集成在一起。这种能力使GIS与其他信息系统相区别,从而使其在广泛的公众和个人企事业单位中解释事件、预测结果、规划战略等中具有实用价值。地理信息系统广泛应用于资源调查、环境评估、灾害预测、国土管理、城市规划、邮电通讯、交通运输、军事公安、水利电力、公共设施管理、农林牧业、统计、商业金融等几乎所有领域。
GIS中常使用三维建模技术。三维模型是物体的三维多边形表示,通常用计算机或者其它视频设备进行显示。显示的物体是可以是现实世界的实体,也可以是虚构的东西,既可以小到原子,也可以大到很大的尺寸。任何物理自然界存在的东西都可以用三维模型表示。三维模型广泛用于任何使用三维图形的地方,如用于油田开发、地质研究等多个领域的地理信息数据处理中。
三维建模的方法有多种,常见的生成三维地形的方法是使用图像处理。但是,使用图像处理来实现三维地形,需要自己构建光照模型,因此需要计算大量的光照,影响了系统效率。
发明内容
本发明所要解决的技术问题是提供一种三维地形建模方法及系统,以解决自己构建光照模型影响系统效率的问题。
为了解决上述问题,本发明公开了一种三维地形建模方法,包括:
读取高度数据;
将高度数据转换为三维空间坐标,建立三维模型;
计算所述三维模型中每个顶点的颜色信息和法向量;
对所述三维模型进行渲染。
优选的,所述方法还包括:
将纹理数据映射到所述三维模型的渲染结果上,并输出显示。
优选的,使用D3D建立三维模型,并在建模过程中使用D3D提供的缓冲存储建模数据。
优选的,计算顶点的颜色信息包括:
通过插值预置高度数据与颜色值的对应关系;
根据所述对应关系,查找顶点的颜色信息。
优选的,计算顶点的法向量包括:
根据顶点的高度数据计算顶点的法向量;
利用指数函数,对所述法向量的x分量和y分量分别进行指数增强。
优选的,所述高度数据为SRTM数据,所述SRTM数据以预定义的文件格式存储;并且,所述SRTM数据按照经纬度等分为数据块,每个数据块的经纬度间隔相等,每个SRTM数据块按照分辨率分为不同等级的多个SRTM文件;
所述预定义的文件格式包括文件头和数据部分,其中,文件头用于描述SRTM数据块中所有点的信息,每个点的信息包括图像宽度、图像高度、1个像素点所占经度范围、1个像素点所占纬度范围、左下点经度坐标和左下点纬度坐标;数据部分用于按照先左后右、先下后上的方式存储文件头所描述的所有点的高度信息。
优选的,所述读取高度数据包括:
根据屏幕图像上不同的位置,读取不同等级的SRTM文件;
根据以下计算式确定某个点(经度坐标为L,纬度坐标为B)在所读取的SRTM文件数据部分的位置:
((B-m_dBLeftBottom)/m_dBPerPixel)*m_nWidth+(L-m_dLLeftBottom)/m_dLPerPixel;
其中,m_dBLeftBottom表示左下点纬度坐标,m_dBPerPixel表示1个像素点所占纬度范围,m_nWidth表示图像宽度,m_dLLeftBottom表示左下点经度坐标,m_dLPerPixel表示1个像素点所占经度范围。
本发明还提供了一种三维地形建模系统,包括:
数据读取模块,用于读取高度数据;
模型构建模块,用于将高度数据转换为三维空间坐标,建立三维模型;
计算模块,用于计算所述三维模型中每个顶点的颜色信息和法向量;
渲染模块,用于对所述三维模型进行渲染。
优选的,所述系统还包括:
纹理映射模块,用于将纹理数据映射到所述三维模型的渲染结果上,并输出显示。
优选的,所述高度数据为SRTM数据,所述SRTM数据以预定义的文件格式存储;并且,所述SRTM数据按照经纬度等分为数据块,每个数据块的经纬度间隔相等,每个SRTM数据块按照分辨率分为不同等级的多个SRTM文件;
所述预定义的文件格式包括文件头和数据部分,其中,文件头用于描述SRTM数据块中所有点的信息,每个点的信息包括图像宽度、图像高度、1个像素点所占经度范围、1个像素点所占纬度范围、左下点经度坐标和左下点纬度坐标;数据部分用于按照先左后右、先下后上的方式存储文件头所描述的所有点的高度信息。
与现有技术相比,本发明具有以下优点:
首先,本发明使用D3D三维引擎构建三维模型,由于D3D三维引擎提供了建模、光照等模拟,很好地符合了制作三维地形的要求,所以不需要自己构建光照模型,提高了系统效率。
其次,本发明读取的高度数据,是将原始SRTM数据转换为预定义格式后存储的数据,由于采用了这种预定义的文件格式,可以较快定位某个经纬度点在屏幕图像中的位置。而且,还对格式转换后的SRTM文件按照分辨率进行了分级,每一级别对应一种分辨率,这种文件分级方法,可以满足屏幕图像中不同位置需要不同级别文件的要求,很好地符合了非经纬度线性投影模式下,不同位置需要不同分辨率精度的文件的需求。而且,世界范围内同一级别的文件个数是相等的(即所有的Level_00级别的文件个数与所有的Level_01的文件个数相等),不会导致小文件过多等问题。
再次,本发明通过高度数据来构造顶点的颜色,根据颜色插值点构造一个高度数据与颜色信息一一对应的颜色插值表,通过查表的方式来快速查询每个顶点的颜色值。
最后,本发明提出了一种改进的法向量计算方法,该方法首先通过高度数据计算法向量,然后进一步对该法向量的x分量和y分量进行增强,从而增加了立体感,改善了显示效果。而且,本发明还提供了两种增强方法,一种是线性增强,另一种是指数增强,其中后者的增强效果更佳。
附图说明
图1是本发明实施例所述一种三维地形建模方法的流程图;
图2是本发明实施例中利用高度数据建模的流程图;
图3是本发明实施例中颜色与高度的对应关系图;
图4是本发明实施例中直接使用由高度数据计算出来的法向量作为顶点法向量的显示效果图;
图5是本发明实施例中法向量计算示意图;
图6是本发明实施例中对法向量进行线性增强的显示效果图;
图7.1和7.2是本发明实施例中指数函数的曲线示意图;
图8是本发明实施例中对法向量进行指数增强的显示效果图;
图9是本发明实施例中纹理绘制的流程图;
图10是本发明实施例中南半球投影下的中国地图;
图11是本发明实施例所述一种三维地形建模系统的结构图。
具体实施方式
为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本发明作进一步详细的说明。
由于D3D三维引擎提供了建模、光照等模拟,很好地符合了制作三维地形的要求,因此本发明使用D3D三维引擎构建三维模型,不需要自己构建光照模型,提高了系统效率。
其中,Direct 3D(D3D)是微软为提高3D游戏在WIN 95/98中的显示性能而开发的显示程序,是基于微软的通用对象模式COM(Common ObjectMode)的3D图形API。
下面通过实施例进行详细说明。
参照图1,是本发明实施例所述一种三维地形建模方法的流程图。
在图像显示的过程中,每一帧的图像都需要经过高程建模、渲染、纹理绘制、输出显示等过程,其中后一帧是对前一帧的更新。下面将以一帧图像的整个建模过程为例进行说明。
在数据建模的过程中会使用到两种数据块:一种是高度数据,用来进行建模;另一种是纹理数据,用于进行纹理贴图,从而美化其显示效果。
步骤101,读取高度数据;
步骤102,将高度数据转换为三维空间坐标,建立三维模型;
得到高度数据以后,用该高度数据建立三维网格,实践证明,如果想要获得好的显示效果,每个像素需要建立两个三角面片。在建模过程中,可以使用D3D提供的缓冲区来缓存当前帧的所有建模数据,这样可以节约内存(或显存)。
参照图2,以图像大小720*576为例,详细介绍建模过程:
步骤201,创建顶点缓冲区;
如果创建成功,则继续步骤202;否则,结束。
其中,所述顶点是指三角面片的顶点。
因为需要建立的三角形数量为:720*576*2,这些三角形用到的顶点数量为(720+1)*(576+1),所以创建的顶点缓冲区的大小为721*577。
步骤202,创建索引缓冲区;
如果创建成功,则继续步骤203;否则,结束。
因为每个三角形需要三个顶点,所以创建的索引缓冲区的大小为720*576*2*3。
步骤203,计算顶点的三维坐标。
顶点的三维坐标表示为(x,y,z),其中:
x、y:相邻两个顶点的间距者设为1;
z:计算出1个经度在三维空间的平均跨度1Distance,由于赤道附近1经度的跨度大约为110000米,所以1米在三维空间的跨度约为:1Dintance/110000,如果读取的高度数据的大小为shDem米,则:z=shDem*blDisntance/110000。
上述过程中,对第一帧图像建模时需要创建顶点缓冲区和索引缓冲区,后续图像帧则不需要重新创建,只是更新顶点的三维坐标即可。
步骤103,计算所述三维模型中每个顶点的颜色信息;
每个顶点都有高度信息,可以通过高度信息来构造该顶点的颜色。参照图3所示,添加几个颜色插值点,用线性插值的方法来计算所有高度所对应的颜色值。
由于高度数据都是short型,而且基本分布在0-8000米之间,为了快速计算颜色,可以根据颜色插值点构造一个颜色插值表,通过查表的方式来快速查询每个顶点的颜色值。
步骤104,计算所述三维模型中每个顶点的法向量;
在运用D3D渲染三维地形时,如果直接使用通过高度数据计算出的法向量进行渲染,渲染出的三维立体效果会很差,参照图4所示。这是因为地表的高度起伏远小于地面的距离,比如泰山连绵200多公里,而其最高处也不过1500多米,这就导致了计算出的法向量的x分量和y分量过小。虽然通过高度数据计算出的是法向量的真实值,但渲染效果不佳,因此需要对法向量的x分量、y分量适当增强,从而增加立体感,改善显示效果。
基于上述分析,本实施例采用的顶点法向量计算方法如下:
第一步,通过高度数据计算顶点的法向量;
参照图5,计算过程如下:
如果点(x=i,y=j)的空间高度为zij,则该点的三维坐标为(x=i,y=j,z=zij),该点的法向量跟其周围8个点的空间位置相关。最简单的方式是构造如图所示的四个三角形(1,2,3,4),然后分别计算四个三角形的法向量,把这四个法向量平均,就可得到空间点(x=i,y=j,z=zij)的法向量。
其中,对于每个三角形的法向量计算,有个比较好的方法:先计算出图中四个箭头的向量值,然后分别用箭头的向量值两两叉乘,即可计算出四个三角形的法向量,这样的计算量较小。当然,图中箭头的方向也可以改变,但最终的目标是:计算出的四个三角形的法向量方向保持一致。
第二步,对所述法向量的x分量和y分量进行增强。
本实施例提供了两种增强方式,分别是线性增强和指数增强,具体如下:
1、线性增强
即利用线性函数,对所述法向量的x分量和y分量进行线性增强。
例如,令normal.x表示法向量的x分量,令normal.y表示法向量的y分量,令k表示调节系数:
normal.x=k*normal.x;
normal.y=k*normal.y;
调节k的值,就可以增强渲染的立体感。
线性增强的显示效果图如图6所示,是k=4的渲染显示效果。
但是,从图6中可以看出,图像中有些地方的立体感依然不够明显(法向量过小),而有些地方却过度曝光(法向量过大)。因此,要想获得较好的显示效果,线性增强的方式还不够完善。因此,本实施例提出了第二种指数增强的方式。
2、指数增强
即利用指数函数,对所述法向量的x分量和y分量进行指数增强。
从上述图4和图6的对比可知,希望得到的向量增强方式为:在法向量值较小的地方,希望立体感增加的较为明显;而在法向量值较大的地方,希望立体感增加的不要太明显。而指数函数正符合这种要求。
指数函数大致如图7.1所示:
是分段指数函数:
f(x)=k*(1-exp(-x*d));(x>=0)
f(x)=-k*(1-exp(x*d));(x<0)
其中,k和d是调节系数。
图7.1所示的指数函数很好地满足了这种要求。通过设置不同的k和d值,就能得到不同的渲染结果。
而当k=1,d=10的时候,该函数的函数曲线如图7.2所示。
使用所述指数函数分别对法向量的x分量和y分量进行增强,渲染结果如图8所示。
将图8分别与图4和图6比较,可以看出,图8的渲染显示效果最好。
步骤105,对所述三维模型进行渲染;
完成上述步骤之后,就可以提交渲染了,即利用D3D三维引擎进行渲染。
步骤106,将纹理数据映射到所述三维模型的渲染结果上,并输出显示。
地图中除了高度信息以外,还需要国界、省界、河流等纹理数据,再画好这些纹理数据,就可以得到绚丽的三维地图了。高度建模只是为了将地貌的高度起伏变化呈现出来,而显示效果主要是由纹理来表示。纹理数据主要是指航拍图像或者其他的地形地貌图像,但还有一部数据是用户定制数据,这部分数据会根据用户的不同需求而临时改变或后期产生,如河流、国家边界、区域着色等。
参照图9,是本发明实施例中纹理绘制的流程图。
步骤901,读取纹理文件信息;
所述纹理文件通常为shape文件格式。Shapefile文件是美国环境系统研究所(ESRI)所研制的GIS文件系统格式文件,是工业标准的矢量数据文件。Shapefile将空间特征表中的非拓扑几何对象和属性信息存储在数据集中,特征表中的几何对象存为以坐标点集表示的图形文件-SHP文件,Shapefile文件并不含拓扑(Topological)数据结构。一个Shape文件包括三个文件:一个主文件(*.shp),一个索引文件(*.shx),和一个dBASE(*.dbf)表。主文件是一个直接存取、变长度记录的文件,其中每个记录描述构成一个地理特征(Feature)的所有vertices坐标值。在索引文件中,每条记录包含对应主文件记录距离主文件头开始的偏移量,dBASE表包含SHP文件中每一个Feature的特征属性,表中几何记录和属性数据之间的一一对应关系是基于记录数目的ID。在dBASE文件中的属性记录必须和主文件中的记录顺序是相同的。图形数据和属性数据通过索引号建立一一对应的关系。
步骤902,将纹理数据转换为三维空间坐标;
步骤903,使用GDI+(Graphics Device Interface,图形设备接口)的方式绘制河流、边界等纹理;
步骤904,将纹理映射到三维模型的渲染结果上,并输出到显示器。
在本发明实施例中所述的高度数据,是指SRTM数据。SRTM数据是一种存储地表高度信息的数据SRTM数据主要是由美国太空总署(NASA)和国防部国家测绘局(NIMA)联合测量的,SRTM的全称是Shuttle RadarTopography Mission,即航天飞机雷达地形测绘使命。
图1中步骤101读取的不是原始的SRTM数据,而是经过格式转换及文件分级后存储的SRTM数据。在地图制作过程中,为了满足地图制作系统的速度,需要较为快速的读取SRTM数据。而且,在制作地图过程中,通常要改变投影模式,投影模式的转换过程中也需要快速查找SRTM数据。
本发明实施例主要从两个方面对原始SRTM数据进行处理:
第一,将原始SRTM文件转换为预定义的文件格式存储;
这种文件结构,可以较快定位某个经纬度点在屏幕图像中的位置。
第二,将SRTM数据按照分辨率进行分级,每个等级的数据分辨率不同。
这种文件分级方法,可以满足屏幕图像中不同位置需要不同级别文件的要求,很好地符合了非经纬度线性投影模式下,不同位置需要不同分辨率精度的文件的需求。而且,世界范围内同一级别的文件个数是相等的(即所有的Level_00级别的文件个数与所有的Level_01的文件个数相等),不会导致小文件过多等问题。
下面分别说明这两点。
1、将原始SRTM文件转换为预定义的文件格式存储
预定义的文件是按照经纬度线性投影方式来存储的,包括文件头和数据部分。
其中,文件头的定义如表1:
4个字节(DWORD) | 文件版本号 |
4个字节(INT) | 图像宽度 |
4个字节(INT) | 图像高度 |
8个字节(DOUBLE) | 1个像素点所占经度范围 |
8个字节(DOUBLE) | 1个像素点所占纬度范围 |
8个字节(DOUBLE) | 左下点经度坐标 |
8个字节(DOUBLE) | 左下点纬度坐标 |
4个字节(DWORD) | 保留1 |
4个字节(DWORD) | 保留2 |
表1
其中,“保留1”和“保留2”是预留的字节,用于扩展使用。
预定义文件的数据部分存储所有文件头所描述的所有点的高度信息,每个点都是一个short型,占两位,按照先左后右、先下后上的方式存储。以左下点经度坐标为85度,纬度坐标为30度,图像高度为200,图像宽度为200,1像素占经度范围为0.025,1像素占纬度范围为0.025为例,它的数据部分如表2:
位置(字节) | 数据类型 | 存储内容 |
0-1 | short | 点(经度85.000,纬度30.000)的高度 |
2-3 | short | 点(经度85.025,纬度30.000)的高度 |
4-5 | short | 点(经度85.050,纬度30.000)的高度 |
…… | …… | …… |
200-201 | short | 点(经度85.000,纬度30.025)的高度 |
202-203 | short | 点(经度85.025,纬度30.025)的高度 |
204-205 | short | 点(经度85.050,纬度30.025)的高度 |
…… | …… | …… |
表2
基于表1和表2,存储左下点的经度坐标、左下点的纬度坐标以及1个像素所占的经度范围、纬度范围,其主要目的是快速找到某个经纬度点在文件数据部分中的位置。
例如,若文件类的成员变量如下:
UINT m_nWidth;//图像宽度
UINT m_nHeight;//图像高度
double m_dLPerPixel;//每个像素所占的经度
double m_dBPerPixel;//每个像素所占的纬度
double m_dLLeftBottom;//左下点的经度坐标
double m_dBLeftBottom;//左下点的纬度坐标
则点(经度坐标为:L,纬度坐标为:B)在文件数据部分的位置为:
((B-m_dBLeftBottom)/m_dBPerPixel)*m_nWidth+(L-m_dLLeftBottom)/m_dLPerPixel。
通过以上计算式,就可以快速定位某个经纬度点在屏幕图像中的位置。
2、将SRTM数据按照分辨率进行分级,每个等级的数据分辨率不同
参照图10,是本发明实施例中南半球投影下的中国地图。
图10中的灰色线代表间距为5度的经纬线,经纬线把图像分成很多个“方格”(即数据块),每个“方格”所覆盖的经纬度范围是相同的,都为5经度*5纬度。从图10中可以发现,在图像中不同的位置,每个“方格”所占的面积不等,也就表示,每个“方格”所需要的数据文件的精度等级是不一样的。如果对整幅图像读入同一精度等级的文件,如果按照最高精度等级的文件来读,则造成读入的文件过大,影响效率、浪费内存;如果不按照最高精度等级的文件来读,则会造成图像某些位置模糊不清。
由于每个“方格”所需要的精度可以不一样,所以有必要以每个方格为单位,进行分级。
分级的方法为:
(1)以每个“方格”为单位进行分级;
(2)每个“方格”的范围都为5经度*5纬度;
(3)每个“方格”分为6个不同级别的文件,分别为Level_00至Level_05。其中,Level_00的精度最低,Level_05的精度最高,下一级别的精度约为上一级别精度的2倍。
每个级别文件的信息如表3:
级别 | 图像宽度 | 图像高度 | 1像素点所占经度 | 1像素点所占纬度 |
Level_00 | 200 | 200 | 0.025 | 0.025 |
Level_01 | 400 | 400 | 0.0125 | 0.0125 |
Level_02 | 800 | 800 | 0.00625 | 0.00625 |
Level_03 | 1600 | 1600 | 0.003125 | 0.003125 |
Level_04 | 3200 | 3200 | 0.0015625 | 0.0015625 |
Level_05 | 6000 | 6000 | 0.000833333333333 | 0.000833333333333 |
表3
这样,每个“方格”的数据都按照6种分辨率存为6个文件,在不同的显示精度要求下,可以从不同等级的文件中读取符合当前显示精度要求的数据。
因此,这种文件分级方法,可以满足屏幕图像中不同位置需要不同级别文件的要求,很好地符合了非经纬度线性投影模式下,不同位置需要不同分辨率精度的文件的需求。而且,世界范围内同一级别的文件个数是相等的(即所有的Level_00级别的文件个数与所有的Level_01的文件个数相等),不会导致小文件过多等问题。
针对上述方法实施例,本发明还提供了相应的系统实施例。
参照图11,是本发明实施例所述一种三维地形建模系统的结构图。
所述系统主要包括:
数据读取模块1,用于读取高度数据;
模型构建模块2,用于将高度数据转换为三维空间坐标,建立三维模型;
计算模块3,用于计算所述三维模型中每个顶点的颜色信息和法向量;
渲染模块4,用于对所述三维模型进行渲染。
所述系统还可以包括:
纹理映射模块5,用于将纹理数据映射到所述三维模型的渲染结果上,并输出显示。
其中,所述高度数据为SRTM数据,所述SRTM数据以预定义的文件格式存储;并且,所述SRTM数据按照经纬度等分为数据块,每个数据块的经纬度间隔相等,每个SRTM数据块按照分辨率分为不同等级的多个SRTM文件;
所述预定义的文件格式包括文件头和数据部分,其中,文件头用于描述SRTM数据块中所有点的信息,每个点的信息包括图像宽度、图像高度、1个像素点所占经度范围、1个像素点所占纬度范围、左下点经度坐标和左下点纬度坐标;数据部分用于按照先左后右、先下后上的方式存储文件头所描述的所有点的高度信息。
所述数据读取模块1根据屏幕图像上不同的位置,读取不同等级的SRTM文件,并根据以下计算式确定某个点(经度坐标为L,纬度坐标为B)在所读取的SRTM文件数据部分的位置:
((B-m_dBLeftBottom)/m_dBPerPixel)*m_nWidth+(L-m_dLLeftBottom)/m_dLPerPixel;
其中,m_dBLeftBottom表示左下点纬度坐标,m_dBPerPixel表示1个像素点所占纬度范围,m_nWidth表示图像宽度,m_dLLeftBottom表示左下点经度坐标,m_dLPerPixel表示1个像素点所占经度范围。
所述计算模块3通过插值预置高度数据与颜色值的对应关系,然后根据所述对应关系,快速查找顶点的颜色信息。并且,所述计算模块3根据顶点的高度数据计算顶点的法向量,并优选利用指数函数,对所述法向量的x分量和y分量分别进行指数增强,从而增加了立体感,改善了显示效果。
综上所述,所述系统使用D3D三维引擎构建三维模型,由于D3D三维引擎提供了建模、光照等模拟,很好地符合了制作三维地形的要求,所以不需要自己构建光照模型,提高了系统效率。
而且,通过对原始SRTM数据进行格式转换和文件分级的处理,可以较快定位某个经纬度点在屏幕图像中的位置,并可以满足屏幕图像中不同位置需要不同级别文件的要求,很好地符合了非经纬度线性投影模式下,不同位置需要不同分辨率精度的文件的需求。具体的效果图可参见图12和图13。
本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。对于系统实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上对本发明所提供的一种三维地形建模方法及系统,进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
Claims (10)
1.一种三维地形建模方法,其特征在于,包括:
读取高度数据;
将高度数据转换为三维空间坐标,建立三维模型;
计算所述三维模型中每个顶点的颜色信息和法向量;
对所述三维模型进行渲染。
2.根据权利要求1所述的方法,其特征在于,还包括:
将纹理数据映射到所述三维模型的渲染结果上,并输出显示。
3.根据权利要求1所述的方法,其特征在于:
使用D3D建立三维模型,并在建模过程中使用D3D提供的缓冲存储建模数据。
4.根据权利要求1所述的方法,其特征在于,计算顶点的颜色信息包括:
通过插值预置高度数据与颜色值的对应关系;
根据所述对应关系,查找顶点的颜色信息。
5.根据权利要求l所述的方法,其特征在于,计算顶点的法向量包括:
根据顶点的高度数据计算顶点的法向量;
利用指数函数,对所述法向量的x分量和y分量分别进行指数增强。
6.根据权利要求1所述的方法,其特征在于:
所述高度数据为SRTM数据,所述SRTM数据以预定义的文件格式存储;并且,所述SRTM数据按照经纬度等分为数据块,每个数据块的经纬度间隔相等,每个SRTM数据块按照分辨率分为不同等级的多个SRTM文件;
所述预定义的文件格式包括文件头和数据部分,其中,文件头用于描述SRTM数据块中所有点的信息,每个点的信息包括图像宽度、图像高度、1个像素点所占经度范围、1个像素点所占纬度范围、左下点经度坐标和左下点纬度坐标;数据部分用于按照先左后右、先下后上的方式存储文件头所描述的所有点的高度信息。
7.根据权利要求6所述的方法,其特征在于,所述读取高度数据包括:
根据屏幕图像上不同的位置,读取不同等级的SRTM文件;
根据以下计算式确定某个点(经度坐标为L,纬度坐标为B)在所读取的SRTM文件数据部分的位置:
((B-m_dBLeftBottom)/m_dBPerPixel)*m_nWidth+(L-m_dLLeftBottom)/m_dLPerPixel;
其中,m_dBLeftBottom表示左下点纬度坐标,m_dBPerPixel表示1个像素点所占纬度范围,m_nWidth表示图像宽度,m_dLLeftBottom表示左下点经度坐标,m_dLPerPixel表示1个像素点所占经度范围。
8.一种三维地形建模系统,其特征在于,包括:
数据读取模块,用于读取高度数据;
模型构建模块,用于将高度数据转换为三维空间坐标,建立三维模型;
计算模块,用于计算所述三维模型中每个顶点的颜色信息和法向量;
渲染模块,用于对所述三维模型进行渲染。
9.根据权利要求8所述的系统,其特征在于,还包括:
纹理映射模块,用于将纹理数据映射到所述三维模型的渲染结果上,并输出显示。
10.根据权利要求8或9所述的系统,其特征在于:
所述高度数据为SRTM数据,所述SRTM数据以预定义的文件格式存储;并且,所述SRTM数据按照经纬度等分为数据块,每个数据块的经纬度间隔相等,每个SRTM数据块按照分辨率分为不同等级的多个SRTM文件;
所述预定义的文件格式包括文件头和数据部分,其中,文件头用于描述SRTM数据块中所有点的信息,每个点的信息包括图像宽度、图像高度、1个像素点所占经度范围、1个像素点所占纬度范围、左下点经度坐标和左下点纬度坐标;数据部分用于按照先左后右、先下后上的方式存储文件头所描述的所有点的高度信息。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN200910244296.0A CN102117497B (zh) | 2009-12-30 | 2009-12-30 | 一种三维地形建模方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN200910244296.0A CN102117497B (zh) | 2009-12-30 | 2009-12-30 | 一种三维地形建模方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102117497A true CN102117497A (zh) | 2011-07-06 |
CN102117497B CN102117497B (zh) | 2015-02-18 |
Family
ID=44216249
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN200910244296.0A Expired - Fee Related CN102117497B (zh) | 2009-12-30 | 2009-12-30 | 一种三维地形建模方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102117497B (zh) |
Cited By (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103136782A (zh) * | 2013-02-22 | 2013-06-05 | 广东威创视讯科技股份有限公司 | 一种三维模型地图动态渲染方法及装置 |
CN103337095A (zh) * | 2013-06-25 | 2013-10-02 | 桂林理工大学 | 一种真实空间三维地理实体的立体虚拟显示方法 |
CN103617650A (zh) * | 2013-11-29 | 2014-03-05 | 哈尔滨工程大学 | 一种复杂三维地形显示方法 |
CN103927395A (zh) * | 2014-05-05 | 2014-07-16 | 曾志明 | 结构简化图像三维几何及材质纹理的数据结构及渲染方法 |
CN105243687A (zh) * | 2015-10-23 | 2016-01-13 | 佛山市南海区广工大数控装备协同创新研究院 | 一种义齿模型三角网格优化方法 |
CN106327564A (zh) * | 2016-08-25 | 2017-01-11 | 河南理工大学 | 一种图像处理方法及装置 |
CN106373175A (zh) * | 2016-08-29 | 2017-02-01 | 北京像素软件科技股份有限公司 | 一种地形高度图数据的加载方法 |
CN106611441A (zh) * | 2015-10-27 | 2017-05-03 | 腾讯科技(深圳)有限公司 | 三维地图的处理方法和装置 |
CN107909538A (zh) * | 2017-12-07 | 2018-04-13 | 北京像素软件科技股份有限公司 | 地形数据处理方法及装置 |
CN107978011A (zh) * | 2017-12-18 | 2018-05-01 | 零空间(北京)科技有限公司 | 一种风的三维动态展示方法和设备 |
CN108182251A (zh) * | 2017-12-29 | 2018-06-19 | 零空间(北京)科技有限公司 | 在虚拟现实环境下的气象数据呈现方法和虚拟现实设备 |
CN110097224A (zh) * | 2019-05-05 | 2019-08-06 | 中国科学院海洋研究所 | 一种可视化风暴潮-海浪耦合预报方法 |
CN110170166A (zh) * | 2015-08-24 | 2019-08-27 | 鲸彩在线科技(大连)有限公司 | 一种游戏数据生成、上传方法及装置 |
CN111506680A (zh) * | 2019-01-31 | 2020-08-07 | 阿里巴巴集团控股有限公司 | 地形数据生成、渲染方法及装置、介质、服务器、终端 |
CN112017227A (zh) * | 2020-08-27 | 2020-12-01 | 上海交通建设总承包有限公司 | 点云融合生成的地形模型与潮汐数据混合可视化的方法 |
CN114239250A (zh) * | 2021-11-24 | 2022-03-25 | 新泰市国土空间规划服务中心(新泰市建筑设计院、新泰市水利设计院) | 一种国土空间规划设计的系统和方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101582173B (zh) * | 2009-06-24 | 2012-07-11 | 中国石油天然气集团公司 | 复杂地质构造块状模型构建方法 |
-
2009
- 2009-12-30 CN CN200910244296.0A patent/CN102117497B/zh not_active Expired - Fee Related
Cited By (25)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103136782A (zh) * | 2013-02-22 | 2013-06-05 | 广东威创视讯科技股份有限公司 | 一种三维模型地图动态渲染方法及装置 |
CN103136782B (zh) * | 2013-02-22 | 2016-05-18 | 广东威创视讯科技股份有限公司 | 一种三维模型地图动态渲染方法及装置 |
CN103337095A (zh) * | 2013-06-25 | 2013-10-02 | 桂林理工大学 | 一种真实空间三维地理实体的立体虚拟显示方法 |
CN103337095B (zh) * | 2013-06-25 | 2016-05-18 | 桂林理工大学 | 一种真实空间三维地理实体的立体虚拟显示方法 |
CN103617650A (zh) * | 2013-11-29 | 2014-03-05 | 哈尔滨工程大学 | 一种复杂三维地形显示方法 |
CN103927395A (zh) * | 2014-05-05 | 2014-07-16 | 曾志明 | 结构简化图像三维几何及材质纹理的数据结构及渲染方法 |
CN110170166A (zh) * | 2015-08-24 | 2019-08-27 | 鲸彩在线科技(大连)有限公司 | 一种游戏数据生成、上传方法及装置 |
CN110170166B (zh) * | 2015-08-24 | 2023-04-07 | 鲸彩在线科技(大连)有限公司 | 一种游戏数据生成、上传方法及装置 |
CN105243687A (zh) * | 2015-10-23 | 2016-01-13 | 佛山市南海区广工大数控装备协同创新研究院 | 一种义齿模型三角网格优化方法 |
CN105243687B (zh) * | 2015-10-23 | 2017-11-03 | 佛山市南海区广工大数控装备协同创新研究院 | 一种义齿模型三角网格优化方法 |
CN106611441A (zh) * | 2015-10-27 | 2017-05-03 | 腾讯科技(深圳)有限公司 | 三维地图的处理方法和装置 |
CN106611441B (zh) * | 2015-10-27 | 2019-01-08 | 腾讯科技(深圳)有限公司 | 三维地图的处理方法和装置 |
CN106327564A (zh) * | 2016-08-25 | 2017-01-11 | 河南理工大学 | 一种图像处理方法及装置 |
CN106327564B (zh) * | 2016-08-25 | 2019-01-11 | 河南理工大学 | 一种图像处理方法及装置 |
CN106373175A (zh) * | 2016-08-29 | 2017-02-01 | 北京像素软件科技股份有限公司 | 一种地形高度图数据的加载方法 |
CN107909538A (zh) * | 2017-12-07 | 2018-04-13 | 北京像素软件科技股份有限公司 | 地形数据处理方法及装置 |
CN107909538B (zh) * | 2017-12-07 | 2021-05-25 | 北京像素软件科技股份有限公司 | 地形数据处理方法及装置 |
CN107978011A (zh) * | 2017-12-18 | 2018-05-01 | 零空间(北京)科技有限公司 | 一种风的三维动态展示方法和设备 |
CN108182251B (zh) * | 2017-12-29 | 2021-08-06 | 零空间(北京)科技有限公司 | 在虚拟现实环境下的气象数据呈现方法和虚拟现实设备 |
CN108182251A (zh) * | 2017-12-29 | 2018-06-19 | 零空间(北京)科技有限公司 | 在虚拟现实环境下的气象数据呈现方法和虚拟现实设备 |
CN111506680A (zh) * | 2019-01-31 | 2020-08-07 | 阿里巴巴集团控股有限公司 | 地形数据生成、渲染方法及装置、介质、服务器、终端 |
CN111506680B (zh) * | 2019-01-31 | 2023-05-26 | 阿里巴巴集团控股有限公司 | 地形数据生成、渲染方法及装置、介质、服务器、终端 |
CN110097224A (zh) * | 2019-05-05 | 2019-08-06 | 中国科学院海洋研究所 | 一种可视化风暴潮-海浪耦合预报方法 |
CN112017227A (zh) * | 2020-08-27 | 2020-12-01 | 上海交通建设总承包有限公司 | 点云融合生成的地形模型与潮汐数据混合可视化的方法 |
CN114239250A (zh) * | 2021-11-24 | 2022-03-25 | 新泰市国土空间规划服务中心(新泰市建筑设计院、新泰市水利设计院) | 一种国土空间规划设计的系统和方法 |
Also Published As
Publication number | Publication date |
---|---|
CN102117497B (zh) | 2015-02-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102117497B (zh) | 一种三维地形建模方法及系统 | |
US20120050285A1 (en) | 3d building generalization for digital map applications | |
CN114219902B (zh) | 气象数据的体绘制渲染方法、装置和计算机设备 | |
CN110675496B (zh) | 基于三维城市地质模型的网格剖分和可视化方法及其系统 | |
CN104835202A (zh) | 一种三维虚拟场景快速构建方法 | |
CN102044089A (zh) | 一种三维模型的自适应化简、渐进传输和快速绘制的方法 | |
Chao et al. | Parallel algorithm for viewshed analysis on a modern GPU | |
Chang et al. | Legible simplification of textured urban models | |
Lorenz et al. | 3D feature surface properties and their application in geovisualization | |
CN101763657A (zh) | 一种用于视频制作的三维地形的显示方法 | |
CN111915710B (zh) | 基于实时渲染技术的建筑渲染方法 | |
CN116385619B (zh) | 对象模型渲染方法、装置、计算机设备和存储介质 | |
CN113505185A (zh) | 一种城市信息模型三维场景渲染与展示方法 | |
Zhou et al. | A virtual globe-based vector data model: quaternary quadrangle vector tile model | |
CN103077497B (zh) | 对层次细节模型中的图像进行缩放的方法和装置 | |
CN105913475A (zh) | 一种时空变化过程动态可视化方法 | |
CN113808243B (zh) | 一种可形变雪地网格的绘制方法和装置 | |
CN102117491A (zh) | 一种三维建模中纹理数据的绘制方法及装置 | |
Yue et al. | A function-based linear map symbol building and rendering method using shader language | |
CN113157988B (zh) | 由ofd格式文件表示地理信息的方法和装置 | |
CN112687007A (zh) | 一种基于lod技术的立体网格图生成方法 | |
Thöny et al. | Large‐scale pixel‐precise deferred vector maps | |
Zhou et al. | Rendering interior-filled polygonal vector data in a virtual globe | |
She et al. | A building label placement method for 3D visualizations based on candidate label evaluation and selection | |
Amiraghdam et al. | LOOPS: LOcally Optimized Polygon Simplification |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20150218 Termination date: 20161230 |
|
CF01 | Termination of patent right due to non-payment of annual fee |