Skeletons and Skinning

27
CSE 473 Dr. Charles B. Owen Fundamentals of 3D Game Development 1 Skeletons and Skinning Bones and Skeletons Mesh Skinning

description

Skeletons and Skinning. Bones and Skeletons Mesh Skinning. Skeletal Animation. Victoria. Skeletons. Skeleton A pose-able framework of joints arranged in a tree structure. An invisible armature to manipulate the skin and other geometric data of the character. Does not actually render. - PowerPoint PPT Presentation

Transcript of Skeletons and Skinning

Page 1: Skeletons and Skinning

CSE 473 Dr. Charles B. OwenFundamentals of 3D Game Development1

Skeletons and Skinning

• Bones and Skeletons• Mesh Skinning

Page 2: Skeletons and Skinning

CSE 473 Dr. Charles B. OwenFundamentals of 3D Game Development2

Skeletal Animation

Victoria

Page 3: Skeletons and Skinning

CSE 473 Dr. Charles B. OwenFundamentals of 3D Game Development3

Skeletons

SkeletonA pose-able framework of joints arranged in a tree structure.

An invisible armature to manipulate the skin and other geometric data of the character.

Does not actually render.

Page 4: Skeletons and Skinning

CSE 473 Dr. Charles B. OwenFundamentals of 3D Game Development4

SkeletonsJointAllows relative movement within the skeleton. Joints are equivalent to 4x4 matrix transformations.

BoneWhat’s the difference between a

joint and a bone? Nothing really, and XNA uses the term bone for a

joint. Sometimes bones includes a length or actual geometry

Skeleton bones are identical in function to the bones you used for Digger.

Page 5: Skeletons and Skinning

CSE 473 Dr. Charles B. OwenFundamentals of 3D Game Development5

Victoria in 3DS Max

Page 6: Skeletons and Skinning

CSE 473 Dr. Charles B. OwenFundamentals of 3D Game Development6

Victoria in Motionbuilder

Page 7: Skeletons and Skinning

CSE 473 Dr. Charles B. OwenFundamentals of 3D Game Development7

DOFs Degree of Freedom (DOF)A variable φ describing a particular axis or dimension of movement within a joint

Joints typically have around 1-6 DOFs (φ1…φN) Can have more (up to 9 for affine)

Changing the DOF values over time results in the animation of the skeleton

Rigid body transformations: 6DOF

Arbitrary rotations: 3DOF

Page 8: Skeletons and Skinning

CSE 473 Dr. Charles B. OwenFundamentals of 3D Game Development8

Skeleton Posing Process

1. Specify DOF values for the skeleton

2. Traverse the hierarchy using forward kinematics to compute the world matrices

3. Use world matrices to deform skin & render

The matrices can also be used for other things such as collision detection, FX, props, etc.

1-2 is what we did for Digger. #3 is new.

Page 9: Skeletons and Skinning

CSE 473 Dr. Charles B. OwenFundamentals of 3D Game Development9

Forward Kinematics

• Each joint computes a local matrix M based on the DOFs and some formula representative of the joint type:

Local matrix M = Mjoint(φ1,φ2,…,φN) boneTransforms[b] = Matrix.CreateScale(boneScales[b]) * Matrix.CreateFromQuaternion(bone.Rotation) * Matrix.CreateTranslation(bone.Translation);

• Then, world matrix W is computed by concatenating M with the world matrix of the parent joint

World matrix W = MWparent

model.CopyBoneTransformsFrom(boneTransforms); model.CopyAbsoluteBoneTransformsTo(boneAbsoluteTransforms);

Page 10: Skeletons and Skinning

CSE 473 Dr. Charles B. OwenFundamentals of 3D Game Development10

Skeleton Rigging

• Skeleton Rigging – Setting up the skeleton for a figure– Bones– Joints– DOF’s– Limits

Page 11: Skeletons and Skinning

CSE 473 Dr. Charles B. OwenFundamentals of 3D Game Development11

Poses

Adjust DOFs to specify the pose of the skeletonWe can define a pose Φ more formally as a vector of N numbers that maps to a set of DOFs in the skeleton

Φ = [φ1 φ2 … φN]

Page 12: Skeletons and Skinning

CSE 473 Dr. Charles B. OwenFundamentals of 3D Game Development12

Joint Types

• Rotational– Hinge: 1-DOF– Universal: 2-DOF

• Around two axis

– Ball & Socket: 3-DOF• Euler Angles• Quaternions

• Translational– Prismatic: 1-DOF– Translational: 3-DOF (or

any number)

• Compound– Free– Screw– Constraint– Etc.

• Non-Rigid– Scale– Shear– Etc.

• Design your own...

Page 13: Skeletons and Skinning

CSE 473 Dr. Charles B. OwenFundamentals of 3D Game Development13

Smooth Skin Algorithm

Page 14: Skeletons and Skinning

CSE 473 Dr. Charles B. OwenFundamentals of 3D Game Development14

Rigid Parts are Easy

• Robots and mechanical creatures – Rigid parts, no smooth skin– Each part is transformed by its joint matrix

• Every vertex of the character’s geometry is transformed by exactly one matrix

where v is defined in joint’s local space

vMv

This is what we did with Digger

Page 15: Skeletons and Skinning

CSE 473 Dr. Charles B. OwenFundamentals of 3D Game Development15

What happens with Skinned Characters?

The mesh is deformed by the bones, but not “rigidly”. Instead, it is a flexible bend.

Page 16: Skeletons and Skinning

CSE 473 Dr. Charles B. OwenFundamentals of 3D Game Development16

Page 17: Skeletons and Skinning

CSE 473 Dr. Charles B. OwenFundamentals of 3D Game Development17

The Basic Concept1.0/0.0 0.0/1.00.5/0.5

0.7/0.3

Each vertex can be moved by 1-4 bones, with each bone having a weight.

Page 18: Skeletons and Skinning

CSE 473 Dr. Charles B. OwenFundamentals of 3D Game Development18

Mathematics of mesh skinning

Where:is the number of matrices.is the vertex position.is the weight associated.is a transformation matrix.

n

iii vMwv

viw

i

iw 1with

iM

n

Each vertex is multiplied by several “weighted” transformation matrices and the results are added together.

The transformation matrix indicates how that bone has been moved.

Page 19: Skeletons and Skinning

CSE 473 Dr. Charles B. OwenFundamentals of 3D Game Development19

Smooth Skin

• A vertex can be attached to more than one joint/bone with adjustable weights that control how much each joint affects it– Rarely more than 4– Definitely no more than

4 in XNA

1.0/0.0 0.0/1.00.5/0.50.7/0.3

• Result is a blending of the n transformations

• Algorithm names– blended skin, skeletal subspace deformation (SSD), multi-

matrix skin, matrix palette skinning…

Page 20: Skeletons and Skinning

CSE 473 Dr. Charles B. OwenFundamentals of 3D Game Development20

Limitations of Smooth Skin

• Smooth skin is very simple and quite fast, but its quality is limited– Joints tend to collapse as they bend more– Very difficult to get specific control– Unintuitive and difficult to edit

• Still, it is common in games and commercial animation!

• If nothing else, it is a good baseline upon which more complex schemes can be built

Page 21: Skeletons and Skinning

CSE 473 Dr. Charles B. OwenFundamentals of 3D Game Development21

Limitations of Smooth Skin

Page 22: Skeletons and Skinning

CSE 473 Dr. Charles B. OwenFundamentals of 3D Game Development22

Bone Links

• Bone links are extra joints inserted in the skeleton to assist with the skinning– Instead of one joint, an elbow may be 2-3 joints– Allows each joint to limit the bend angle!– Why does this help?

Page 23: Skeletons and Skinning

CSE 473 Dr. Charles B. OwenFundamentals of 3D Game Development23

Containment Binding

• Volume primitives around the bones– Boxes, cylinders, etc.– Vertex weights assigned based on which primitives it is in

Page 24: Skeletons and Skinning

CSE 473 Dr. Charles B. OwenFundamentals of 3D Game Development24

Props

Often our characters will be carrying or handling somethingWe usually call this a prop

Easiest way to handle propsProp is moved by one bone

In this example the right hand bone moves the pie bazooka

Page 25: Skeletons and Skinning

CSE 473 Dr. Charles B. OwenFundamentals of 3D Game Development25

How I determined the numbers

Matrix bazMat = Matrix.CreateRotationX(MathHelper.ToRadians(109.5f)) * Matrix.CreateRotationY(MathHelper.ToRadians(9.7f)) * Matrix.CreateRotationZ(MathHelper.ToRadians(72.9f)) * Matrix.CreateTranslation(-9.6f, 11.85f, 21.1f) * Model.GetBoneAbsoluteTransform(handBone);

X value is +90 to get from 3DS coordinates (Z is up) to our coordinates (Y is up)

Page 26: Skeletons and Skinning

CSE 473 Dr. Charles B. OwenFundamentals of 3D Game Development26

Manual Manipulation

How could I aim that bazooka?

What are the options?

Page 27: Skeletons and Skinning

CSE 473 Dr. Charles B. OwenFundamentals of 3D Game Development27

Manual Manipulation

Bip01 Spine1