第一图书网

实战OpenGL三维可视化系统开发与源码精解

吕希奎,周小平编著 电子工业出版社
出版时间:

2009年05月  

出版社:

电子工业出版社  

作者:

吕希奎,周小平编著  

页数:

696  

Tag标签:

无  

前言

可视化技术作为图形生成和图像理解相结合的一种新技术,赋予人们一种仿真的、三维的并且具有实时交互的能力,这样人们可以在三维图形世界中用以前不可想象的手段来获取信息或发挥自己创造性的思维,尤其是在可视化技术基础发展起来的虚拟现实技术、三维仿真技术及科学计算可视化技术,它们的发展及其相互结合使人类认识和驾驭世界的技能更是得到了极大延伸。OpenGL(Open Graphics Library,开放性图形库)作为一个性能优越的图形应用程序设计界面(API)而适合于广泛的计算机环境,从个人计算机到工作站和超级计算机,OpenGL都能实现高性能的三维图形功能。由于许多在计算机界具有领导地位的计算机公司纷纷采用OpenGL作为三维图形应用程序设计界面,OpenGL应用程序具有广泛的可移植性,已成为目前的三维图形开发标准,其自诞生至今已催生了各种计算机平台及设备上的数千优秀应用程序。进入21世纪以来,新科技革命迅猛发展,遥感技术、数字摄影测量技术、虚拟现实技术等高新技术取得了长足的发展。航空航天遥感技术的进步提供了快速获取信息的手段。数字摄影测量技术除了能提供数字线划图外,还能生产正射影像图、数字高程模型等,这些数字摄影测量产品所包含的信息量和信息类型已远远超过了传统的等高线地形图。如果利用OpenGL优秀的三维图形功能,结合现代信息技术,建立一个逼真显示的三维可视化地理环境,使工程师可以从二维平面图中得以解放直接进入三维世界,实现直接在三维环境中进行工程设计,实时建立工程的三维模型,达到所见即所得的设计效果,从根本上改变重复无味的设计工作方式,使设计工作变得趣味盎然,对提高设计质量和加快设计速度有着巨大的作用。

内容概要

  《实战OpenGL三维可视化系统开发与源码精解》以“铁路三维可视化系统”实例作为全书的主线,以循序渐进的讲解方式,通过实际应用系统来讲解OpenGL在实际三维可视化系统开发中所应用到的编程方法、技术和技巧。系统包括大规模三维地形可视化系统、三维线路设计系统、三维场景漫游系统、第三方模型(3DS、DXF)管理和应用系统、纹理管理和应用系统、多媒体输出系统(三维动画录制、图像序列录制、打印输出、导出到AutoCAD等外部模型)。内容涵盖了OpenGL程序框架、OpenGL几何模型、坐标变换、纹理映射、材质、计算机动画技术、双目立体真三维、OpenGL扩展应用、OpenGL图像处理、三维图形学基础、摄像漫游、构造天空和地形、模型载入、高级纹理映射、图元处理、OpenGL缓冲区、显示列表、空间信息查询、基于OpenGL和遥感图像的地形三维动态显示技术、Oracle 数据库编程、Oracle OCI编程技术等多个方面。  《实战OpenGL三维可视化系统开发与源码精解》附带光盘1张,内容为本书实例的源文件、系统运行所需要的影像纹理和数字高程模型文件;此外,还包括程序功能运行动画和OCI程序示例。  《实战OpenGL三维可视化系统开发与源码精解》讲解清晰,言简意赅,书中所有程序均取材于实际系统,全部具有详细注释,具有极高的可复用价值,可直接应用于其他相关系统开发中,帮助读者快速进入三维可视化设计开发领域。《实战OpenGL三维可视化系统开发与源码精解》深入浅出、内容广泛,既可以作为从事可视化系统、虚拟现实、计算机图形学研究及其他图形应用程序开发的工作人员的必备用书,也可作为大学相关专业师生的参考书,还可作为OpenGL三维图形编程的培训教程,或供其他相关专业人士和计算机爱好者阅读。

作者简介

吕希奎,博士,毕业于西南交通大学道路与铁道工程专业。主要从事道路勘测设计现代技术、城市轨道交通、选线设计理论、工程信息技术与虚拟环境仿真技术的研究,已发表及被录用论文近20篇,导师是第二届全国教学名师易思蓉教授。先后参与国家自然科学基金“基于GIS的虚拟环境选线系统智能环境建模方法及应用”(0278082)、铁道部“高速磁悬浮铁路线路平纵面技术参数初步研究”、 国家863“高速磁悬浮铁路线路设计参数研究”项目的研究。3年软件公司的工作经验,高级程序员,具有多年的OpenGL、Oracle数据库开发经验。目前正在主持“交通安全与控制”河北省重点实验室开放课题资助项目(城市轨道交通三维可视化规划与设计系统,211001)研究。

书籍目录

第1篇 系统开发基础第1章 三维图形世界 31.1 计算机三维图形技术的发展 41.2 科学计算可视化技术 41.3 三维可视化工程设计 61.4 本书的适用对象 71.5 全书概览 7第2章 OpenGL概述 92.1 OpenGL概念建立 102.1.1 OpenGL基本理解 102.1.2 OpenGL的特点及功能 102.1.3 OpenGL工作流程 122.1.4 OpenGL绘图流程 132.2 OpenGL的版本和扩展 142.2.1 OpenGL版本 142.2.2 OpenGL扩展 162.3 OpenGL编程基础 202.3.1 OpenGL数据类型 202.3.2 OpenGL库函数 212.3.3 OpenGL句法 222.3.4 OpenGL状态变量 242.3.5 OpenGL变换 252.4 OpenGL程序框架建立 332.4.1 OpenGL像素格式 342.4.2 着色描述表 362.4.3 设置像素格式 372.4.4 创建着色描述表 382.4.5 创建Visual C++程序 412.5 本章小结 48第3章 Oracle与OCI技术及编程基础 493.1 Oracle数据库简介 503.2 Oracle数据库的安装 513.3 Oracle数据类型 553.4 Oracle编程接口 573.4.1 ADO开发接口 583.4.2 Pro* C/C++ 593.4.3 Oracle OCI 603.4.4 ADO、Pro*C/C++、Oracle OCI的对比分析 613.5 OCI编程 623.5.1 OCI编程基础 623.5.2 OCI数据结构 623.5.3 OCI程序的基本结构 633.5.4 OCI执行SQL的步骤 643.6 VC ++ 6.0下OCI编程实例 663.6.1 数据的准备 663.6.2 建立工程 673.6.3 加入OCI的头文件与库文件 683.6.4 在VC中应用OCI编程 693.7 本章小结 75第2篇 大规模地形三维可视化系统设计与实现第4章 地形三维可视化系统框架与OCI类模块设计 794.1 系统程序框架建立 804.1.1 建立Visaul C ++工程 804.1.2 添加OpenGL框架代码和文件 814.1.3 程序实现 824.2 OCI公共类的实现 924.2.1 新类的添加 924.2.2 类变量的添加 924.2.3 类函数的实现 934.3 本章涉及到的OpenGL函数与知识点 1214.4 本章小结 121第5章 地形三维可视化系统的地形渲染实现 1235.1 地形三维可视化概述 1245.2 地形三维可视化的主要算法 1245.2.1 主要算法概述 1245.2.2 四叉树结构的多分辨率地形模型 1255.3 地形三维可视化系统的实现 1265.3.1 海量地形与影像纹理数据的获取方法 1265.3.2 海量地形自分块程序实现 1275.3.3 大影像的自分块及程序实现 1405.3.4 状态栏指示器的实现 1495.3.5 地形与影像子块的调度 1525.3.6 三维地形纹理映射 1625.3.7 地形节点评价系统 1725.3.8 系统优化算法 1775.3.9 三维地形的渲染 1795.3.10 真三维立体的实现 2115.4 本章涉及到的OpenGL函数与知识点 2175.5 本章小结 219第6章 地形三维可视化系统项目管理与辅助功能 2216.1 项目管理 2226.1.1 新建项目 2226.1.2 打开项目 2316.2 背景天空的实现 2436.3 绘图模式的控制 2456.4 空间查询 2486.4.1 查询算法实现 2486.4.2 查询标识设置 2546.4.3 查询三维坐标 2596.4.4 查询空间距离 2636.5 照相机模块的设计与实现 2676.5.1 键盘控制的实现 2676.5.2 鼠标控制的实现 2716.6 本章涉及到的OpenGL函数与知识点 2746.7 本章小结 276第3篇 线路三维可视化系统设计与实现第7章 三维交互技术与三维线路数据结构 2797.1 三维交互技术 2807.1.1 交互环境概述 2807.1.2 正射投影模式实现 2817.1.3 正射投影模式下场景控制 2887.1.4 透视投影模式实现 2947.2 三维地面坐标的获取 2957.2.1 正射投影模式下的获取 2957.2.2 透视投影模式下的获取 2997.3 三维线路数据结构设计 2997.3.1 边坡数据结构 3007.3.2 桥梁数据结构 3017.3.3 隧道数据结构 3027.3.4 水沟数据结构 3037.3.5 线路数据结构 3047.4 本章涉及到的OpenGL函数与知识点 3077.5 本章小结 307第8章 三维线路设计实现 3098.1 线路方案主要参数设计 3108.2 设计交点信息输入实现 3318.3 线路中心线定位 3388.4 设计方案保存与平面方案生成 3498.4.1 设计方案保存 3508.4.2 平面方案的自动生成 3568.5 纵断面设计模块的实现 3578.6 边坡模型的生成算法 3618.7 线路路基三维建模 3648.8 隧道三维建模与绘制 3808.8.1 隧道三维建模 3808.8.2 隧道参数设置实现 3888.8.3 隧道绘制实现 3918.9 桥梁三维建模与绘制 3978.9.1 桥梁三维建模 3978.9.2 桥梁参数设置实现 4058.9.3 桥梁绘制实现 4098.10 线路三维模型绘制 4168.11 本章涉及到的OpenGL函数与知识点 4318.12 本章小结 432第9章 道路整体三维建模 4339.1 道路整体三维模型的实现 4349.1.1 线路封闭区域确定与分割算法 4349.1.2 地形块综合数据点计算 4519.1.3 分块TIN模型的构网实现 4629.1.4 封闭区域内数据点的剔除 4659.1.5 整体构网的实现 4689.2 纹理管理 4719.2.1 边坡纹理 4719.2.2 路肩纹理 4769.2.3 桥梁护坡面纹理 4799.2.4 隧道内墙纹理 4839.2.5 隧道洞门纹理 4869.3 本章涉及到的OpenGL函数与知识点 4909.4 本章小结 490第10章 三维漫游的实现 49110.1 飞行路径建立 49210.1.1 飞行路径简介 49210.1.2 飞行路径设置方法 49210.1.3 飞行路径插值算法 49810.1.4 飞行路径的保存 50110.1.5 打开飞行路径 50310.1.6 显示/关闭飞行路径 50610.2 沿飞行路径漫游实现 50710.2.1 沿固定高度漫游实现 50810.2.2 沿相对高度漫游实现 51210.3 沿线路方案线三维漫游实现 51510.3.1 飞行路径的获取 51510.3.2 漫游的实现 51610.4 三维漫游的控制 51810.4.1 开始/暂停漫游 51810.4.2 停止漫游 52010.4.3 单步前进 52110.5 三维漫游的调整 52210.5.1 飞行视野调整 52210.5.2 飞行高度调整 52310.5.3 飞行倾角调整 52410.5.4 飞行速度调整 52510.5.5 三维漫游调整的热键实现 52610.6 三维漫游的相关计算 52910.6.1 三维漫游帧频的计算 52910.6.2 三维漫游速度的计算 53010.6.3 三维漫游里程的计算 53110.7 本章涉及到的OpenGL函数与知识点 53410.8 本章小结 534第4篇 线路三维可视化系统辅助功能实现第11章 显示模式控制及实现 53711.1 显示模式控制及实现 53811.1.1 双目立体方式 53811.1.2 正射投影方式 53911.1.3 透视投影方式 54011.2 时钟指北针的实现 54111.3 缩略图的实现 55311.4 本章涉及到的OpenGL函数与知识点 55611.5 本章小结 557第12章 3D模型载入与应用 55912.1 常用3D模型概述 56012.1.1 3DS模型 56012.1.2 OBJ模型 56112.1.3 ASE模型 56112.1.4 MD2/MD3模型 56212.1.5 MS3D模型 56212.2 3DS模型的载入 56412.2.1 3DS文件基本构成 56412.2.2 第三方软件转换法 56412.2.3 程序直接载入 58012.2.4 程序直接载入的实现 58012.3 3DS模型在系统中应用实例 59712.4 本章涉及到的OpenGL函数与知识点 60112.5 本章小结 602第13章 系统输出接口与动画录制实现 60313.1 输出线路三维模型到AutoCAD 60413.1.1 输出格式DXF简介 60413.1.2 DXF输出模块的设计 60513.1.3 输出的实现 61313.2 AVI动画录制 62313.2.1 动画录制类实现 62313.2.2 动画录制参数设置 62613.2.3 开始录制动画 63113.2.4 暂停录制动画 63613.2.5 结束录制动画 63613.3 屏幕图形的打印 63813.3.1 图形打印类的实现 63913.3.2 打印预览的实现 64513.3.3 打印设置的实现 64713.3.4 打印的实现 64813.4 录制图像 64913.4.1 图像采集频率 64913.4.2 图像录像 65213.4.3 停止录像图像 65613.5 保存屏幕到位图 65713.6 本章小结 662第14章 系统简介与运行实例 66314.1 系统介绍 66414.1.1 系统主要特点 66414.1.2 系统运行环境 66414.2 系统功能模块简介 66514.3 系统运行实例 67314.4 本章小结 677附录 679附录A 相关数学程序模块 680附录B OpenGL核心函数库和应用函数库 686附录C OpenGL常用编程技巧 691附录D OpenGL资源网站 693参考文献 695

章节摘录

第1篇 系统开发基础包括第1章三维图形世界、第2章OpenGL概述和第3章Oracle与 OCI技术及编程基础。第1章 介绍了计算机三维图形技术的发展、科学计算可视化技术、三维可视化工程设计的基本概念和发展现状。第2章 主要对OpenGL的基本概念、OpenGL编程基础和在Visual C++环境下OpenGL基本程序框架的建立进行了讲解,并给出了一个简单的旋转立方体程序示例。通过这一章,使读者对OpenGL有初步的概念和了解,对于纹理、显示列表等更深入的编程,我们将通过后续章节进行更详细的讲解和学习。第3章 主要对Oracle数据库及其特点进行简要的介绍和说明。以Oracle 9i为例,介绍了Oracle数据库的安装步骤和Oracle支持的数据类型。在此基础上,介绍了ADO、Pro*C/C++和OCI三个主要Oracle编程接口,对它们的各自功能和特点进行了详细说明,从功能方面、性能方面、开发难度方面进行了详细分析和比较。重点介绍OCI编程基础、OCI的数据结构、OCI程序的基本结构、OCI执行的步骤,最后给出了在Visual C++6.0环境下开发OCI应用程序的示例。 第2篇 大规模地形三维可视化系统设计与实现包括第4章地形三维可视化系统框架与OCI类模块设计、第5章地形三维可视化系统的地形渲染实现和第6章地形三维可视化系统项目管理与辅助功能设计。第4章 在第2章的基础上,完成了基于OpenGL的地形三维可视化系统程序框架的建立,为后续的功能模块开发提供了基础平台;在第3章的基础上,设计了OCI公共类,将所有与OCI有关的数据库操作、数据读取等功能函数实现全部封装在该类中,并定义了公共类的全局变量myOci。第5章 本章对地形三维可视化进行了基本概述,介绍了目前地形三维可视化的主要算法。主要介绍了海量地形与影像纹理数据的常用获取方法,给出了海量地形自分块与影像纹理分块原则和程序实现,以及地形与影像子块调度的程序实现,在此基础上实现了地形的三维可视化;还介绍了真三维立体的实现算法和数学模型,在此基础上给出了基于OpenGL的真三维立体的程序实现。第6章 主要讲解了新建项目、打开项目、背景天空的绘制、绘图模式控制的实现方法和程序设计。介绍了基于OpenGL深度缓存的二维屏幕坐标向三维空间坐标的转换算法,实现了对三维空间坐标和空间距离查询,以及查询标识设置的程序设计;最后讲解了基于键盘和鼠标联合控制的三维场景照相机程序模块的实现,实现三维场景的前、后、左、右移动和任意方向的旋转。 第3篇 线路三维可视化系统设计与实现包括第7章三维交互技术与三维线路数据结构、第8章三维线路设计实现、第9章道路整体三维建模和第10章三维漫游的实现。第7章 主要对三维交互环境进行了介绍,详细讲解了正射投影模式的实现、正射投影模式下场景控制方法和程序设计,以及透视投影模式的实现方法;还讲解了正射投影模式和透视投影模式下三维地面坐标的获取原理、方法,在此基础上,设计了边坡数据结构、桥梁数据结构、隧道数据结构、水沟数据结构及线路数据结构,为实现三维线路设计做好了前期准备。第8章 主要对线路方案的主要参数设计方法和程序实现、设计交点信息输入实现、线路中心线定位方法、设计方案的保存、平面方案的自动生成和程序设计、纵断面设计模块的实现、边坡模型的生成算法、线路路基三维建模方法和实现、隧道三维建模和参数控制、桥梁三维建模和参数控制的程序设计进行了详细讲解。第9章 主要讲解了道路整体三维模型实现,对其中的线路封闭区域确定与分割算法、地形块综合数据点计算、分块TIN模型的构网实现、封闭区域内数据点的剔除、整体构网的程序实现都进行了详细说明;在纹理管理部分,详细讲解了边坡纹理、路肩纹理、桥梁护坡面纹理、隧道内墙纹理、隧道洞门纹理的程序设计和实现。第10章 从多个方面对三维漫游的基本概念、程序实现、参数调整和控制进行了讲解,帮助读者学会在三维可视化系统中三维漫游模块的程序设计方法;对飞行路径的基本概念、设置方法、插值算法、保存和打开的程序设计,沿飞行路径实现三维漫游的程序设计,沿线路方案漫游的固定高度和相对高度两种模式的程序设计,三维漫游控制和调整的程序设计,以及三维漫游的相关计算都进行了详细的讲解,每一部分都给出了完整的程序代码。 第4篇 线路三维可视化系统辅助功能实现包括第11章显示模式控制及实现、第12章3D模型载入与应用、第13章系统输出接口与动画录制实现和第14章系统简介与运行实例。第11章 本章主要对双目立体方式、正射投影方式和透视投影方式的显示模型模式控制和实现、时钟指北针的程序设计和实现、缩略图的实现方法和程序设计进行了详细的讲解和说明。第12章 本章主要对目前常用的3DS、AES、OBJ、MD2、MD3、MS3D等3D模型进行了介绍和说明,并给出了每种3D模型的示例,在此基础上,详细介绍了在OpenGL中应用3DS模型的两种主要方法:通过第三方软件对3DS模型进行转换和直接通过程序读取3DS模型;以桥墩3DS模型为例,给出了3DS模型在线路三维场景中的应用方法和程序设计实现。第13章 介绍了DXF文件格式,详细讲解了DXF输出模块的程序设计,实现了线路三维模型输出到DXF文件,可以在AutoCAD中打开线路三维模型进行观察;设计了动画录制类,实现将OpenGL动画录制到AVI文件中;设计了屏幕图形打印类,实现了对OpenGL屏幕图形的打印,在此基础上,设计录制屏幕图像模块,实现了将OpenGL动画录制为一系列图像并保存到硬盘中。第14章 主要对所建立的三维可视化设计系统的主要特点和功能进行了介绍,对线路可视化设计系统加以总结,并对相应的功能模块进行集中说明,使读者能够对整个三维可视化设计有更加清晰的思路和概念,最后给出系统运行实例。 附录包括附录A:相关数学程序模块;附录B:OpenGL核心函数库和应用函数库;附录C:OpenGL常用编程技巧;附录D:OpenGL资源网站。

媒体关注与评论

人在三维空间中具有很强的形象思维能力,计算机具有极强的数据处理能力,但理解和推理能力差。如果将计算机的快速计算功能与三维图形功能融为一体,实现基于三维可视化环境的设计,这必将从根本上改变重复无味的设计工作方式。OpenGL是目前用于开发可移植的、可交互3D图形应用程序的首选环境,也是目前应用最广泛的计算机图形标准。本书以实际的三维可视化系统为主线,系统地论述了三维可视化设计的理论、技术和算法,实现了基于OpenGL+Visual C++ +Oracle 9i数据库开发的三维可视化设计系统,为实现工程的三维可视化设计提供了三维设计平台。 本书以“铁路三维可视化系统”实例作为全书的主线,从系统框架设计到最终实现,逐步讲解各个方面所涉及的算法和思路,并给出详细程序代码和注释。书中的数据库部分又可以为希望学习MFC下的Oracle数据库编程和OCI程序设计的读者提供参考。 通过系统实例让初级读者学会OpenGL的各个功能和应用;让中、高级读者学习如何利用OpenGL开发三维可视化系统,掌握OpenGL的高级开发技巧、编程算法,以及三维可视化设计的理论、技术和算法。 书中所有程序均取材于实际系统,完全能在实际项目中“即插即用”,对于从事三维地形可视化、铁路、公路、管道、输电线路等三维可视化设计的读者具有很好的参考和利用价值。


编辑推荐

宣传口号:体验OpenGL三维世界无穷乐趣成就非凡三维可视化软件开发高手卖点特色:1.《实战OpenGL三维可视化系统开发与源码精解》全面系统讲解OpenGL在三维可视化系统开发中所应用到的编程方法、技术和技巧,循序渐进,图文并茂.。2.强调编程的快捷省力,多个成熟类代码的详细应用。关注初学者的编程感受,步骤详尽;重视高层技术人员的探讨精神,多种解决途径。3.以功能说明、设计思想、程序实现和运行效果为流程,详细讲解系统开发的详细步骤和具体实现。4.所有程序实现及代码都给出详细说明、实现步骤和代码详细注释,并对涉及的主要函数及读者注意地方进行归纳,便于读者在学习过程中举一反三。5.提供完整大型案例,侧重实际应用,语言简洁精炼,讲解清晰透彻,帮助读者提高开发水平。《实战OpenGL三维可视化系统开发与源码精解》及其配套光盘使用完整的源代码列举了具有相当实用价值的“铁路三维可视化系统”开发案例,比较深入的解决了一些缺少实际工作经验的程序员的开发烦恼:1.知道了开发工具能够做什么,学会了怎样使用开发工具来做系统,却不知道需要实现的具体的功能是什么2.如何开发一个具有商业价值的三维可视化系统3.如何理顺系统各个功能模块间固有的内在逻辑4.如何解决系统开发中挥之不去的深层次矛盾5.如何协调和平衡系统中存在错综复杂的关系《实战OpenGL三维可视化系统开发与源码精解》特别适合缺少实际工作经验的普通高校学生作为三维可视化系统开发的范例,对于专业软件公司的程序员开发相关的三维可视化系统也极具参考价值。客观精确的分析大型三维可视化系统的功能需求,循序渐进的介绍大型三维可视化系统的开发过程,完整详细的阐述大型三维可视化系统的实现方法,清晰明了的创建大型三维可视化系统的整体框架。 概念理解:对所要讲解的内容的基本概念进行简要说明。 界面设计:对所进行的界面设计进行说明,包括界面控件组成、布局、ID、变量、菜单等信息。  程序设计:在界面设计完成后,开始进行程序设计。  添加变量:需要添加的变量,包括私有变量、公共变量等。 函数实现:添加完变量后,开始实现所需函数的标志,在其下方,将是具体的每一个函数代码。 函数说明:对每个函数功能所进行的说明,包括函数组成部分和每个部分的说明。 程序函数讲解:对在函数中出现的OpenGL、OCI等函数进行详细讲解。 说明:对所讲解的内容、函数等需要进行特别说明的内容。 注意:在程序设计过程中必须要注意的地方,多数情况下涉及到OpenGL的编程技巧。

图书封面

图书标签Tags

广告

下载页面


实战OpenGL三维可视化系统开发与源码精解 PDF格式下载



总体不错!有些遗憾,因为我使用的是mssql数据库,作者使用的是oracle。O(∩_∩)O


这本书写的很详细,但是不要指望用这本书学习VC++和openGL,这是一本应用的书,看这本书之前你应该掌握了VC++和openGL。


书还可以,是整个工程下来的。


好书,按实例讲解。


没什么意思的书。年代久远的技术。


相关图书