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

副标题:无

作   者:王锐,钱学雷编著

分类号:

ISBN:9787302212232

微信扫一扫,移动浏览光盘

简介

   OpenSceneGraph(OSG)是一个基于工业图形标准OpenGL的高层次图形   开发APl接口,一款开放源代码的、具备商业级别渲染能力的实时三维渲染   引擎,在国内外均已得到广泛的应用,并且已经有越来越多的虚拟现实行   业开发者加入到OSG开发的行列中来。    本书的编写目的是:详细剖析OpenSceneGraph引擎的实现流程,包括   其场景图形结构,几何体绘制和渲染状态的封装机制,场景漫游、交互和   动画的实现方式,以及最为重要的对于三维渲染引擎的内部裁减、数据动   态调度和多线程渲染机制的深入分析。本书对虚拟现实行业的爱好者和从   业者、对愿意了解最新图形学相关技术发展,以及有志于开发自主知识产   权的三维引擎系统的读者,均会大有助益。    本书可以作为计算机图形学或虚拟现实专业的高年级本科生和研究生   教材使用,也可供三维图形学领域的专门研发人员,尤其是使用   0penSceneGraph进行项目开发和科学研究的人员参考、学习。   

目录

第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 编译环境生成工具cmake 19

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 顶点数组、显示列表和vbo 91

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 窗口与像素缓存(pixel buffer) 179

7.2.3 渲染到纹理(render to texture) 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 范例:使用windows api构建渲染窗口 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 渐进动画(ease motion) 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 三维渲染引擎设计与实践
    • 名称
    • 类型
    • 大小

    光盘服务联系方式: 020-38250260    客服QQ:4006604884

    意见反馈

    14:15

    关闭

    云图客服:

    尊敬的用户,您好!您有任何提议或者建议都可以在此提出来,我们会谦虚地接受任何意见。

    或者您是想咨询:

    用户发送的提问,这种方式就需要有位在线客服来回答用户的问题,这种 就属于对话式的,问题是这种提问是否需要用户登录才能提问

    Video Player
    ×
    Audio Player
    ×
    pdf Player
    ×
    Current View

    看过该图书的还喜欢

    some pictures

    解忧杂货店

    东野圭吾 (作者), 李盈春 (译者)

    loading icon