Game Development 9 min read

Implementing Transform Animation via Virtual Joints in Kuaishou Y‑Tech FBX Export System

This article explains how to convert Transform animations into skinning animations by creating virtual joints, detailing the FBX export workflow, mesh data extraction, joint binding, and animation generation, and discusses hierarchy handling and vertex offset correction for accurate 3D effects.

Kuaishou Tech
Kuaishou Tech
Kuaishou Tech
Implementing Transform Animation via Virtual Joints in Kuaishou Y‑Tech FBX Export System

The article introduces a method for implementing Transform animation by creating virtual joints and using skinning techniques, applied within Kuaishou's Y‑Tech effect platform FBX export system.

Key‑frame animation includes vertex, skinning, and Transform types; the authors observed significant data similarity between skinning and Transform animations, prompting the conversion of Transform data into skinning format.

FBX files store 3D geometry and animation data; the focus is on FBX objects containing Transform animations.

Implementation steps:

Export Mesh data: traverse the FBX scene to obtain Mesh nodes and extract Transform, control points, UVs, etc., to construct a Mesh object in the engine.

Create a virtual joint and bind pose: generate a unique root joint (parent index -1), compute the node‑to‑parent transform using EvaluateGlobalTransform , and assign full weight to the joint for the Mesh.

Generate skinning animation data: reuse the Transform animation data, rename the target to the virtual joint, and produce skinning animation compatible with the engine.

The following C++‑style structure defines a single animation key used in the process:

struct AnmationKey // a keyframe's stored data
{
    float time;          // animation time (actual time)
    float value;         // value for the channel, e.g., X scale
    float leftTangent = 0.0f;  // left tangent for curve control
    float rightTangent = 0.0f; // right tangent for curve control
    InterpolationType type;    // interpolation method
    TangentMode tangentMode;   // tangent mode (spline, linear, clamp, etc.)
};

Effect demonstrations show that the platform reproduces Maya‑created animations accurately.

Discussion of hierarchy reveals that virtual joints must reflect parent‑child relationships to accumulate transformations correctly; otherwise, child animations lack inherited motion.

Vertex data handling notes that Mesh vertex positions must be stored relative to Mesh space; otherwise, unexpected offsets appear after conversion.

In conclusion, the Transform‑to‑skinning conversion reduces engine development effort, enables additional effects such as mirroring, and will be extended with more 3D features on the platform.

game development3D graphicsFBX ExportSkinningTransform AnimationVirtual Joint
Kuaishou Tech
Written by

Kuaishou Tech

Official Kuaishou tech account, providing real-time updates on the latest Kuaishou technology practices.

0 followers
Reader feedback

How this landed with the community

login Sign in to like

Rate this article

Was this worth your time?

Sign in to rate
Discussion

0 Comments

Thoughtful readers leave field notes, pushback, and hard-won operational detail here.