Animation Stream#

Added in version 2.2.

Animation Stream uses the NVIDIA Animgraph service (minimum v1.0.1) to animate your character by subscribing to a stream of audio and animation data from the service.

See the NVIDIA Animgraph documentation for more details on deploying an NVIDIA Animgraph service.

Note

NVIDIA Animgraph is different from Unreal AnimGraph. They are unrelated features. Unreal AnimGraph is an Unreal Editor feature from Epic that lets you create animation-specific logic for your character within an Animation Blueprint. NVIDIA Animgraph is a service from NVIDIA that streams character animations and audio to a client.

Note

You must set up a character for animation before adding Animation Stream to your application.

Note

Animation Stream is currently incompatible with the RemoteA2F provider. These two features can’t be used in the same application.

System Requirements#

Windows:

  • 64-bit Windows 10 May 2020 Update or later

Linux:
  • 64-bit Linux OS with libstdc++ version 6.0.29 or later

    • Ubuntu 21.10 or later

    • RHEL 9.4 or later

    • Fedora 35 or later

    • Debian 12.0 or later

Animation Stream Connection Setting#

The ACE plugin’s project settings have some options that affect the default NVIDIA Animgraph server connection used by the Animation Stream feature.

  • Edit > Project Settings… > Plugins > NVIDIA ACE > Animation Stream > Animgraph Service Default URL

    • The server address must include scheme (http or https), host (IP address or hostname), and port number. For example, http://203.0.113.38:51000 or https://animgraph.example.com:51010 (both fictional examples).

  • Edit > Project Settings… > Plugins > NVIDIA ACE > Animation Stream > Animgraph Service RPC Timeout (Seconds)

    • Timeout in seconds for remote calls to NVIDIA Animgraph service. Setting has no effect on timeout to establish the initial connection to the NVIDIA Animgraph service.

  • Edit > Project Settings… > Plugins > NVIDIA ACE > Animation Stream > Animgraph Service Number Of Connection Attempts

    • By default 1. If you expect to bring up your Unreal-based application at the same time as the NVIDIA Animgraph service, you may want to have more initial connection attempts while the service comes up.

  • Edit > Project Settings… > Plugins > NVIDIA ACE > Animation Stream > Animgraph Service Time Between Connection Retries (Seconds)

Animation Stream project settings

Service URL Override#

It is possible to override the default service URL stored in the project settings, through a runtime override or through the command line. The priority order is:

  1. Runtime override via blueprints or C++ (highest priority)

  2. Command line override

  3. Project default setting (lowest priority)

The -animgraphserver= command line option can be used to override the project default setting at application startup. To give a fictional example: -animgraphserver=http://animgraph.example.com:51000

To override the service URL at runtime, use the blueprint function ACE > Anim Stream > Override Anim Stream Connection. You may also call the equivalent C++ function FAnimStreamModule::Get().OverrideAnimStreamURL().

Override Anim Stream Connection node

If you need to verify at runtime which URL will be used for the connection, the blueprint fuction ACE > Anim Stream > Get Anim Stream Connection is available. The equivalent C++ function is FAnimStreamModule::Get().GetAnimStreamURL().

RPC Timeout Override#

The Animgraph Service RPC Timeout setting in the project settings controls what happens if a remote call to the NVIDIA Animgraph service has begun but the service has stopped responding. The setting controls the number of seconds before the call to NVIDIA Animgraph service will be terminated.

The -animgraphtimeout= command line option can be used to override the default RPC timeout stored in the project settings. For example: -animgraphtimeout=1.5

Subscribe Character To Animation Stream#

To animate a character from an animation stream received from an ACE service, use the blueprint function Subscribe Character To Stream on the character actor. These instructions describe the blueprint interface, but you can also call UACEBlueprintLibrary::SubscribeCharacterToStream from C++.

Depending on your application, there are many ways to determine which character to animate. Some options might be:

  • have a single default character that is animated

  • automatically animate the character that the player is looking at or the closest character

  • provide some UI for selecting a character

After you’ve chosen a character Actor, subscribe it to an animation stream:

  1. Call the ACE > Anim Stream > Subscribe Character To Stream function.

  2. Provide the actor corresponding to the character you want to animate. If the actor has an ACE Audio Curve Source component attached, this starts the connection to the NVIDIA Animgraph service.

  3. Provide a stream name corresponding to a Stream Id from the NVIDIA Animgraph service.

  4. The node’s Success return value indicates whether the actor was successfully connected to the streaming thread. There is a delay before the connection to the service is actually established.

    Even if the node returns True, it’s possible that the connection could later fail. For example if an invalid stream name is provided, or if the service is unavailable. Check the logs for details.

The stream of animations will continue forever until one of the following occurs:

  • stream is canceled

  • actor is destroyed

  • connection to the service is interrupted

Subscribe Character To Stream node

Cancel Animation Stream Subscription#

To stop a character from being animated, use the blueprint function Unsubscribe From Stream on the character actor. These instructions describe the blueprint interface, but you can also call UACEBlueprintLibrary::UnsubscribeFromStream from C++.

  1. Call the ACE > Anim Stream > Unsubscribe From Stream function.

  2. Provide the same actor you used for the Subscribe Character To Stream function.

  3. The node’s Success return value indicates whether a valid actor was provided.

The stream is immediately canceled. After this node returns it is guaranteed that no more animations will occur.

Unsubscribe From Stream node