3dwoo大學簡體電腦書店
Java 3D與計算機三維動態圖形網絡編程設計
( 簡體 字)
作者:高新瑞類別:1. -> 程式設計 -> JAVA -> Java
出版社:清華大學出版社Java 3D與計算機三維動態圖形網絡編程設計 3dWoo書號: 40026
詢問書籍請說出此書號!
有庫存
NT售價: 300
出版日:9/5/2014
頁數:558
光碟數:0
站長推薦:
印刷:黑白印刷語系: ( 簡體 字 )
ISBN:9787302374831 加入購物車加到我的最愛 (請先登入會員)
(簡體書上所述之下載連結耗時費功, 恕不適用在台灣, 若讀者需要請自行嘗試, 恕不保證, 繁體書的下載亦請直接連絡出版社)
第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.3Brep邊界面模型9
1.3.4翼邊數據結構與半邊數據結構10
1.3.5Solid實體與CSG構造實體幾何11
1.3.6Brep邊界面模型與多邊形圖形學12
1.3.7VOXEL體素模型12
1.3.8DEXEL深度元素模型13
1.3.9VOXEL體素模型與多屬性體
圖形學14
1.3.10八叉樹表示法15
1.4逆向工程16
1.5STL三角網格數據文件17
1.6快速原型系統18
1.7總結20第2章Java 3D基本概念21
2.1Java 3D的包及其功能21
2.2Java 3D的重要概念222.2.1Java 3D高分辨率大尺度坐標系22
2.2.2虛擬空間24
2.2.3場所24
2.2.4VirtualUniverse類、Locale類與
HiResCoord類之間的關系25
2.2.5默認情況下Java 3D坐標系26
2.2.6Java 3D場景圖26
2.2.7Java 3D的3種可視化模式30
2.2.8SimpleUniverse類32
2.2.9Java 3D的三維空間范圍定義
Bounds類33
2.2.10所有場景圖節點的默認坐標系
和原點33
2.2.11激活與預編譯的概念
(Live and Compiled)35
2.2.12Java 3D的SharedGroup類共享子
圖功能35
2.2.13Java 3D的CloneTree方法克隆子
圖功能36
2.2.14Java 3D的View類觀察模型36
2.2.15在虛擬世界中的ViewPlatform
觀察平臺37
2.2.16產生一個View觀察38
2.2.17Java 3D觀察模型概述39
2.2.18虛擬世界坐標系與ViewPlatform
觀察平臺坐標系40
2.2.19共存坐標系統40
2.2.20一個最小的環境40
2.2.21Java 3D最常用的顯示設備41
2.2.22行為與插值器
(Behaviors and Znterpolators)41
2.3總結45第3章Java 3D基本圖形功能46
3.1Java 3D的場景式管理46
3.2SimpleUniverse類及其方法49
3.3ViewingPlatform類及其方法50
3.4Java 3D包、類的結構關系52
3.5Java 3D的基本圖形功能類53
3.6Shape3D類54
3.7Appearance類56
3.8BranchGroup類58
3.9TransformGroup類58
3.10GeometryArray類59
3.11點PointArray類63
3.11.1PointArray類63
3.11.2PointAttributes類63
3.11.3像素64
3.11.4直線DDA算法64
3.11.5紅、綠、藍三原色合成65
3.11.6IndexedPointArray類69
3.12線LineArray類71
3.12.1LineArray類71
3.12.2LineAttributes類72
3.12.3IndexedLineArray類75
3.12.4LineStripArray類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.18IndexedTriangleArray類94
3.19四邊面QuadArray類95
3.20IndexedQuadArray類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.28Java語言多維數組與計算機幾何
數據定義109
3.28.1線性數據點與二維數組表示109
3.28.2平面型數據點與三維
數組表示110
3.28.3空間層狀立體數據點與四維
數組表示111
3.29Java語言多維數組與Java 3D一維數組
之間的轉換112
3.30體與面的三角網格與四邊網格表示112
3.30.1四邊網格曲面表示112
3.30.2三角網格曲面表示117
3.30.3混合多邊形網格表示118
3.31Tuple3f類118
3.32Vector3f類119
3.33三角網格與四邊網格混合使用實例124
3.34GeometryInfo類132
3.35Stripifier類136
3.36Triangulator類136
3.37Java 3D的實體字體144
3.37.1Font3D類144
3.37.2FontExtrusion類144
3.37.3Text3D類145
3.38總結148第4章復雜曲線、曲面設計149
4.1Bezier曲線、曲面設計149
4.1.1Bezier曲線149
4.1.2三次Bezier曲線的矩陣表示151
4.1.3二次Bezier曲線的矩陣表示155
4.1.4一次Bezier曲線的矩陣表示156
4.1.5三次Bezier曲線切線計算156
4.1.6Bezier曲線的De Casteljau算法156
4.1.7三次Bezier曲面的矩陣表示157
4.1.8二次Bezier曲面的矩陣表示171
4.1.9Bezier曲線、曲面拼接的連續性171
4.1.10Bezier曲面法向量計算172
4.1.11Bezier曲面的性質172
4.2B樣條曲線、曲面設計173
4.2.1B樣條基函數及其遞推公式173
4.2.2三次B樣條基函數直接
計算公式175
4.2.3二次B樣條基函數直接
計算公式177
4.2.4參數u節點值的分布對B樣條基
函數的影響177
4.2.5B樣條曲線設計180
4.2.6均勻參數節點的B樣條曲線
矩陣表示182
4.2.7內部重節點對B樣條曲線
的影響186
4.2.8B樣條曲面定義187
4.2.9雙三次、雙二次均勻參數節點B樣
條曲面的矩陣表示187
4.2.10雙三次均勻參數節點B樣條曲面
的拼接194
4.3NURBS曲線、曲面設計198
4.3.1NURBS曲線的定義198
4.3.2NURBS曲線的齊次坐標表示200
4.3.3NURBS曲線的矩陣表示200
4.3.4NURBS曲線的u參數化算法201
4.3.5NURBS曲面的定義202
4.3.6NURBS曲面的矩陣塊表示203
4.4NURBS體造型與可視化203
4.4.1NURBS體方程203
4.4.2NURBS體的u、v、w參數空間203
4.4.3NURBS體的體素模型表示與
可視化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.2Java 3D的坐標變換214
5.2.1AxisAngle4f類、AxisAngle4d類214
5.2.2Transform3D類與AxisAngle4f類、
AxisAngle4d類相關的方法215
5.2.3Quat4d類、Quat4f類216
5.2.4Matrix3d類、Matrix3f類217
5.2.5Transform3D類218
5.2.6Transform3D類最常用的方法219
5.3TransformGroup類及其與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.3Z 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.13Gouraud算法和Phong算法 239
5.13.1平面光照明模型(Flat Shading)240
5.13.2Gouraud算法240
5.13.3Phong算法241
5.14Whitted整體光照明模型243
5.14.1Whitted整體光照明模型243
5.14.2光線追蹤算法(Raytracing)244
5.15Java 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.16Switch 類247
5.17OrderedGroup類249
5.18SharedGroup類258
5.19Link類258
5.20圖形剪裁269
5.20.1三維剪裁空間269
5.20.2二維平面剪裁區間269
5.21總結271第6章Java 3D動態圖形技術與變形272
6.1插值器行為272
6.2Alpha類272
6.3將時間匹配成Alpha273
6.4Alpha加速275
6.5Behavior類278
6.6WakeupCondition類283
6.6.1WakeupAnd類283
6.6.2WakeupOr類284
6.6.3WakeupAndOfOrs類284
6.6.4WakeupOrOfAnds類284
6.6.5WakeupCriterion類284
6.6.6WakeupOnElapsedTime類285
6.6.7WakeupOnElapsedFrames類285
6.6.8WakeupOnActivation類286
6.6.9WakeupOnDeactivation類286
6.6.10WakeupOnAWTEvent類286
6.6.11WakeupOnTransformChange類287
6.6.12WakeupOnBehaviorPost類287
6.6.13WakeupOnViewPlatformEntry類288
6.6.14WakeupOnViewPlatformExit類288
6.6.15WakeupOnCollisionEntry類288
6.6.16WakeupOnCollisionExit類289
6.6.17WakeupOnCollisionMovement類290
6.6.18WakeupOnSensorEntry類291
6.6.19WakeupOnSensorExit類292
6.7Interpolator類292
6.7.1ColorInterpolator類293
6.7.2TransparencyInterpolator類297
6.7.3SwitchValueInterpolator類300
6.7.4TransformInterpolator類305
6.7.5RotationInterpolator類306
6.7.6PositionInterpolator類327
6.7.7ScaleInterpolator類330
6.7.8KBSplinePathInterpolator類333
6.7.9KBRotPosScaleSplinePath
Interpolator類334
6.7.10TCBSplinePathInterpolator類335
6.7.11RotPosScaleTCBSplinePath
Interpolator類336
6.7.12TCBKeyFrame類336
6.7.13PathInterpolator類341
6.7.14PositionPathInterpolator類343
6.7.15RotationPathInterpolator類348
6.7.16RotPosPathInterpolator類352
6.7.17RotPosScalePathInterpolator類357
6.8LOD類362
6.9Billboard類370
6.10Morph類378
6.11KeyNavigatorBehavior類385
6.12MouseBehavior類400
6.12.1MouseBehaviorCallback接口402
6.12.2MouseRotate類402
6.12.3MouseTranslate類404
6.12.4MouseWheelZoom類405
6.12.5MouseZoom類406
6.13PickMouseBehavior類418
6.13.1PickingCallback接口419
6.13.2PickTool類419
6.13.3PickRotateBehavior類420
6.13.4PickTranslateBehavior類421
6.13.5PickZoomBehavior類422
6.14ViewPlatformBehavior類430
6.14.1ViewPlatformAWTBehavior類431
6.14.2WandViewBehavior類432
6.15總結433第7章Java 3D的紋理與紋理映射434
7.1紋理與紋理映射原理434
7.1.1紋理映射435
7.1.2幾何體表面的凸凹紋理435
7.2Java 3D的紋理映射436
7.3TextureLoader類437
7.4TextureAttributes類439
7.5Texture類443
7.6Texture2D類448
7.7Texture3D類450
7.8TextureCubeMap類451
7.9TextureUnitState類453
7.10TexCoordGeneration類454
7.11TexCoord2f類457
7.12TexCoord3f類458
7.13TexCoord4f類458
7.14ImageComponent類458
7.15ImageComponent2D類459
7.16ImageComponent3D類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.2Loader接口499
8.3Lw3dLoader類500
8.4ObjectFile類501
8.5LoaderBase類503
8.6Wavefront的.obj文件格式與Java 3D模型
文件格式的轉換503
8.73ds Max的.3ds文件格式與Java 3D模型
文件格式的轉換505
8.8總結508第9章Java 3D Sound聲音類509
9.1引言509
9.2Sound類509
9.3BackgroundSound類513
9.4PointSound類513
9.5ConeSound類515
9.6MediaContainer類518
9.7PointSound類的應用519
9.8ConeSound類的應用521
9.9BackgroundSound類的應用524
9.10總結526第10章Brep邊界面模型、DEXEL模型、VOXEL
模型及其轉換527
10.1引言527
10.2Brep邊界面模型528
10.3Brep邊界面模型的DEXEL模型529
10.3.1Brep邊界面模型的單向DEXEL
模型數據結構529
10.3.2DEXEL射線與空間平面凸多邊形
的求交算法531
10.3.3單向DEXEL模型空間體的布爾
運算533
10.4Brep邊界面模型的單向DEXEL模型與體素
模型轉化534
10.5Brep邊界面模型的三向DEXEL模型、體素
模型與體素化算法534
10.5.1三軸向DEXEL射線組群的數據
結構535
10.5.2Marching Cubes算法與幾何體邊
界體素、體內體素確定537
10.6體素模型空間體素屬性的定義539
10.7Brep邊界面模型在同一三向DEXEL模型
空間的布爾運算53910.8Brep邊界面模型的體素模型及體素的
屬性表示540
10.9單向DEXEL模型與快速原型系統541
10.10Brep邊界面模型的三向DEXEL模型
與人造微孔骨結構設計543
10.11總結544附錄AJava 3D包、類結構關系545附錄BJDK 1.7、Java 3D 1.5、JCreator LE 5.00的
下載與安裝556參考文獻560
本書以多邊形圖形學(Polygon Graphics)與多屬性體圖形學(Volume Graphics)概念為基礎,介紹了Java 3D主要功能,包括Java 3D虛擬空間與場景式管理,Java 3D點、線、三角網格、四邊網格繪制,Java 3D坐標變換、幾何體變形與動態圖形及交互技術,Java 3D紋理映射,Java 3D聲音功能,Java 3D外部圖形文件導入等,給出了Java、Java 3D編程實例。本書還介紹了計算機圖形學的重要概念與算法,Bezier、B樣條與NURBS曲線、曲面設計與拼接技術,給出了Java、Java 3D編程實例,介紹了DEXEL模型與VOXEL體素模型,以及將Brep邊界面模型轉換為DEXEL模型與VOXEL體素模型的算法及應用。
本書適合作為高等院校計算機圖形學課程的教材,也可作為研究生與科研工作者的參考書。

Java 3D是一種應用程序編程接口(Application Programming Interface,API),是Java語言的三維圖形系統開發接口,是Internet環境下的跨平臺三維圖形開發平臺。Java 3D是Java API的Java Media功能的一部分,能夠在多種計算機系統平臺上使用。用Java 3D API編寫的應用程序能夠使用所有Java類,因此,使用Java、Java 3D開發的三維圖形系統與Internet具有很好的集成性。
Java 3D具有強大的圖形圖像處理能力。Java 3D API集成了現有圖形API的功能,并引入了一些新技術。Java 3D API低層次功能集成了諸如Direct3D、OpenGL、QuickDraw3D與XGL的優秀功能,而Java 3D API高層次功能則采用了場景圖管理系統(Scene Graphbased Systems)的先進技術。Java 3D引入了3D空間聲音功能,能為用戶提供立體環繞聲音效果。
Java 3D為系統開發者創建、操作與可視化三維場景提供了高水平架構。應用這種架構,應用程序開發者能夠描述一個足夠大的虛擬世界空間,并為Java 3D可視化這個虛擬空間及其內容提供充分的相關信息。
Java 3D允許程序員定義場景圖中更多信息,允許控制三維模型形狀、顏色與透明度等,允許控制背景效果、光照、環境霧效等,允許設置光源,允許設置三維幾何體的相關行為(Behaviors)。可對場景中的三維形體隨時間進行平移、旋轉、伸縮、變形變換。通過應用Java、Java 3D編程可實現鍵盤、鼠標與Java 3D三維圖形應用系統之間的交互控制。
因此,Java 3D已廣泛地應用于計算機三維動漫設計、計算機三維游戲開發、科學計算可視化、機械設計、人體醫學三維重建、教育等領域。
目前,Java語言系統開發工具(Java Development Kit)的最新版本是JDK 7,Java 3D的最新版本是Java 3D API 1.5.2。
本書主要內容包括:
① 計算機圖形學的重要概念與算法;
② Java 3D的主要功能;
③ 復雜曲面設計與拼接技術;
④ 各項功能的Java、Java 3D編程實例;
⑤ DEXEL模型與VOXEL體素模型,將Brep邊界面模型(Boundary Representation, Brep)轉換為DEXEL模型與VOXEL體素模型的算法,并給出工程應用實例。
本書介紹了Java 3D的主要功能,主要內容包括Java 3D的虛擬空間與場景式管理,Java 3D的點、線、三角網格、四邊網格面繪制,Java 3D的坐標變換、Java 3D的幾何體變形與動態圖形及交互技術,Java 3D的紋理映射,Java 3D的聲音功能,Java 3D的外部圖形文件導入等。并針對這些功能分別給出了Java、Java 3D編程實例,以方便讀者學習。
在介紹Java 3D主要功能的同時,還介紹了計算機圖形學的概念與算法。介紹計算機圖形學的知識,一是為了更好地理解本書所介紹的Java 3D的功能;二是為了應用Java、Java 3D編程來開發復雜的三維圖形系統。在應用Java、Java 3D編程開發三維圖形系統時,除了需要掌握Java 3D功能、Java語言的編程外,還必須掌握一定的計算圖形學的知識。因此,本書在編寫時兼顧了這兩個方面,有利于讀者全面學習與提高。
第4章介紹了三維復雜曲面設計與拼接技術,如Bezier曲面設計與拼接、B樣條曲面設計與拼接、NURBS曲面設計、NURBS體設計。并且給出了Bezier曲面設計與拼接、B樣條曲面設計與拼接的Java、Java 3D編程實例。參考這些復雜曲面的設計與拼接技術以及Java、Java 3D編程實例,可設計出復雜的三維人物模型。這種復雜的三維人物模型設計是計算機三維動漫設計與計算機三維游戲開發的基礎。
第10章介紹了DEXEL模型與VOXEL體素模型的概念,介紹了將Brep邊界面模型轉換為DEXEL模型與VOXEL體素模型的算法,介紹了DEXEL模型的并、交、差布爾運算算法,介紹了VOXEL體素模型的屬性表示,并給出工程應用實例。
多邊形圖形學(Polygon Graphics)與多屬性體圖形學(Volume Graphics)的概念是本書的重要基礎,多邊形是最少由三條邊圍成的平面封閉圖形,如三角形、四邊形、六邊形等。多邊形包含凸多邊形、凹多邊形,以及內部無孔洞的多邊形、內部含有孔洞的多邊形等。多邊形的英文就是Polygon。將由一系列多邊形面圍成的一個封閉的體,稱為多面體(Polyhedron)。由復雜曲面生成的一個封閉的體可應用一系列的多邊形面(三角網格面或四邊網格面)來逼近。可將這兩種三維模型都稱為Brep邊界面模型(Boundary Representation),通過對Brep邊界面模型中的每個多邊形的掃描實現對三維模型的隱藏面消除與可視化。將這種傳統的計算機圖形學稱為多邊形圖形學。傳統的Brep邊界面模型,只能比較精確地表示幾何體的邊界信息,無法表示幾何體內部的顏色、材質、狀態等屬性信息。因此,Brep邊界面模型在表示體的復雜內部屬性方面具有其無法克服的先天缺陷。
要表示幾何體的各種復雜內部屬性,就必須找到一種帶有體特征的三維幾何元素。這種元素就是體素(Volume Element,VOXEL)。將一個三維幾何體空間分割成體素空間,每個體素有其自己的顏色、材質、狀態等屬性。最常用體素類型包括立方體、長方體、四面體。用立方體、長方體、四面體分割的幾何體空間是一個完整的空間,中間沒有縫隙。因此,可用具有不同屬性的小體素的組合表示幾何體內部的復雜屬性,這樣的模型稱為VOXEL體素模型。為確保三維幾何體表示的精度,體素的大小可根據需要選取。將這種基于體素的三維模型表示與可視化技術稱為多屬性體圖形學(Volume Graphics),Volume是指內部具有復雜屬性的體,和Solid實體不同。在Volume Graphics中,三維圖形的最小處理單元是小體素,而不是多邊形,其可視化算法也不相同。對體素模型的顯示技術主要包括空間物體模型順序(Object Order)、圖像順序(Image Order)和域方法(Domain Method)等。
目前,多邊形圖形學與多屬性體圖形學并存,多屬性體圖形學包含多邊形圖形學,多屬性體圖形學代表了計算機圖形學的發展方向。人體醫學三維模型重建研究一直與多屬性體圖形學的發展密切相關。醫學三維重建算法是多屬性體圖形學算法的基礎。要表示一個體素,或者用體素8個角點的三維坐標,或者用體素中心點的三維坐標再加三向步長。這兩種表示,不管采用哪一種,都會占用比較大的內存空間,這方面限制了多屬性體圖形學發展。
本書的編寫特點就是在介紹Java 3D主要功能與計算機圖形學算法的基礎上,針對每項功能給出了Java、Java 3D編程實例,由淺入深,循序漸進。因此,只要學習過Java語言,就可以很好地學習該書的內容。如果系統地學習了本書的內容,就能應用Java、Java 3D編程設計與開發三維圖形系統,設計復雜的三維人物模型,對三維形體進行變形,定義三維人物模型的動作,定義鍵盤、鼠標對三維人物模型的交互控制與操作,并配以聲音效果,實現計算機三維動漫設計與計算機三維游戲開發等。結合Java語言對Internet的強大支持功能,實現基于Internet的三維動態圖形系統的設計與開發。
附錄A包含Java 3D的包、類結構關系。
附錄B包含JDK 1.7、Java 3D 1.5、JCreator LE 5.00的下載與安裝說明,可供參考。
根據多年Java語言與計算機圖形學的教學經驗以及基于Java 、Java 3D的三維圖形系統、CAD系統開發與工程應用經驗,結合計算機圖形學與CAD技術的最新發展,作者編寫了這本書。由于時間倉促,加之水平有限,書中難免有錯誤與不足之處,歡迎讀者批評指正。
本書適合作為高等院校計算機圖形學教材,也可作為研究生與廣大科研工作者的參考書。
本教材獲海南省自然科學基金資助(項目編號: 613157)、海南大學2013年度自編教材資助項目(項目編號: Hdzbjc1301)。


編者
2014年5月
pagetop