第1章 OpenSceneGraph三维渲染引擎概述 1
1.1 概述 1
1.1.1 3D图形和OSG的介绍 1
1.1.2 OSG的功能与相关扩展 2
1.1.3 OSG在中国的发展 6
1.1.4 OSG的学习资料 6
1.1.5 必备知识 8
1.2 OSG的安装与部署 8
1.2.1 使用安装包部署 8
1.2.2 编译OSG并部署 10
1.2.3 OSG开发环境配置 15
1.3 OSG的架构与常用工具 17
1.3.1 OSG的组织结构 17
1.3.2 OSG的常用工具 18
第2章 OSG应用基础 23
2.1 事件响应 23
2.1.1 状态与事件处理器 23
2.1.2 添加事件响应 27
2.2 基本几何图元 29
2.2.1 使用OSG绘制点、线、面、体 29
2.2.2 透明纹理与材质 32
2.2.3 灯光 38
2.3 模型读写 41
2.3.1 文件读写插件的运行机制 41
2.3.2 输出场景节点到文件 46
2.3.3 文件加解密插件实现 49
2.4 模型控制 54
2.4.1 基本操作 54
2.4.2 模型的移动、旋转、缩放 58
2.4.3 任意模型的位置求解 60
2.5 超级指针 62
2.6 本章所涉及的类详解 64
2.6.1 osgViewer::Viewer 64
2.6.2 osgViewer::ViewerBase 68
2.6.3 osg::ArgumentParser 73
2.6.4 osg::Node 76
2.6.5 osg::Group 82
2.6.6 osg::Switch 85
2.6.7 osg::MatrixTransform 87
2.6.8 osg::Geode 89
2.6.9 osg::Drawable 92
2.6.10 osg::Shape 98
2.6.11 osg::Geometry 99
第3章 人机交互与动画控制 112
3.1 OSG事件响应机制 112
3.1.1 Windows与OSG事件传递流程 112
3.1.2 OSG响应键盘与鼠标事件 115
3.1.3 Pick点选物体 124
3.2 OSG中的菜单与按钮 132
3.2.1 OSG中绘制菜单与响应菜单 132
3.2.2 在场景中添加按钮 139
3.2.3 osgWidget支持中文 144
3.3 物体控制 146
3.3.1 OSG中对物体控制方式简介 146
3.3.2 对点选物体进行平移、缩放、旋转 147
3.4 动画 149
3.4.1 MD2动画模型的读取与控制 149
3.4.2 骨骼动画的介绍 158
3.4.3 颜色过渡动画 159
3.5 本章所涉及的类参考 167
3.5.1 osgGA::GUIEventHandler 167
3.5.2 osgFX::Scribe 169
3.5.3 osgWidget::WindowManager 170
3.5.4 osgWidget::Widget 177
3.5.5 osgWidget::Label 187
第4章 漫游、跟随与碰撞检测 190
4.1 漫游器简介 190
4.1.1 漫游器实现流程与接口 190
4.1.2 完善的漫游器实现 198
4.2 碰撞检测 203
4.2.1 漫游时进行碰撞检测 203
4.2.2 上楼梯算法实现 206
4.3 路径漫游 209
4.3.1 路径漫游方式简介 209
4.3.2 路径的制作与保存回放 217
4.4 跟踪 218
4.4.1 回调 218
4.4.2 自定义回调 222
4.4.3 Visitor 224
4.4.4 物体沿路径移动实现 226
4.4.5 跟随物体 233
4.5 本章所涉及的类参考 234
4.5.1 osgGA::CameraManipulator 234
4.5.2 osg::AnimationPath 237
4.5.3 osg::LineSegment 240
4.5.4 osgUtil::IntersectVisitor 242
第5章 粒子系统 244
5.1 OSG中粒子系统要素 244
5.1.1 粒子系统的模拟过程 244
5.1.2 粒子发射器 246
5.1.3 自定义操作 259
5.2 特效实现 262
5.2.1 雨雪效果 263
5.2.2 爆炸效果 264
5.2.3 飞行尾迹 266
5.3 本章所涉及的类参考 270
5.3.1 osgParticle::Particle 270
5.1.2 osgParticle:ParticleSystem 274
5.3.3 osgParticle:ConstantRateCounter 277
5.3.4 osgParticle::VariableRateCounter 278
5.3.5 osgParticle::RandomRateCounter 279
5.3.6 osgParticle::SegmentPlacer 280
5.3.7 osgParticle::MultiSegmentPlacer 282
5.3.8 osgParticle::CenteredPlacer 283
5.3.9 osgParticle::BoxPlacer 284
5.3.10 osgParticle::PointPlacer 286
5.3.11 osgParticle::SectorPlacer 287
5.3.12 osgParticle::ParticleEffect 288
5.3.13 osgParticle:FluidProgram 291
第6章 文字、相机与LOD 293
6.1 多视口 293
6.1.1 运用多相机创建多视口 293
6.1.2 使用多窗口创建多视口 297
6.1.3 使用CompositeViewer创建多视口 300
6.1.4 多通道的建立 306
6.2 RTT 307
6.2.1 RTT基础 307
6.2.2 使用RTT实现瞄准镜效果 312
6.2.3 使用RTT实现导航图 316
6.3 HUD 325
6.3.1 HUD基础 325
6.3.2 改变场景的背景 328
6.3.3 使用HUD创建菜单 331
6.4 LOD 342
6.5 本章所涉及的类参考 345
6.5.1 osg::Camera 345
6.5.2 osg::LOD 354
6.5.3 osg::Text 357
6.5.4 osgViewer::CompositeViewer 363
第7章 着色语言 368
7.1 着色语言简介 368
7.1.1 渲染管线 368
7.1.2 顶点着色器 369
7.1.3 片元着色器 373
7.2 着色语言应用 375
7.2.1 噪声 375
7.2.2 图像过滤 380
参考文献 384