第1章 绪论 1
1.1 计算机图形学 1
1.1.1 多边形图形学 1
1.1.2 多属性体图形学 2
1.2 计算机图形学应用 2
1.2.1 计算机辅助设计与制造(CAD/CAM) 2
1.2.2 地形地貌与自然资源图 3
1.2.3 虚拟现实技术 3
1.2.4 科学计算可视化 4
1.2.5 计算机三维动漫设计 4
1.2.6 计算机三维网络游戏开发 7
1.2.7 三维设计常用的软件系统 8
1.3 计算机图形学中的重要概念 8
1.3.1 计算机三维模型表示 8
1.3.2 线架模型 9
1.3.3 Brep边界面模型 9
1.3.4 翼边数据结构与半边数据结构 10
1.3.5 Solid实体与CSG构造实体几何 11
1.3.6 Brep边界面模型与多边形图形学 12
1.3.7 VOXEL体素模型 12
1.3.8 DEXEL深度元素模型 13
1.3.9 VOXEL体素模型与多属性体图形学 14
1.3.10 八叉树表示法 15
1.4 逆向工程 16
1.5 STL三角网格数据文件 17
1.6 快速原型系统 18
1.7 总结 20
第2章 Java 3D基本概念 21
2.1 Java 3D的包及其功能 21
2.2 Java 3D的重要概念 22
2.2.1 Java 3D高分辨率大尺度坐标系 22
2.2.2 虚拟空间 24
2.2.3 场所 24
2.2.4 VirtualUniverse类、Locale类与HiResCoord类之间的关系 25
2.2.5 默认情况下Java 3D坐标系 26
2.2.6 Java 3D场景图 26
2.2.7 Java 3D的3种可视化模式 30
2.2.8 SimpleUniverse类 32
2.2.9 Java 3D的三维空间范围定义Bounds类 33
2.2.10 所有场景图节点的默认坐标系和原点 33
2.2.11 激活与预编译的概念(Live and Compiled) 35
2.2.12 Java 3D的SharedGroup类共享子图功能 35
2.2.13 Java 3D的CloneTree方法克隆子图功能 36
2.2.14 Java 3D的View类观察模型 36
2.2.15 在虚拟世界中的ViewPlatform观察平台 37
2.2.16 产生一个View观察 38
2.2.17 Java 3D观察模型概述 39
2.2.18 虚拟世界坐标系与ViewPlatform观察平台坐标系 40
2.2.19 共存坐标系统 40
2.2.20 一个最小的环境 40
2.2.21 Java 3D最常用的显示设备 41
2.2.22 行为与插值器(Behaviors and Znterpolators) 41
2.3 总结 45
第3章 Java 3D基本图形功能 46
3.1 Java 3D的场景式管理 46
3.2 SimpleUniverse类及其方法 49
3.3 ViewingPlatform类及其方法 50
3.4 Java 3D包、类的结构关系 52
3.5 Java 3D的基本图形功能类 53
3.6 Shape3D类 54
3.7 Appearance类 56
3.8 BranchGroup类 58
3.9 TransformGroup类 58
3.10 GeometryArray类 59
3.11 点PointArray类 63
3.11.1 PointArray类 63
3.11.2 PointAttributes类 63
3.11.3 像素 64
3.11.4 直线DDA算法 64
3.11.5 红、绿、蓝三原色合成 65
3.11.6 IndexedPointArray类 69
3.12 线LineArray类 71
3.12.1 LineArray类 71
3.12.2 LineAttributes类 72
3.12.3 IndexedLineAtray类 75
3.12.4 LineStripArray类 77
3.13 多边形属性类PolygonAttributes类 80
3.14 多边形面及其法向量 81
3.14.1 多边形的法向量计算 81
3.14.2 多边形可视化的填充算法 82
3.15 三角面TriangleArray类 84
3.16 三角带TriangleStripArray类 86
3.17 三角扇TriangleFanArray类 89
3.18 IndexedTriangleArray类 94
3.19 四边面QuadArray类 95
3.20 IndexedQuadArray类 97
3.21 颜色属性ColoringAttributes类 98
3.22 材质Material类 99
3.23 透明属性TransparencyAttributes类 102
3.24 光源Light类 103
3.25 点光源PointLight类 105
3.26 平行光源DirectionalLight类 106
3.27 环境光源AmbientLight类 106
3.28 Java语言多维数组与计算机几何数据定义 109
3.28.1 线性数据点与二维数组表示 109
3.28.2 平面型数据点与三维数组表示 110
3.28.3 空间层状立体数据点与四维数组表示 111
3.29 Java语言多维数组与Java 3D一维数组之间的转换 112
3.30 体与面的三角网格与四边网格表示 112
3.30.1 四边网格曲面表示 112
3.30.2 三角网格曲面表示 117
3.30.3 混合多边形网格表示 118
3.31 Tuple3f类 118
3.32 Vector3f类 119
3.33 三角网格与四边网格混合使用实例 124
3.34 GeometryInfo类 132
3.35 Stripifier类 136
3.36 Triangulator类 136
3.37 Java 3D的实体字体 144
3.37.1 Font3D类 144
3.37.2 FontExtrusion类 144
3.37.3 Text3D类 145
3.38 总结 148
第4章 复杂曲线、曲面设计 149
4.1 Bezier曲线、曲面设计 149
4.1.1 Bezier曲线 149
4.1.2 三次Bezier曲线的矩阵表示 151
4.1.3 二次Bezier曲线的矩阵表示 155
4.1.4 一次Bezier曲线的矩阵表示 156
4.1.5 三次Bezier曲线切线计算 156
4.1.6 Bezier曲线的DeCasteljau算法 156
4.1.7 三次Bezier曲面的矩阵表示 157
4.1.8 二次Bezier曲面的矩阵表示 171
4.1.9 Bezier曲线、曲面拼接的连续性 171
4.1.10 Bezier曲面法向量计算 172
4.1.11 Bezier曲面的性质 172
4.2 B样条曲线、曲面设计 173
4.2.1 B样条基函数及其递推公式 173
4.2.2 三次B样条基函数直接计算公式 175
4.2.3 二次B样条基函数直接计算公式 177
4.2.4 参数u节点值的分布对B样条基函数的影响 177
4.2.5 B样条曲线设计 180
4.2.6 均匀参数节点的B样条曲线矩阵表示 182
4.2.7 内部重节点对B样条曲线的影响 186
4.2.8 B样条曲面定义 187
4.2.9 双三次、双二次均匀参数节点B样条曲面的矩阵表示 187
4.2.10 双三次均匀参数节点B样条曲面的拼接 194
4.3 NURBS曲线、曲面设计 198
4.3.1 NURBS曲线的定义 198
4.3.2 NURBS曲线的齐次坐标表示 200
4.3.3 NURBS曲线的矩阵表示 200
4.3.4 NURBS曲线的u参数化算法 201
4.3.5 NURBS曲面的定义 202
4.3.6 NURBS曲面的矩阵块表示 203
4.4 NURBS体造型与可视化 203
4.4.1 NURBS体方程 203
4.4.2 NURBS体的u、v、w参数空间 203
4.4.3 NURBS体的体素模型表示与可视化 204
4.5 总结 204
第5章 Java 3D的坐标变换与基本形体 205
5.1 图形坐标变换 205
5.1.1 二维空间图形坐标变换 205
5.1.2 三维空间图形坐标变换 209
5.1.3 刚性变换与仿射变换 213
5.1.4 错切变换 213
5.1.5 三维空间图形的组合坐标变换 214
5.2 Java 3D的坐标变换 214
5.2.1 AxisAngle4f类、AxisAngle4d类 214
5.2.2 Transform3D类与AxisAngle4f类、AxisAngle4d类相关的方法 215
5.2.3 Quat4d类、Quat4f类 216
5.2.4 Matrix3d类、Matrix3f类 217
5.2.5 Transform3D类 218
5.2.6 Transform3D类最常用的方法 219
5.3 TransformGroup类及其与Transform3D类之间的关系 222
5.4 两矩阵的乘积与编程 223
5.5 世界坐标系、观察坐标系与Java 3D显示器坐标系 224
5.6 透视投影、平行投影及其计算 225
5.6.1 透视投影计算 225
5.6.2 平行投影计算 225
5.7 隐藏线、隐藏面消除算法 226
5.7.1 隐藏线消除 226
5.7.2 法向量与隐藏面消除 226
5.7.3 Z Buffer隐藏面消除算法 228
5.7.4 区域排序消隐算法 229
5.7.5 扫描线消隐算法 230
5.7.6 光线跟踪消隐算法 230
5.8 三维几何形体的最小包围盒与最小包围球 231
5.8.1 最小包围矩形、最小包围圆 231
5.8.2 最小包围盒、最小包围球 231
5.9 线、面、体几何元素间的求交 232
5.10 包含判定算法 232
5.10.1 点与直线段的包含判定 232
5.10.2 点与圆锥曲线段的包含判定 233
5.10.3 点与参数曲线的包含判定 233
5.10.4 点与平面多边形区域的包含判定 233
5.10.5 同一平面内点与多边形的包含判定 234
5.10.6 点与二次曲面、参数曲面的包含判定 236
5.10.7 点与三维形体的包含判定 236
5.10.8 重叠判定算法 236
5.11 光源的类型 237
5.12 局部光照明计算模型 237
5.13 Gouraud算法和Phong算法 239
5.13.1 平面光照明模型(Flat Shading) 240
5.13.2 Gouraud算法 240
5.13.3 Phong算法 241
5.14 Whitted整体光照明模型 243
5.14.1 Whitted整体光照明模型 243
5.14.2 光线追踪算法(Raytracing) 244
5.15 Java 3D定义的基本形体 245
5.15.1 长方体Box类 245
5.15.2 圆柱体Cylinder类 246
5.15.3 圆锥体Cone类 246
5.15.4 球体Sphere类 246
5.15.5 彩色立方体ColorCube类 247
5.16 Switch类 247
5.17 OrderedGroup类 249
5.18 SharedGroup类 258
5.19 Link类 258
5.20 图形剪裁 269
5.20.1 三维剪裁空间 269
5.20.2 二维平面剪裁区间 269
5.21 总结 271
第6章 Java 3D动态图形技术与变形 272
6.1 插值器行为 272
6.2 Alpha类 272
6.3 将时间匹配成Alpha 273
6.4 Alpha加速 275
6.5 Behavior类 278
6.6 WakeupCondition类 283
6.6.1 WakeupAnd类 283
6.6.2 WakeupOr类 284
6.6.3 WakeupAndOfOrs类 284
6.6.4 WakeupOrOfAnds类 284
6.6.5 WakeupCriterion类 284
6.6.6 WakeupOnElapsedTime类 285
6.6.7 WakeupOnElapsedFrames类 285
6.6.8 WakeupOnActivation类 286
6.6.9 WakeupOnDeactivation类 286
6.6.10 WakeupOnAWTEvent类 286
6.6.11 WakeupOnTransformChange类 287
6.6.12 WakeupOnBehaviorPost类 287
6.6.13 WakeupOnViewPlatformEntry类 288
6.6.14 WakeupCnViewPlatformExit类 288
6.6.15 WakeupOnCollisionEntry类 288
6.6.16 WakeupOnCollisionExit类 289
6.6.17 WakeupOnCollisionMovement类 290
6.6.18 WakeupOnSensorEntry类 291
6.6.19 WakeupOnSensorExit类 292
6.7 Interpolator类 292
6.7.1 ColorInterpolator类 293
6.7.2 TransparencyInterpolator类 297
6.7.3 SwitchValueInterpolator类 300
6.7.4 TransformInterpolator类 305
6.7.5 RotationInterpolator类 306
6.7.6 PositionInterpolator类 327
6.7.7 ScaleInterpolator类 330
6.7.8 KBSplinePathInterpolator类 333
6.7.9 KBRotPosScaleSplinePath-Interpolator类 334
6.7.10 TCBSplinePathInterpolator类 335
6.7.11 RotPosScaleTCBSplinePath-Interpolator类 336
6.7.12 TCBKeyFrame类 336
6.7.13 PathInterpolator类 341
6.7.14 PositionPathInterpolator类 343
6.7.15 RotationPathInterpolator类 348
6.7.16 RotPosPathInterpolator类 352
6.7.17 RotPosScalePathInterpolator类 357
6.8 LOD类 362
6.9 Billboard类 370
6.10 Morph类 378
6.11 KeyNavigatorBehavior类 385
6.12 MouseBehavior类 400
6.12.1 MouseBehaviorCallback接口 402
6.12.2 MouseRotate类 402
6.12.3 MouseTranslate类 404
6.12.4 MouseWheelZoom类 405
6.12.5 MouseZoom类 406
6.13 PickMouseBehavior类 418
6.13.1 PickingCallback接口 419
6.13.2 PickTool类 419
6.13.3 PickRotateBehavior类 420
6.13.4 PickTranslateBehavior类 421
6.13.5 PickZoomBehavior类 422
6.14 ViewPlatformBehavior类 430
6.14.1 ViewPlatformAWTBehavior类 431
6.14.2 WandViewBehavior类 432
6.15 总结 433
第7章 Java 3D的纹理与纹理映射 434
7.1 纹理与纹理映射原理 434
7.1.1 纹理映射 435
7.1.2 几何体表面的凸凹纹理 435
7.2 Java 3D的纹理映射 436
7.3 TextureLoader类 437
7.4 TextureAttributes类 439
7.5 Texture类 443
7.6 Texture2D类 448
7.7 Texture3D类 450
7.8 TextureCubeMap类 451
7.9 TextureUnitState类 453
7.10 TexCoordGeneration类 454
7.11 TexCoord2f类 457
7.12 TexCoord3f类 458
7.13 TexCoord4f类 458
7.14 ImageComponent类 458
7.15 ImageComponent2D类 459
7.16 ImageComponent3D类 460
7.17 基本形体纹理映射 461
7.18 不共面的四点形成的四边形的纹理映射 465
7.19 双三次Bezier曲面的纹理映射 467
7.20 自动纹理坐标生成类TexCoordGeneration的应用 472
7.21 纹理立方体匹配类TextureCubeMap类的应用 479
7.21.1 基本形体TextureCubeMap类的应用 479
7.21.2 双三次Bezier曲面体的Texture-CubeMap纹理映射及其越界 490
7.22 双三次复杂Bezier曲面体的精确纹理映射 493
7.23 总结 498
第8章 Java 3D外部三维图形文件导入 499
8.1 引言 499
8.2 Loader接口 499
8.3 Lw3dLoader类 500
8.4 ObjectFile类 501
8.5 LoaderBase类 503
8.6 Wavefront的.obj文件格式与Java 3D模型文件格式的转换 503
8.7 3ds Max的.3 ds文件格式与Java 3D模型文件格式的转换 505
8.8 总结 508
第9章 Java 3D Sound声音类 509
9.1 引言 509
9.2 Sound类 509
9.3 BackgroundSound类 513
9.4 PointSound类 513
9.5 ConeSound类 515
9.6 MediaContainer类 518
9.7 PointSound类的应用 519
9.8 ConeSound类的应用 521
9.9 BackgroundSound类的应用 524
9.10 总结 526
第10章 Brep边界面模型、DEXEL模型、VOXEL模型及其转换 527
10.1 引言 527
10.2 Brep边界面模型 528
10.3 Brep边界面模型的DEXEL模型 529
10.3.1 Brep边界面模型的单向DEXEL模型数据结构 529
10.3.2 DEXEL射线与空间平面凸多边形的求交算法 531
10.3.3 单向DEXEL模型空间体的布尔运算 533
10.4 Brep边界面模型的单向DEXEL模型与体素模型转化 534
10.5 Brep边界面模型的三向DEXEL模型、体素模型与体素化算法 534
10.5.1 三轴向DEXEL射线组群的数据结构 535
10.5.2 Marching Cubes算法与几何体边界体素、体内体素确定 537
10.6 体素模型空间体素属性的定义 539
10.7 Brep边界面模型在同一三向DEXEL模型空间的布尔运算 539
10.8 Brep边界面模型的体素模型及体素的属性表示 540
10.9 单向DEXEL模型与快速原型系统 541
10.10 Brep边界面模型的三向DEXEL模型与人造微孔骨结构设计 543
10.11 总结 544
附录A Java 3D包、类结构关系 545
附录B JDK 1.7 、Java 3D 1.5 、JCreator LE 5.00的下载与安装 556
参考文献 560