Choreography creation/Creating Events/Other Events

From Valve Developer Community
Jump to: navigation, search

Although FacePoser is primarily an animation tool, there are a wide range of supporting events that can be used to structure your scene and aid interaction with the world outside your actors, and more. If you find yourself wondering how you perform a particular choreographical task, this page may well hold the answer.

In this tutorial, generic events are placed after facial expressions and generic events but before 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.

NULL Gesture

Deprecated. This Event was required when Gestures always snapped (crossfaded) to each other, to override the behaviour. Snapping is now both optional and non-default, and NULL Gesture remains in FacePoser only for backwards-compatibility purposes.

Look at Actor

Tells the Actor to twist his or her head–and only head–to try and look at the specified target. The name is deceiving; any entity in the map can be used, as well as abstract targetname values like !player and !target1 through to 8. See Setting up your scene to give FacePoser access to a list of entities from the map you intend your scene for.

One caveat to bear in mind is that the actor's eyes will always look straight at the target. This can lead to odd results, with eyes being forced into the corner of their sockets if the target cannot be properly faced (in these situations, use Face Actor). This is true regardless of any pitch/yaw or even Ramp settings. The eyes will always look as directly as possible at the target!

Face Actor

Inherits all of the properties of Look at Actor, but adds permission for the actor to turn his or her body. An optional checkbox will prevent leg movement but still allow body twisting, which is helpful if you need an actor to look around quickly and not waste time repositioning their lower body.

Move to Actor

Move to Actor orders an Actor to walk, run or 'crouchwalk' toward an entity in the target map, generic targetname, or Actor. You can specify the type of movement from the second combo box, which should be self-explanatory, a 'stop distance', which is the distance from the target at which the Actor should stop approaching (should be at least 33 when the target is the player or a HUMAN_HULL Actor), and you can 'Force Short Movements', which makes the Actor move in small steps when close to their target (can be more natural in some situations).

Because Actors are moved through their AI system, this is an unpredictable event. You should consider checking the 'Event must be complete' option and using a Section Pause to ensure that the scene is not broken when performed in-game by actors unable to reach their destinations in time.

Fire Trigger

When a scene is played throught a logic_choreographed_scene entity (see Implementation), this event allows you to fire any of its OnTrigger<n> outputs. This enables your scene to interface with the rest of the map's I/O system. See Scene Triggers.

Note.pngNote: The length of the event has no effect: you must make a new one for each output you want to generate. The same output can be re-used multiple times.

Generic(AI)

Passes a command to an entity's AI. The available options are defined per-NPC, and FacePoser cannot see them, but some samples are provided in a drop-down that may or may not affect your actor are provided by default. You must specify the targetname for this event, even if it is the actor in whose channel the event is placed.

Tip.pngTip:Generic(AI) is used to make Alyx holster or take out her pistol during performances, and prompt many other AI-controlled changes.
Tip.pngTip:It can be used to display debug text in the Developer Console with debugtext.

Sub-scene

Triggers a second scene that plays like any other. You may want to check the 'Event must be complete' option and use a Section Pause to ensure that the sub-scene does not play over the top-level scene.

There is currently only support for one layer of sub-scenes.

Permit Responses

By default, an Actor will stop using the Response system when performing a scene. This event overrides that behaviour for its duration, allowing the use of interjetions while the actor's not busy. For example, in Kleiner's Lab, the characters will react to knocking down objects in between their lines; this is done by using Permit Responses events in the VCDs, and firing InterjectResponse inputs at the choreo entities.

You can specify a particular set of response rules with the second field. Separate responses with semicolons (;).

Todo: Does specifying it affect anything? It doesn't seem to filter out Interjections, nor does it allow through AI-driven responses during playback.
Icon-Important.pngImportant:Do not let this event's length encroach on an actor speaking! Trying to interject an actor show's already speaking, will both stop them, and not play the response itself.
Limit the length of this event so there's a little padding around it.
An example of Permit Responses event in scenes/klab/lab04a.vcd

Section Pause

The Section Pause 'Event' is created through the New > Section Pause... context menu option from the Timeline. It creates a dashed blue line with a dragable blue pointer that indicates the precise location of the pause.

A Section Pause. Note that the Move To Actor event extends past the Pause line: the scene will resume when !target1 is two seconds away from his target.

The scene will cease at the Section Pause line until all events 1) starting before it and 2) with the 'Event must be complete' checkbox filled on their properties dialogue have reached it. Note that this means that the checkbox label is actually misleading: the event doesn't need to be complete, it just needs to have reached the point at which it is in synch with the rest of the scene.

This property makes Section Pauses very powerful tools that allow predictive behaviour. They are most often used in conjunction with Move to Actor events, as timely navigation in a busy environment is not guaranteed; drag the end of the event two seconds past the Section Pause and the pause point will be cleared when the Actor thinks he or she is two seconds away from reaching the assigned target. The same time-based calculations are made for any event.

You can optionally resume or cancel the scene after a configurable period of being paused. Be aware that this will not affect events already in progress.

Loop

A Loop allows a scene to wrap back to an earlier point. When creating a Loop through New > Loop..., be sure to fill in the number of loops (the default, annoyingly, is zero) and change the loopback point if you need to.

Looping back into the middle of an event or looping from the end of one event to the start of an identical other can have undesirable effects!

Fire Completion

Source's I/O system will be told that the scene has completed when this point is reached, but it does not actually affect the scene. A single scene can have any number of Fire Completions.