舉報

會員
Hands-On C++ Game Animation Programming
Animationisoneofthemostimportantpartsofanygame.Modernanimationsystemsworkdirectlywithtrack-drivenanimationandprovidesupportforadvancedtechniquessuchasinversekinematics(IK),blendtrees,anddualquaternionskinning.Thisbookwillwalkyouthrougheverythingyouneedtogetanoptimized,production-readyanimationsystemupandrunning,andcontainsallthecoderequiredtobuildtheanimationsystem.You’llstartbylearningthebasicprinciples,andthendelveintothecoretopicsofanimationprogrammingbybuildingacurve-basedskinnedanimationsystem.You’llimplementdifferentskinningtechniquesandexploreadvancedanimationtopicssuchasIK,animationblending,dualquaternionskinning,andcrowdrendering.Theanimationsystemyouwillbuildfollowingthisbookcanbeeasilyintegratedintoyournextgamedevelopmentproject.Thebookisintendedtobereadfromstarttofinish,althougheachchapterisself-containedandcanbereadindependentlyaswell.Bytheendofthisbook,you’llhaveimplementedamodernanimationsystemandgottogripswithoptimizationconceptsandadvancedanimationtechniques.
目錄(284章)
倒序
- 封面
- Hands-On C++ Game Animation Programming
- Why subscribe?
- Contributors About the author
- About the reviewer
- Packt is searching for authors like you
- Preface
- Who this book is for
- What this book covers
- To get the most out of this book
- Conventions used
- Get in touch
- Reviews
- Chapter 1: Creating a Game Window
- Technical requirements
- Creating an empty project
- Creating the application class
- Adding an OpenGL loader
- Getting glad
- Adding glad to the project
- Creating a window
- Global variables
- Opening a window
- Creating the event handler
- Exploring the samples
- Summary
- Chapter 2: Implementing Vectors
- Introducing vectors
- Creating a vector
- Epsilon
- Understanding component-wise operations
- Vector addition
- Vector subtraction
- Scaling vectors
- Multiplying vectors
- Dot product
- Understanding non-component-wise operations
- Vector length
- Normalizing vectors
- The angle between vectors
- Vector projection and rejection
- Vector reflection
- Cross product
- Interpolating vectors
- Comparing vectors
- Exploring more vectors
- Summary
- Chapter 3: Implementing Matrices
- Technical requirements
- What is a matrix?
- Matrix storage
- Creating a matrix
- Common matrix operations
- Comparing matrices
- Adding matrices
- Scaling a matrix
- Matrix multiplication
- Transforming vectors and points
- Inverting a matrix
- Transpose
- Determinant and minors of lower-order matrices
- A 2 x 2 determinant
- Minor
- Cofactor
- Laplace expansion
- Adjugate
- Inverse
- Creating camera matrices
- Frustum
- Perspective
- Orthographic
- Look at
- Summary
- Chapter 4: Implementing Quaternions
- Creating quaternions
- Angle axis
- Creating rotations from one vector to another
- Retrieving quaternion data
- Common quaternion operations
- Comparison operations
- Dot product
- Length and squared length
- Unit quaternions
- Conjugate and inverse
- Multiplying quaternions
- Transforming vectors
- Interpolating quaternions
- Neighborhood
- Understanding the mix function
- Understanding the nlerp function
- Introduction to slerp
- Power
- Implementing slerp
- Look rotation
- Converting between quaternions and matrices
- Summary
- Chapter 5: Implementing Transforms
- Creating the transform
- Combining transforms
- Inverting transforms
- Mixing transforms
- Converting transforms to matrices
- Converting matrices into transforms
- Transforming points and vectors
- Summary
- Chapter 6: Building an Abstract Renderer
- Technical requirements
- Working with shaders
- The Shader class declaration
- Implementing the Shader class
- Working with buffers (attributes)
- The Attribute class declaration
- Implementing the Attribute class
- Working with uniforms
- The Uniform class declaration
- Implementing the Uniform class
- Working with index buffers
- The IndexBuffer class declaration
- Implementing the IndexBuffer class
- Rendering geometry
- Working with textures
- Adding stb_image
- The Texture class declaration
- Implementing the Texture class
- Simple shaders
- The vertex shader
- The fragment shader
- Summary
- Chapter 7: Exploring the glTF File Format
- Technical requirements
- Exploring how glTF files are stored
- glTF files store a scene not a model
- Exploring the glTF format
- The parts you need for animation
- The parts you don't need for animation
- Accessing data
- Buffer
- Buffer view
- Accessor
- Example
- Exploring cgltf
- Integrating cgltf
- Creating a glTF loader
- Exploring the sample assets
- Exporting from Blender
- Summary
- Chapter 8: Creating Curves Frames and Tracks
- Understanding cubic Bézier splines
- Understanding cubic Hermite splines
- Interpolation types
- Creating the Frame struct
- Creating the Track class
- Declaring the Track class
- Implementing the Track class
- Implementing helper functions
- Implementing the Track functions
- Implementing the FrameIndex function
- Implementing the AdjustTimeToFitTrack function
- Implementing the Cast function
- Constant track sampling
- Linear track sampling
- Cubic track sampling
- Creating the TransformTrack class
- Declaring the TransformTrack class
- Implementing the TransformTrack class
- Summary
- Chapter 9: Implementing Animation Clips
- Implementing poses
- Declaring the Pose class
- Implementing the Pose class
- Implementing clips
- Declaring the Clip class
- Implementing the Clip class
- glTF – loading the rest pose
- glTF – loading joint names
- glTF – loading animation clips
- Summary
- Chapter 10: Mesh Skinning
- Exploring meshes
- Understanding skinning
- Exploring rigid skinning
- The rigid skinning pipeline
- Exploring smooth skinning
- Implementing skeletons
- The Skeleton class declaration
- The Skeleton class implementation
- glTF – loading the bind pose
- glTF – loading a skeleton
- Implementing meshes
- The Mesh class declaration
- The Mesh class implementation
- Implementing CPU skinning
- Skinning with matrices
- glTF – loading meshes
- Implementing GPU skinning
- Summary
- Chapter 11: Optimizing the Animation Pipeline
- Pre-generating the skin matrix
- Generating the skin matrix
- CPU skinning
- GPU skinning
- Storing the skin palette in a texture
- Faster sampling
- Optimizing the Track class
- Implementing UpdateIndexLookupTable
- Implementing FrameIndex
- Converting tracks
- Creating FastTransformTrack
- Creating FastClip
- The Pose palette generation
- Changing the GetMatrixPalette function
- Reordering joints
- Reordering clips
- Reordering meshes
- Exploring Pose::GetGlobalTransform
- Summary
- Chapter 12: Blending between Animations
- Pose blending
- Declaring the Blend function
- Implementing the Blend function
- Crossfading animations
- Creating helper classes
- Declaring the cross-fade controller
- Implementing the cross-fade controller
- Additive blending
- Declaring additive animations
- Implementing additive animations
- Summary
- Chapter 13: Implementing Inverse Kinematics
- Creating a CCD solver
- Declaring the CCD solver
- Implementing the CCD solver
- Creating a FABRIK solver
- Declaring the FABRIK solver
- Implementing the FABRIK solver
- Implementing constraints
- Ball-and-socket constraint
- Hinge constraint
- Using IK to align a character's feet to the ground
- Finding the foot goals
- Interpolating the foot goals
- Vertical character placement
- IK pass
- Foot alignment
- Summary
- Further reading
- Chapter 14: Using Dual Quaternions for Skinning
- Introducing dual quaternions
- Implementing dual quaternions
- Implementing dual quaternion operations
- Measuring normalizing and inverting dual quaternions
- Converting transforms and dual quaternions
- Transforming vectors and points
- Skinning with dual quaternions
- Modifying the pose class
- Modifying the skeleton class
- Creating new uniform types
- Creating a dual quaternion shader
- Understanding how to use dual quaternion skinning
- Summary
- Chapter 15: Rendering Instanced Crowds
- Storing data in textures
- Reading data from textures
- Encoding animation data
- Exploring per-instance data
- Creating an animation texture
- Declaring the AnimTexture class
- Implementing the AnimTexture class
- Animation baker
- Creating a crowd shader
- Creating the Crowd utility class
- Implementing the Crowd class
- Using the Crowd class
- Blending animations
- Exploring texture formats
- Combining animation textures
- Optimizing texel fetches
- Limiting influences
- Limiting animated components
- Not interpolating
- Combining these optimizations
- Summary
- Other Books You May Enjoy
- Leave a review - let other readers know what you think 更新時間:2021-06-30 14:46:39
推薦閱讀
- Android Wearable Programming
- 趣學Python算法100例
- Android Application Development Cookbook(Second Edition)
- 游戲程序設計教程
- Unity Shader入門精要
- EPLAN實戰設計
- Nginx實戰:基于Lua語言的配置、開發與架構詳解
- 深入分布式緩存:從原理到實踐
- Java 從入門到項目實踐(超值版)
- C語言王者歸來
- INSTANT EaselJS Starter
- 軟件再工程:優化現有軟件系統的方法與最佳實踐
- Learning Java by Building Android Games
- C#編程魔法書
- 深入理解Android:WebKit卷
- 深入淺出Go語言核心編程
- Java從入門到精通(第7版)
- C# 4.0權威指南
- 數控編程技能培訓:Cimatron中文版
- Learning Physics Modeling with PhysX
- PHPUnit Essentials
- Spring:Microservices with Spring Boot
- Python 3反爬蟲原理與繞過實戰
- Learning Articulate Storyline
- MATLAB編程與最優化設計應用
- Java應用開發:基礎知識
- Learning Heroku Postgres
- 趣學Python:教孩子學編程(第2版)
- 小團隊構建大網站:中小研發團隊架構實踐
- ArcGIS Python編程基礎與應用