View
216
Download
0
Category
Tags:
Preview:
Citation preview
CRYTEK
CONFIDENTIAL © 2011 Crytek GmbH
CryMannequin (working title)
HIGH-LEVEL ANIMATION SYSTEM
CRYTEK
© 2010 Crytek GmbHCONFIDENTIAL
KEY REQUIREMENTS
2
Data-driven AnimationEase of adding assets
o Animators should be able to insert new variations of animations easily and without coder intervention or knowledge of game-specific systems.
Ease of adjusting playbacko Animators should be able to have control over layering and biasing their base
animation assets to produce a final look which is used directly in game.o Animators should be able to make use of a suite of procedural fragments as part
of their toolkit in authoring an animation fragment.
Ease of adjusting blends between assetso Very often animations look great when they are playing, but the transitions
between them are poor. This makes the overall flow disjointed and greatly detracts from the look of the animations.
o Animators should be able to control how different animations blend into each other and insert tween animations without coder assistance.
CRYTEK
© 2010 Crytek GmbHCONFIDENTIAL
KEY REQUIREMENTS
3
Better Game IntegrationEnsure authored animation perfectly reflects in game results
o We provide a structure such that the editor can be used to perfectly match the end result in game
o Greatly simplified game-side control
Provide helper control for coordinating animations with game specific effectso Framework ensures that the game code and animation system are always in syncho Assurance that the animation system is always doing what is asked of it
Scalability – the level of impact on game code is the user’s choiceo Minimal integration for pure animation controlo Stronger integration for tighter management of actions
CRYTEK
© 2010 Crytek GmbHCONFIDENTIAL
KEY COMPONENTS
4
Data-driven AnimationThe core animation system selects and sequences animations working solely
from a databaseFragments
o Animators author fragments of animation. These are small graphs built from sequences and layers of raw animation assets to represent a specific animation state.
Transitionso Animators author and edit specific transitions between animation assets.
Transitions dictate the timing of blends and can include tween animations.Selection
o Specific fragments are selected by a game-side identifier (the FragmentId) and a list of game-side tags that define the animation context (e.g. tired, scar, nervous).
Sequencerso The core animation system is built around the sequencing of these animation
fragments using the most appropriate transitions. o The sequencers take in FragmentIds and look up appropriate fragments and
transitions.
CRYTEK
© 2010 Crytek GmbHCONFIDENTIAL
KEY COMPONENTS
5
Better Game IntegrationAn action based system provides the high level interface into the game and
adds coordination via priority and splitting the character into parts
Actionso Basic class used to control animation and synchronise with the game. Can
combine game code with simple high level animation control by pushing FragmentIds onto owned sequencers.
Scopeso Scopes represent a part of the animated character, typical examples being Base,
Torso or Head.o Actions can have control of one or more scopes.o Scopes allow the coordination of animation across different entities be they a
weapon or another character.Action Controller
o A high level controller provides the ability to query scope availability and queue up actions.
CRYTEK
© 2010 Crytek GmbHCONFIDENTIAL 6
KEY COMPONENTS
CRYTEKDATA-DRIVEN ANIMATION
7
CRYTEK
© 2010 Crytek GmbHCONFIDENTIAL 8
EDITOR COMPONENTS (KEY PATH)
CRYTEK
© 2010 Crytek GmbHCONFIDENTIAL 9
EDITOR COMPONENTS (OCCASIONAL PATH)
CRYTEK
© 2010 Crytek GmbHCONFIDENTIAL 10
SEQUENCE ANALYSER PREVIEW REFINE DEBUG
Load Save
Stand Move
Scar_StandIdle Stand2Run Scar_Move
Recoil Reload Idle
Scar_RecoilLoop Scar_RecoilExit Scar_Reload Scar_Idle_01
An integral tool for authoring animation content. The Sequence Analyser sits on top of the core animation system and drives it in the same way as the game would.
CRYTEK
© 2010 Crytek GmbHCONFIDENTIAL 11
SEQUENCE ANALYSER PREVIEW REFINE DEBUG
Load Save
Stand Move
Scar_StandIdle Stand2Run Scar_Move
Recoil Reload Idle
Scar_RecoilLoop Scar_RecoilExit Scar_Reload Scar_Idle_01
Insert FragmentIDs along the timeline
Insert FragmentIDs along the timeline
1
Sequence of assets and blends is
generated below
Sequence of assets and blends is
generated below
2
Click play to see sequence in the
character viewport
Click play to see sequence in the
character viewport
3
CRYTEK
© 2010 Crytek GmbHCONFIDENTIAL 12
SEQUENCE ANALYSER PREVIEW REFINE DEBUG
Load Save
Stand Move
Scar_StandIdle Stand2Run Scar_Move
Recoil Reload Idle
Scar_RecoilLoop Scar_RecoilExit Scar_Reload Scar_Idle_01
CRYTEK
© 2010 Crytek GmbHCONFIDENTIAL 13
SEQUENCE ANALYSER PREVIEW REFINE DEBUG
Load Save
Stand Move
Scar_StandIdle Stand2Run Scar_Move
Recoil Reload Idle
Scar_RecoilLoop Scar_RecoilExit Scar_Reload Scar_Idle_01
Load sequence information exported directly from game to
fix glitches
Load sequence information exported directly from game to
fix glitches
CRYTEK
© 2010 Crytek GmbHCONFIDENTIAL
FRAGMENT EDITOR
14
Fragments are specific animation states, they are effectively a fragment of a complete sequence. This is intended to complement core CryAnimation functionality and so complex asset mixing can be handled within it through the usage of parameterised animations.
Stand_idle_01
Load Save
CRYTEK
© 2010 Crytek GmbHCONFIDENTIAL
FRAGMENT EDITOR
15
Create sequences by dragging assets onto
the timeline.
Create sequences by dragging assets onto
the timeline.
Stand_idle_01 IdleBreak_shiftFeet
Load Save
Scrub time and playback in the same
manner as the SequenceAnalyser.
Scrub time and playback in the same
manner as the SequenceAnalyser.
CRYTEK
© 2010 Crytek GmbHCONFIDENTIAL
Stand_idle_01 IdleBreak_shif ...
Load Save
FRAGMENT EDITOR
16
Create random variation by dragging assets onto existing
entries.
Create random variation by dragging assets onto existing
entries.
Right-click to tweak random timings and
chances.
Right-click to tweak random timings and
chances.
Asset Chance
IdleBreak_shiftFeet01 10
IdleBreak_relaxStance01 50
CRYTEK
© 2010 Crytek GmbHCONFIDENTIAL
FRAGMENT EDITOR
17
Directly edit blends to customise the default entry and exit blends
for the sequence.
Directly edit blends to customise the default entry and exit blends
for the sequence.
Stand_idle_01 IdleBreak_shif ...
Insert default tween animations which can
later be overridden.
Insert default tween animations which can
later be overridden.
Stand_idle_01 IdleBreak_shif ... IdleBreak_exit
CRYTEK
© 2010 Crytek GmbHCONFIDENTIAL
FRAGMENT EDITOR
18
Layer animations by dragging assets into
different layers.
Layer animations by dragging assets into
different layers.
Stand_idle_01 IdleBreak_shif ...
RelaxArms01
Load Save
CRYTEK
© 2010 Crytek GmbHCONFIDENTIAL
FRAGMENT EDITOR
19
Layer procedural effects by dragging them onto layers.
Layer procedural effects by dragging them onto layers.
Stand_idle_01 IdleBreak_shif ...
RelaxArms01
Random look around
Load Save
CRYTEK
© 2010 Crytek GmbHCONFIDENTIAL
PROCEDURAL FRAGMENTS
20
Data-driven procedural effectsLayering procedural effects onto animations is another way to build up
behaviours
Procedural animation effectso Parameterised random look or aim aroundso Would typically work by applying and driving poseModifiers
Parameterise existing procedural effectso Hook up of look IK and potentially aim IK animationso Allow per animation settings for the look/aim IKo Would typically work by adjusting parameters for existing poseModifiers
Simple game extensions exposed to the editoro Would need to support extensions from game code for custom effects
CRYTEK
© 2010 Crytek GmbHCONFIDENTIAL
PROCEDURAL FRAGMENTS
21
Data-driven procedural effectsLayering procedural effects onto animations is another way to build up
behaviours
Manipulate animation playbacko Sub-class of Manipulators to provide mapping from game-side parameter to
specific animation effectso Example: a layer may wish to be driven from game from 0->1 (off to on) different
manipulators could implement this in different ways, from changing additive factors to scrubbing time.
o Could also parameterise interpolation rates, allowing animators to author heavy weapons with slower recovery rates.
o Could also be used to drive the parameters for parameterised animations leading to a suite of adjustable manipulators to handle typical locomotion tasks
CRYTEK
© 2010 Crytek GmbHCONFIDENTIAL 22
TRANSITION EDITINGTransitions are key to smooth flowing animation. CryMannequin allows us to insert and edit blends directly on the Sequence Analyser.
Example: Adding stand2Move transitions.
CRYTEK
© 2010 Crytek GmbHCONFIDENTIAL 23
TRANSITION EDITINGRight clicking on the target fragment allows us to override the fragment’s standard entry blend with an explicit transition.
Transitions are filtered by tags in the same way as Fragments. This allows you to specify high level transitions to cover a whole range of contexts, or very specific ones.
CRYTEK
© 2010 Crytek GmbHCONFIDENTIAL 24
TRANSITION EDITING
A transition is inserted, inheriting the existing blend.The blend region can now be dragged to alter the blend duration.
New keys can be added to specify tweening animation clips.
CRYTEK
© 2010 Crytek GmbHCONFIDENTIAL 25
TRANSITION EDITING
Additionally, new layers of animation can be overlaid.
These additional layers can be extended to overlap the destination fragment allowing for more naturalistic transitions.
CRYTEK
© 2010 Crytek GmbHCONFIDENTIAL 26
TRANSITION EDITINGTransitions between fragments support procedural clips too and these can be sequenced and layered in the same way as anim clips.
CRYTEK
© 2010 Crytek GmbHCONFIDENTIAL 27
EXAMPLE WORKFLOWSProblem
o Under-barrel weapon attachments cause cut through on the fingersSolution
o Add new tag UnderbarrelAttachmento Specify new fragments
• Copy existing fragments• Layer on a new additive animation to shift the hand
o Sequencer test -> Fail: not all animations work with the additiveo Remove additive from these animations & tweak the specific blend on/off for the
additive until the result is good for all animationso Sequencer test ->Successo Save and commit databaseo Coder adds the new tag into game
CRYTEK
© 2010 Crytek GmbHCONFIDENTIAL 28
EXAMPLE WORKFLOWSProblem
o Need to reflect AI being nervousSolution
o Add new tag Nervouso Specify new fragments
• Copy existing fragments for Stand and Move• Layer on a new additive animation to shift up the arms• Layer on a procedural fragment to cause random look-around• Tweak procedural parameters until the correct effect is reached
o Sequencer test ->Successo Save/commit databaseo Coder adds the new tag into game
CRYTEK
© 2010 Crytek GmbHCONFIDENTIAL 29
EXAMPLE WORKFLOWSProblem
o Glitch in game going from scar grenade launcher recoil to reloadSolution
o Dump Sequence information from gameo Load into Sequence Analysero Playback and identify cause as a blend on a layero Tweak blendo Playback and validateo Save and commit database
CRYTEKGAME INTEGRATION
30
CRYTEK
© 2010 Crytek GmbHCONFIDENTIAL
In-Game UsageQuery Action Controller for availability
o The query takes the form of: can I play an action of a given priority on these scopes within n seconds? Often a single query can be used to early out on a range of potential actions.
Create custom class or use generic actiono This is dependant on the desired level of integration into game
code and the complexity of the action.Assign FragmentId, priority and scopes to action
oWith a custom action these will typically be predefined by that class.
Queue up actiono Push action onto system. This will be processed on the next
system update.o The action is queued up to play at the blend time dictated by the
Transition Database, or triggered immediately if its priority trumps what is currently playing.
31
CRYTEK
© 2010 Crytek GmbHCONFIDENTIAL 32
Action Controller
Base Torso Weapon Priority Queue
Locomotion Idle
Locomotion Idle Jump
Jump Idle Locomotion
Jump Idle Reload Locomotion
Jump Reload Reload Locomotion
Jump Reload Reload Stamp Locomotion
Stamp Stamp Stamp Locomotion
Stamp Stamp Stamp Locomotion
Locomotion
Example of scope usage by actions over time
CRYTEK
© 2010 Crytek GmbHCONFIDENTIAL 33
Action Controller
Base Torso Weapon Priority Queue
Locomotion Idle
Locomotion Idle Jump
Jump Idle Locomotion
Jump Idle Reload Locomotion
Jump Reload Reload Locomotion
Jump Reload Reload Stamp Locomotion
Stamp Stamp Stamp Locomotion
Stamp Stamp Stamp Locomotion
Locomotion
Initial state. An action controlling basic locomotion holds the base
scope and an Idle action currently has control of the torso.
Initial state. An action controlling basic locomotion holds the base
scope and an Idle action currently has control of the torso.
CRYTEK
© 2010 Crytek GmbHCONFIDENTIAL 34
Action Controller
Base Torso Weapon Priority Queue
Locomotion Idle
Locomotion Idle Jump
Jump Idle Locomotion
Jump Idle Reload Locomotion
Jump Reload Reload Locomotion
Jump Reload Reload Stamp Locomotion
Stamp Stamp Stamp Locomotion
Stamp Stamp Stamp Locomotion
Locomotion
Game updates and queues up a Jump action. It is on the same scope as the
Locomotion but with higher priority so it will interrupt it.
Game updates and queues up a Jump action. It is on the same scope as the
Locomotion but with higher priority so it will interrupt it.
CRYTEK
© 2010 Crytek GmbHCONFIDENTIAL 35
Action Controller
Base Torso Weapon Priority Queue
Locomotion Idle
Locomotion Idle Jump
Jump Idle Locomotion
Jump Idle Reload Locomotion
Jump Reload Reload Locomotion
Jump Reload Reload Stamp Locomotion
Stamp Stamp Stamp Locomotion
Stamp Stamp Stamp Locomotion
Locomotion
Locomotion is interruptible and so is automatically added to the priority queue ready for reinsertion at the
earliest opportunity.
Locomotion is interruptible and so is automatically added to the priority queue ready for reinsertion at the
earliest opportunity.
CRYTEK
© 2010 Crytek GmbHCONFIDENTIAL 36
Action Controller
Base Torso Weapon Priority Queue
Locomotion Idle
Locomotion Idle Jump
Jump Idle Locomotion
Jump Idle Reload Locomotion
Jump Reload Reload Locomotion
Jump Reload Reload Stamp Locomotion
Stamp Stamp Stamp Locomotion
Stamp Stamp Stamp Locomotion
Locomotion
Game updates and queues up a reload action. This
moves straight to the head of the priority queue.
Game updates and queues up a reload action. This
moves straight to the head of the priority queue.
CRYTEK
© 2010 Crytek GmbHCONFIDENTIAL 37
Action Controller
Base Torso Weapon Priority Queue
Locomotion Idle
Locomotion Idle Jump
Jump Idle Locomotion
Jump Idle Reload Locomotion
Jump Reload Reload Locomotion
Jump Reload Reload Stamp Locomotion
Stamp Stamp Stamp Locomotion
Stamp Stamp Stamp Locomotion
Locomotion
Action Controller updates and pushes the Reload onto the Torso and Weapon Scopes. This triggers the character and the
weapon animations synchronously. The Idle action is not interruptible and so is terminated and deleted.
Action Controller updates and pushes the Reload onto the Torso and Weapon Scopes. This triggers the character and the
weapon animations synchronously. The Idle action is not interruptible and so is terminated and deleted.
CRYTEK
© 2010 Crytek GmbHCONFIDENTIAL 38
Action Controller
Base Torso Weapon Priority Queue
Locomotion Idle
Locomotion Idle Jump
Jump Idle Locomotion
Jump Idle Reload Locomotion
Jump Reload Reload Locomotion
Jump Reload Reload Stamp Locomotion
Stamp Stamp Stamp Locomotion
Stamp Stamp Stamp Locomotion
Locomotion
Game updates and queues up a stamp action. This is a high priority action which effects all the scopes. It goes straight to
the head of the priority queue.
Game updates and queues up a stamp action. This is a high priority action which effects all the scopes. It goes straight to
the head of the priority queue.
CRYTEK
© 2010 Crytek GmbHCONFIDENTIAL 39
Action Controller
Base Torso Weapon Priority Queue
Locomotion Idle
Locomotion Idle Jump
Jump Idle Locomotion
Jump Idle Reload Locomotion
Jump Reload Reload Locomotion
Jump Reload Reload Stamp Locomotion
Stamp Stamp Stamp Locomotion
Stamp Stamp Stamp Locomotion
Locomotion
The Stamp is pushed on across all the scopes. The existing
actions are all non-interruptible and so terminated and deleted.
The Stamp is pushed on across all the scopes. The existing
actions are all non-interruptible and so terminated and deleted.
CRYTEK
© 2010 Crytek GmbHCONFIDENTIAL 40
Action Controller
Base Torso Weapon Priority Queue
Locomotion Idle
Locomotion Idle Jump
Jump Idle Locomotion
Jump Idle Reload Locomotion
Jump Reload Reload Locomotion
Jump Reload Reload Stamp Locomotion
Stamp Stamp Stamp Locomotion
Stamp Stamp Stamp Locomotion
Locomotion
The Stamp action hits the ground and pushes on its final FragmentID (StampLand). When we reach the most appropriate blend point the Stamp action is
terminated and the Locomotion reinstalled.
The Stamp action hits the ground and pushes on its final FragmentID (StampLand). When we reach the most appropriate blend point the Stamp action is
terminated and the Locomotion reinstalled.
CRYTEKALTERNATIVES
41
CRYTEK
© 2010 Crytek GmbHCONFIDENTIAL
GRAPH BASED APPROACHESSize = Complexity
o All graphs suffer from the same problem, the more you add the bigger they get & the harder to maintain & predict behaviour it becomes.
Dual Controlo Graphs have their own control system which then needs to coordinate with the
game. This leads to:• Added complexity in the graph• Added complexity & bugs in game code to manage/track/generally interface
with the graphDivided focus
o Graph structure is dictated by control flow. This makes actual fine animation control difficult, adding links for blends & transition animations is generally difficult or not possible
Exclusive ownershipo Because of the complexity of the graph it typically becomes one man’s baby:
• Bottlenecks• Worse integration of anyone else’s assets
42
CRYTEK
© 2010 Crytek GmbHCONFIDENTIAL 43
GRAPH BASED APPROACHES (CONT)One layer
o A graph can only describe what happens on a single layer. To coordinate movement animations with torso actions a second graph is required & additional logic needed to bind the two together
Excellent preview toolo A graph acts as a great previewing tool. Anything we do instead needs to be as
expressive and visible in its results.
CRYTEK
© 2010 Crytek GmbHCONFIDENTIAL
AnimAction ConcernsWhat chooses the specific AnimAction?
o If each AnimAction is specifically setup with its own assets then we’ll need some higher level control to select which AA to use. Previously this was part of the role of AnimGraph or the Weapon Animation code.
How do we blend between AnimActions?oNo system in place for this and no clear route to extend it.
Potential learning curve per AA typeo Custom parameterisation could make the addition of new variant
AAs non-trivial.How do we manage animations across layers?
o Is the AA specifically tied to a single layer or is this something we explicitly parameterise? This also requires an additional system to coordinate.
44
Recommended