SALSA LipSync Suite Support

This page describes how to set up the Dialogue System with Crazy Minnor Studios' SALSA LipSync Suite. (SALSA LipSync Suite is required.)

SALSA LipSync Suite copyright © Crazy Minnow Studios.

SALSA LipSync Suite Setup

Follow these steps to set up the Dialogue System with SALSA LipSync Suite.

  • Import the package Third Party Support ► SALSA Support. This will unpack files into the folder Pixel Crushers ► Dialogue System ► Third Party Support ► SALSA LipSync Suite Support.
  • Configure your character(s) with Salsa, Emoter, and/or Eyes components as described in the SALSA manual.
  • Use SALSA() in sequences, such as in the Sequence field of your dialogue entries. You can also take advantage of the entrytag keyword; see Entrytags.

Example Scene

The Example folder contains an example scene that uses SALSA box head character. It also uses entrytags. (See Entrytags.) If you open the dialogue database and examine the first NPC line in the 'Private Hart' conversation, you'll see these lines:

SALSA(entrytag);
EyesRandom(on,on,on)

The first command plays the audio associated with the dialogue entry node's entrytag.

The second command makes the character randomly move its head, eyes, and blink.

The second NPC dialogue entry node has another Sequence that demonstrates other SALSA commands.

SALSA Sequencer Commands

You can use the following sequencer commands in your dialogue entries' Sequence fields to interface with SALSA LipSync Suite.

SALSA()

Syntax: SALSA(clip, [subject], [nowait])

Description: Plays an audio clip with SALSA. Note: This command is just an alias for the Dialogue System's AudioWait() command.

Parameters:

  • clip: The name of an audio clip in a Resources folder or registered asset bundle.
  • subject: The name of the SALSA speaker. Default: speaker.

Example:

  • SALSA(Greetings/Hello) (Plays the clip Resources/Greetings/Hello)

Emote()

Syntax: Emote(emoteName, [on|off], [oneway|roundtrip], [duration], [subject], [nowait])

Description: Plays an emote.

Parameters:

  • emoteName: The emote name.
  • on|off: Turn the emote on or off. Default: on.
  • oneway|roundtrip: ExpressionHandler value. Default: oneway.
  • duration: Duration in seconds. Default: 2.
  • subject: The GameObject with the Emoter component. Default: speaker.
  • nowait: If specified, don't wait for emote to finish.

Example:

  • Emote(Smile) (Plays the Smile emote on the speaker)

EyesAffinity()

Syntax: EyesAffinity([on|off], [percentage], [timerMin], [timerMax], [subject])

Description: Sets an Eyes component's affinity.

Parameters:

  • on|off: Set affinity on or off. Default: on.
  • percentage: Affinity percentage out of 1.0. Default: 0.75.
  • timerMin: Timer min in seconds. Default: 2.
  • timerMax: Timer max in seconds. Default: 5.
  • subject: The GameObject with the Eyes component. Default: speaker.

Example:

  • EyesAffinity(on,0.5,1,2) (Sets the affinity to 0.5 for 1-2 seconds)

EyesBlink()

Syntax: EyesBlink([durationOn], [durationHold], [durationOff], [subject], [nowait])

Description: Sets an Eyes component's blink pattern.

Parameters:

  • durationOn: Duration to keep eyes open before blinking. Omit for default blink.
  • durationHold: Duration to keep eyes closed while blinking. Omit for default blink.
  • durationOff: Duration to keep eyes open after blinking. Omit for default blink.
  • subject: The GameObject with the Eyes component. Default: speaker.
  • nowait: If specified, don't wait for blink sequence to finish.

Example:

  • EyesBlink(0, 2, 0) (Keeps eyes closed for 2 seconds)

EyesLook()

Syntax: EyesLook([target], [subject])

Description: Sets the position where the subject will look.

Parameters:

  • target: Where the subject should look. Default: listener.
    • Note: You will probably want to specify a child object of the listener; otherwise the subject may end up looking at the listener's base position (e.g., feet).
  • subject: The GameObject with the Eyes component. Default: speaker.

Example:

  • EyesLook() (Makes speaker look at listener)

EyesRandom()

Syntax: EyesRandom([head], [eye], [blink], [subject])

Description: Sets an Eyes component's random movement.

Parameters:

  • head: on|off. Omit to turn leave head setting unchanged.
  • eye: on|off. Omit to turn leave eye setting unchanged.
  • blink: on|off. Omit to leave blink setting unchanged.
  • subject: The GameObject with the Eyes component. Default: speaker.

Example:

  • EyesRandom(on,on,) (Sets head and eye movement to random but leaves blink setting unchanged)

More info: Cutscene Sequences


TextSync

SALSA has a TextSync addon that can simulate mouth movement based on text instead of audio. If you're using TextSync, add a TextSyncActor component to your SALSA characters.

If you allow continue buttons to skip dialogue, replace your continue button's StandardUIContinueButtonFastForward component with a ContinueButtonStopTextSyncActor component.

Alternatively, instead of using a TextSyncActor component, use the TextSync([subject]) sequencer command. This plays the current subtitle's text on the subject's CM_TextSync component. If the subject is omitted, it will use the dialogue entry's speaker.


<< Third Party Integration