Cover image of Changes and Improvements for Animation in 1.1

Changes in Workbench Animation Editor

Improvements on the Animation Event Panel

It is now possible to perform the inclusion/exclusion of animation events within the animation event panel without relying on the global inclusion/exclusion setting.

Two things can be done in order to exclude an animation event in the preview:

  • Perform the exclusion dynamically without relying on the global settings.

    • Direct focus on the Animation Editor

    • Direct focus on the animation event filter textbox

    • Type the text you want to exclude but prefixed with the minus sign (-)

    • Then you will see only animation events that do not contain that text in their names
       

  • Perform the exclusion and rely on the global settings.

    • Direct focus on the main workbench window

    • Go to Workbench options

    • Go to the Animation Editor tab

    • Under Event Filter, tick the Exclude option

    • Click OK

    • Direct focus on the Animation Editor

    • Direct focus on the animation event filter textbox

    • Type the text you want to exclude

    • Then you will see only animation events that do not contain that text in their names

Two things can be done in order to include an animation event in the preview:

  • Perform the exclusion dynamically without relying on the global settings.

    • Direct focus on the Animation Editor

    • Direct focus on the animation event filter textbox

    • Type the text you want to include but prefixed with the plus sign (+)

    • Then you will see only animation events that do contain that text in their names
       

  • Perform the exclusion and rely on the global settings.

    • Direct focus on the main workbench window

    • Go to Workbench options

    • Go to the Animation Editor tab

    • Under Event Filter, tick the Include option

    • Click OK

    • Direct focus on the Animation Editor

    • Direct focus on the animation event filter textbox

    • Type the text you want to include

    • Then you will see only animation events that do contain that text in their names

Animation Nodes using Global Time

It is now possible to make use of global time on the animation graph nodes by setting the Time Storage of a node to Global Time.

This is particularly helpful when logic based on the overall running time of the animation simulation of an entity is required. It can also be useful for synchronizing animation graph simulations in scenarios like a character and a weapon, where the weapon would try to synchronize its global time with the character's global time.

In order to make use of global time, you must:

  • Go to the properties of a node with the Time Storage attribute.

  • Change the Time Storage attribute to Global Time.

Drag and Drop of Animation Files onto the Animation Set Panel

Defining animations in the animation sets can now be done by dragging and dropping animation files onto the desired animation slot in the animation set panel.

It can be done in the following ways:

  • They can be dragged and dropped from the Resource Browser within the Animation Editor.

  • They can be dragged and dropped from the Resource Browser or anywhere else in Workbench.

Properties Panel Focus

As a quality-of-life feature, the Animation Editor Properties panel now gets focused whenever you select any node within the animation graph panel.

Animation Set Instance

As a quality-of-life feature, it is now possible to select an animation set instance to be active within the Animation Set panel itself through a combo box at the top right of the panel.

Is Cyclic Property

The Var Update animation graph is now capable of looping the value of an animation graph variable from its higher limit into its lower limit and vice versa.

As an example, a variable ANGLE with value limits of -180.0 to 180.0 would map and update input values assigned to it past 180.0 to -180.0 repeatedly, creating the cyclic behavior. 

Long Animation Events Fixed

There was a bug that caused a crash when adding an animation event to an animation file that was too long, for example, 1,000 frames long. This bug is no longer present.

Access to LOD Index

Different LODs on a model can affect animations differently, so it might be desirable to detect the active LOD during the runtime of the animation graph simulation in order to perform different logic or perhaps to output different poses. The addition of an animation graph expression for returning the active LOD as an integer has been introduced to resolve this need.

The method signature is as follows:

int GetLod()

Changes in Scripting API

IK Targets and IK Plane Targets

The IK targets used in the IK nodes in the animation graph can now be controlled via the newly exposed methods in CharacterControllerComponent.

class CharacterAnimationComponent: BaseAnimPhysComponent
{
	[...]
 	// Set an IK target to a transform given by specified position vector from the world origin and a rotationRad rotation in radians.
	proto external bool SetIKTarget(string bindingName, string boneName, vector position, vector rotationRad);
	// Set an IK target plane to a plane given by specified normal vector and a dist distance from the world origin.
	proto external bool SetIKTargetPlane(string bindingName, float normalX, float normalY, float normalZ, float dist);
}

Detecting if Character is in Ragdoll State

It is now possible to detect whenever a character is in a ragdoll state via the newly exposed method in CharacterControllerComponent.

class CharacterAnimationComponent: BaseAnimPhysComponent
{
	[...]
	//! Returns if Character is currently ragdolling.
	proto external bool IsRagdollActive();
}

TryUseItemOverrideParams

The TryUseItemOverrideParams from CharacterControllerComponent now uses a param class instead of the previous list of parameters in order to keep it more organized and extendable.

class CharacterControllerComponent: PrimaryControllerComponent
{
	[...]
	/*!
	Try to use equipped item with custom command and variables via ItemUseParameters.
	\param params - instance of ItemUseParameters with the params for the call.
	\return Returns true if the equipped item has been used.
	*/
	proto external bool TryUseItemOverrideParams(notnull ItemUseParameters params);
}

Extended Animation Graph API

The CharacterAnimGraphComponent class now provides an extended API for accessing and controlling the character animation graph. This includes the ability to detect if an animation event is active, detect if an animation tag is active, change the active animation set instance, and attach an animation graph to an attachment node within the main animation graph.

class CharacterAnimGraphComponent: GenericComponent
{
	[...]
	//! Switch the active animation set instance to a new one.
	//! \param resNameAnimSetInstance Resource name of a new anim set instance which must match animation graph.
	//! If ResourceName::Null is passed, controller resets to default anim set instance.
	//! \param blendTime optional, blend time in seconds
	//! \return returns true on successful change, false if anim instance does not match the graph
	proto external bool SetAnimSetInstance(ResourceName rNameAnimSetInstance, float blendTime);
	//! Attach a different graph to the named attachment. Returns false on failure.
	//! \param bindingName binding name recognized by the main graph (where to attach)
	//! \param resNameAttachedGraph resource name of the attached graph
	//! \param resNameAttachedInst resource name of the anim set instance used for the attached graph
	//! \param attachedNodeName name of the starting node in the attached graph
	proto external bool SetAttachment(string bindingName, ResourceName resNameAttachedGraph, ResourceName resNameAttachedInst, string attachedNodeName);
	//! Remove graph attachment. Returns false when there is no attachment bound under given name.
	proto external bool RemoveAttachment(string bindingName);
	proto external int BindTag(string tagName);
	proto external bool IsTag(int tagId);
	proto external int BindEvent(string eventName);
	proto external bool IsEvent(int eventId);
}

Changes in the Enfusion Blender Tools

Incompatible Enfusion Blender Tools

Due to changes in the Enfusion Blender Tools TXA export pipeline, older versions of the Enfusion Blender Tools are no longer compatible and supported with newer versions of Arma Reforger Workbench 1.1.0 and greater.

Keep in mind that a restart of Blender might be necessary when updating the plugin.

Introduction of Rig Updater

The Rig Updater tool replaces the existing character rig with a newer version. Everything located in LOD0, Rig, Reference, IK Targets, or Extra collection will be deleted and replaced by a version from a newer blend file.

During the upgrade process, the following things will be performed:

  • Replacement of old Rig with newer version

  • Restoration of all NLA tracks assigned to old Rig

  • Restoration of all bone constraints present in the Rig

  • Updating of constraints present on all non-Rig & Character objects which were previously pointing to Rig or Character

The instructions for usage can be found on Community BIKI.

Support for Usage and Preview of AO Textures

The AO Textures were added to Blender shaders where the AO strength can be adjusted in the Materials Tools section.

Support for Batch-Baking NLA Strips

The NLA Strips Baking tool is a small tool useful for retargeting animations via NLA workflow. For instance, it is possible to create one large track containing existing animations and then create one track on top of it in combine mode to make adjustments to it. Afterwards, such adjusted tracks can be baked to respective action which can be easily exported by TXA exporter.

TXA Exporter is now Faster

The TXA exporter has now been improved and now exports the animations in seconds instead of minutes.

TXA Exporter is more Precise

With the newer version of the TXA exporter, changes to the order of the bones in the TXA Export Profiles are now parsed correctly.

Improved TXA Export Interface

The export interface for TXA has been upgraded, it is more in line with other Blender interfaces and features the following quality-of-life additions:

  • Ability to search through all actions

    • This feature is especially useful when working on vehicle animations, where there can be dozens of actions available

  • Ability to pass additional armature, which will be processed through TXA exporter

    • It is no longer necessary to switch between character and vehicle/weapon armature when exporting synchronized animations

  • Save location can now be a relative path

    • Useful for shared blend files where two users changing the save location in a blend file constantly is needed to be avoided

    • Relative path is set by default

  • Ability to toggle between regular and compact lists of actions

Support for Specifying Additional Armature

As part of the improved interface, a new feature was added — the ability to specify additional armature in track export settings. This way, it is no longer necessary to switch the Armature name between character and weapon armature, and instead, both tracks can be exported in one go.

Tools to Generate Light Portals and Portal Volumes

Portal Tools allows users to generate Portals and Portal Volumes on a structure automatically. It will generate all portals in the right position, with a naming convention and a material that will automatically be assigned when exporting to Workbench.

It can also be used to generate Portal Volumes (with dummyVolume material) that will automatically resize depending on a room size in real-time. After applying them, the Portal Volumes can be manually adjusted to your needs.

Addition of a Check for PRT and PRTVOL

Model Quality Assurance now provides three different checks for Portal Geometry:

  1.  Portal Vertices

    • Reports if PRT objects don't have 4 vertices

  2. Portal Location

    • Reports if PRT objects have the wrong location relative to PRTVOL

  3. Portal Volume Geometry

    • Reports if PRTVOL has the wrong geometry

Addition of FBX Import Preferences in the Addons Preferences

Import preferences allow you to generally turn off various settings for FBX Import.

Addition of .ET, .XOB, and .FBX Import Options

The Workbench Send To Blender plugin is now in the context menu when you right-click on .xob/.et/.fbx in Workbench Resource Manager.

Published on 

We want you for our mailing list!

We offer great content once a month just for you!