Creating Faceposer gestures

From Valve Developer Community
Jump to: navigation, search

Faceposer can use any sequence in a model as a gesture, but timing tags (Apex, Accent, Loop, End), thumbnail frames, classification as a posture, etc. must be specified through a sequence's own keyvalues. This page is for creating new gestures or postures designed to be used in Faceposer. If you want to know how to place an existing gesture into a choreography scene, see Creating skeletal animation events.

Note:These are for a sequence's keyvalues, not the model's $KeyValues.

Example

An example of a gesture with Faceposer options. This was found in models/male_gestures.mdl. The rest of the sequence has been removed for easier reading.

 $sequence "b_head_back" {
	...
 
	keyvalues
	{
		faceposer 
		{
			"type" "gesture"
			"tags" 
			{
				"apex" "10"
				"extreme" "42"
				"loop" "43"
				"end" "44"
			}
			"entrytag" "apex"
			"thumbnail_frame" "42"
		}
	}
 }

Options

type <choices>
What Faceposer should classify this animation as.
gesture
Classifies the animation as a gesture, putting it in the "Gestures" category and behaving like a gesture during playback.
posture
Classifies the animation as a gesture, putting it in the "Postures" category and behaving like a posture during playback.


Note:There is evidence that time tag names are not tied to anything at all, meaning you could name them anything you want. This has not been tested at all and needs to be confirmed.
tags { [stuff] }
Timing tags and which frame they are located at. All tags should be subkeys.
apex <frame>
accent <frame>
loop <frame>
end <frame>
entrytag <tag>
Which of the tags specified in tags should be the "entry tag".
exittag <tag>
Which of the tags specified in tags should be the "exit tag".
startloop <tag>
Which of the tags specified in tags should the loop start. [confirm]
endloop <tag>
Which of the tags specified in tags should the loop end. [confirm]


thumbnail_frame <frame>
Which frame of the animation should appear in Faceposer's animation browser.
eye_height <float>
To do