Professional Documents
Culture Documents
Evans Hagedorn GDC07 Public
Evans Hagedorn GDC07 Public
slides:
The accompanying videos can be
downloaded from:
www.ChrisEvans3D.com/tutorials.htm
The videos were captured with various
software which sometimes seriously butchers
the framerate, please keep this in mind
We have added comments generally
summing up what we said about
each slide
The audio of our session in mp3
format can be purchased from ‘GDC
Radio’ (
http://store.cmpgame.com/product.php?id=1847&cat=
)
Christopher Evans
Senior Technical Artist, Crytek
Responsibilities:
R&D Artist
Artist tools
Getting characters in-game
Hanno Hagedorn
Senior Character Artist, Crytek
Responsibilities
Character Heads
Modeling
Texturing
Rigging
Facial Setup
Character Bodies (partially)
What is this stuff?
A cross section of current
character-related R&D at
Crytek
Mostly WIP, all real-time, real
assets
Presenting collaborative work
Artist-driven, or real world
data-driven tools
Intended Audience
Intermediate to Advanced –
Requires experience and
familiarity with the subject
Technical Artists (TA) and
artists with technical interests
Not too complicated
Simple, pragmatic approaches
Session Overview
Low Level
Deformation
How you drive deformations
How you deform geometry
Animation
High Level
Character Variation
Case Studies
Internal Tools
Asset Creation
Facial Editor
Setup
Animation
What is a
Rejected internal concept art
What is a Character?
Person or creature?
Rejected internal concept art
What is a Character?
Vehicle or machine with
moving parts?
What is a Character?
Deformatio
n
Deformation
What drives the
deformation?
Motion?
Arbitrary inputs?
Shader-based?
How do you move and
deform geometry?
Is it efficient?
What kind of approach?
VIDEO: 00:45
VIDEO:
00:45
The Low Level:
Deformation
What drives the
deformation?
Motion?
Arbitrary inputs?
Shader-based? (procedural noise)
How do you move and
deform geometry?
Is it efficient?
What kind of approach?
Driving Deformation:
Pose Driven
Systems
VIDEO:
01:03
Simple Driver: Color and
Shape
VIDEO:
01:09
Driving deformation:
Pose-Driven Systems
Pre-baked
Baked to keys/shapes
Runtime
In engine
Pros/Cons:
Pre-Baked Pose-Drivers
Pros:
Setup is in the asset creation app
Implementations work well in most
animation-based games (joints)
Cons:
Non-dynamic - Does not work with
motion generated at runtime
Ragdoll physics
Physically-based motion
Other procedurally-generated motions
Driving deformation:
Pose-Driven Systems
Pre-baked
Baked to keys/shapes
Runtime
In engine
Driving deformation:
Runtime Pose-Drivers
Pros:
Works dynamically in any situation
Only limit is the number of poses you
define
Cons:
Difficult to set up
Need to mirror in the asset package
Constraints
Parameterization
Driving deformation:
Arbitrary-Drivers
Holy grail of driven systems
General Arbitrary Drivers
General input/output system
Houdini, Shadetree, etc…
The more general the better
Runtime expressions?
Deformation
What drives the
deformation?
Character motion? Skeletal motion?
Arbitrary inputs?
Shader-based? (procedural noise)
How do you move and
deform geometry?
Is it efficient?
Is it an Artist-centric approach?
Deformation:
Skinning
Pros
Industry Standard
Lots of available research
Cons
Poor volume preservation
The more a joint bends, the more it collapses
Difficult to get specific control
Can be more resource intensive
Our Implementation of:
Spherical Skinning
“Hardware Skinning with
Quaternions” (2004)
by Jim Hejl (EA) Game Programming
Gems 4
First game to utilize it?
Pros/Cons
Spherical Skinning
Pros
Much better volume preservation
Less resource usage
(Skinning position, tangent, and bi-
normal)
72 bones per draw call
~48 (Linear w/ matrices)
~72 (Linear w/ quats)
20 instructions
~40 instructions (Linear w/ matrices)
~60 instructions (Linear w/ quats)
VIDEO:
04:11
VIDEO:
04:45
Pros/Cons
Spherical Skinning
Cons
Needs support in the asset creation
package
Plugin, preview, etc…
Inherent issues with some weighting
configurations
N bones per vert
Non-consecutive or interleaved bones
Interleaved
Bones
Example: Character Studio
Biped
Pros/Cons
Spherical Skinning
Cons
Needs support in the asset creation
package
Plugin, preview, etc…
Inherent issues with some weighting
configurations
N bones per vert
Non-consecutive or interleaved bones
The volume preservation sometimes
corrects things we have come to rely on
linear skinning for
Interested in New
Skinning Technology?
Tomorrow (Fri)
9am – 10am
Room 2009, West Hall
Deformation:
Morph Targets
Pose-Driven morphs
Artist-Sculpted Pipeline
Define pose vectors
Artist sculpts the pose
Link sculpts to those pose vectors
Parameterize/blend between poses
Simulation-Sculpted
Artist creates deformation
Links deformation to some arbitrary
parameter in the engine
Driving Morphs
Our asset creation tool
Allows the artist to pose the rigged
character
We decided to use pre-defined pose vectors
Generates a mesh in that pose for him to
sculpt
Extracts the artists sculpt with the skin
deformation culled
Created a shape for that pose
VIDEO:
05:26
VIDEO:
06:43
Our In Engine Setup
Apply the shape locally before the
skinning
Assign the shape to the correct bone and
pose vector
This is the simplest scenario
Single pose vector
VIDEO:
06:49
This is a simple test,
there are many more
uses!
Corrective morph shapes
SAY GOODBYE TO
SKINNING ARTIFACTS!
Complex deformation
You don’t have to sculpt these
targets by hand!
The sky is the limit
VIDEO:
09:14
VIDEO:
10:35
Deformation:
Helper Joints
Animation
Morph-based
Maintaining point index in LODs
(variations)
Too Much Detail? Not enough?
Designer setup time
Procedural runtime generation (examples-
based)
How much of a difference can the player
perceive ingame?
Parameterization
Non-Face attachments
Eye placement
Bone attachments
Case Study:
Character Flash
Freezing
Initial Freezing
Must be dynamic
Any character in any pose or animation
Slowly blend, do not ‘pop’ to a stop
Broken Pieces
Physicalized parts
Interactive, physicalized parts
Realistic
Actual parts
Case Study:
Character Flash
Freezing
Implementation:
Frozen Mesh
Procedural ‘Ice Shader’ (layer)
Brittle Physicalized mesh
Shattering
Ice particles emitted from joint phys proxies
Broken human bodyparts are created for most
of the bones in the character.
Pieces are spawned in the orientation of their
associated joints
Broken pieces
Left as individual physicalized entities
Pickable
VIDEO:
13:12
Baking Out
Simulations:
Isn’t That Cheating?
Baking Out
Simulations:
Isn’t That Cheating?
Same thrilling game experience
for mid-low end users (though
less interactive)
Benefits:
Musculo-skeletal systems/Organic
Deformation
Bake to joint-driven morphs
Bake to joint-driven joints
Rigid-body physics
Bake rigid body physics to keyframe data
1 joint per piece
Baked but still interactive?
Baking Out
Simulations:
Interactivity
Organics:
Pose-driven joints or morphs
Physicalization of Rigid Bodies
Use the keyframe data to generate
accurrate impulse
Physicalize the animated rigid body upon
collision
Physicalize after the animation plays
Physicalize after the joint has reached x
distance from the object center.
Physicalize when received damage
Pre-Baked Rigid Bodies
VIDEO:
14:00
Baking Out
Simulations:
Characters at Heart
Keyframe data
Parameterization
Blend between multiple simulations
Inherent issues, but for low spec: much
better than the alternative
Compression
Can have attachments
Deformible (bending metal etc)
Can attach other characters to it
Baking Out
Simulations:
Issues We Ran Into
Draw calls
Meshes need to be merged into one
Compression
Piles of debris
Export surroundings for
external sim
Wavefront OBJ export
Terrain, objects, etc…
Can run the simulation in Max, Maya,
etc…
Better animator control for ‘Hollywood 11’
VIDEO:
14:17
Hanno Hagedorn
Senior Character Artist, Crytek
Responsibilities
Character Heads
Modeling
Texturing
Rigging
Facial Setup
Character Bodies (partially)
I am going to talk about...
Pipeline improvements
Polybump2
How we do faces, from the texture to
animation:
Asset Creation
Textures
Model
Shaders
Facial Animation System
Crytek PolyBump2
Very colored
Very blurry
Shiny nose
Lots of direct and
only few ambient
light
Very contrasted
shading
Good Texture reference
Equaly lit
Very sharp
No major highlights
Interesting details
Small
colorvariations in
the skin
Synchronizing texture
maps
Model and texture should feel like a
single unit
Pore stamps can be very handy but…
Never fit the existing texture
Create a repetitive look
Make sure your diffuse and spec
map complement your high
frequency or pore-detailed model
Base Diffuse Texture
Normalmap
Specular Map
Diffuse with ACC
lighting
Get the right Software
Z-Brush and Mudbox
Great programs for sketching out faces and
shapes
Great programs for polishing and detailing
assets
Silo is looking very promising
Combining Modeling and sculpting into one
workflow
Shader
Rim Lighting
Sub-Surface Scattering (SSS)
Eyes
Rim Lighting
3dsMax screenshot
Eyes - Windows to the
Soul
After several tests we decided to:
Build a physically correct Eye model with
internal physiology
Works better with new shader
possibilities
Special Iris shader; glinting
3dsMax screenshot
Eyes - Windows to the
Eyes - Self shadowing
Soul
After several tests we decided to:
Build a physically correct Eye model with
internal physiology
Works better with new shader
possibilities
Special Iris shader; glinting
3dsMax screenshot
Eyes - Self shadowing
3dsMax screenshot
Eyes - Self shadowing
Self shadowing
Using the same base as the Eyelids
saves textures and draw calls
Eyeball moves under the Overlaying
Geometry while keeping the shading
3dsMax screenshot
Eyes - Self shadowing
Self shadowing
Using the same base as the Eyelids
saves textures and draw calls
Eyeball moves under the Overlaying
Geometry while keeping the shading
3dsMax screenshot
Eyes - Self shadowing
VIDEO:
15:09
Eyes – In motion
Eyelids move along the Eyeball via
Fleshy Eyelid morphs
Automated Saccadic eye motion
Automated Eye Blinking, synced with the
Saccadic eye motion
Eyes – In motion
Eyelids move along the Eyeball via
Fleshy Eyelid morphs
Automated Saccadic eye motion
Automated Eye Blinking, synced with the
Saccadic eye motion
VIDEO:
15:23
Facial Animation System
Facial Animation System
Muscle Morphs
Expressions
Linear
Non-linear
Phonemes
Visimes
Joystick Controls
Optical Flow
Morphs – The Base
Muscle Morphs
89 Morphs
Each muscle a separate morph
A facial expression is sculpted by “muscle
morphs”
Asymmetrical morph setup
Natural face movement
Adds character to the facial movement
Automatic ‘fleshy eye’ movement
Eyelids move synchronized with the Eyeball
Using same topology for all faces
Easy transfer of morphs between meshes
Expressions – The
Connection
Unlimited scalability
Core system is very simple, yet very scalable
Multiple linear and nonlinear
expressions
Can combine linear and non-linear
Setting the base for the phoneme
extraction
Linear Expressions
Linear blending of
morphs or drivers
VIDEO:
15:34
Non-linear expressions
VIDEO:
16:13
Expressions are drivers
Visual simplification of
phonemes
Phonemes like ‘o’, ‘u’, ‘oo’, and
‘ow’ are visually very similar
14 visimes, 7 strong, 7 weak
Massively simplifies the work
with visimes
Tweaking several phonemes at
once is handy when transferring
the setup to a different character
Visimes
Visual simplification of
phonemes
In use by 2D animations for over
90 years
Muscle/Phoneme/Visime
Breakdown
Phoneme Extraction
Automated process
Automatically generates Phonemes from a
pure Audio file
Manual process
Breaks words into phonemes and places them
in the timeline corresponding to the audio
waveform
barely needs touching up, easy to handle,
batch-able.
VIDEO:
17:15
Joystick Controls –
Manual input device
User-friendly and intuitive
Your Grandma could animate with this!
Animator’s focus will be on animation and not
dragging sliders back and forth
Joystick Controls –
Manual input device
User-friendly and intuitive
Your Grandma could animate with this!
Animator’s focus will be on animation and not
dragging sliders back and forth
Joystick Controls –
Manual input device
Handles 4 diff expressions at once
Example, Up/Down could be the
‘jawdropper’ and ‘jaw_presser’, Left/Right
could be the ‘mouth_widener’ and
‘mouth_tightener’.
Automatically excludes opposing
morphs
No more fighting with frown/smile or
open/close
Puppeting
Real-time Mouse input capture
VIDEO:
17:28
VIDEO:
18:32
Joystick Controls –
scalability
User-definable
Joysticks plug into the cure interface, any
expressions can be mapped to them
Scalable toolset
Can be used to limit the detail an animator
sees
You can predefine A, B, and C class joystick
setups
We got inspired by Jason Osipa’s
book: ‘Stop Staring’, which
popularized joystick control setups
Optical-flow based Facial
Motion Capture
Optical-flow based Facial
Motion Capture
Getting good results with a minimum
amount of work
No expensive hardware needed
Animators here have used webcams at their
desks.
Very easy to polish
MoCap system uses the same interface the
animators do (joysticks)
Combines with the auto phoneme
extraction to polish lip-sync
Theoretical Marker Setup
Practical Marker Setup
Marker corresponding
joysticks
Marker corresponding
joysticks
VIDEO:
19:42
The Capturing Workflow
VIDEO:
19:55
Final Result
VIDEO:
21:11
Final Result
VIDEO:
21:22
Upcoming Improvements:
Christopher Evans
Christopher@Crytek.de
Chris.Evans@Gmail.com
Hanno Hagedorm
Hanno@Crytek.de
Hanno.Hagedorn@Polyroyal.com