标题：3D游戏引擎设计(实时计算机图形学的应用方法)
版权信息
书 名: 3D游戏引擎设计(  实时计算机图形学的应用方法)
作　者：(美国)DavidH.Eberly
出版社： 人民邮电出版社
出版时间： 2009
ISBN: 9787115195531
开本： 16
定价: 138.00 元
内容简介
《3D游戏引擎设计实时计算机图形学的应用方法(英文版·第二版)》深入剖析了3D游戏引擎的设计，书中许多内容对于更好地理解3D计算机图形学也极有帮助。《3D游戏引擎设计实时计算机图形学的应用方法(英文版·第二版)》首先介绍了几何转换和坐标系统等较基础的内容，然后介绍曲线、渲染、效果等高级知识。《3D游戏引擎设计实时计算机图形学的应用方法(英文版·第二版)》基于作者自身在游戏产业中的工作、研究经验，提供了算法、编程技术、代码等大量实用信息，对于游戏设计者及相应的编程人员来说，是一本非常有价值的参考书。
《3D游戏引擎设计实时计算机图形学的应用方法(英文版·第二版)》适合高等院校相关专业的师生、接受游戏软件开发培训的学生、相关技术人员及游戏开发人员阅读。
作者简介
DavidH.Eberly著名游戏开发大师。实时三维游戏引擎Netlmmerse和Gamebryo（支持了文明、辐射和战锤等著名游戏）的核心开发者之一。目前是GeometricTools公司总裁，主持设计了实时三维游戏引擎WildMagic。他拥有数学和计算机科学两个博士学位。除本书外，他还著有GamePhysics和3DGameEngineArchitecture等名著。
编辑推荐
《3D游戏引擎设计实时计算机图形学的应用方法(英文版·第二版)》是3D游戏引擎设计的经典著作，是作者多年游戏开发工作经验的结晶。书中以一个真实的引擎WildMagic为例，对3D游戏引擎的开发进行了全面而且深入的阐释，不仅讲述了必要的数学、物理和图形学理论知识和基本算法，还第一次揭示了设计和构建一个真实的实时图形引擎所需的各种复杂技术和过程。内容涵盖图形系统、软件和硬件渲染、场景图形、基于控制器的动画、空间排序、碰撞检测、数值方法、内存管理等。书中附有大量代码示例，完整实现了核心算法。
国内第1本讲述3D游戏引擎设计的书。
目录
Chapter1　Introduction　1
1.1　TheEvolutionofGraphicsHardwareandGames　1
1.2　TheEvolutionofThisBookandItsSoftware　2
1.3　ASummaryoftheChapters　3
Chapter2　TheGraphicsSystem　7
2.1　TheFoundation　8
2.1.1　CoordinateSystems　9
2.1.2　HandednessandCrossProducts　10
2.1.3　PointsandVectors　15
2.2　Transformations　18
2.2.1　LinearTransformations　18
2.2.2　AffineTransformations　29
2.2.3　ProjectiveTransformations　31
2.2.4　PropertiesofPerspectiveProjection　35
2.2.5　HomogeneousPointsandMatrices　40
2.3　Cameras　43
2.3.1　ThePerspectiveCameraModel　43
2.3.2　ModelorObjectSpace　48
2.3.3　WorldSpace　48
2.3.4　View,Camera,orEyeSpace　50
2.3.5　Clip,Projection,orHomogeneousSpace　52
2.3.6　WindowSpace　56
2.3.7　PuttingThemAllTogether　58
2.4　CullingandClipping　66
2.4.1　ObjectCulling　66
2.4.2　Back-FaceCulling　67
2.4.3　ClippingtotheViewFrustum　70
2.5　Rasterizing　77
2.5.1　LineSegments　77
2.5.2　Circles　82
2.5.3　Ellipses　84
2.5.4　Triangles　89
2.6　VertexAttributes　92
2.6.1　Colors　92
2.6.2　LightingandMaterials　92
2.6.3　Textures　99
2.6.4　Transparency,Opacity,andBlending　117
2.6.5　Fog　122
2.6.6　AndManyMore　123
2.6.7　RasterizingAttributes　124
2.7　IssuesofSoftware,Hardware,andAPIs　125
2.7.1　AGeneralDiscussion　125
2.7.2　PortabilityversusPerformance　127
2.8　APIConventions　128
2.8.1　MatrixRepresentationandStorage　129
2.8.2　MatrixComposition　134
2.8.3　ViewMatrices　134
2.8.4　ProjectionMatrices　136
2.8.5　WindowHandedness　139
2.8.6　Rotations　140
2.8.7　FastComputationsUsingtheGraphicsAPI　143
Chapter3　Renderers　147
3.1　SoftwareRendering　149
3.1.1　VertexShaders　149
3.1.2　Back-FaceCulling　151
3.1.3　Clipping　154
3.1.4　Rasterizing　158
3.1.5　EdgeBuffers　159
3.1.6　ScanLineProcessing　161
3.1.7　PixelShaders　164
3.1.8　StencilBuffering　167
3.1.9　DepthBuffering　169
3.1.10　AlphaBlending　170
3.1.11　ColorMasking　171
3.1.12　TextureSampling　171
3.1.13　FrameBuffers　172
3.2　HardwareRendering　173
3.3　AnAbstractRenderingAPI　175
3.3.1　ConstructionandDestruction　175
3.3.2　CameraManagement　176
3.3.3　Global-StateManagement　177
3.3.4　BufferClearing　178
3.3.5　ObjectDrawing　179
3.3.6　Textand2DDrawing　180
3.3.7　Miscellaneous　180
3.3.8　ResourceManagement　182
3.4　TheHeartoftheRenderer　194
3.4.1　DrawingaScene　195
3.4.2　DrawingaGeometricPrimitive　198
3.4.3　ApplyinganEffect　199
3.4.4　LoadingandParsingShaderPrograms　201
3.4.5　ValidationofShaderPrograms　213
Chapter4　SceneGraphs　217
4.1　SceneGraphDesignIssues　217
4.1.1　TheCoreClasses　221
4.1.2　SpatialHierarchyDesign　226
4.1.3　SharingofObjects　230
4.2　GeometricState　233
4.2.1　VertexBuffersandIndexBuffers　233
4.2.2　Transformations　234
4.2.3　BoundingVolumes　244
4.2.4　GeometricTypes　251
4.3　RenderState　259
4.3.1　GlobalState　259
4.3.2　Lights　261
4.3.3　Effects　266
4.4　TheUpdatePass　268
4.4.1　Geometric-StateUpdates　268
4.4.2　Render-StateUpdates　280
4.5　TheCullingPass　289
4.5.1　HierarchicalCulling　293
4.5.2　SortedCulling　296
4.6　TheDrawingPass　297
4.6.1　Single-PassDrawing　298
4.6.2　Single-Effect,MultipassDrawing　302
4.6.3　Multiple-EffectDrawing　304
4.7　SceneGraphCompilers　305
4.7.1　ASceneGraphasanExpression　307
4.7.2　SemanticsofCompilation　311
Chapter5　Controller-BasedAnimation　315
5.1　KeyframeAnimation　317
5.1.1　InterpolationofPosition　317
5.1.2　InterpolationofOrientation　318
5.1.3　InterpolationofScale　318
5.2　KeyframeCompression　320
5.2.1　FittingPointswithaB-SplineCurve　321
5.2.2　EvaluationofaB-SplineCurve　325
5.2.3　OptimizedEvaluationforDegree3　333
5.3　InverseKinematics　339
5.3.1　NumericalSolutionbyJacobianMethods　341
5.3.2　NumericalSolutionbyNonlinearOptimization　342
5.3.3　NumericalSolutionbyCyclicCoordinateDescent　342
5.4　Skinning　347
5.5　VertexMorphing　349
5.6　ParticleSystems　350
Chapter6　SpatialSorting　353
6.1　BinarySpacePartitioningTrees　354
6.1.1　BSPTreeConstruction　355
6.1.2　BSPTreeUsage　357
6.2　Node-BasedSorting　365
6.3　Portals　366
6.4　User-DefinedMaps　375
6.5　OcclusionCulling　375
Chapter7　LevelofDetail　377
7.1　SpritesandBillboards　378
7.2　DiscreteLevelofDetail　379
7.3　ContinuousLevelofDetail　380
7.3.1　SimplificationUsingQuadricErrorMetrics　380
7.3.2　ReorderingofVerticesandIndices　385
7.3.3　Terrain　386
7.4　InfiniteLevelofDetail　387
Chapter8　CollisionDetection　389
8.1　TheMethodofSeparatingAxes　393
8.1.1　ExtremaofConvexPolygonsorConvexPolyhedra　394
8.1.2　StationaryObjects　404
8.1.3　ObjectsMovingwithConstantLinearVelocity　412
8.1.4　OrientedBoundingBoxes　436
8.2　FindingCollisionsbetweenMovingObjects　444
8.2.1　Pseudodistance　444
8.2.2　ContactbetweenMovingIntervals　446
8.2.3　ComputingtheFirstTimeofContact　448
8.2.4　EstimatingtheFirstDerivative　453
8.3　ADynamicCollisionDetectionSystem　455
8.3.1　TheAbstractBaseClass　455
8.3.2　PseudodistancesforSpecificPairsofObjectTypes　461
8.3.3　CollisionCullingwithAxis-AlignedBoundingBoxes　465
8.4　ObjectPicking　472
8.4.1　ConstructingaPickRay　472
8.4.2　SceneGraphSupport　475
8.4.3　StayingonTopofThings　479
8.4.4　StayingOutofThings　481
8.5　PathfindingtoAvoidCollisions　481
8.5.1　Environments,Levels,andRooms　482
8.5.2　MovingbetweenRooms　486
8.5.3　MovingbetweenLevels　486
8.5.4　MovingthroughtheOutdoorEnvironment　488
8.5.5　Blueprints　488
8.5.6　VisibilityGraphs　489
8.5.7　EnvelopeConstruction　494
8.5.8　BasicDataStructures　503
8.5.9　EfficientCalculationoftheVisibilityGraph　504
Chapter9　Physics　507
9.1　ParticleSystems　508
9.2　Mass-SpringSystems　510
9.2.1　CurveMasses　510
9.2.2　SurfaceMasses　513
9.2.3　VolumeMasses　516
9.2.4　ArbitraryConfigurations　519
9.3　DeformableBodies　521
9.4　RigidBodies　522
9.4.1　TheRigidBodyClass　525
9.4.2　ComputingtheInertiaTensor　527
Chapter10　StandardObjects　529
10.1　LinearComponents　529
10.2　PlanarComponents　532
10.3　Boxes　534
10.4　Quadrics　535
10.4.1　Spheres　535
10.4.2　Ellipsoids　535
10.4.3　Cylinders　537
10.4.4　Cones　537
10.5　Sphere-SweptVolumes　538
10.5.1　Capsules　539
10.5.2　Lozenges　539
Chapter11　Curves　541
11.1　Definitions　542
11.2　ReparameterizationbyArcLength　543
11.3　B′ezierCurves　545
11.3.1　Definitions　545
11.3.2　Evaluation　545
11.3.3　DegreeElevation　546
11.3.4　DegreeReduction　546
11.4　Natural,Clamped,andClosedCubicSplines　548
11.4.1　NaturalSplines　550
11.4.2　ClampedSplines　550
11.4.3　ClosedSplines　550
11.5　B-SplineCurves　551
11.5.1　TypesofKnotVectors　552
11.5.2　Evaluation　553
11.5.3　LocalControl　558
11.5.4　ClosedCurves　558
11.6　NURBSCurves　560
11.7　Tension-Continuity-BiasSplines　562
11.8　ParametricSubdivision　566
11.8.1　SubdivisionbyUniformSampling　566
11.8.2　SubdivisionbyArcLength　566
11.8.3　SubdivisionbyMidpointDistance　567
11.8.4　FastSubdivisionforCubicCurves　568
11.9　OrientationofObjectsonCurvedPaths　570
11.9.1　OrientationUsingtheFrenetFrame　571
11.9.2　OrientationUsingaFixedUp-Vector　571
Chapter12　Surfaces　573
12.1　Introduction　573
12.2　B′ezierRectanglePatches　574
12.2.1　Definitions　574
12.2.2　Evaluation　575
12.2.3　DegreeElevation　575
12.2.4　DegreeReduction　576
12.3　B′ezierTrianglePatches　578
12.3.1　Definitions　578
12.3.2　Evaluation　578
12.3.3　DegreeElevation　580
12.3.4　DegreeReduction　580
12.4　B-SplineRectanglePatches　582
12.5　NURBSRectanglePatches　583
12.6　SurfacesBuiltfromCurves　584
12.6.1　CylinderSurfaces　584
12.6.2　GeneralizedCylinderSurfaces　585
12.6.3　RevolutionSurfaces　586
12.6.4　TubeSurfaces　586
12.7　ParametricSubdivision　587
12.7.1　SubdivisionofRectanglePatches　587
12.7.2　SubdivisionofTrianglePatches　602
Chapter13　ContainmentMethods　609
13.1　Spheres　609
13.1.1　PointinSphere　609
13.1.2　SphereContainingPoints　610
13.1.3　MergingSpheres　616
13.2　Boxes　617
13.2.1　PointinBox　617
13.2.2　BoxContainingPoints　618
13.2.3　MergingBoxes　625
13.3　Capsules　627
13.3.1　PointinCapsule　627
13.3.2　CapsuleContainingPoints　628
13.3.3　MergingCapsules　629
13.4　Lozenges　630
13.4.1　PointinLozenge　631
13.4.2　LozengeContainingPoints　631
13.4.3　MergingLozenges　633
13.5　Cylinders　634
13.5.1　PointinCylinder　634
13.5.2　CylinderContainingPoints　634
13.5.3　Least-SquaresLineMovedtoMinimum-AreaCenter　635
13.5.4　MergingCylinders　635
13.6　Ellipsoids　636
13.6.1　PointinEllipsoid　636
13.6.2　EllipsoidContainingPoints　637
13.6.3　MergingEllipsoids　638
Chapter14　DistanceMethods　639
14.1　PointtoLinearComponent　639
14.1.1　PointtoLine　640
14.1.2　PointtoRay　640
14.1.3　PointtoSegment　641
14.2　LinearComponenttoLinearComponent　642
14.2.1　LinetoLine　642
14.2.2　LinetoRay　643
14.2.3　LinetoSegment　644
14.2.4　RaytoRay　645
14.2.5　RaytoSegment　645
14.2.6　SegmenttoSegment　645
14.3　PointtoTriangle　646
14.4　LinearComponenttoTriangle　651
14.4.1　LinetoTriangle　651
14.4.2　RaytoTriangle　654
14.4.3　SegmenttoTriangle　654
14.5　PointtoRectangle　655
14.6　LinearComponenttoRectangle　657
14.6.1　LinetoRectangle　657
14.6.2　RaytoRectangle　659
14.6.3　SegmenttoRectangle　660
14.7　TriangleorRectangletoTriangleorRectangle　661
14.8　PointtoOrientedBox　663
14.9　LinearComponenttoOrientedBox　663
14.9.1　LinetoOrientedBox　664
14.9.2　RaytoOrientedBox　666
14.9.3　SegmenttoOrientedBox　666
14.10　TriangletoOrientedBox　667
14.11　RectangletoOrientedBox　669
14.12　OrientedBoxtoOrientedBox　670
14.13　Miscellaneous　672
14.13.1　PointtoEllipse　672
14.13.2　PointtoEllipsoid　673
14.13.3　PointtoQuadraticCurveortoQuadricSurface　674
14.13.4　PointtoCirclein3D　675
14.13.5　CircletoCirclein3D　676
Chapter15　IntersectionMethods　681
15.1　LinearComponentsandConvexObjects　681
15.2　LinearComponentandPlanarComponent　684
15.3　LinearComponentandOrientedBox　686
15.3.1　Test-IntersectionQuery　686
15.3.2　Find-IntersectionQuery　693
15.4　LinearComponentandSphere　698
15.4.1　LineandSphere　698
15.4.2　RayandSphere　700
15.4.3　SegmentandSphere　701
15.5　LineandSphere-SweptVolume　703
15.5.1　LineandCapsule　703
15.5.2　LineandLozenge　708
15.6　LineandQuadricSurface　709
15.6.1　LineandEllipsoid　709
15.6.2　LineandCylinder　710
15.6.3　LineandCone　710
15.7　CullingObjectsbyPlanes　710
15.7.1　OrientedBoxes　711
15.7.2　Spheres　712
15.7.3　Capsules　712
15.7.4　Lozenges　713
15.7.5　Ellipsoids　713
15.7.6　Cylinders　715
15.7.7　Cones　716
15.7.8　ConvexPolygonsorConvexPolyhedra　717
Chapter16　NumericalMethods　719
16.1　SystemsofEquations　719
16.1.1　LinearSystems　719
16.1.2　PolynomialSystems　720
16.2　Eigensystems　722
16.2.1　ExtremaofQuadraticForms　722
16.2.2　ExtremaofConstrainedQuadraticForms　723
16.3　Least-SquaresFitting　724
16.3.1　LinearFittingofPoints(x,f(x))　724
16.3.2　LinearFittingofPointsUsingOrthogonalRegression　725
16.3.3　PlanarFittingofPoints(x,y,f(x,y))　726
16.3.4　PlanarFittingofPointsUsingOrthogonalRegression　726
16.3.5　FittingaCircleto2DPoints　727
16.3.6　FittingaSphereto3DPoints　729
16.3.7　FittingaQuadraticCurveto2DPoints　731
16.3.8　FittingaQuadricSurfaceto3DPoints　731
16.4　Minimization　732
16.4.1　MethodsinOneDimension　732
16.4.2　MethodsinManyDimensions　733
16.5　RootFinding　736
16.5.1　MethodsinOneDimension　736
16.5.2　MethodsinManyDimensions　740
16.6　Integration　742
16.6.1　RombergIntegration　742
16.6.2　GaussianQuadrature　746
16.7　DifferentialEquations　747
16.7.1　OrdinaryDifferentialEquations　747
16.7.2　PartialDifferentialEquations　750
16.8　FastFunctionEvaluation　754
16.8.1　SquareRootandInverseSquareRoot　754
16.8.2　Sine,Cosine,andTangent　755
16.8.3　InverseTangent　756
Chapter17　Rotations　759
17.1　RotationMatrices　759
17.1.1　Axis/AngletoMatrix　760
17.1.2　MatrixtoAxis/Angle　762
17.1.3　Interpolation　763
17.2　Quaternions　764
17.2.1　TheLinearAlgebraicViewofQuaternions　766
17.2.2　RotationofaVector　769
17.2.3　ProductofRotations　769
17.2.4　TheClassicalViewofQuaternions　770
17.2.5　Axis/AngletoQuaternion　772
17.2.6　QuaterniontoAxis/Angle　773
17.2.7　MatrixtoQuaternion　773
17.2.8　QuaterniontoMatrix　773
17.2.9　Interpolation　774
17.3　EulerAngles　774
17.4　PerformanceIssues　777
17.5　TheCurseofNonuniformScaling　778
17.5.1　Gram-SchmidtOrthonormalization　779
17.5.2　Eigendecomposition　781
17.5.3　PolarDecomposition　781
17.5.4　SingularValueDecomposition　781
Chapter18　Object-OrientedInfrastructure　783
18.1　Object-OrientedSoftwareConstruction　783
18.1.1　SoftwareQuality　784
18.1.2　Modularity　785
18.1.3　Reusability　787
18.1.4　FunctionsandData　788
18.1.5　ObjectOrientation　789
18.2　Style,NamingConventions,andNamespaces　790
18.3　Run-TimeTypeInformation　793
18.3.1　Single-InheritanceSystems　793
18.3.2　Multiple-InheritanceSystems　797
18.3.3　MacroSupport　799
18.4　Templates　800
18.5　SharedObjectsandReferenceCounting　802
18.6　Streaming　808
18.6.1　TheStreamAPI　809
18.6.2　TheObjectAPI　812
18.7　NamesandUniqueIdentifiers　819
18.7.1　NameString　820
18.7.2　UniqueIdentification　820
18.8　InitializationandTermination　822
18.8.1　PotentialProblems　822
18.8.2　AGenericSolutionforClasses　825
18.9　AnApplicationLayer　831
18.9.1　ProcessingCommand-LineParameters　832
18.9.2　TheApplicationClass　836
18.9.3　TheConsoleApplicationClass　839
18.9.4　TheWindowApplicationClass　842
18.9.5　TheWindowApplication3Class　849
18.9.6　ManagingtheEngines　867
Chapter19　MemoryManagement　873
19.1　MemoryBudgetsforGameConsoles　873
19.2　LeakDetectionandCollectingStatistics　875
19.3　GeneralMemoryManagementConcepts　882
19.3.1　AllocationUsingSequential-FitMethods　882
19.3.2　AllocationUsingBuddy-SystemMethods　891
19.3.3　AllocationUsingSegregated-StorageMethods　895
19.3.4　MemoryCompaction　895
Chapter20　SpecialEffectsUsingShaders　897
20.1　VertexColors　897
20.2　LightingandMaterials　899
20.2.1　AmbientLights　901
20.2.2　DirectionalLights　902
20.2.3　PointLights　903
20.2.4　Spotlights　904
20.3　Textures　909
20.4　Multitextures　911
20.5　BumpMaps　914
20.5.1　GeneratingNormalMaps　914
20.5.2　GeneratingTangent-SpaceInformation　916
20.5.3　TheShaderPrograms　919
20.6　GlossMaps　923
20.7　SphereMaps　926
20.8　CubeMaps　929
20.9　Refraction　932
20.10　PlanarReflection　935
20.11　PlanarShadows　939
20.12　ProjectedTextures　943
20.13　ShadowMaps　945
20.14　VolumetricFog　947
20.15　Skinning　950
20.16　Iridescence　951
20.17　WaterEffects　955
Appendix　CreatingaShaderinWildMagic　957
A.1　ShaderProgramsforanIllustrativeApplication　958
A.2　CreatingtheGeometricData　963
A.3　AClasslessShaderEffect　965
A.4　CreatingaClassDerivedfromShaderEffect　968
A.5　DynamicUpdatesfortheShaderConstants　970
References　973
Index　981
AbouttheCD-ROM　1017
……