Upload
anon-725179
View
118
Download
0
Tags:
Embed Size (px)
Citation preview
Notes on downloaded 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 EvansSenior Technical Artist, Crytek
Responsibilities: R&D Artist Artist tools Getting characters in-game
Hanno HagedornSenior 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 Character?
What is a Character?
Person or creature?
Rejected internal concept art
What is a Character?
Vehicle or machine withmoving parts?
Rejected internal concept art
What is a Character?
Any object or set of objects whose movement is derived from a skeleton.
What is a Character? People and creatures Vehicles and machines Moving character attachments
Guns, backpacks, heads, hands Dynamic, jointed physics
simulations Ropes, complex constraint setups
Pre-baked physics and broken objects Pre-baking cinematic destruction
VIDEO: VIDEO: 00:0400:04
The Low Level:
Deformation
George Bridgman, The Human Machine 1929
The Low Level:
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: VIDEO: 00:4500: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
George Bridgman, The Human Machine 1929
Driving deformation:
Pose-Driven Systems
You can drive many things with skeletal poses: Morph Targets Joints Maps
Outside our industry: Not a new Not a new idea at allidea at all
Simple 3 Vector Driver: Shape
VIDEO: VIDEO: 01:0301:03
Simple Driver: Color and Shape
VIDEO: VIDEO: 01:0901: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?
Not limited to deformation at all!Not limited to deformation at all!
VIDEO: VIDEO: 01:1601:16
VIDEO: VIDEO: 02:1102:11
VIDEO: VIDEO: 02:5402:54
VIDEO: VIDEO: 03:1903:19
The Low Level:
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
George Bridgman, The Human Machine 1929
Linear Skinning Weight vertices in a linear fashion to n bones
Definitely nothing new First use in a game (software)
Trespasser? (1997-1998) First use in a game (hardware)
dx8 via vert shaders dx7 rarity
Hardware ‘deceleration’
Linear Skinning,or smooth skinning, or linear blend 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
“Hardware Skinning with Quaternions” (2004) by Jim Hejl (EA) Game Programming
Gems 4 First game to utilize it?
Our Implementation of:
Spherical Skinning
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: VIDEO: 04:1104:11
VIDEO: VIDEO: 04:4504:45
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
Pros/Cons
Spherical Skinning
Interleaved BonesExample: Character Studio Biped
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
Pros/Cons
Spherical Skinning
Interested in New Skinning Technology?
GDC Session: Skinning with DualQuaternions
Tomorrow (Fri)9am – 10amRoom 2009, West Hall
Deformation:
Morph Targets
George Bridgman, The Human Machine 1929
Deformation:
Morphs are Your Friends Also known as:
Blendshapes, shapes, vertex animation Artistic approach – Artist
defines the look completely Facial animation
Sculpt muscles, phonemes, visimes Corrective shapes
Driven by arbitrary inputs Baked simulations
Bending metal, ocean waves, soft tissue
Keep them light in engine Sparse morphs
Only the verts that move Corrective shapes can be *very* light Only move the points that you have to
Sparse morphs on DX10 hardware Sparse morphs running on dx10 hardware
Supports binding to more than 4 color images Store morphs in a texture Blend between textures
There is a demo in the DX10 SDK They also have wrinkle maps in this example!
Deformation:
Morphs are Your Friends
Driving Morphs
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
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
Driving Morphs
VIDEO: VIDEO: 05:2605:26
VIDEO: VIDEO: 06:4306: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: VIDEO: 06:4906:49
Corrective morph shapesSAY GOODBYE TO SAY GOODBYE TO
SKINNING ARTIFACTS!SKINNING ARTIFACTS! Complex deformation
You don’t have to sculpt these You don’t have to sculpt these targets by hand!targets by hand!
The sky is the limit
This is a simple test, there are many more uses!
VIDEO: VIDEO: 09:1409:14
VIDEO: VIDEO: 10:3510:35
Deformation:
Helper Joints
George Bridgman, The Human Machine 1929
Helper Joints Jason Parks: Advanced
Deformations on Runtime Characters – GDC 05/06
http://www.jason-parks.com/HelperJoints/ http://www.jason-parks.com/MuscleSystems/
Great but less artist-driven Universal Needs a lot of technical support
Non-intuitive Examples
Same driving issues as with morphs Pre-baked vs. Runtime
VIDEO: VIDEO: 10:4610:46
Example: Shark
Example:Example:NanosuitNanosuit
Example:Example:NanosuitNanosuit
Example:Example:NanosuitNanosuit
Helper Joints (12):Helper Joints (12): Deltoids (shoulders) (8 joints)Deltoids (shoulders) (8 joints)
4 on each shoulder4 on each shoulder Pectoralis (chest) (2 joints)Pectoralis (chest) (2 joints)
1 per side1 per side Latissimus (back) (2 joints)Latissimus (back) (2 joints)
1 per side1 per side
VIDEO: VIDEO: 11:2011:20
All these systems, when do I use what? Dependent:
On your pipeline Result you want to achieve
The Low Level:
Animation
George Bridgman, The Human Machine 1929
The Low Level: Animation IK Retargetting
Look IK Analytical IK for arms/legs
Feet on uneven surfaces CCD IK
7 DoF for bone chains Used for retargeting and planting
Parameterization + IK can yield good results IK fallback for dynamic motion
VIDEO: VIDEO: 12:0812:08
Character Variation
Character Variation
System supports 3 types of variation: Morph-based Attachment-based Decal-based
Character Variation Morph-based
Thinner/fatter body types Change size/position of design elements Characters divided up into ‘regions’ to
mask morph variations (vertex colors) Attachment-based
Skin Attachments Object Attachments
Decal-based Small 128px dirt, scars, camouflage, etc Layers on top of current texture
Super low resource usage
Case Study:
Variations for E3 2006
3 x 128px Camouflage Face Textures
1 x 128px Dirt Texture 2 Head Variations 2 Body Variations
Thinner/Fatter body types, Longer/Shorter clothing
Attachments Skin Attachments
Hands, Heads Object Attachments
Pouches, Helmets, Ammunition
E3 Character Variations 1/10
E3 Character Variations 2/10
E3 Character Variations 3/10
E3 Character Variations 4/10
E3 Character Variations 5/10
E3 Character Variations 6/10
E3 Character Variations 7/10
E3 Character Variations 8/10
E3 Character Variations 9/10
E3 Character Variations 10/10
Issues We Ran Into
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: VIDEO: 13:1213: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: VIDEO: 14:0014: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: VIDEO: 14:1714:17
Hanno HagedornSenior 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
Crunches assets with many millions of polygons
Capable of combining multiple models, each with many millions of polygons into one single calculation
32/64bit 3dsmax plugin or standalone application
Exports normal maps, displacement maps, and ambient occlusion maps
Gives out a storage file containing 100x the accuracy of a normal texture map
Extracting new data without recalculation
Unoccluded Area Direction
Simulates self shadowing inside the normal map while softening hard details
Combines ACC with the normalmap Softshadowing within the normalmap Applies a very soft look to the skin
VIDEO: VIDEO: 14:4014:40
VIDEO: VIDEO: 14:5814:58
Asset Creation
Get good texture reference Bad texture reference Synchronizing texture maps Get the right software
Get Good Texture Reference
We all love hand painted textures Hand painting * photorealistic / Schedule =
pain in the ass Well lit photos are key
Unwanted lighting will plague you later on The less lighting information will get
you closer to your desired result
Bad texture reference
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
Simulates greasy reflective Skin Works against the classic specular look of
last-gen games There is no such thing as ‘specular light’
in reality Similar to Fresnel reflections Adding ‘rim lighting’ by
Ambient color Cubemap Realtime automated cubemaps
No Rim Lighting
Basic Rim Lighting
Strong Rim Lighting
Sub-Surface Scattering (SSS)
Approximates light rays penetrating the skin and exiting another spot
Gives skin a nice reddish, fleshy look Even simulates thin vascular tissue
SSS-map allows us to define the skins thickness and color
No SSS
Basic SSS
Strong SSS
Eyes - Windows to the Soul
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
Eyes - Windows to the Soul
3dsMax screenshot
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
Eyes - Self shadowing
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
Eyes - Self shadowing
Using overlaying geometry for emulating the shaded eye
Comments Eyelids and Eyeballs together This allows us to simulate the shadowing
of the eyelashes and surrounding bone structure
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: VIDEO: 15:0915: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:VIDEO:15:2315: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: VIDEO: 15:3415:34
Non-linear expressions
Non-linear blending of morphs Use multiple morphs to:
create a non-linear motion keep the volume of complex or twisted shapes
VIDEO:VIDEO:16:1316:13
Expressions are drivers
System drives Morphs, Bones, and attachments All elements are treated equally Can be easily combined or parameterized
Phonemes Phonemes
The smallest distinctive units of speech, or the mouth shapes to make each sound
Strong and weak phonemes for appropriate usage
96 phonemes, 48 strong and 48 weak
Seamless blending between strong and weak phonemes
Phoneme Phonemes
The smallest distinctive units of speech, or the mouth shapes to make each sound
Strong and weak phonemes for appropriate usage
96 phonemes, 48 strong and 48 weak
Seamless blending between strong and weak phonemes
Visimes
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
Visual simplification of phonemes In use by 2D animations for over
90 years
Visimes
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: VIDEO: 17:1517: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: VIDEO: 17:2817:28
VIDEO: VIDEO: 18:3218: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:VIDEO:19:4219:42
The Capturing Workflow
VIDEO: VIDEO: 19:5519:55
Final Result
VIDEO: VIDEO: 21:1121:11
Final Result
Casual B-Level animation: Used a Hand camera for Motion capturing Used Eyeliner for the Markers Untouched Facial Mocap Data Automatic Phoneme Extraction Procedural Eye blinking Procedural Eye behavior
Final Result
VIDEO: VIDEO: 21:2221:22
Upcoming Improvements:
Giving animations to the animation department for:
Enhancing and exagerating the acting Polishing up Mocap Data Cleaning up Mocap Data Keys
Improved Phoneme Blending Improvement will come, but our mainfocus is
on finishing up the game right now ;]
Questions?
Questions or comments?
Christopher Evans [email protected] [email protected]
Hanno [email protected]
For more info,come visit us at booth
XXXX