舉報

會員
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.
最新章節(jié)
- Leave a review - let other readers know what you think
- Other Books You May Enjoy
- Summary
- Combining these optimizations
- Not interpolating
- Limiting animated components
品牌:中圖公司
上架時間:2021-06-30 14:41:58
出版社:Packt Publishing
本書數(shù)字版權(quán)由中圖公司提供,并由其授權(quán)上海閱文信息技術(shù)有限公司制作發(fā)行
- Leave a review - let other readers know what you think 更新時間:2021-06-30 14:46:39
- Other Books You May Enjoy
- Summary
- Combining these optimizations
- Not interpolating
- Limiting animated components
- Limiting influences
- Optimizing texel fetches
- Combining animation textures
- Exploring texture formats
- Blending animations
- Using the Crowd class
- Implementing the Crowd class
- Creating the Crowd utility class
- Creating a crowd shader
- Animation baker
- Implementing the AnimTexture class
- Declaring the AnimTexture class
- Creating an animation texture
- Exploring per-instance data
- Encoding animation data
- Reading data from textures
- Storing data in textures
- Chapter 15: Rendering Instanced Crowds
- Summary
- Understanding how to use dual quaternion skinning
- Creating a dual quaternion shader
- Creating new uniform types
- Modifying the skeleton class
- Modifying the pose class
- Skinning with dual quaternions
- Transforming vectors and points
- Converting transforms and dual quaternions
- Measuring normalizing and inverting dual quaternions
- Implementing dual quaternion operations
- Implementing dual quaternions
- Introducing dual quaternions
- Chapter 14: Using Dual Quaternions for Skinning
- Further reading
- Summary
- Foot alignment
- IK pass
- Vertical character placement
- Interpolating the foot goals
- Finding the foot goals
- Using IK to align a character's feet to the ground
- Hinge constraint
- Ball-and-socket constraint
- Implementing constraints
- Implementing the FABRIK solver
- Declaring the FABRIK solver
- Creating a FABRIK solver
- Implementing the CCD solver
- Declaring the CCD solver
- Creating a CCD solver
- Chapter 13: Implementing Inverse Kinematics
- Summary
- Implementing additive animations
- Declaring additive animations
- Additive blending
- Implementing the cross-fade controller
- Declaring the cross-fade controller
- Creating helper classes
- Crossfading animations
- Implementing the Blend function
- Declaring the Blend function
- Pose blending
- Chapter 12: Blending between Animations
- Summary
- Exploring Pose::GetGlobalTransform
- Reordering meshes
- Reordering clips
- Reordering joints
- Changing the GetMatrixPalette function
- The Pose palette generation
- Creating FastClip
- Creating FastTransformTrack
- Converting tracks
- Implementing FrameIndex
- Implementing UpdateIndexLookupTable
- Optimizing the Track class
- Faster sampling
- Storing the skin palette in a texture
- GPU skinning
- CPU skinning
- Generating the skin matrix
- Pre-generating the skin matrix
- Chapter 11: Optimizing the Animation Pipeline
- Summary
- Implementing GPU skinning
- glTF – loading meshes
- Skinning with matrices
- Implementing CPU skinning
- The Mesh class implementation
- The Mesh class declaration
- Implementing meshes
- glTF – loading a skeleton
- glTF – loading the bind pose
- The Skeleton class implementation
- The Skeleton class declaration
- Implementing skeletons
- Exploring smooth skinning
- The rigid skinning pipeline
- Exploring rigid skinning
- Understanding skinning
- Exploring meshes
- Chapter 10: Mesh Skinning
- Summary
- glTF – loading animation clips
- glTF – loading joint names
- glTF – loading the rest pose
- Implementing the Clip class
- Declaring the Clip class
- Implementing clips
- Implementing the Pose class
- Declaring the Pose class
- Implementing poses
- Chapter 9: Implementing Animation Clips
- Summary
- Implementing the TransformTrack class
- Declaring the TransformTrack class
- Creating the TransformTrack class
- Cubic track sampling
- Linear track sampling
- Constant track sampling
- Implementing the Cast function
- Implementing the AdjustTimeToFitTrack function
- Implementing the FrameIndex function
- Implementing the Track functions
- Implementing helper functions
- Implementing the Track class
- Declaring the Track class
- Creating the Track class
- Creating the Frame struct
- Interpolation types
- Understanding cubic Hermite splines
- Understanding cubic Bézier splines
- Chapter 8: Creating Curves Frames and Tracks
- Summary
- Exporting from Blender
- Exploring the sample assets
- Creating a glTF loader
- Integrating cgltf
- Exploring cgltf
- Example
- Accessor
- Buffer view
- Buffer
- Accessing data
- The parts you don't need for animation
- The parts you need for animation
- Exploring the glTF format
- glTF files store a scene not a model
- Exploring how glTF files are stored
- Technical requirements
- Chapter 7: Exploring the glTF File Format
- Summary
- The fragment shader
- The vertex shader
- Simple shaders
- Implementing the Texture class
- The Texture class declaration
- Adding stb_image
- Working with textures
- Rendering geometry
- Implementing the IndexBuffer class
- The IndexBuffer class declaration
- Working with index buffers
- Implementing the Uniform class
- The Uniform class declaration
- Working with uniforms
- Implementing the Attribute class
- The Attribute class declaration
- Working with buffers (attributes)
- Implementing the Shader class
- The Shader class declaration
- Working with shaders
- Technical requirements
- Chapter 6: Building an Abstract Renderer
- Summary
- Transforming points and vectors
- Converting matrices into transforms
- Converting transforms to matrices
- Mixing transforms
- Inverting transforms
- Combining transforms
- Creating the transform
- Chapter 5: Implementing Transforms
- Summary
- Converting between quaternions and matrices
- Look rotation
- Implementing slerp
- Power
- Introduction to slerp
- Understanding the nlerp function
- Understanding the mix function
- Neighborhood
- Interpolating quaternions
- Transforming vectors
- Multiplying quaternions
- Conjugate and inverse
- Unit quaternions
- Length and squared length
- Dot product
- Comparison operations
- Common quaternion operations
- Retrieving quaternion data
- Creating rotations from one vector to another
- Angle axis
- Creating quaternions
- Chapter 4: Implementing Quaternions
- Summary
- Look at
- Orthographic
- Perspective
- Frustum
- Creating camera matrices
- Inverse
- Adjugate
- Laplace expansion
- Cofactor
- Minor
- A 2 x 2 determinant
- Determinant and minors of lower-order matrices
- Transpose
- Inverting a matrix
- Transforming vectors and points
- Matrix multiplication
- Scaling a matrix
- Adding matrices
- Comparing matrices
- Common matrix operations
- Creating a matrix
- Matrix storage
- What is a matrix?
- Technical requirements
- Chapter 3: Implementing Matrices
- Summary
- Exploring more vectors
- Comparing vectors
- Interpolating vectors
- Cross product
- Vector reflection
- Vector projection and rejection
- The angle between vectors
- Normalizing vectors
- Vector length
- Understanding non-component-wise operations
- Dot product
- Multiplying vectors
- Scaling vectors
- Vector subtraction
- Vector addition
- Understanding component-wise operations
- Epsilon
- Creating a vector
- Introducing vectors
- Chapter 2: Implementing Vectors
- Summary
- Exploring the samples
- Creating the event handler
- Opening a window
- Global variables
- Creating a window
- Adding glad to the project
- Getting glad
- Adding an OpenGL loader
- Creating the application class
- Creating an empty project
- Technical requirements
- Chapter 1: Creating a Game Window
- Reviews
- Get in touch
- Conventions used
- To get the most out of this book
- What this book covers
- Who this book is for
- Preface
- Packt is searching for authors like you
- About the reviewer
- Contributors About the author
- Why subscribe?
- Hands-On C++ Game Animation Programming
- 封面
- 封面
- 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