Houdini 22.0 Character KineFX

APEX updates for H22

New and updated APEX graph nodes for Houdini 22.

On this page

Updated APEX graph nodes

APEX graph node

Update

Add<T>, Divide<T>, Multiply<T>, Negate<T>, Subtract<T>

Added support for Vector4 operations.

ch::ChannelFromCollection

The new input default allows you to return a specific channel if the requested channel doesn’t exist.

The new output success indicates whether a channel is created successfully from the channel collection.

ch::ChannelFromPrim

The new input default allows you to return a specific channel if a channel is not created successfully from a given channel primitive on the geometry.

The new output success indicates whether a channel is created successfully from a given channel primitive on the geometry.

component::AddSpaceSwitchControl

The new input size allows you to specify the size of the space switch control shape.

Convert<SrcT, DesT>

Convert<Vector4, Matrix3> and Convert<Matrix4, Vector4> are deprecated and hidden. Use quaternion::ToMatrix and quaternion::FromMatrix instead.

geo::Transform

The new inputs group and grouptype allow you to choose the subset of geometry to transform.

geo::DetailAttribValue<T>, geo::PointAttribValue<T>, geo::PointAttribValuesByName<T>, geo::PrimAttribValue<T>, geo::PrimAttribValuesByName<T>, geo::SetDetailAttribValue<T>, geo::SetPointAttribValue<T>, geo::SetPointAttribValues<T>, geo::SetPointAttribValuesByName<T>, geo::SetPrimAttribValue<T>, geo::SetPrimAttribValues<T>, geo::SetPrimAttribValuesByName<T>, geo::SetVertexAttribValue<T>, geo::SetVertexAttribValues<T>, geo::SetVertexAttribValuesByName<T>, geo::VertexAttribValue<T>, geo::VertexAttribValuesByName<T>

Added support for types Matrix3Array, Matrix4Array, Vector2Array, Vector3Array, and Vector4Array.

Power

The Exponent node has been renamed to Power.

ragdoll::Solve

The new inputs forces and animstack add support for forces in the ragdoll solver.

rig::ControlRigExtract, rig::ControlRigExtractSkel

The new input default_geometries is a collection of packed primitives with geometries that are used as default values for the rig graph inputs.

rig::MultiBoneIK

The new IK with Constraints Solver allows you to specify per-joint rotation limits and per-joint damping for computing the IK solution. The new inputs for using this solver are solver and properties.

The new usetwistrest, twistrest, and twistmax inputs allow you to compute the central angle between the twist pole vector and rest twist pole vector, and if the angle exceeds a maximum twist, it is linearly interpolated back to 0. This helps to avoid character limbs flipping during rig inversion of mocap data, and instead hyperextends the knee or elbow.

rig::MultiBoneIKFromArray

The new IK with Constraints Solver allows you to specify per-joint rotation limits and per-joint damping for computing the IK solution. The new inputs for using this solver are solver and properties.

rig::SampleSplineTransforms, rig::SampleSplineTransformsToArray, rig::SplineInterpolateTransforms, rig::SplineInterpolateTransformsToArray

The new input stretchsquashtype allows you to apply different types of stretch and squash scaling.

skel::Sort

The new input depthfirst allows you to sort a skeleton using depth-first or breadth-first mode.

sim::LoadSimFile

The new input solvecurrentframe allows you to solve objects on their creation frame.

TransformObject

The new inputs p and pr allow you to specify local space pivot translation and rotation values.

New APEX graph nodes

array::Slice<T>

Extracts a slice from an array.

ch::ChannelFromFloatArray

Builds a channel from an array of samples.

ch::ChannelToFloatArray

Converts a channel to a float array.

component::AddIkInverter

Adds a two-bone IK inverter node to a rig’s inversion graph.

component::AddSplineInverter

Adds a spline inverter subnet to an inversion graph.

component::MappedConstraints-2.0

Constrains pairs of TransformObject nodes that share a matching mapping property.

component::PlaceSpline

Places the control transforms of a spline based on the curvature of a joint chain.

component::UnpromoteControl

Unpromotes the transform parameters of a control node, optionally replacing it with a locator.

dict::Clear

Clears a dictionary.

Exponential

Computes the exponential function, e^x.

geo::DetailAttribData

Retrieves metadata for detail (global) geometry attributes.

geo::ExtractPackedPaths

Returns the paths of packed primitives that match a given pattern.

geo::GetCameraProperties

Gets the properties of camera primitives.

geo::GetCameraTransforms

Gets the world transforms of multiple camera primitives.

geo::InPointGroup

Checks if a point is in a given group.

geo::InPrimGroup

Checks if a primitive is in a given group.

geo::InVertexGroup

Checks if a vertex is in a given group.

geo::JigglePointAttribs

Applies a jiggle effect on point attributes of a geometry.

geo::LagOvershootPointAttribs

Applies a lag/overshoot effect on point attributes of a geometry.

geo::NameToPrim

Returns the index of a primitive based on its name attribute value.

geo::PointAttribData

Retrieves metadata for point geometry attributes.

geo::PointAttribValuesToArray<T>

Returns the values of a point attribute as an array.

geo::PrimAttribData

Retrieves metadata for primitive geometry attributes.

geo::PrimAttribValuesToArray<T>

Returns the values of a primitive attribute as an array.

geo::PrimUV<T>

Interpolates the value of an attribute at a parametric (UVW) position.

geo::SetCameraProperties

Sets the properties on camera primitives.

geo::SetCameraTransforms

Sets the world transforms of multiple camera primitives.

geo::SetCameraTransformsFromSkel

Sets the world transforms of camera primitives based on a skeleton.

geo::SetPointAttribValuesFromArray<T>

Sets the values of a point attribute from an array.

geo::SetPointGroup

Sets a point’s membership within a group.

geo::SetPrimAttribValuesFromArray<T>

Sets the values of a primitive attribute from an array

geo::SetPrimGroup

Sets a primitive’s membership within a group.

geo::SetVertexAttribValuesFromArray<T>

Sets the values of a vertex attribute from an array.

geo::SetVertexGroup

Sets a vertex’s membership within a group.

geo::SpringPointAttribs

Applies a spring effect on point attributes of a geometry.

geo::VertexAttribData

Retrieves metadata for vertex geometry attributes.

geo::VertexAttribValuesToArray<T>

Returns the values of a vertex attribute as an array.

geo::XyzDist

Finds the distance, primitive number, and UV coordinates from a point to the closest location on a geometry.

geoutils::UpdateCameraProperties

Updates a dictionary of camera properties.

graph::FindUniqueNodeName

Returns a unique node name given a desired name.

graph::IsValidID<T>

Checks whether a given node ID or port ID is valid.

graph::NodeInput

Returns a node’s input port given an index.

graph::NodeOutput

Returns a node’s output port given an index.

graph::RemoveNodeTag

Removes a tag on an APEX graph node.

graph::RenameNode

Sets the name of a node.

graph::SetNodeColor

Sets the color of an APEX graph node.

graph::SetNodeTag

Adds a tag on an APEX graph node.

Logarithm

Computes the natural logarithm of a value.

Power

Raises a value to an exponent.

quaternion::Exponential

Computes the exponential of a quaternion.

quaternion::Logarithm

Computes the natural logarithm of a quaternion.

quaternion::Power

Raises a quaternion to the power of an exponent.

ragdoll::Turbulence

Computes a 3D turbulent noise.

skel::OrientJoints

Performs joint orientation based on settings generated from an Orient Joints SOP.

string::Expand

Expands the variables in a string.

string::Slice

Extracts a slice from a string.

KineFX

Overview

Preparing character elements

Rigging with APEX graphs

  • APEX graph basics

    Introduction to the APEX graph evaluation framework.

  • APEX graph debugger

    Inspect the values of an APEX graph’s ports within the APEX network view.

  • APEX Script basics for graph building

    An overview of APEX Script, a code interface for building APEX graphs.

  • Graphs for numerical operations

    Example graphs of numerical operations like adding two values, fetching multiple results, and retrieving information from geometry.

  • Graphs for viewport animation

    Example graphs of animate state functionality like creating controls and constraints, and defining joint hierarchies.

  • Graphs for deforming geometry

    Example of a SOP network and APEX graph for deforming a 3-joint tube geometry.

  • Graph metadata

    Information added to graph nodes and ports.

  • APEX path pattern

    A set of rules that allow you to filter and select elements within graphs, skeletons, geometry, and the character folder structure.

  • APEX graph nodes

    APEX nodes provide operations for building up the functionality of APEX graphs, which are used in KineFX to create character rigs and perform other geometry manipulation.

  • APEX updates for H22

    New and updated APEX graph nodes for Houdini 22.

Building rig graphs with APEX Script

Rigging with rig components

Animating in the viewport

  • Animation workflow

    Example networks of adding characters, props, characters, and animation to a scene.

  • Animating in LOPs

    Rig and animate characters and props in the context of a USD stage.

  • Working in the animate state

    Select and manipulate controls, define transform limits for controls, and add skin controls to a character.

  • Animate state menus and HUDs

    Menus, HUDs, toolbars, and options in the animate state.

  • Animate state hotkeys

    Hotkeys available in the animate state.

  • Posing

    Pose characters in the animation scene by using locators, copying and pasting controls, and mirroring poses.

  • Motion paths

    Visualize the motion of controls as curves in 3D space.

  • Constraints

    Create relationships between controls in the animate state.

  • Dynamic motion

    Add physically-accurate projectile motion to your animation in the animate state.

  • Ragdoll

    Add a ragdoll simulation to your animation in the animate state.

  • Full body IK

    Apply full body inverse kinematics to pose the character using high-level targets rather than manipulating individual joints.

  • Secondary motion

    Add physically-accurate effects like lag/overshoot, jiggle, and spring to your animation in the animate state.

  • Control selection sets

    A tree view of controls, selections, and selection sets for the animate state. Allows management of control selection and visibility.

  • Motion mixer

    Combine and edit the animation clips of multiple characters in a timeline-based view.

  • Character picker

    Create a 2D layout with simple buttons for selecting character controls in an animation scene.

  • Animation catalog

    Save, manage, and apply animations and single-frame poses to an animation scene.

  • Animation layers

    Create multiple layers of animation without affecting the original animation.

  • Animation toolbar

    A customizable toolbar consisting of simple slider tools that quickly apply modifications to animation controls and curves.

  • Animation bookmarks

    Frame markers that help organize and identify the different parts of your animation.

Customizing the animate state

SOP-based animation

  • Physics-based motion

    Add physically-accurate motion to your animation using the Projectile Motion and Pendulum Motion SOPs.

  • Ragdoll simulations

    Add a ragdoll simulation to your animation using the Ragdoll Solver SOP.

Deformation

  • Blend shapes

    Create blend shapes using blend shape SOP nodes.

Animation retargeting

Pre-H20

Panes

  • Motion mixer

    A timeline-based view of the animation clips and motion effects of multiple characters.

  • Character picker

    Create a 2D layout with simple buttons to select character controls in an animation scene.

  • Rig tree view

    A hierarchical view of character components, including packed character folders, KineFX rigs, and Object node rigs.

  • Animation editor

    View and edit animated parameters and their transitions between keyframes.

  • Geometry spreadsheet

    Displays details about the geometry selected in the network editor.

Appendix