Helper Joints: Helper Joints: Advanced Advanced Deformations on Deformations on RunTime Characters RunTime Characters Jason Parks Jason Parks Character Technical Director Character Technical Director Sony Computer Entertainment Sony Computer Entertainment America America
115
Embed
Helper Joints: Advanced Deformations on RunTime Characters
Helper Joints: Advanced Deformations on RunTime Characters. Jason Parks Character Technical Director Sony Computer Entertainment America. Contacts, Reference, Credits. Email : [email protected][email protected] Webpage (Helper Joints-GDC 2005): - PowerPoint PPT Presentation
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Helper Joints:Helper Joints:Advanced Advanced
Deformations on Deformations on RunTime CharactersRunTime Characters
Jason ParksJason Parks
Character Technical DirectorCharacter Technical Director
Sony Computer Entertainment Sony Computer Entertainment AmericaAmerica
and familiarity with subject.”and familiarity with subject.”– Maya Technical Artists who ‘Bind Maya Technical Artists who ‘Bind
Characters’ for RunTime or Offline Characters’ for RunTime or Offline usageusage• Paint weights Paint weights (Artisan and Component (Artisan and Component
Editor)Editor)
• Apply deformersApply deformers• Use Set Driven KeysUse Set Driven Keys• Write ExpressionsWrite Expressions• Use Utility NodesUse Utility Nodes
4
TopicsTopics• What are Helper Joints?What are Helper Joints?
– DefinitionDefinition• Why use Helper Joints?Why use Helper Joints?
– New uses for Extra JointsNew uses for Extra Joints– Smooth binding sucks & Where to use Helper JointsSmooth binding sucks & Where to use Helper Joints
• How to use Helper Joints?How to use Helper Joints?– Our Goals, Disclaimer, FusiformsOur Goals, Disclaimer, Fusiforms– Research: The Basic Building BlocksResearch: The Basic Building Blocks
Stop Talking, No more text, Stop Talking, No more text, show some Moving show some Moving Pictures!Pictures!
6
Helper Joints DefinedHelper Joints Defined• ““Helper Joints” are secondary joints Helper Joints” are secondary joints
offset from the standard hierarchy offset from the standard hierarchy which will translate, rotate, or scale to which will translate, rotate, or scale to achieve a “hand sculpted” affect on an achieve a “hand sculpted” affect on an area of vertices.area of vertices.
• They can be within the primary They can be within the primary hierarchy (parented, grouped, rigged), hierarchy (parented, grouped, rigged), or outside of the primary hierarchy or outside of the primary hierarchy (point or parentConstrained)(point or parentConstrained)
• They can be controlled by They can be controlled by SetDrivenKeys, Expressions, Simple SetDrivenKeys, Expressions, Simple Rigs (constraint system), or Super Rigs (constraint system), or Super Advanced Rigs (really any simulation Advanced Rigs (really any simulation you can think of) that are baked-out.you can think of) that are baked-out.
7
Why use any Extra Why use any Extra Joints?Joints?
• Traditional usage of Extra Joints Traditional usage of Extra Joints to animate Props and Accessoriesto animate Props and Accessories
• Extra “Helper Joints” to fix Extra “Helper Joints” to fix Smooth bindingSmooth binding
• Extra “Helper Joints” to create the Extra “Helper Joints” to create the next level in realismnext level in realism
Unlike characters rigged, bound, and Unlike characters rigged, bound, and rendered in Maya or any other high-end rendered in Maya or any other high-end 3D package, your characters at run-time 3D package, your characters at run-time need to follow a very specific rule set need to follow a very specific rule set depending on your Game Engine. depending on your Game Engine. Because all run-time engines already Because all run-time engines already support joints, it is a tool we can exploit support joints, it is a tool we can exploit and push to its limits.and push to its limits.
8
Traditional Extra JointsTraditional Extra Joints
• Traditional usage of Extra Traditional usage of Extra Joints for Props and Joints for Props and Accessories:Accessories:– Props, RopeProps, Rope– Hair, PonytailsHair, Ponytails– Capes, Necklaces, ClothingCapes, Necklaces, Clothing– FatFat
9
New Ideas for Extra New Ideas for Extra JointsJoints•Extra “Helper Joints” Extra “Helper Joints” to create the next to create the next level in realism:level in realism:– Skin slidingSkin sliding– WrinklesWrinkles– Fat/Muscle/Flesh JiggleFat/Muscle/Flesh Jiggle– Muscle bulgingMuscle bulging
10
Fix Smooth bindingFix Smooth binding
•Extra “Helper Joints” to Extra “Helper Joints” to make skin transform make skin transform properly:properly:– Volume maintenanceVolume maintenance– Crease fixingCrease fixing– Complex AreasComplex Areas
• Multiple joints affecting a single vertMultiple joints affecting a single vert
11
Smooth Binding LimitedSmooth Binding Limited
• Vertex deforms by a Vertex deforms by a weighted combination of weighted combination of Linear Translations Linear Translations around a joint rotatingaround a joint rotating
12
Smooth Binding Smooth Binding ShoulderShoulder
13
Smooth Binding Problem Smooth Binding Problem AreasAreas• Elbow and Knee:Elbow and Knee:
– Interpenetration on the inside of the creaseInterpenetration on the inside of the crease– Loss of volume on the outside of the crease (i.e. Loss of volume on the outside of the crease (i.e.
– the elbow tip or knee cap do not become – the elbow tip or knee cap do not become ‘pointy’ when the elbow or knee bends)‘pointy’ when the elbow or knee bends)
• Wrist/Forearm:Wrist/Forearm:– Loss of volume when the forearm/wrist is twisted Loss of volume when the forearm/wrist is twisted
too much down the length of the arm. (i.e. - too much down the length of the arm. (i.e. - ‘Candy-wrapper’ affect)‘Candy-wrapper’ affect)
• Upper Thigh/Gluteus:Upper Thigh/Gluteus:– Interpenetration at the bottom of the butt cheek Interpenetration at the bottom of the butt cheek
when leg goes too far backwhen leg goes too far back
• Shoulders:Shoulders:– Interpenetration in armpitInterpenetration in armpit– Interpenetration at the neck/shoulder junction Interpenetration at the neck/shoulder junction
area (trapezius)area (trapezius)– Lack of representation of scapula movementsLack of representation of scapula movements
14
Our Goals – The “Ideal”Our Goals – The “Ideal”
• What are we really trying to What are we really trying to get?get?
• Reference with MotionReference with Motion– BooksBooks
• ““Anatomy of Movement” by Blandine C. Anatomy of Movement” by Blandine C. GermainGermain
– InternetInternet• PAN Arts by Warwick MellowPAN Arts by Warwick Mellow
– SoftwareSoftware• Absolute Character Tools for 3DSMAXAbsolute Character Tools for 3DSMAX
15
Our GoalsOur Goals
• PAN PAN ResearchResearch– PectoralsPectorals– ShoulderShoulder
ss
16
Our GoalsOur Goals
•PAN PAN ResearchResearch– ClavicleClavicle– ForearmForearm
17
Our GoalsOur Goals• Muscles – Independent ResearchMuscles – Independent Research
18
Our GoalsOur Goals• Muscles - Absolute Character ToolsMuscles - Absolute Character Tools
19
Disclaimer: RunTime Rig Disclaimer: RunTime Rig SupportSupport• Individual Developer code will Individual Developer code will
dictate what will be evaluated in dictate what will be evaluated in Real-Time and what type of Real-Time and what type of relation you can specify between relation you can specify between your primary skeleton’s animation your primary skeleton’s animation and your Helper Joints’ and your Helper Joints’ transformation.transformation.
• Hopefully you can get 1 or more Hopefully you can get 1 or more of these RunTime Rigging of these RunTime Rigging methods supported:methods supported:– SetDrivenKeysSetDrivenKeys– ExpressionsExpressions– ConstraintsConstraints
– Source Code provided for Source Code provided for engine side.engine side.
• YES:YES:– Techniques for art-side Techniques for art-side
production of rigs (in Maya)production of rigs (in Maya)
• Applicable to all games on all Applicable to all games on all consolesconsoles
21
How To Get ThereHow To Get There
• Muscles are the drivers in Muscles are the drivers in reality so lets create Helper reality so lets create Helper Joints that mimic the way Joints that mimic the way muscles work.muscles work.
• Simple FusiForm muscles are Simple FusiForm muscles are easy to mimic in Maya so lets easy to mimic in Maya so lets create those and bind them create those and bind them to our skinto our skin
22
Research – FusiForm Research – FusiForm MuscleMuscle• ““FusiForm” muscle: Quick DefinitionFusiForm” muscle: Quick Definition
– ‘‘Tapering at each end; spindle-shaped.’Tapering at each end; spindle-shaped.’
23
Research – The Building Research – The Building BlocksBlocks• Let’s pick the Biceps as our test Let’s pick the Biceps as our test
case to create a muscle and mimic case to create a muscle and mimic its action with a Helper Joint being its action with a Helper Joint being driven by SetDrivenKeys:driven by SetDrivenKeys:– RotatingRotating– ScalingScaling– TranslatingTranslating
• The research explores the The research explores the underlying mechanisms of the rigsunderlying mechanisms of the rigs
• The ‘failed’ attempts still illustrate The ‘failed’ attempts still illustrate how rigs can be put togetherhow rigs can be put together
24
Research – The Building Research – The Building BlocksBlocksUNDERSTANDING HOW UNDERSTANDING HOW
THE RIGS WORKTHE RIGS WORK
IS MORE VALUABLEIS MORE VALUABLE
THEN MY SUGGESTED THEN MY SUGGESTED SOLUTIONSSOLUTIONS
25
Research – Biceps Research – Biceps (NURBs)(NURBs)• Muscle as Muscle as
Influence Influence Object - NURBsObject - NURBs
26
Research – Biceps Research – Biceps (Polys)(Polys)• Muscle as Muscle as
– SetDrivenKeys are fast, easy to SetDrivenKeys are fast, easy to use and work great for use and work great for “simple” Helper Joints“simple” Helper Joints• 1 drive1 driveRR joint and 1 drive joint and 1 driveRR axis axis
per driveper driveNN Helper Joint Helper Joint• Nest hierarchies of driveNest hierarchies of driveNN Helper Helper
Joints if you have more than 1 Joints if you have more than 1 drivedriveR R joint or axisjoint or axis
38
RunTime Rigs – SDKs for RunTime Rigs – SDKs for Volume PreservationVolume Preservation
• Forearm Helper Joint w/ SDK’s for Forearm Helper Joint w/ SDK’s for Scale and rotationScale and rotation
39
RunTime Rigs – SDKs for RunTime Rigs – SDKs for WrinklesWrinkles
• Scaling of Helper Joints (R&D by Scaling of Helper Joints (R&D by Tyler Crook @ SCEA)Tyler Crook @ SCEA)
40
RunTime Rigs – SDKs for RunTime Rigs – SDKs for WrinklesWrinkles
• Joints are scaling on 2-axis Joints are scaling on 2-axis (bulging), no scaling on length-wise (bulging), no scaling on length-wise axisaxis
• No translation or rotationNo translation or rotation
41
RunTime Rigs – SDKs for RunTime Rigs – SDKs for WrinklesWrinkles• Weighting is very tediousWeighting is very tedious
42
RunTime Rigs – SDKs for RunTime Rigs – SDKs for WrinklesWrinkles
• For shirt it takes many more joints For shirt it takes many more joints because of 3 D.O.F. and larger because of 3 D.O.F. and larger surface.surface.– 6 joints to do it right6 joints to do it right
43
RunTime Rigs – SDKs for RunTime Rigs – SDKs for WrinklesWrinkles
• Different joints scale for each Different joints scale for each direction in each D.O.F.direction in each D.O.F.
• Weighting is time consumingWeighting is time consuming
44
RunTime Rigs – SDKs for RunTime Rigs – SDKs for WrinklesWrinkles• Incorporation:Incorporation:
– Could theoretically add a Could theoretically add a scaling joint as a child of scaling joint as a child of the helper jointsthe helper joints
– Then just weight individual Then just weight individual vertices to these scaling vertices to these scaling joints to cause ‘wrinkling’joints to cause ‘wrinkling’
– Or just make separate Or just make separate scaling wrinkle joints scaling wrinkle joints wherever neededwherever needed
45
RunTime RigsRunTime Rigs
• Done with SDKsDone with SDKs• Start ExpressionsStart Expressions
• Simple Helper Joints which only need a Simple Helper Joints which only need a TranslationTranslation Expression Expression– Based on 1 axis from driving boneBased on 1 axis from driving bonedj_helper.ty = (base.ty + (maxOffset * (elbow.rz dj_helper.ty = (base.ty + (maxOffset * (elbow.rz
• Complex Helper Joints which need Complex Helper Joints which need TranslationTranslation & & RotationRotation Expression Expression– TranslationTranslation: Use another expression to translate : Use another expression to translate
dj_bicep joint (parented to Bicep_Helper) for dj_bicep joint (parented to Bicep_Helper) for bulge based on elbow rotation.bulge based on elbow rotation.
• Expression 2 – Describes bulge from rotation of Expression 2 – Describes bulge from rotation of elbow’s Z-axiselbow’s Z-axis
base.ty = 5, maxOffset = 1.8, maxAngle = 110base.ty = 5, maxOffset = 1.8, maxAngle = 110– RotationRotation: Joint needs to be parented to both : Joint needs to be parented to both
shoulder and bicep-roll joints. Use Expression to shoulder and bicep-roll joints. Use Expression to take percentage.take percentage.
• Expression 1 – Describes rotation of parent joint Expression 1 – Describes rotation of parent joint around bicep-roll joint. (60% from shoulder, 40% around bicep-roll joint. (60% from shoulder, 40% from bicep-roll)from bicep-roll)
– Very difficult to describe a Very difficult to describe a motion of a Complex Helper motion of a Complex Helper Joint based on 2 or more axis Joint based on 2 or more axis from driving joint. Even MORE from driving joint. Even MORE difficult when there are difficult when there are multiple bones acting as multiple bones acting as drivers.drivers.
52
RunTime RigsRunTime Rigs
• Done with ExpressionsDone with Expressions• Start with ConstraintsStart with Constraints
Ex: $scaleFactor = 30 degrees and $maxAngle =90 degrees.Ex: $scaleFactor = 30 degrees and $maxAngle =90 degrees.
OR SetDrivenKeyOR SetDrivenKey
73
RunTime Rigs – Constraints & RunTime Rigs – Constraints & (Exp./SDK) (SuperComplex – (Exp./SDK) (SuperComplex – Scapula)Scapula)• Explanation of (SDK or “If” Explanation of (SDK or “If”
statement in expression)statement in expression)
74
RunTime Rigs – Constraints & RunTime Rigs – Constraints & (Exp./SDK) (SuperComplex – (Exp./SDK) (SuperComplex – Scapula)Scapula)• Pros: Full Range Looks GreatPros: Full Range Looks Great• Cons: Complex and Weighting is Cons: Complex and Weighting is
tip driven by expression or tip driven by expression or SetDrivenKey from shoulder SetDrivenKey from shoulder rotation rotation
• Requires 1 extra parent Requires 1 extra parent Helper Joint w/ percentage Helper Joint w/ percentage rotation of shoulder driven rotation of shoulder driven by by RotateRotate expression or expression or SetDrivenKeySetDrivenKey
• Weighting is powerful and tricky. Weighting is powerful and tricky. Some vertices now have 5 different Some vertices now have 5 different weights.weights.
82
RunTime Rigs – Scaling RunTime Rigs – Scaling Entire RigEntire Rig• What if character needs to be What if character needs to be
scaled? (i.e.- player defined scaled? (i.e.- player defined proportions)proportions)
• A simple ‘Group’ node above the rig A simple ‘Group’ node above the rig mechanism in Maya’s hierarchy will mechanism in Maya’s hierarchy will scale easilyscale easily
• The Trick is figuring out how much The Trick is figuring out how much to scale. This is dependent on what to scale. This is dependent on what ‘space’ the helper joint deforms, ‘space’ the helper joint deforms, and how that space has been scaled.and how that space has been scaled.
83
RunTime RigsRunTime Rigs
• Done with ConstraintsDone with Constraints• Start with MusclesStart with Muscles
84
RunTime Rigs - MusclesRunTime Rigs - Muscles
• Muscles at RunTime Muscles at RunTime allows you to constrain allows you to constrain Helper Joints to the Helper Joints to the muscle surface and get muscle surface and get the effect of the musclethe effect of the muscle
• Requires some sort of Requires some sort of geometryConstraintgeometryConstraint
poly muscle rigid (or smooth) poly muscle rigid (or smooth) bound to two joints to handle bound to two joints to handle twisting of biceptwisting of bicep
• Requires a blendShape on Requires a blendShape on deformer object to handle deformer object to handle bulge.bulge.– *Note: blendShape is not *Note: blendShape is not
required on main skinning required on main skinning surface.surface.
• Complex Helper Joint is Complex Helper Joint is ‘‘VertexConstrainedVertexConstrained’ to vertex ’ to vertex on Deformer Objecton Deformer Object
muscle rigid (or smooth) bound to muscle rigid (or smooth) bound to three joints to handle complex three joints to handle complex Pectorals motionPectorals motion
• Requires MuscleDriver parent Requires MuscleDriver parent joints to be offset from main joints to be offset from main skeletal jointsskeletal joints
• MuscleDriver child joints are MuscleDriver child joints are ‘‘pointConstrainedpointConstrained’ to parent joints ’ to parent joints to avoid rotation of parent jointsto avoid rotation of parent joints
• Complex Helper Joint is Complex Helper Joint is ‘‘VertexConstrainedVertexConstrained’ to vert on ’ to vert on Deformer ObjectDeformer Object
or or Super Advanced Rigs Super Advanced Rigs (really any simulation (really any simulation you can think of) that are you can think of) that are baked-out.baked-out.
Joints Joints constrained to constrained to nurbsMuscle nurbsMuscle influence influence object, baked object, baked out, 1 key per out, 1 key per frame, scene frame, scene cleaned.cleaned.
Joints Joints constrained to constrained to nurbsMuscle nurbsMuscle influence influence object, baked object, baked out, 1 key per out, 1 key per frame, scene frame, scene cleaned.cleaned.
– Could theoretically add a jiggle Could theoretically add a jiggle joint as a child of the helper joint as a child of the helper jointsjoints
– Then just weight individual Then just weight individual vertices to these jiggle joints to vertices to these jiggle joints to cause ‘jiggling’cause ‘jiggling’
– Or just make separate jiggle Or just make separate jiggle joints and their ‘base’ joint joints and their ‘base’ joint wherever neededwherever needed
– Where are they needed?Where are they needed?
103
Non-RunTime Rigs to Non-RunTime Rigs to AutomationAutomation
AutomatingAutomating Production Production• Scripts: Tools you’ll needScripts: Tools you’ll need
– Script to auto-build entire Helper Script to auto-build entire Helper Joint System on your characterJoint System on your character• Selectable body partsSelectable body parts
– Scripts to automate editing of Rigs, Scripts to automate editing of Rigs, SetDrivenKeys, & Expressions for SetDrivenKeys, & Expressions for the artiststhe artists
– Scripts to do lots of mirroring:Scripts to do lots of mirroring:• Helper Joint RigsHelper Joint Rigs• WeightingWeighting• Set Driven KeysSet Driven Keys
– Export and Import Set Driven KeysExport and Import Set Driven Keys• Hint: look at the animCurves and add Hint: look at the animCurves and add
custom attrs for connections to them custom attrs for connections to them upon exportupon export
• DemoDemo
106
Automating ProductionAutomating Production
• WorkflowWorkflow– Duplicate your primary skeleton Duplicate your primary skeleton
and skinand skin– Apply your muscle system to this Apply your muscle system to this
duplicate characterduplicate character– Constrain duplicate skeleton to Constrain duplicate skeleton to
The Ultimate ReferenceThe Ultimate Reference• Muscle Muscle
SystemsSystems
110
The Ultimate ReferenceThe Ultimate Reference
• Muscle SystemsMuscle Systems– Auto imports muscle systemAuto imports muscle system
•Scaling to your skeletonScaling to your skeleton
– AutoFits muscles to AutoFits muscles to duplicated skinduplicated skin
– AutoSkins muscles to duped AutoSkins muscles to duped skinskin
111
The Ultimate ReferenceThe Ultimate Reference• Once you have the “Ultimate Once you have the “Ultimate
Reference”, you now have Reference”, you now have the data to let a programmer the data to let a programmer put you out of a job. All (s)he put you out of a job. All (s)he needs to figure out is:needs to figure out is:– How many joints?How many joints?– Where to place them?Where to place them?– How do they need to How do they need to
transform?transform?– What does their weighting What does their weighting
Accurate Character Skins from Accurate Character Skins from Example”Example”– White Paper on auto-computing White Paper on auto-computing
placement, animation, and weighting of placement, animation, and weighting of Helper Joints. Helper Joints.
113
ConclusionConclusion• We’ve covered just a few examples of how to use We’ve covered just a few examples of how to use
SetDrivenKeys, Constraints, and Expressions.SetDrivenKeys, Constraints, and Expressions.• My solutions are just first shot attempts. With My solutions are just first shot attempts. With
refinement, you can come up with much better refinement, you can come up with much better solutions.solutions.
• With these simple tools you can use them in many With these simple tools you can use them in many combinations to achieve nearly any effect you need.combinations to achieve nearly any effect you need.
• Of course everything is RunTime code dependent. As Of course everything is RunTime code dependent. As Character T.D.s we need to fight for:Character T.D.s we need to fight for:– SetDrivenKeysSetDrivenKeys– ConstraintsConstraints
• Point, orient, Point, orient, !!AIM!!!!AIM!!, parent, geometry, parent, geometry– ExpressionsExpressions– Spline IKSpline IK– frameCache (jiggle)frameCache (jiggle)
• Helper Joints are just a temporary solution until we can Helper Joints are just a temporary solution until we can get more advanced deformers at RunTime to simulate get more advanced deformers at RunTime to simulate MusclesMuscles– Per-vertexDeformer (influence objects)Per-vertexDeformer (influence objects)– WrapDeformer (lattices)WrapDeformer (lattices)– fusiForm deformerfusiForm deformer
. . . Talk more about this next year?. . . Talk more about this next year?
114
ThanksThanks
•… … for your time.for your time.•Please fill out surveys Please fill out surveys
so I can make a better so I can make a better one next year.one next year.