No description provided yet.
Interface
What this asset declares: the schema it conforms to, what it exposes, and the rendered structured payload.
conforms to
zero/source-extract/v2Rig Resolve Module Rig resolution for the animation graph: the SOURCE rig a clip was authored on, the TARGET rig a skinned body skins to, and the bind pose the graph poses relative to. The graph's Clip nodes use it to retarget; `AnimGraph.layoutForEntity` uses it to build a body's layout. This is where the graph reaches assets — the components that build graphs never touch rig/asset plumbing.
refId(v: any) → string
The asset identity / guid behind a ref value (an AssetRef or a string).
| arg | type | description |
|---|---|---|
| v | any |
rigGuidFor(assetRef: any, category: string) → string
| arg | type | description |
|---|---|---|
| assetRef | any | |
| category | string |
parsedRigForGuid(rigGuid: string) → any
The parsed rig behind a `.rig` guid, read and decoded once per guid.
| arg | type | description |
|---|---|---|
| rigGuid | string |
vec3Array(v: any) → void
Reflect returns a vec3/quat as `{x, y, z[, w]}`; the parsed-rig math indexes by position, so normalize either shape to a positional array.
| arg | type | description |
|---|---|---|
| v | any |
vec4Array(v: any) → void
| arg | type | description |
|---|---|---|
| v | any |
parseBodyRig(body: EntityRef) → any
The parsed rig of a skinned body, read straight from the ECS — its `ecs.Skeleton` bones (rest pose + hierarchy) plus its `ecs.RetargetProfile` roles when present. Everything the graph needs is already in the ECS by this point; no asset is resolved and no document is parsed. A body whose Skeleton carries no bones returns nil. A body with no RetargetProfile is a non-humanoid rig — the returned rig simply has an empty role map, so the graph binds its own clips directly instead of retargeting.
| arg | type | description |
|---|---|---|
| body | EntityRef | The EntityRef of the body to drive. |
parseFromClip(ref: any, rigOverride: any?) → any
The parsed source rig a clip was authored on. `ref` is a `.animation` ref; pass `rigOverride` (a `.rig` ref) to force a specific source rig.
| arg | type | description |
|---|---|---|
| ref | any | |
| rigOverride | any? |
restPose(parsedRig: any) → void
The stride-10 bind pose (translation.xyz + rotation.xyzw + scale.xyz per bone, in rig order) the graph poses relative to. Undriven channels hold this; a clip overlays only the channels it drives.
| arg | type | description |
|---|---|---|
| parsedRig | any | A parsed rig (from `retarget.parseRig`). |
rigKey(parsedRig: any) → string
The identity of a rig AS A RETARGET TARGET — equal for two rigs a clip bakes onto identically, different whenever the bake would differ. This is the `cacheKey` half `retarget.bakeBytes` documents as "target rig identity": key a bake on the rig it targets and every body built from that rig shares one bake, instead of each re-baking all of its clips. A rig has no asset identity to borrow — `parseBodyRig` builds it from the body's live `Skeleton` and `RetargetProfile` — so the key is taken over the content the bake actually reads: bone names and parents, each bone's rest transform, and the profile's base + role map. Rests are included because the bake scales translation by the source/target height ratio, so two skeletons sharing bone names but not proportions must NOT share a bake. Rest components are quantized before hashing so a value that differs only in float noise still lands on one key.
| arg | type | description |
|---|---|---|
| parsedRig | any | A parsed rig (from `retarget.parseRig`). |
examples
local key = rigResolve.rigKey(rig)
feedByte(b: number) → void
| arg | type | description |
|---|---|---|
| b | number |
feedStr(s: string) → void
| arg | type | description |
|---|---|---|
| s | string |
feedNum(n: number) → void
| arg | type | description |
|---|---|---|
| n | number |
Sub-parts
Everything contained inside this part. Assets are composite children (clickable cards). Files are leaf payloads. Expand any row to view its source.
Problems
Everything affecting this asset right now: its own problems, anything wrong inside it, and problems on its direct dependencies.
agent_score is exposed.+ quality × 0.35
+ performance × 0.25
± compat factor
Usability ratings
Did the part work as advertised when consumers tried to drop it in. Separate from upvotes: those are taste; this is "did it function".
Scoped to this part · feeds back into the world's score.