首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 图书频道 > 计算机与网络 > 图形图像 >

OpenSceneGraph三维渲染引擎设计与实践

2010-04-29 
基本信息·出版社:清华大学出版社 ·页码:366 页 ·出版日期:2009年11月 ·ISBN:7302212236/9787302212232 ·条形码:9787302212232 ·版本:第1版 · ...
商家名称 信用等级 购买信息 订购本书
OpenSceneGraph三维渲染引擎设计与实践 去商家看看
OpenSceneGraph三维渲染引擎设计与实践 去商家看看

 OpenSceneGraph三维渲染引擎设计与实践


基本信息·出版社:清华大学出版社
·页码:366 页
·出版日期:2009年11月
·ISBN:7302212236/9787302212232
·条形码:9787302212232
·版本:第1版
·装帧:平装
·开本:16
·正文语种:中文

内容简介 《OpenSceneGraph三维渲染引擎设计与实践》的编写目的是:详细剖析OpenSceneGraph引擎的实现流程,包括其场景图形结构,几何体绘制和渲染状态的封装机制,场景漫游、交互和动画的实现方式,以及最为重要的对于三维渲染引擎的内部裁减、数据动态调度和多线程渲染机制的深入分析。《OpenSceneGraph三维渲染引擎设计与实践》对虚拟现实行业的爱好者和从业者、对愿意了解最新图形学相关技术发展,以及有志于开发自主知识产权的三维引擎系统的读者,均会大有助益。
OpenSceneGraph(OSG)是一个基于工业图形标准OpenGL的高层次图形开发API接口,一款开放源代码的、具备商业级别渲染能力的实时三维渲染引擎,在国内外均已得到广泛的应用,并且已经有越来越多的虚拟现实行业开发者加入到OSG开发的行列中来。
《OpenSceneGraph三维渲染引擎设计与实践》可以作为计算机图形学或虚拟现实专业的高年级本科生和研究生教材使用,也可供三维图形学领域的专门研发人员,尤其是使用OpenSceneGraph进行项目开发和科学研究的人员参考、学习。
编辑推荐 《OpenSceneGraph三维渲染引擎设计与实践》:基于工业图形标准OpenGL的高层次三维渲染引擎。
深入讲解OpenSceneGraph渲染引擎的内部实现及其应用。
详细介绍OpenSceneGraph渲染引擎的组织架构及其实现流程。
OpenGL架构评估编委会(ARB)独立撰稿人Paul Martz先生强力推荐。
拥有丰富的社区资源和强大的网络支持,以方便读者进一步的学习和交流。
全面深入介绍OpenScemGraph基础知识及核心AP函数。
逐一探讨OpensceneGraph中的各个功能模块以及配置开发环境。
提供大量的示例程序演示,源代码分析以及丰富的实际开发经验。
读者将具备开发一歉基于OpenSceneGraph的虚拟现实系统的能力。
拥有丰富的社区资源和强大的网络支持,以方便读者进一步的学习和交流。
目录
第1章 初识OpenSceneGraph(OSG)1
1.1 场景图形初步2
1.1.1 场景图形的概念2
1.1.2 具体实现:三维渲染引擎2
1.1.3 主流渲染引擎介绍3
1.2 OpenSceneGraph概述4
1.2.1 诞生与发展4
1.2.2 优势与不足5
1.3 OpenSceneGraph的组成结构6
1.3.1 核心结构6
1.3.2 资源获取8
1.3.3 中文社区8

第2章 OSG的安装与调试9
2.1 快速安装和使用10
2.1.1 下载预编译包10
2.1.2 设置环境变量11
2.1.3 建立工程环境13
2.1.4 范例:第一个程序15
2.2 从源代码进行编译16
2.2.1 OSG源代码的获取与更新16
2.2.2 编译环境生成工具CMake19
2.2.3 基本编译选项22
2.2.4 高级编译选项25
2.3 调试输入与输出28
2.3.1 命令行输入28
2.3.2 调试输出29

第3章 开发预备知识31
3.1 基本数学组件32
3.1.1 二维与多维向量32
3.1.2 四元数35
3.1.3 矩阵37
3.1.4 包围体41
3.2 数组对象44
3.2.1 数据数组44
3.2.2 数据索引数组46
3.3 内存管理机制47
3.3.1 智能指针48
3.3.2 参照对象51
3.3.3 范例:智能指针的使用52

第4章 场景的组织结构55
4.1 节点的定义与种类56
4.1.1 场景图形BVH树56
4.1.2 节点的父子关系58
4.1.3 叶节点与组节点59
4.1.4 节点的功能与分类62
4.2 节点的访问65
4.2.1 访问器机制65
4.2.2 节点的遍历函数67
4.2.3 范例:节点属性访问器68
4.2.4 节点的更新与事件回调70
4.2.5 范例:使用回调实现旋转动画71
4.3 重要节点的功能实现74
4.3.1 空间变换节点74
4.3.2 范例:使用空间变换节点79
4.3.3 开关节点81
4.3.4 范例:使用开关节点82
4.3.5 细节层次节点(LOD)83
4.3.6 范例:使用LOD节点85
4.3.7 范例:节点代理86

第5章 绘制几何对象与文字89
5.1 几何元素的储存90
5.1.1 顶点属性90
5.1.2 顶点数组.显示列表和VBO91
5.1.3 构建几何体对象94
5.1.4 范例:简易房屋100
5.2 几何元素的绘制与访问103
5.2.1 几何体的绘制实现函数103
5.2.2 数据的更新显示108
5.2.3 几何体的更新回调109
5.2.4 范例:跃动的线110
5.2.5 信息获取和统计112
5.2.6 范例:使用仿函数遍历几何体113
5.3 位图的显示116
5.3.1 图像与图像的绘制116
5.3.2 范例:在场景中绘制位图119
5.4 文字的显示120
5.4.1 文字的绘制方法120
5.4.2 文字的绘制实现函数123
5.4.3 字符编码格式124
5.4.4 范例:一首古诗127

第6章 设置纹理和渲染属性131
6.1 渲染属性与模式132
6.1.1 OpenGL中的渲染状态设置132
6.1.2 节点的渲染状态集合132
6.1.3 渲染属性概览135
6.2 纹理与纹理属性139
6.2.1 纹理的实现方法139
6.2.2 纹理的分类143
6.2.3 范例:场景中的纹理设置146
6.2.4 范例:纹理的明细层次(Mipmap)149
6.3 属性的实现与访问152
6.3.1 将属性应用到场景152
6.3.2 渲染状态集回调153
6.3.3 范例:雾参数的实时更新153
6.4 OSG与OpenGL着色语言155
6.4.1 OpenGL着色语言155
6.4.2 着色器属性159
6.4.3 一致变量回调162
6.4.4 范例:在场景中使用GLSL着色语言162

第7章 观察我们的世界167
7.1 场景的观察与变换168
7.1.1 OpenGL中的变换168
7.1.2 相机节点171
7.1.3 范例:鸟瞰图相机174
7.2 图形设备接口176
7.2.1 图形设备与相机176
7.2.2 窗口与像素缓存(PixelBuffer)179
7.2.3 渲染到纹理(RenderToTexture)181
7.2.4 范例:将场景渲染到纹理183
7.3 视景器186
7.3.1 视景器的主要工作186
7.3.2 单视景器与多视景器188
7.3.3 范例:投影墙显示191
7.3.4 范例:多视景器系统192
7.3.5 视景器辅助部件194

第8章 人机交互与图形用户接口197
8.1 获取鼠标和键盘消息198
8.1.1 事件适配器198
8.1.2 动作适配器202
8.1.3 事件队列与处理器203
8.1.4 范例:处理键盘事件205
8.2 三维人机交互工具207
8.2.1 漫游器207
8.2.2 拖曳器210
8.2.3 范例:场景拖曳器的实现214
8.3 二维图形用户接口217
8.3.1 窗口设备217
8.3.2 Windows下窗口设备的实现219
8.3.3 范例:使用WindowsAPI构建渲染窗口221

第9章 场景中的动画效果225
9.1 场景动画基本组件226
9.1.1 关键帧226
9.1.2 采样与插值228
9.1.3 动画频道231
9.1.4 动画更新回调236
9.1.5 范例:关键帧路径动画239
9.2 刚体动画242
9.2.1 简单路径动画242
9.2.2 范例:使用路径动画回调244
9.2.3 动画的多频道融合245
9.2.4 范例:基本动画管理器246
9.3 角色与变形动画249
9.3.1 骨骼动画249
9.3.2 范例:骨骼运动252
9.3.3 变形体255
9.3.4 范例:对折硬纸257
9.4 渲染状态与纹理动画259
9.4.1 渐进动画(EaseMotion)259
9.4.2 范例:物体的淡入淡出262
9.4.3 纹理动画264
9.4.4 范例:纹理动画效果266

第10章 文件的读写机制269
10.1 数据文件支持机制270
10.1.1 文件格式概述270
10.1.2 OSG支持的文件格式272
10.1.3 基本文件读写接口277
10.2 文件读写插件279
10.2.1 插件的编写和注册279
10.2.2 插件的职责链机制283
10.2.3 文件读写回调285
10.3 插件设计方法287
10.3.1 范例:简单插件设计287
10.3.2 范例:文件读取进度290
10.4 OSG(即.osg)格式及其扩展292
10.4.1 封装器292
10.4.2 场景扩展库插件295

第11章 场景的动态更新与裁减297
11.1 场景的更新流程298
11.1.1 人机交互事件的更新298
11.1.2 用户请求与系统调度的更新299
11.2 场景的裁减流程300
11.2.1 裁减的意义与常用技术300
11.2.2 裁减访问器303
11.2.3 状态树与状态节点305
11.2.4 状态树的构建309
11.2.5 裁减回调312
11.3 数据的动态调度313
11.3.1 动态调度技术概述313
11.3.2 分页数据库314
11.3.3 范例:分页LOD节点316
11.3.4 分页图像库318

第12章 场景的多线程渲染319
12.1 多线程开发技术概述320
12.1.1 多线程开发的常用概念320
12.1.2 OpenThreads库简介321
12.1.3 范例:线程的创建与控制324
12.1.4 OSG操作线程325
12.2 基本场景渲染流程327
12.2.1 OSG状态机327
12.2.2 构建场景渲染树333
12.2.3 渲染树的优化排序338
12.2.4 范例:广告牌森林339
12.3 多种线程模型的讨论与实现341
12.3.1 渲染器与场景视图341
12.3.2 单线程模型347
12.3.3 多设备裁减/绘制模型348
12.3.4 多设备绘制模型349
12.3.5 多相机绘制模型350
12.3.6 数据变度351

第13章 开源社区与未来353
13.1 基于OSG的开源工程354
13.1.1 地形与地理信息354
13.1.2 特效实现356
13.1.3 扩展节点组件358
13.1.4 数据和场景管理358
13.1.5 其他语言封装360
13.2 开发者资源360
13.2.1 实用网址360
13.2.2 用户群体简介361
13.3 十条箴言363
主要参考资料365
……
序言 OpenSceneGraph(OSG)是一个专为3D计算机图形开发而设计的高层次的可编程接口,广泛用于虚拟仿真、动画设计以及各种可视化程序中。OSG基于OpenGL进行构建,因此它同时具备了跨平台的特性和较高的渲染性能。此外,OSG还提供了一系列可供3D程序开发者使用的功能接口,包括2D和3D数据文件的加载、纹理字体支持、细节层次(LOD)控制、多线程数据分页处理等,而这些都是OpenGl~,本身所不具备的。凭借丰富的功能特性以及开放源代码的协议形式,OSG已经广泛地被学术界和产业界所认可。目前使用OSG进行开发的三维软件数以千计,而OSG的开发者团队也早已遍及世界各地。
OSG最早诞生于1990年,当时只是一个基于Linux开发的场景图形(Scene Graph)支持库。2000年以后,OSG的核心功能代码由来自苏格兰(Scotland,UK)的Robert Osfield先生主持开发。与此同时,一个庞大的开发者社区也在不断地为这款开源图形引擎做出贡献。如果您还是一名新近入门的OSG开发者,可能会迷失于OSG本身的繁多功能和过于复杂的结构中,但是您也会从中收获颇丰。
这本书就是其中的一例。早在2006年,由我负责编写和出版了《OpenSceneGraph QuickStart Guide))一书(中文译为《OpenSceneGraph快速入门指导》),而当时主持其中文版翻译和校对工作的,就是本书的作者王锐和钱学雷博士。2009年8月,在美国举办的SIGGRAPH大会上,我很荣幸地与王锐先生会面,聆听了其有关OSG在中国的发展与展望的演讲,并与他进一步讨论了OSG相关文档的编排和完善工作。在中国,他们有着多年研究和使用OSG的丰富经验。而现在,本书的读者,也就是您,将有机会受益于此。
如果把OSG比喻为一片尚未完全开拓的广阔疆域,那么这本书就是您的导航系统,盼望您能够即刻开始一段安心而完满的旅程。
文摘 插图:


经过多年的研究和发展,基于OpenGL或DirectX实现的各种渲染引擎已经逐渐趋于成熟,一批优秀的开源和商业引擎也逐渐在市场上占据了主导地位,并越来越为企业和开发者、爱好者们所熟悉。下面介绍一些主流的三维渲染引擎及其主要特色。
(1)PHIGSPHIGS(Programmer’S Hierarchical Interactive Graphics System)是一个起源于20世纪80年代末的三维场景图形标准,其思想为大多数后来者所继承和借鉴,但是这个工具本身已经不再被使用。
(2)Open Inventor
1992年,由Silicon Graphics(SGI)开发的IRIS Inventor(一个构架于当时的IRIS GL 3D API底层接口的场景图形系统)面世。1994年,它的继任者,也就是现在仍然广泛使用的Open Inventor诞生了,这是一个基于OpenGL开发的、跨平台的、面向对象的场景图形系统。2000年,Open Inventor宣布遵循开源协议发布,至今仍然广泛运用于各种工程和科学可视化程序中。相关网址:http://oss.sgi.com/projects/inventor/。
(3)OpenGL Performer
OpenGL Performer(早期称之为IRIS Performer,或者简称为Performer)是一种使用商业协议、基于OpenGL开发的实时虚拟仿真系统,同样由SGI负责开发和维护,并可运行于IRIX、Linux以及Windows系统中。和Open Inventor有所区别的是,1991年诞生的Performer更专注于场景图形系统的重构和性能改善。
热点排行