《Open Inventor程序设计从入门到精通》PDF下载

  • 购买积分:16 如何计算积分?
  • 作  者:阎锋欣等编著
  • 出 版 社:北京:清华大学出版社
  • 出版年份:2007
  • ISBN:730215080X
  • 页数:544 页
图书介绍:本书介绍Open Inventor程序设计知识,包括场景管理,形体绘制,曲线与曲面,时间与选择等。

第1章 绪论 1

1.1 计算机图形学的简单回顾 1

1.1.1 计算机图形学的发展简史 1

1.1.2 计算机图形学的广泛应用 2

1.1.3 交互式图形学 4

1.2 虚拟现实技术 6

1.2.1 虚拟现实技术的主要特征 6

1.2.2 虚拟现实系统的体系结构 7

1.2.3 蓬勃发展的虚拟现实技术 8

1.3 C++面向对象基础 9

1.3.1 C++概述 9

1.3.2 类和对象 10

1.3.3 构造函数与析构函数 11

1.3.4 继承与派生 13

1.3.5 继承在软件开发中的重要意义 18

1.4 Windows编程规范 18

1.5 动画技术 19

1.6 小结 20

第2章 Open Inventor基础知识 21

2.1 OpenGL简介 21

2.1.1 什么是OpenGL 21

2.1.2 OpenGL状态机 23

2.1.3 OpenGL应用示例 23

2.2 Open Inventor的概念和框架 25

2.2.1 什么是Open Inventor 25

2.2.2 Open Inventor的主要结构 28

2.2.3 Open Inventor的扩展模块 29

2.2.4 用于JAVA的Open Inventor 32

2.3 Open Inventor与OpenGL之间的关系 33

2.4 Open Inventor与VRML之间的关系 35

2.4.1 VRML简介 35

2.4.2 创建VRML文件的常用方法 36

2.4.3 一个简单的VRML场景 36

2.5 基于Open Inventor的Amira 40

2.5.1 Amira产品概述 40

2.5.2 Amira的应用领域 41

2.5.3 Amira的二次开发模块 41

2.6 小结 42

第3章 Open Inventor与视窗系统 43

3.1 Windows环境下Open Inventor基本程序结构 43

3.1.1 Open Inventor在Windows环境中的安装方法 43

3.1.2 Windows环境下对Open Inventor的设置 48

3.1.3 Open Inventor在Windows下的扩展 53

3.1.4 使用IVF程序向导 58

3.2 Unix/Linux环境下Open Inventor编程简介 60

3.2.1 在Linux环境中Open Inventor的安装方法 60

3.2.2 Linux系统中Open Inventor编程环境的设置 63

3.2.3 显示一个立方体 65

3.3 其他版本下Open Inventor的安装与设置 70

3.3.1 SGI公司Open Inventor的安装与设置 70

3.3.2 SIM公司Coin3D的安装与设置 70

3.3.3 在VC中使用Coin3D库 72

3.4 Open Inventor软件开发包的获得 76

3.4.1 从SGI的开源社区下载 76

3.4.2 SIM公司的Coin3d的下载 76

3.4.3 TGS公司Open Inventor的获得 77

3.5 小结 78

第4章 基本概念及定义 79

4.1 Open Inventor中的命名规则 79

4.1.1 字符与数据 79

4.1.2 类和函数的命名 80

4.1.3 用于场景的基本类型 80

4.1.4 场景图中的图例 81

4.2 场景和场景数据库 82

4.2.1 场景数据库 83

4.2.2 节点概述 86

4.2.3 节点的类型 89

4.3 群组节点 93

4.3.1 创建群组 93

4.3.2 对群组成员的操作 94

4.3.3 分隔符节点 101

4.3.4 SoGroup的其他子类 106

4.4 节点的共享实例 112

4.5 节点中的域 116

4.5.1 域的初始值 116

4.5.2 域的作用 118

4.5.3 单值域变量值的设置和获取 119

4.5.4 多值域变量值的设置和获取 122

4.5.5 域的忽略标志 127

4.5.6 节点的覆盖标志 128

4.6 路径 130

4.6.1 路径的作用 130

4.6.2 创建路径 131

4.7 节点的引用计数和节点的删除 131

4.7.1 引用计数值的计算 132

4.7.2 使用节点的引用计数值来删除节点 133

4.7.3 引用计数值为0的节点 135

4.7.4 节点的引用和删除用法小结 136

4.8 小结 137

第5章 形状节点与视图变换 138

5.1 简单形状节点和复杂形状节点 138

5.1.1 基本形状节点 138

5.1.2 复杂形状节点 139

5.2 二维文字 146

5.2.1 二维文字概述 147

5.2.2 使用二维文字 148

5.3 三维文字 150

5.3.1 SoText3节点的域变量 151

5.3.2 三维文字的轮廓 151

5.3.3 使用三维文字 152

5.4 属性节点 158

5.4.1 材质节点 160

5.4.2 绘制类型节点 161

5.4.3 光照模型节点 162

5.4.4 全局环境光节点 165

5.4.5 形状提示节点 169

5.4.6 复杂度节点 174

5.4.7 度量单位节点 176

5.5 造型变换 177

5.5.1 照相技术与三维物体的显示 178

5.5.2 窗口区和视图区 181

5.5.3 图形裁剪 181

5.5.4 变换节点 182

5.6 视图变换和投影变换 188

5.6.1 相机节点类 188

5.6.2 在相机节点上执行渲染动作 189

5.6.3 相机节点类中的子类 193

5.6.4 视口变换 195

5.6.5 变换的诊断 197

5.6.6 相机的综合应用 198

5.7 节点绑定 201

5.7.1 材质绑定节点 201

5.7.2 法矢绑定 206

5.7.3 自动生成法矢 207

5.8 小结 207

第6章 颜色和光照 208

6.1 计算机中的颜色 209

6.1.1 彩色的形成原理与基本概念 209

6.1.2 常用颜色模型 210

6.2 光照模型 212

6.2.1 光照概述 213

6.2.2 Phong光照模型 216

6.3 Open Inventor中的光照节点 218

6.3.1 点光源 220

6.3.2 平行光 221

6.3.3 聚光灯 222

6.3.4 使用多重光照 223

6.3.5 使用纹理和光照 225

6.3.6 雾效果 226

6.4 小结 227

第7章 纹理映射 228

7.1 纹理概述 229

7.1.1 纹理映射的概念 229

7.1.2 纹理映射中使用的节点 232

7.1.3 纹理的映射方式 235

7.1.4 存取纹理图片 238

7.2 纹理控制 241

7.2.1 SoTexture2节点 241

7.2.2 给定纹理坐标 243

7.3 使用纹理 246

7.3.1 使用默认的纹理映射 246

7.3.2 使用纹理坐标函数 250

7.4 使用三维纹理 253

7.5 小结 255

第8章 曲线与曲面 256

8.1 预备知识 257

8.1.1 曲线曲面的参数表示 257

8.1.2 曲线中的基本概念 258

8.1.3 插值、拟合和光顺 260

8.1.4 贝济埃曲线 262

8.1.5 B样条曲线 263

8.2 非均匀有理B样条曲线中各概念间的关系 264

8.2.1 与NURBS相关的类 264

8.2.2 曲线的控制顶点、结点矢量和阶 265

8.2.3 曲线的连续性 266

8.2.4 基函数的作用 267

8.2.5 结点序列 268

8.2.6 有理曲线 270

8.2.7 NURBS关系小结 270

8.3 NURBS曲线的应用 270

8.3.1 B样条曲线 271

8.3.2 过端点的均匀B样条曲线 273

8.4 NURBS曲面 274

8.4.1 贝济埃曲面 275

8.4.2 NURBS曲面的裁剪 277

8.5 NURBS面和曲线的综合应用 280

8.6 小结 285

第9章 存取三维场景数据 286

9.1 三维图形数据文件格式简介 286

9.1.1 Wavefront模型简介 286

9.1.2 3DS文件格式 288

9.1.3 各种三维数据模型的相互转换 300

9.2 Open Inventor的文件格式 300

9.2.1 文件类型 301

9.2.2 文件头 302

9.3 场景图的存储 303

9.3.1 输出整个场景图 303

9.3.2 输出节点 303

9.3.3 输出域变量值 303

9.3.4 输出忽略标志 305

9.3.5 输出域连接 306

9.3.6 输出全局域 306

9.3.7 输出引擎 307

9.3.8 输出路径 307

9.3.9 输出节点的共享实例 311

9.3.10 输出节点工具箱 312

9.3.11 文件的保存类型 314

9.3.12 包含其他文件 315

9.4 读取Open Inventor文件 316

9.4.1 将数据文件读入场景数据库 316

9.4.2 读入节点和引擎 317

9.4.3 读入未知的节点或引擎 318

9.4.4 节点的备用表示 318

9.4.5 将数据文件作为字符串而读入 319

9.5 对VRML的扩展 322

9.6 小结 325

第10章 场景遍历 326

10.1 概述 326

10.1.1 常用的遍历动作 326

10.1.2 基本步骤 327

10.1.3 执行动作 328

10.2 渲染遍历 329

10.2.1 不同类型节点的执行方式 329

10.2.2 透明物体的渲染质量 333

10.2.3 反走样 336

10.2.4 输出场景图 338

10.2.5 渲染缓冲 347

10.2.6 渲染剔除 349

10.3 计算包围盒 351

10.3.1 函数与方法 351

10.3.2 创建实例 352

10.3.3 使用包围盒 352

10.4 累积变换矩阵 353

10.4.1 创建实例 353

10.4.2 使用累积变换矩阵 354

10.4.3 综合应用 355

10.5 输出文件 356

10.5.1 文件写操作 356

10.5.2 输出VRML文件 357

10.6 搜索节点 362

10.6.1 使用方法 362

10.6.2 搜索节点的应用 363

10.7 拾取物体 364

10.7.1 拾取的方式 364

10.7.2 基本步骤 365

10.7.3 拾取处理 368

10.7.4 细节度 369

10.7.5 拾取的综合应用 370

10.8 响应程序 374

10.8.1 基本步骤 374

10.8.2 响应函数的作用 374

10.8.3 为图元添加响应函数 375

10.8.4 响应函数的应用 376

10.9 小结 378

第11章 事件和选择 379

11.1 概述 379

11.1.1 事件处理过程 379

11.1.2 Windows中的Inventor事件 380

11.2 事件处理机制 384

11.2.1 事件的自动处理 385

11.2.2 不同节点对事件的响应方式 385

11.2.3 事件处理者 390

11.3 事件响应机制 391

11.4 事件覆盖机制 394

11.5 选择反馈 396

11.5.1 管理选择列表 397

11.5.2 加亮选中物体 401

11.5.3 高光线的设置 402

11.5.4 自定义高光线 403

11.5.5 选择改变时的处理 403

11.5.6 设置过滤响应函数 407

11.6 在Inventor程序中使用OpenGL 412

11.6.1 在Inventor场景渲染中使用OpenGL 412

11.6.2 使用SoCallback节点 413

11.7 小结 417

第12章 传感器和引擎 418

12.1 概述 418

12.1.1 传感器简介 418

12.1.2 引擎简介 420

12.1.3 传感器和引擎的关系 421

12.2 延迟队列传感器 422

12.2.1 数据传感器的分类 422

12.2.2 数据传感器的用法 423

12.2.3 域传感器 425

12.2.4 使用激发器 427

12.2.5 单触发传感器 429

12.2.6 空闲传感器 431

12.3 定时器队列传感器 432

12.3.1 一般使用步骤 432

12.3.2 警报传感器 433

12.3.3 定时器传感器 437

12.4 域连接 440

12.4.1 多重连接 441

12.4.2 域转换 442

12.4.3 引用计数 442

12.4.4 禁用域连接 443

12.4.5 更新域变量 443

12.4.6 全局域 443

12.5 用于动画的引擎 445

12.5.1 耗时引擎 446

12.5.2 单触发引擎 446

12.5.3 计时器引擎 447

12.5.4 用于动画的节点 450

12.6 其他常用的引擎 454

12.6.1 闸引擎 454

12.6.2 算术类引擎 454

12.7 小结 459

第13章 节点工具箱和组件库 460

13.1 节点工具箱 460

13.1.1 隐藏子节点 461

13.1.2 节点工具箱的目录 462

13.1.3 选择和设置节点部分 465

13.1.4 使用宏获得部分 467

13.1.5 指向节点部分的路径 470

13.1.6 使用节点部分列表 472

13.1.7 使用分隔符工具箱 472

13.1.8 使用具有编辑器的节点工具箱 472

13.2 组件库 475

13.2.1 渲染区 477

13.2.2 Windows组件 479

13.2.3 回传程序数据 481

13.2.4 观察器 484

13.2.5 设置观察器中的场景图 485

13.3 使用三维剪贴板 488

13.4 使用窗口管理组件 489

13.5 小结 491

第14章 拖拽器和操纵器 492

14.1 概述 492

14.1.1 拖拽器 492

14.1.2 操纵器 495

14.2 简单拖拽器 496

14.2.1 将简单拖拽器连接到域 496

14.2.2 使用响应函数 498

14.3 操纵器 500

14.3.1 操纵器的用法 500

14.3.2 节点替换法 501

14.4 自定义拖拽器 502

14.4.1 拖拽器的部分 502

14.4.2 修改拖拽器的部分 503

14.4.3 改变部分的默认几何形状 504

14.5 小结 507

第15章 TGS对Open Inventor的拓展 508

15.1 用于Java的扩展模块 509

15.1.1 Java模块扩展包 510

15.1.2 包括的主要模块 511

15.1.3 一个示例 512

15.2 MeshViz扩展模块 516

15.2.1 MeshViz中的属性类 516

15.2.2 MeshViz中的可视化类 518

15.2.3 管理场景数据库 519

15.2.4 GraphMaster组件 521

15.3 VolumeViz扩展模块 523

15.3.1 VolumeViz的使用 524

15.3.2 读写数据文件 526

15.4 HardCopy扩展模块 529

15.4.1 使用SoVectorizeAction 529

15.4.2 输出PostScript文件 530

15.5 TerrainViz扩展模块 532

15.5.1 高程管理器 533

15.5.2 未定义孔洞数据的管理 534

15.6 小结 535

附录A Open Inventor中的OpenGL状态变量 536

附录B 术语表 539

参考文献 544