OpenGL-自主高性能三维GIS平台架构与实现(第2季)

huiguniang2008 · · 393 次点击 · 开始浏览    置顶
这是一个创建于 的主题,其中的信息可能已经有所发展或是发生改变。

OpenGL-自主高性能三维GIS平台架构与实现(第2季) 给大家分享一套课程——OpenGL-自主高性能三维GIS平台架构与实现(第2季),附源码。大家下载学习。 OpenGL(英语:Open Graphics Library,译名:开放图形库或者“开放式图形库”)是用于渲染2D、3D矢量图形的跨语言、跨平台的应用程序编程接口(API)。这个接口由近350个不同的函数调用组成,用来绘制从简单的图形到比较复杂的三维景象。而另一种程序接口系统是仅用于Microsoft Windows上的Direct3D。OpenGL常用于CAD、虚拟现实、科学可视化程序和电子游戏开发。 OpenGL的高效实现(利用了图形加速硬件)存在于Windows,部分UNIX平台和Mac OS。这些实现一般由显示设备厂商提供,而且非常依赖于该厂商提供的硬件。开放源代码库Mesa是一个纯基于软件的图形API,它的代码兼容于OpenGL。但是,由于许可证的原因,它只声称是一个“非常相似”的API。 当今,OpenGL是视频行业领域中用于处理2D/3D图形的最为广泛接纳的API,在此基础上,为了用于计算机视觉技术的研究,从而催生了各种计算机平台上的应用功能以及设备上的许多应用程序。其是独立于视窗操作系统以及操作系统平台,可以进行多种不同领域的开发和内容创作,简而言之,其帮助研发人员能够实现PC、工作站、超级计算机以及各种工控机等硬件设备上实现高性能、对于视觉要求极高的高视觉图形处理软件的开发。 OpenGL相对于市面上主流的视频处理软件具有如下的优势: 1. 具有强大的通用性和可移植性,可以将其轻松的移植在多个不同的平台上进行二次开发。因为OpenGL本身是一个与硬件无关的软件接口,所以,通用于市面上较为流行的平台:比如,Windows、Unix、Linux、MacOS等。 2. 能够转换3D图形设计软件制作的模型文件。OpenGL仅仅作为一个图形的底层图形库,并没有提供直接描述某个场景地几何实体的圆元。但是,为了其转换的方便性,其内部集合了许多转换函数,可以快速方便的将3DS/3DSMAX、AutoCAD等3D绘制的图形设计制作出的DXF以及3DS模型的文件转换成数组的形式,从而将图像转换成数据进行编程处理。 3. 配备了高级图形库:Open Inventor、Cosmo3D、Optimizer等。这些软件库针对于创建、编辑以及处理分析三维的立体场景提供了高级的应用程序单元;提高不同类型的图形格式的交换数据的能力。 当前研究和开发三维GIS的思路可归纳为两种: 由于三维GIS首先要将地理数据变为可见的地理信息,因此人们一方面从三维可视化领域向三维GIS系统扩展,这一点同早期的二维GIS来源于计算机制图管理一样,是从可视化角度出发的。 另一方面,GIS需要存储和管理大量的空间信息和属性信息,因此另一部分人从数据库的角度出发向三维GIS发展,从商用数据库向非标准应用领域扩展,将三维空间信息的管理融入RDBMS中,或是从底层开发全新的面向空间的OODBMS, 如GODO,GeoO2,GEO++,SmallWorld GIS。一个新的发展方向是将三维可视化与三维空间对象管理藕合起来,形成集成系统。 三维可视化流程 经过建模处理后的各类地形地物,要想真实地显示在计算机屏幕上,需要经过一系列必要的变换,包括数据预处理、几何变换、选择光照模型和纹理映射等。 (1)数据预处理 数据预处理主要包括:将建模后得到的物体的几何模型数据转换成可直接接受的基本图元形式,如点、线、面等;对影像数据(如纹理图像)进行预处理,包括图像格式转换、图像质量的改善及影像金字塔的生成等。 (2)参数设置 参数设置指在对三维场景进行渲染前,需要先设置相关的场景参数值,包括光源性质、光源方位、明暗处理方式和纹理映射方式等。此外,还需要设定视点位置和视线方向等参数。 (3)几何变换 几何变换是生成三维场景重要基础和关键步骤,包括坐标变换和投影变换。 ① 坐标变换 坐标变换是指对需要显示的对象进行平移、旋转或缩放等数学变换。在三维图形的显示和内部计算中,一般假定所有的顶点都用四维齐次坐标表示,即以(x,y,z,w)的形式,等价于(x/w,y/w,z/w,w/w)。模型中使用的三维坐标(x,y,z)等价于四维齐次坐标(x,y,z,1)。 ② 投影变换 投影变换是指选取某种投影变换方式,对物体进行变换,完成从物体坐标到视点坐标的变换,它是生成三维模型的重要基础。投影变换分为透视投影变换和正射投影变换两类。投影方式的选择取决于显示的内容和用途。透视投影类似于人眼对客观世界的观察方式,最明显的特点是按透视法缩小,物体离相机越远,成的像就越小,因而广泛用于三维城市模拟、飞行仿真、步行穿越等模拟人眼效果的研究领域。正射投影的物体或场景的几何属性不变,视点位置不影响投影的结果,一般用于制作地形晕渲图。 (4)纹理映射 在三维可视化过程中,纹理映射是其最为成功的技术之一。纹理映射就是在三维模型的灰度图上增加纹理使其成为具有纹理属性的三维模型,它是通过将图像粘贴于几何表面来增强图形的真实感。纹理映射是建立逼真场景的重要手段。光照模型可以按照高程值进行过渡着色或分层设色,但通过三维模型的构造和真实纹理映射就能够获得十分逼真的三维地形景观。 影像数据作为纹理特征来增强图形的真实感,其对于弥补三维模型几何数据描述的不足和提高可视化效果具有重要意义,并且可以在很大程序上减轻图形硬件的负担,提高图形渲染速度。由于影像数据占用较大的内存空间,一般计算机图形渲染设备限制了单次装载影像的大小。而实际情况下,地形与建筑物影像的范围远远大于这一规模,这就需要根据纹理分辨率的视点相关性来生成多分辨率的纹理。在大范围三维场景内,模型不同部分距离观察者的远近有所不同。对于离观察者较远的部分,可使用较低分辨率的影像;较近的部分则使用较高分辨率的影像来进行纹理映射。对于地面的三维地物模型建筑物,可以根据建筑物的高度和复杂程度确定其表面纹理的分辨率。对于较高、复杂和典型的建筑物模型使用较高的分辨率;反之,使用较低的分辨率。 (5)实时消隐 通常我们看到的三维物体,是不能一眼看到其全部表面的。从一个视点去观察一个三维物体,必然只能看到该物体表面上的部分点、线、面,而其余部分则被这些可见部分遮挡住。如果观察的是多个三维物体,则物体之间还可能彼此遮挡而部分不可见。因此,如果想有真实感地显示三维物体,必须在视点确定后,将对象表面上不可见的点、线、面消去。执行这一功能的算法,称为消隐算法。 消隐算法将物体的表面分解为一组空间多边形,研究多边形之间的遮挡关系。按操作对象的不同,可分为两大类:对象空间方法和图像空间方法。对象空间方法是通过分析对象的三维特性之间的关系来确定其是否可见,例如,将三维平面作为分析对象,通过比较各平面的参数来确定它们的可见性;图像空间是对象投影后所在的二维空间,图像空间方法是将对象投影后分解为像素,按一定的规律,比较像素之间的Z值,从而确定其是否可见。![QQ截图20240103164105.png](https://static.golangjob.cn/240104/e224de7f9d1010acf1f69f2001dc6a75.png)

有疑问加站长微信联系(非本文作者)

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

393 次点击  
加入收藏 微博
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传