OneClicks Overview

OneClicks are the equivalent of presets for different (supported) model types. All OneClicks generally operate the same way and produce similar results (as much as is possible considering the differences between model/character systems). The application of a OneClick on a supported model will configure:

  1. A SALSA module with visemes corresponding to our current recommendations.
  2. One EmoteR instance with SALSA-linked emphasis emotes.
  3. An Eyes module with head, eyes, and eyelids configurations.

Using a OneClick should be considered a starting point for setting up a character model. We have spent a lot of time testing different settings and configurations and have come up with a current setup that we believe creates a great look-and-feel. Please feel free to tweak and adjust any aspect that better suits your needs.

For a quick overview of how OneClicks are applied to character models, please see Part 4 (OneClicks), of our video tutorial series.

Available OneClick Options

OneClicks are only available for specific 3D character model systems as indicated below. However, nearly any model that uses blendshapes or bones (or both) for animation may be configured to work with SALSA LipSync Suite v2.

OneClick Installation

  • Make sure SALSA LipSync Suite is installed.
  • If upgrading from previously-installed OneClicks prior to v2.1.0, first remove the existing OneClick directory located here:
    Assets > Plugins > Crazy Minnow Studio > SALSA LipSync > Editor > OneClicks
  • Download and install the latest OneClick Base (REQUIRED for all OneClicks). Also ensure the appropriate version of the SALSA Suite is installed. Release notes for OneClickBase are located in the script itself.
  • Download the appropriate model-specific OneClick unitypackage and install it. Release notes for all OneClicks are located in the OneClick Editor scripts.

NOTE: Installation of unitypackage files is quite simple. If you are new to the process, please see this page.

Applying the OneClick

  • Select the model's root in your scene.
  • Apply the OneClick -- GameObject menu: Crazy Minnow Studio > SALSA LipSync > One-Clicks
  • Hit 'Play'.

NOTE: If you installed the core examples, the included Promo-male audio clip will be assigned -- otherwise, add an AudioClip of your choice to the SALSA-linked AudioSource.

Currently Available OneClicks

(Mixamo) Fuse

Special instructions: Adobe models may not work due to inconsistent mesh/shape naming.

Reallusion CC3 and iClone

Special instructions: Reallusion is a very flexible system with varying ways to import and export models. Generally speaking, if you are specifically using iClone models, use the iClone OneClick. For most other instances, use the CC3 OneClick. As new updates or use-cases evolve, we will assess the situation and attempt to update the OneClick to support models generated from the system when we are made aware and when possible or warranted.

Current supported situations: Standard/Game iClone/CC3 exported models should work. DAZ models imported with 3DExchange system and leveraging the CC3 animation system should work with the CC3 OneClick.

If you choose to create animations using blendshapes within the iClone/CC3 system, exported animations will interfere with SALSA, EmoteR, and Eyes. There are currently three options available to deal with this situation:

  1. Do not export animations using blendshapes -- use the SALSA Suite to handle your character's facial animations.

  2. Only use animations with blendshapes not being used by SALSA, EmoteR, or Eyes. This will require editing the animation and removing the conflicting blendshapes.

  3. Try the experimental SALSA setting, enabling persistence mode. Also, Enable persistence on all conflicting emotes. Persistence does add overhead to the SALSA Suite; however, it may be negligible in most situations.

DAZ3D (for Genesis models)

Special instructions: NONE

Autodesk Character Generator (ACG)

Special instructions:
Autodesk supports level-of-detail (LOD) meshes on export. We are aware of four levels of detail and have built that into a helper script that provides an interface to switching these levels and subsequently switching out the SALSA, EmoteR, and Eyes configurations to work with each level. This functionality can occur at runtime, on-the-fly.

NOTE: Support for run-time LOD switching requires SALSA LipSync Suite version 2.0.1+

LOD functionality is built into the OneClick applied to the model. In most OneClicks, the configuration application is simply called and the SALSA Suite modules are added to the model and automatically configured. Autodesk gets an additional component added to the model which provides LOD functionality.

LOD Functionality

The following general rules of functionality are available to supported Autodesk models.

  1. Applying the OneClick to a model automatically applies SALSA, EmoteR, and Eyes and sets the model's highest level of detail as active.

  2. Specifying an LOD that does not exist results in an attempt to apply the next highest LOD until one is found. If the attempt exceeds the available levels for Autodesk (3 -- the fourth level: high), the operation is aborted and no levels are activated.

  3. Specifying an LOD increase [IncreaseLOD()] attempts to increase the LOD detail by one level. If the next level is not available, the process is repeated until a valid level is found. If no valid level is found, the process aborts.

  4. Specifying an LOD decrease [DecreaseLOD()] attempts to decrease the LOD detail by one level. If the next leve is not available, the process is repeated until a valid level is found. If no valid level is found, the process aborts.

  5. Autodesk utilizes up to 4 levels of detail. The OneClick API treats these levels as zero-based [0..3]. If using the OneClick API to change levels of detail at run-time, specify the LOD as an integer between [0..3] and understand the rules above.

    • 0 = crowd (lowest level)
    • 1 = low
    • 2 = mid
    • 3 = high (highest level)

ACG API Information

namespace CrazyMinnow.SALSA.OneClicks

class OneClickAutodeskCGLod(){}

public bool SetLOD(int lodLevel)

Set a specific LOD based on [0..3] available LODs. Note the rules in LOD Functionality above. Returns true when successful and false when an available LOD is not found.

public int GetMaxLod()

Returns the highest LOD available based on [0..3] indexing. See LOD Functionality.

public bool IncreaseLOD()

Increases the level of detail based on the rules in LOD Functionality above. Returns true when successful and false when an available LOD is not found.

NOTE: A helper method is available that allows easy link-up to UGUI button functionality. It does not include the bool return value.
public void Increase()

public bool DecreaseLOD()

Decreases the level of detail based on the rules in LOD Functionality above. Returns true when successful and false when an available LOD is not found.

NOTE: A helper method is available that allows easy link-up to UGUI button functionality. It does not include the bool return value.
public void Decrease()


Special instructions:

NOTE: OneClickUmaDcs requires SALSA LipSync Suite v2.1.0+ and OneClickBase v2.1.5+

Since UMA is a run-time character system with many options, our setup scripts are slightly different than our other one-clicks and meant primarily to demonstrate what is possible when using the SALSA LipSync Suite with the UMA system. The SALSA Suite leverages the UMA Expression Player system for implementing the OneClick functionality. Using this system, it is easy to also leverage design-time preview mode, making it much more approachable to add/modify ExpressionComponents. It is; however, also possible to use UMA using Bone controller types if you prefer -- however, this would required the designer to implement this option manually.

We have developed a special controller type for use in SALSA Suite components: UMA. This controller type adds a proxy component (UmaUepProxy) to the GameObject that allows the core system to communicate with the UMA OneClick without the requirement of dealing with the dependencies of the UMA system in the core SALSA LipSync Suite. The OneClick for UMA also requires a "driver" component (UmaUepDriver), which is included in the OneClick package for UMA. This driver is the middleware to the UMA system -- it does have a dependency on the UMA package and will generate errors if it is imported into your project without UMA already being present. Once UMA is imported all errors should disappear.

Applying UMA OneClick

OneClickUmaDcs can be applied to any GameObject; however, for correct one-click operation, ensure you apply it to the root object where the UMA avatar is configured. We use the "Getting Started" option to setup an UMA character, leveraging the prefabs for UMA_DCS and UMADynamicCharacterAvatar in-scene.

The OneClick is applied to the UMADynamicCharacterAvatar in-scene.

Preview Mode

SALSA LipSync Suite leverages the avatars used in the UMA Core Tool - Expression Clip Editor (In the Examples folder) for preview. Therefore, for preview mode to work, the UMA / Examples / Expressions Examples folder must be present in your project. Once you have configured your avatar and no further configuration is required, you may remove this folder if desired. You may also remove the prefabs in the Crazy Minnow Studio / Addons / OneClickUMA folder.

NOTE: for preview operation, the UmaUepDriver component must be open in your GameObject's Inspector window.

Selective Eyes Module Implementation (Eye/Head)

If you wish to use your own Head or Eye animation method, you may do so by disabling the options in the UmaUepDriver component (in the Inspector). Simply uncheck the appropriate checkbox. We recommend using these options, but you are free to disable them if you wish.

UMA Setup Manual Mode

It is also possible to use the UMA OneClick with other manual UMA-based setups. If you are setting your character up differently from the UMA GettingStarted method, it is likely the OneClick will work with it providing you adhere to a few caveats.

  1. OneClick requires UMAExpressionPlayer.
  2. You will need to configure the UMAExpressionPlayer yourself.
  3. You will need to call our driver to initialize the process.

To implement a OneClick UMA setup without using the GettingStarted prefab method:

  • Same as previous, apply the OneClick to your avatar root.
  • On the UmaUepDriver, disable (uncheck) the "UMA Character is Dynamic" option.
  • Configure an UMAExpressionPlayer on your avatar and you will need to configure it with these parameters: UMAExpressionPlayer.expressionSet = yourExpressionSet;
    UMAExpressionPlayer.umaData = yourUmaData;
  • Finally, programmatically call our UEP driver manual start function, passing a link to the UMAExpressionPlayer you just configured: