Houdini KineFX Sink

· Rigging ·

TOC

Motion Clip

Typical character anim with motion clips animation setup

FBX Character Import
FBX Character Import
FBX Animation Import 1
FBX Animation Import 1
FBX Animation Import 2
FBX Animation Import 2
FBX Animation Import 3
FBX Animation Import 3
Motion Clip 1
Motion Clip 1
Motion Clip 2
Motion Clip 2
Motion Clip 3
Motion Clip 3
Bone Deform
Bone Deform
Motion Clip Sequence 1
Motion Clip Sequence 1
Motion Clip Sequence 2
Motion Clip Sequence 2
Motion Clip Cycle
Motion Clip Cycle
Motion Clip Evaluate
Motion Clip Evaluate
OUT
Anim
OUT...
OUT
Rest
OUT...
Text is not SVG - cannot display

Rigging

Typical rigging

File (geo)
File (geo)
Skeleton
Skeleton
OUT
Geo Rest
OUT...
OUT
Skeleton Rest
OUT...
Rig Pose
Rig Pose
Bone Capture Lines
Bone Capture Lines
Tet Conform
Tet Conform
Bone Capture Biharmonic
Bone Capture Biharmonic
OUT
Rest Bound
OUT...
Capture Layer Paint
Capture Layer Paint
Bone Deform
Bone Deform
OUT
OUT
Text is not SVG - cannot display

Troubleshooting

Bone names

Always check the rigged models you purchase for this issue!
Bones SHOULD NEVER contain path-like symbols like dots, slashes or colons in the names, APEX accepts these but in the end you wont be able to see the animation channels in the Anim Editor (despite other oddities). Sanitize the bone names, replace dots (or Mixamo bullshit)! To replace dots in the boneCapture names use Attribute String Edit with boneCapture.pCaptPath as the point attribute.

Use Attribute String Edit:
Points: boneCapture.pCaptPath
Use regular Expressions: ON
Filter From: [^0-9a-zA-Z\.]
Filter To: _

To remove Mixamo tag:
Points: boneCapture.pCaptPath
Filter From: mixamorig:*
Filter To: *

And a wrangle to rename the name and path attributes:

s@path = re_replace('[^0-9a-zA-Z]', '_', s@path);
s@name = re_replace('[^0-9a-zA-Z]', '_', s@name);

Bone scale

Fixing the fbx bone scales with point wrangle:

// simple
matrix3 m = 3@transform;
scale(m, {100, 100, 100});
3@transform = m;

// world space
matrix3 xform = 3@transform;
matrix3 rot;
matrix3 stretch;
polardecomp(xform, rot, stretch);
3@transform *= invert(stretch);