阅读:11572回复:14
OpenSceneGraph三维渲染引擎设计与实践【PDF下载】
百度网盘下载:http://pan.baidu.com/s/1nt42ml7
文件大小:22.23MB 文件类型:PDF 书籍介绍: 前言 场景图形系统是一个基于工业标准OpenGL的软件接口,它让程序员能够更加快速、便捷地创建高性能、跨平台的交互式图形程序。本书是一本基于OSG 2.8版本的编程入门指南书籍,也通用于OSG 2.x系列及以后版本的开发。 从OSG正式发布以来,OSG可以阅读的文档资料只有源代码。值得庆幸的是,OSG的源代码中提供了一些相关的程序示例,通过它们,用户可以学习如何使用OSG编程实现虚拟系统软件的功能。分析示例程序很艰辛,并非一朝一夕的事情。笔者通过对OSG大量示例程序和源代码的分析及丰富的实际应用经验,逐渐对OSG的开发流程及核心有了一定的了解。随着OSG的不断发展,越来越多的人开始关注、学习OSG和应用OSG开发,但由于OSG本身文档资料缺乏,作为初学者,很难在短时间内通过分析示例程序和源代码得到提高。笔者长期置身于OSG开发,作为OsgChina(http://www. OsgChina.org)中国官方网站管理员,同时也是OSG国内各大论坛OSG版面的版主,在与开发者交流的过程中,发现初学者普遍存在入门难、应用开发难等问题,于是写了《OpenSceneGraph三维渲染引擎编程指南》一书。 本书首先介绍了OSG的历史和开源组织、如何获取和正确安装OSG以及一些简单示例程序的运行;然后深入探讨了一些OSG的数学基础、内部管理机制和实用技术,主要包括坐标系统、内存管理、场景树结构、图形节点的概念和分类、OSG的状态属性和模式控制、纹理映射、光照和材质、I/O接口、场景渲染控制、更新回调、文字、动画阴影及粒子系统添加等功能的具体介绍;最后探讨了关于OSG地形与地理信息的应用,主要包括VirtualPlanetBuilder和OSGGIS的使用方法,还提出了关于大规模地形渲染的解决方案。 通过本书,读者不但可以学习到OSG在虚拟现实开发中最重要、最实用的知识和技能,还可学习到一些开源软件使用的基本技法。在学习完本书后,读者将会对OSG有一个深入全面的了解,同时也将具备开发一个基于OSG的虚拟现实系统的能力。 本书参阅了国内外大量的最新图形开发和虚拟现实实用技术的资料,所讲解的内容都是基于图形开发的最新方法和技术。书中提供了大量丰富、新颖、实用的原创示例程序,并经过严格的测试,可以完全应用到实际工程或者系统开发中。由于作者能力有限,书中难免存在错误和不足之处,恳请广大读者批评指正。同时,欢迎到OsgChina中国官方讨论区(http://bbs.OsgChina.org)发帖提问,笔者会尽量在第一时间回复相关的问题。 本书能够顺利完成并出版,得到了这些人大量的帮助: 感谢编辑,他对本书倾注了大量的心血,给了我巨大的帮助和指导。 感谢我的师兄刘更代和徐明亮,没有他们,难以想象这本书什么时候才能完成并出版。 感谢我的师兄杨石兴和曹明亮,他们引导我进入OSG的开发领域。 感谢我的爸爸、妈妈和姐姐,他们给了我生活自主的空间,让我能够尽情地飞翔在自己的天空。 感谢我的女友雄英,她每天都给我很多鼓励和帮助。 </div></div> 《OpenSceneGraph三维渲染引擎编程指南》是一本全面深入介绍OpenSceneGraph(OSG)基础及核心API函数的入门教程。OpenSceneGraph(OSG)是一个基于工业标准OpenGL跨平台的三维开源场景图形系统应用程序开发接口(API)。作为一个高性能的图形开发引擎,它在3D程序开发中扮演着重要的角色。 《OpenSceneGraph三维渲染引擎编程指南》按照OSG的设计结构体系,逐一深入讨论OSG的各个功能模块。首先介绍了OSG的历史和开源组织,以及配置开发环境;然后深入探讨OSG的核心库、NodeKits工具库、OSG插件库、互操作库及扩展库等,重点分析了如何将OSG集成到用户应用开发程序的核心功能及各种应用技术,主要包括场景组织和管理、场景数据优化、交互操作及数据实时动态更新等技术;最后探讨了关于OSG地形与地理信息的应用。 《OpenSceneGraph三维渲染引擎编程指南》要求读者有比较好的C++基础知识和一些3D数学基础知识,适合所有对OpenGL和OSG编程感兴趣的读者。</p> 目录 第1章 OpenSceneGraph概述 1 1.1 OpenSceneGraph简介 2 1.1.1 什么是OpenSceneGraph 2 1.1.2 OpenSceneGraph的历史和发展 2 1.1.3 OSG中国 3 1.1.4 OSG组成模块 3 1.2 开发的预备知识 5 1.3 OSG的安装及编译 6 1.3.1 OSG的获取及安装 6 1.3.2 编译OSG 7 1.3.3 OSG邮件列表 13 1.4 OSG基础 14 1.4.1 开发环境设置 14 1.4.2 OSG中的HelloWorld工程 14 1.4.3 OSG实用工具——场景浏览器osgViewer 17 1.4.4 OSG实用工具——版本信息查看器osgVersion 21 1.4.5 OSG实用工具——场景图形压缩归档工具osgArchive 21 1.4.6 OSG实用工具——数据转换工具osgConv 23 第2章 OpenSceneGraph数学基础 27 2.1 坐标系统 28 2.2 坐标系变换 29 2.2.1 世界坐标系-物体坐标系变换 30 2.2.2 物体坐标系-世界坐标系变换 30 2.2.3 世界坐标系-屏幕坐标系变换 32 2.3 向量、矩阵及四元数 34 2.3.1 向量 34 2.3.2 矩阵 35 2.3.3 四元数 36 2.3.4 矩阵与四元数之间的转换 37 第3章 场景的组织及渲染 41 3.1 OSG场景树 42 3.1.1 OSG场景树节点 42 3.1.2 OSG中的父节点与子节点 42 3.2 Geode 43 3.2.1 Billboard节点 43 3.2.2 布告板示例 44 3.3 Group 48 3.3.1 位置变换节点 48 3.3.2 位置变换节点示例 49 3.3.3 矩阵变换节点 50 3.3.4 矩阵变换节点示例 51 3.3.5 自动对齐节点 53 3.3.6 自动对齐节点示例 53 3.3.7 开关节点 56 3.3.8 开关节点示例 57 3.3.9 细节层次节点 58 3.3.10 细节层次节点示例 59 3.3.11 分页细节层次节点 61 3.3.12 分页细节层次节点示例 61 3.3.13 替代节点 63 3.3.14 替代节点示例 64 3.3.15 遮挡裁剪节点 66 3.3.16 遮挡裁剪节点示例 67 3.3.17 坐标系节点 70 3.3.18 坐标系节点示例 71 3.4 场景中节点的拷贝——osg::CopyOp类 73 3.4.1 自定义场景拷贝示例(一) 73 3.4.2 自定义场景拷贝示例(二) 79 第4章 OSG中几何体的绘制 83 4.1 场景基本绘图类 84 4.2 基本几何体的绘制 86 4.2.1 几何体类 86 4.2.2 基本几何体绘制示例 87 4.2.3 索引绑定几何体绘制示例 90 4.3 使用OSG中预定义的几何体 93 4.3.1 osg::Shape类 93 4.3.2 osg::ShapeDrawable类 94 4.3.3 网格化类 94 4.3.4 预定义几何体示例 95 4.4 多边形分格化 97 4.5 几何体操作 101 4.5.1 简化几何体 102 4.5.2 简化几何体示例 102 4.5.3 Delaunay三角网绘制 104 4.5.4 Delaunay三角网绘制示例 105 4.5.5 三角带绘制 107 4.5.6 三角带绘制示例 108 4.5.7 生成顶点法向量 111 4.5.8 生成顶点法向量示例 112 第5章 渲染状态、纹理与光照 115 5.1 渲染状态 116 5.1.1 osg::StateSet类 116 5.1.2 渲染属性和渲染模式 117 5.1.3 状态继承 118 5.1.4 渲染状态示例 119 5.2 纹理映射 121 5.2.1 二维纹理映射 123 5.2.2 二维纹理映射示例 126 5.2.3 多重纹理映射 129 5.2.4 多重纹理映射示例 129 5.2.5 Mipmap纹理映射 131 5.2.6 Mipmap纹理映射示例 132 5.2.7 TextureRectangle纹理映射 138 5.2.8 TextureRectangle纹理映射示例 139 5.2.9 自动生成纹理坐标 142 5.2.10 自动生成纹理坐标示例 142 5.2.11 计算纹理坐标 144 5.2.12 计算纹理坐标示例 145 5.2.13 立方图纹理 149 5.2.14 立方图纹理示例 150 5.2.15 渲染到纹理 155 5.2.16 渲染到纹理示例 155 5.2.17 一维纹理 162 5.2.18 一维纹理示例 162 5.2.19 三维纹理映射 164 5.2.20 三维纹理映射示例 166 5.3 光照 171 5.3.1 osg::Light类 171 5.3.2 osg::LightSource类 172 5.3.3 场景中使用光源 173 5.3.4 简单光源示例 174 5.3.5 聚光灯示例 176 5.4 材质 182 5.4.1 材质类 182 5.4.2 材质类示例 184 第6章 文件的读写 187 6.1 OSG支持的文件格式 188 6.1.1 三维模型文件格式 188 6.1.2 图片及视频文件格式 189 6.1.3 打包及网络传输格式 189 6.1.4 字体文件格式 190 6.1.5 伪插件文件格式 190 6.1.6 .osg文件和.ive文件 190 6.2 文件读取的流程 191 6.2.1 osgDB库 191 6.2.2 文件的读取与保存 191 6.2.3 文件读写示例 192 6.2.4 文件读写进度 194 6.2.5 文件读取进度示例 195 6.3 插件的工作机制 198 6.3.1 插件的搜索和注册 198 6.3.2 osgArchive读写流程 199 6.3.3 自定义文件插件 200 6.3.4 自定义文件格式读写插件示例 202 6.4 读写中文文件名及中文路径问题 206 6.5 osgEXP导出文件 209 第7章 场景图形的工作机制 213 7.1 内存管理 214 7.1.1 Referenced类 214 7.1.2 ref_ptr<>模板类 214 7.1.3 智能指针 215 7.2 访问器机制 215 7.2.1 访问器设计模式 215 7.2.2 osg::NodeVisitor类 216 7.2.3 顶点访问器示例 217 7.2.4 纹理访问器示例 220 7.2.5 节点访问器示例 223 7.3 回调机制 227 7.3.1 osg::NodeCallback类 227 7.3.2 节点回调示例 228 7.3.3 事件回调示例 230 7.3.4 文件读取回调示例 232 7.4 数据变量 235 第8章 场景图形管理 237 8.1 视图与相机 238 8.1.1 osg::Camera类 238 8.1.2 裁剪平面示例(一) 243 8.1.3 裁剪平面示例(二) 244 8.1.4 单视图与相机 246 8.1.5 宽屏变形示例 247 8.1.6 单视图多相机渲染示例 249 8.1.7 多视图与相机 252 8.1.8 多视图相机渲染示例 253 8.1.9 多视图多窗口渲染示例 257 8.2 场景交互与场景漫游 259 8.2.1 osgGA库 259 8.2.2 键盘事件消息处理 261 8.2.3 抓图示例 262 8.2.4 场景漫游 265 8.2.5 自定义操作器场景漫游示例 266 8.2.6 路径漫游 275 8.2.7 路径漫游示例 276 8.3 交运算与对象选取 277 8.3.1 交运算 278 8.3.2 显示位置及拾取示例 280 8.3.3 对象选取示例 285 第9章 OSG文字 289 9.1 osgText 290 9.1.1 osgText::Text类 290 9.1.2 osgText::Font类 293 9.1.3 显示汉字示例 294 9.1.4 各种文字效果(边框、阴影及颜色倾斜)示例 296 9.1.5 HUD显示汉字示例 300 9.1.6 渐变文字 303 9.1.7 渐变文字示例 304 9.2 osgText3D 306 9.2.1 osgText::Text3D类 307 9.2.2 3D汉字显示示例 307 第10章 OSG动画与声音 311 10.1 路径动画 312 10.1.1 osg::AnimationPath类 312 10.1.2 osg::AnimationPathCallback类 314 10.1.3 路径动画控制及显示示例 314 10.1.4 路径的导出示例 318 10.1.5 路径的导入示例 321 10.2 帧动画 323 10.2.1 osg::Sequence类 324 10.2.2 帧动画显示与控制示例 325 10.3 骨骼动画osgCal 329 10.3.1 Cal3D简介及Cal3D导出 329 10.3.2 编译osgCal 330 10.3.3 骨骼动画osgCal示例 331 10.4 三维立体声音osgAL 336 10.4.1 OpenAL简介 336 10.4.2 osgAL编译 337 10.4.3 osgAL声音播放示例 338 10.4.4 osgAL声音动态加载及播放示例 343 第11章 OSG粒子系统与阴影 351 11.1 粒子系统 352 11.1.1 粒子系统的主要模块 352 11.1.2 粒子系统的模拟过程 354 11.1.3 雾效模拟示例 354 11.1.4 雪效模拟示例 357 11.1.5 雨效模拟示例 359 11.1.6 爆炸模拟示例 360 11.1.7 自定义粒子系统示例(一) 362 11.1.8 自定义粒子系统示例(二) 365 11.1.9 粒子系统的读取与保存 369 11.2 OSG阴影 372 11.2.1 osgShadow库 372 11.2.2 阴影示例 374 第12章 osgFX扩展库及osgSim扩展库 381 12.1 osgFX扩展库 382 12.1.1 异性光照特效 382 12.1.2 异性光照特效示例 383 12.1.3 凹凸贴图特效 384 12.1.4 凹凸贴图特效示例 386 12.1.5 卡通渲染特效 387 12.1.6 卡通渲染特效示例 388 12.1.7 刻线特效 390 12.1.8 刻线特效示例 390 12.1.9 立方图镜面高光特效 392 12.1.10 立方图镜面高光特效示例 393 12.2 osgSim扩展库 394 12.2.1 DOFTransform类 394 12.2.2 osgSim::Impostor类 397 12.2.3 osgSim::ImpostorSprite类 398 12.2.4 osgSim::MultiSwitch类 399 12.2.5 osgSim::OverlayNode类 400 12.2.6 osgSim::VisibilityGroup类 402 第13章 OSG地形与地理信息 403 13.1 VirtualPlanetBuilder 404 13.1.1 VirtualPlanetBuilder简介 404 13.1.2 编译与参数说明 407 13.1.3 使用实例及说明 411 13.2 海量地形生成解决方案 412 13.3 osgGIS 414 13.3.1 osgGIS简介 414 13.3.2 osgGIS编译 414 13.4 osgGIS实用工具 415 13.4.1 osggis_build 415 13.4.2 osggis_mapper 416 13.4.3 osggis_makelayer 416 13.4.4 osggis_simple 418 13.4.5 osggis_viewer 419 13.5 GIS坐标系 419 13.5.1 GIS中坐标系的定义 419 13.5.2 地理坐标系与投影坐标系 420 参考文献 423 </div></div> <p> </p> [此贴子已经被作者于2011-08-31 22:06:49编辑过] |
|
|
1楼#
发布于:2011-11-08 17:42
<p>look</p>
<p><img src="images/post/smile/dvbbs/em50.gif" /></p> |
|
2楼#
发布于:2012-01-08 21:52
Good, good
|
|
3楼#
发布于:2012-03-25 23:30
谢谢~~~~~~~~~~~~~~~~~~~~~~
|
|
4楼#
发布于:2012-03-30 21:23
thank you
|
|
5楼#
发布于:2012-04-07 19:44
[下载]
<p>很好很强大</p> |
|
6楼#
发布于:2012-04-13 14:30
<p>很好,很强大,多谢楼主分享</p>
|
|
7楼#
发布于:2012-04-29 17:36
非常需要,太感谢楼主了!
|
|
8楼#
发布于:2012-07-17 08:38
太感谢了
非常感谢 |
|
9楼#
发布于:2012-07-17 09:24
谢谢楼主分享
|
|
上一页
下一页