Choreography creation/Creating Events/Facial expressions: Difference between revisions

From Valve Developer Community
Jump to navigation Jump to search
(Created)
 
(Mostly redone)
Line 1: Line 1:
{{choreotut}}
{{choreotut}}
Facial expressions ('''Flex''') are the trickiest of the choreographical areas to master. FacePoser provides the tools to create the complete range of human expressions from scratch through a system of sliders ('''Flex Sliders''') that control the intensity of carefully crafted muscle movements based on [[wikipedia:Paul Ekman|professor Paul Ekman]]'s [[wikipedia:Facial Action Coding System|Facial Action Coding System]]. The system's tools themselves are simple, but creating flowing, believable and meaningful animations with them takes flair and talent that does not come without practice.  
Facial expressions ('''Flex''') are the headline news of Source's choreography system. Using the [[wikipedia:Facial Action Coding System|Facial Action Coding System]] developed by professor [[wikipedia:Paul Ekman|Paul Ekman]], you are able to create any possible expression from scratch simply by manipulating a collection of '''Flex Sliders'''. While the tools are simple however, creating flowing, believable and meaningful animations with them takes flair and talent that does not come without practice.


In this tutorial, flex is placed after body animations and before generic events and lip synching. This is in order to suggest a productive workflow; however, there is nothing to stop you performing the four stages in any order you choose, or in no order, if you find doing so more helpful.
In this tutorial, facial animation is placed after body animations and before generic events and lip synching. This is in order to suggest a productive workflow; however, there is nothing to stop you performing the four stages in any order you choose, or in no order, if you find doing so more helpful.


==Basic Flex usage==
==Facial animation types==


Before you start animating facial expressions, it is a good idea to learn how to create static ones. Have an Actor with expression support (that is to say, a face) open, and bring up the '''Flex Sliders''' tool from the tab tray at the bottom of the screen or menu strip at the top. You may want to resize it to better fit your workspace. If you are not already viewing the Actor's face in the 3D View, select <code>Options > Center on Face</code> from the menu strip. A choreography VCD need not be open at this point.
There are two basic facial animation types in FacePoser: static '''Expressions''' and animated '''Flex''' events. Expressions are single-frame states created with the '''Flex Sliders''' tool which stand independent of any one [[VCD|scene file]]; Flex events are full animations stored within the scene and created with the '''Flex Animation''' event and tool.


[[Image:Faceposer_staticexpressionexample.jpg|center|650px|The best part was when I played my scene with him like this.]]
Creating Expressions is a good way to start learning facial animation. With only one frame to worry about, you can concentrate on getting used to the Flex sliders and conveying emotion and meaning without worrying about the extra dimension of timing.


The Flex Sliders in front of you each control one or one pair of the Actor's digital muscles. Try dragging a slider left or right now and see the effect. Creating a static expression is as simple as sliding the Flexes you need to a suitable position.
==Creating static Expressions==


Notice how some of the sliders have slider blips on the bottom (pointing upward) as well as the top. These control the extent to which the slider's value affects the left and right sides of the face, and can be manipulated with the right mouse button. Note also that you can quickly enable or disable a Flex with its checkbox.
Expressions are standalone and reusable Flex configurations that do not animate. They are useful for making an Actor hold a certain expression for a long time, or in situations where you want the same expression used many times, and also for learning how to use Source's facial animation system.


The best way of learning the Flexes at this point is through experimentation. The Flex names are quite self-explanatory, and even if you don't fully understand the meaning of one, grabbing and sliding it will provide an immediate demonstration.
All you need to create an Expression is an Actor with Flex animation support, which for Valve's content is anyone with an unmasked face, and the '''Flex Sliders''' tool, which can be accessed from the tray tab at the bottom of the screen or <code>Windows</code> in the menu strip at the top. If you are not already zoomed to the Actor's face, use the <code>Options > Center on Face</code> menu strip option.


If you make an expression you like and think might be useful, you might want to consider [[Expression Creation|saving it as an Expression]].
[[Image:Faceposer_staticexpressionexample.jpg|center|650px|The best part was when I played my scene with him like this.]]


TODO: How does '''Get Tracks''' work, what is '''Make Keyframe''' (if not Make Expression)?
The Flex Sliders in front of you each control one or one pair of the Actor's digital muscles. The left mouse button alters the intensity (top, red pip) and the right mouse button alters the left/right balance across the face (bottom, blue pip), if the Flex supports it. Creating an Expression is as simple as sliding these sliders into a desirable position–it is very hard to go too wrong. Once you build up a detailed Expression, you can use each Flex's checkbox to quickly deconstruct it.
The best way to move forward at this point is through experimentation; try making different expressions, both subtle and strong. The Flex names are quite self-explanatory, and even if you don't fully understand the meaning of one grabbing and sliding it will provide an immediate demonstration.


==Animating Flex movement==
If you make an Expression you like and think might be useful, you might want to consider [[Expression Creation|saving it for later use]].


Creating Flex ''animation'' is a large step up from creating a static expression. You now have to concern yourself with movement and timing, adding an entire dimension to your work. Don't expect to step straight in and produce animated Flex as well as you can produce static!
''TODO: how does '''Get Tracks''' work, and what is '''Make Keyframe''' (if not Make Expression)?''


===Using the tools===
==Creating Flex Animations==


While it is possible to import a static expression to a Flex Animation, we will be creating our movements from scratch, which is generally better practice. This time it is necessary to use an Event: Create a 'Flex' Channel if you haven't already, use the context menu to add a '''Flex Animation''' event, and finally open the '''Flex Animation''' tool.
Creating Flex animation is a large step up from creating a static Expression. You now have to concern yourself with movement and timing, adding an entire dimension to your work. Don't expect to step straight in and produce animated Flex as well as you can produce static!
 
Flex animations are stored in the scene VCD, so before you can start you must create a new Channel under your current Actor, use the context menu to add a '''Flex Animation''' event, and finally open the '''Flex Animation''' tool with your new event selected in the Timeline.


[[Image:Faceposer_flexanimexample.png|center|The Flex Animation tool with three simple graphs enabled.]]
[[Image:Faceposer_flexanimexample.png|center|The Flex Animation tool with three simple graphs enabled.]]


This displays the same controls as the Flex Sliders tool, but in the form of a series of graphs plotting time against intensity. All of these graphs are collapsed by default, so double-click on a Flex label to expand one. The blue-outlined area that opens up behaves in exactly the same way as the [[Choreography creation/Creating Events#Ramp_manipulation|Ramp]]: Ctrl+click creates a point, and variations on dragging manipulate it (left and right in Flex Sliders is now up and down), with the following Flex-specific additions:
The Flex Animation tool is a different way of looking at the same information as shown in the Flex Sliders tool, except that now there is also time to consider. The rows you can see are collapsed graphs that plot time against intensity for each Flex muscle. Double-click on one to open it and you will be presented with a blue-outlined area that behaves in exactly the same way as [[Choreography creation/Creating Events#Ramp_manipulation|the Ramp]]: Ctrl+click creates a point, and variations on dragging manipulate it.
 
There are several other interactions on top of the standard Ramp shortcuts:


<div style="background:#F9F9F9;padding:.2em;">
;Spacebar
;Spacebar
:Switch between the intensity graph (<code>editmode: <amount></code>) and the balance graph (<code>editmode: <left/right></code> in the active Flex.
:Switch between the intensity graph (<code>editmode: <amount></code>) and the balance graph (<code>editmode: <left/right></code>) in the active Flex.
:The inactive graph is displayed in the background of the active one, in a lighter shade of blue.
:The inactive graph is displayed in the background of the active one, in pale blue.
:Note that Edge Properties do not currently apply to the <code><left/right></code> graph.
:''Edge Properties do not currently apply to the <code><left/right></code> graph.''
;Ctrl+C
;Ctrl+C
;Ctrl+V
;Ctrl+V
Line 43: Line 48:
;Drag grey handle
;Drag grey handle
:Resize the active graph.
:Resize the active graph.
</div>


There are also several useful options in the context menu, which should make their purpose clear from their names. Pay particular attention to the <code>Sort</code> submenu, as it can be very useful for fitting more useful information into the same space.
There are also more options in the context menu, which should make their purpose clear from their names. Pay particular attention to the <code>Sort</code> submenu, as it can be very useful for fitting more Flex graphs into the same screen area.


===Workflow ===
===Suggested workflow ===


A large challenge when creating Flex animations is workflow. Treat a Flex animation like a static expression and you will end up with a motion that flips unconvincingly from one state to another. To avoid this it is best to work horizontally, one Flex at a time, considering how that particular area would move in reaction to the scene's events and creating it all, at least roughly, before moving on to the next graph. As the animations are built from the same cues they will hopefully need only very little 'vertical' adjustment to create a convincing performance.
A large challenge when creating Flex animations is workflow. Treat the process as you would an Expression and you will end up with an animation that flips unconvincingly from one state to another. It is generally best to work horizontally, one Flex at a time, considering how that particular area would move in reaction to the scene's events, before moving on to the next. As the animations are built from the same cues they will hopefully need only very little 'vertical' adjustment to create a convincing performance when played back together.


===General tips===
===General tips===


*'''Avoid steep curves.''' Unless you specifically want a sharp animation, anything above around 45 degrees should be treated with caution.
*'''Avoid steep curves.''' Unless you specifically want a sharp animation, anything above around 45 degrees should be treated with caution.
*'''Each graph point is a movement.''' The default curve between points is the one that creates the smoothest motion. By adding points that disturb it, you are making a change that is picked up by the brain as a new movement.
*'''Each graph point is a movement.''' The default curve between points is the one that creates the smoothest motion. Be aware that by adding points that disturb it too much you are making changes that are picked up by the brain as a new movements.
*'''Expanded/Collapsed and Active/Disabled are not synonymous.''' A collapsed Flex graph can still affect your animation if it has not been disabled through the context menu.
*'''Expanded/Collapsed and Active/Disabled are not synonymous.''' A collapsed Flex graph can still affect your animation if it has not been disabled through the context menu.
*'''The eyes have it.''' The area around the eyes (<code>outer raiser</code>, <code>inner raiser</code>, <code>lowerer</code>, <code>lid *</code>, <code>wrinker</code>, <code>cheek raiser</code>) is the most expressive. Don't be afraid to wrap eyebrow movement tightly to speech patterns.
*'''Disable Gestures.''' Double-click on your Gestures channel to disable it and ensure that your actor does not move and obscure your view.
 


''Please add your own suggestions!''
<div style="text-align:center;">'''''Please add your own suggestions!'''''</div>


===When not to use expressions===
==When not to use facial animation==


*'''When animating large head movements.''' While it is true that any muscle can be given a Flex definition, most Actor models do not link neck movements to the system. This restricts the amount of head movement that can be believably created in FacePoser. Most actors have nodding, shaking, and other such head movement animations that ought to be used instead of Flex equivalents.
;When animating detailed head movements
**Small motions are perfectly feasible, however.
:While it is true that any muscle can be given a Flex definition, most Actor models do not link neck movements to the system. This restricts the amount of head movement that can be believably created in FacePoser. Most actors have nodding, shaking, and other such 'head and neck' animations that ought to be used instead of Flex approximations.
*'''When directing Actor facing.''' Actors cannot be reliably or effectively made to look at a precise location through flex. [[info_target]] or [[npc_bullseye]] entities should instead be placed and treated with the [[Choreography creation/Creating Events/Other Events|Look at Actor or Face Actor events]].
:Small, simple and/or slow motions are perfectly feasible, however.
;When directing Actor facing
:Actors cannot be reliably or effectively made to look at a precise location through Flex. [[info_target]] or [[npc_bullseye]] entities should instead be placed in the map and treated with the [[Choreography creation/Creating Events/Other Events#Look_at_Actor|Look at Actor]] or [[Choreography creation/Creating Events/Other Events#Face_Actor|Face Actor]] events.


[[Category:Choreography creation]]
[[Category:Choreography creation]]

Revision as of 12:30, 14 August 2006

Facial expressions (Flex) are the headline news of Source's choreography system. Using the Facial Action Coding System developed by professor Paul Ekman, you are able to create any possible expression from scratch simply by manipulating a collection of Flex Sliders. While the tools are simple however, creating flowing, believable and meaningful animations with them takes flair and talent that does not come without practice.

In this tutorial, facial animation is placed after body animations and before generic events and lip synching. This is in order to suggest a productive workflow; however, there is nothing to stop you performing the four stages in any order you choose, or in no order, if you find doing so more helpful.

Facial animation types

There are two basic facial animation types in FacePoser: static Expressions and animated Flex events. Expressions are single-frame states created with the Flex Sliders tool which stand independent of any one scene file; Flex events are full animations stored within the scene and created with the Flex Animation event and tool.

Creating Expressions is a good way to start learning facial animation. With only one frame to worry about, you can concentrate on getting used to the Flex sliders and conveying emotion and meaning without worrying about the extra dimension of timing.

Creating static Expressions

Expressions are standalone and reusable Flex configurations that do not animate. They are useful for making an Actor hold a certain expression for a long time, or in situations where you want the same expression used many times, and also for learning how to use Source's facial animation system.

All you need to create an Expression is an Actor with Flex animation support, which for Valve's content is anyone with an unmasked face, and the Flex Sliders tool, which can be accessed from the tray tab at the bottom of the screen or Windows in the menu strip at the top. If you are not already zoomed to the Actor's face, use the Options > Center on Face menu strip option.

The best part was when I played my scene with him like this.

The Flex Sliders in front of you each control one or one pair of the Actor's digital muscles. The left mouse button alters the intensity (top, red pip) and the right mouse button alters the left/right balance across the face (bottom, blue pip), if the Flex supports it. Creating an Expression is as simple as sliding these sliders into a desirable position–it is very hard to go too wrong. Once you build up a detailed Expression, you can use each Flex's checkbox to quickly deconstruct it.

The best way to move forward at this point is through experimentation; try making different expressions, both subtle and strong. The Flex names are quite self-explanatory, and even if you don't fully understand the meaning of one grabbing and sliding it will provide an immediate demonstration.

If you make an Expression you like and think might be useful, you might want to consider saving it for later use.

TODO: how does Get Tracks work, and what is Make Keyframe (if not Make Expression)?

Creating Flex Animations

Creating Flex animation is a large step up from creating a static Expression. You now have to concern yourself with movement and timing, adding an entire dimension to your work. Don't expect to step straight in and produce animated Flex as well as you can produce static!

Flex animations are stored in the scene VCD, so before you can start you must create a new Channel under your current Actor, use the context menu to add a Flex Animation event, and finally open the Flex Animation tool with your new event selected in the Timeline.

The Flex Animation tool with three simple graphs enabled.

The Flex Animation tool is a different way of looking at the same information as shown in the Flex Sliders tool, except that now there is also time to consider. The rows you can see are collapsed graphs that plot time against intensity for each Flex muscle. Double-click on one to open it and you will be presented with a blue-outlined area that behaves in exactly the same way as the Ramp: Ctrl+click creates a point, and variations on dragging manipulate it.

There are several other interactions on top of the standard Ramp shortcuts:

Spacebar
Switch between the intensity graph (editmode: <amount>) and the balance graph (editmode: <left/right>) in the active Flex.
The inactive graph is displayed in the background of the active one, in pale blue.
Edge Properties do not currently apply to the <left/right> graph.
Ctrl+C
Ctrl+V
Copy and Paste all points from one Flex graph to another. Overwrites the destination graph.
Be aware that pasting will not activate a disabled Flex. You must use the context menu to enable it.
Drag grey handle
Resize the active graph.

There are also more options in the context menu, which should make their purpose clear from their names. Pay particular attention to the Sort submenu, as it can be very useful for fitting more Flex graphs into the same screen area.

Suggested workflow

A large challenge when creating Flex animations is workflow. Treat the process as you would an Expression and you will end up with an animation that flips unconvincingly from one state to another. It is generally best to work horizontally, one Flex at a time, considering how that particular area would move in reaction to the scene's events, before moving on to the next. As the animations are built from the same cues they will hopefully need only very little 'vertical' adjustment to create a convincing performance when played back together.

General tips

  • Avoid steep curves. Unless you specifically want a sharp animation, anything above around 45 degrees should be treated with caution.
  • Each graph point is a movement. The default curve between points is the one that creates the smoothest motion. Be aware that by adding points that disturb it too much you are making changes that are picked up by the brain as a new movements.
  • Expanded/Collapsed and Active/Disabled are not synonymous. A collapsed Flex graph can still affect your animation if it has not been disabled through the context menu.
  • Disable Gestures. Double-click on your Gestures channel to disable it and ensure that your actor does not move and obscure your view.


Please add your own suggestions!

When not to use facial animation

When animating detailed head movements
While it is true that any muscle can be given a Flex definition, most Actor models do not link neck movements to the system. This restricts the amount of head movement that can be believably created in FacePoser. Most actors have nodding, shaking, and other such 'head and neck' animations that ought to be used instead of Flex approximations.
Small, simple and/or slow motions are perfectly feasible, however.
When directing Actor facing
Actors cannot be reliably or effectively made to look at a precise location through Flex. info_target or npc_bullseye entities should instead be placed in the map and treated with the Look at Actor or Face Actor events.