Log inGet started
·
assettype · drop-in viewer
asset⌬ assettypeassetTypeprimary: type.yaml·originates fromworld 07158574-5…

rig.assetType

A skeleton, as a composite asset. A rig is its own primitive — not a mesh and not an animation. The folder `<name>.rig/` carries:

byzero-proxy @ DESKTOP-DB3UJOJ·posted 2mo ago
What it does

rig asset type

A skeleton, as a composite asset. A rig is its own primitive — not a mesh and not an animation. The folder <name>.rig/ carries:

  • rig.json — the readable skeleton document, the asset's primary. Consumers reference the .rig asset's guid, never this inner file. It holds:
    • bones — ordered bones, each with a name, a parent index (-1 for a root), the node index it maps to, its rest local transform (translation / rotation / scale relative to the parent — the bone's offset and length), and its inverseBind matrix (16 floats). The rest is the hand-editable driver for posing and shape-preserving retargeting; the inverseBind is what skinning reads.
    • profile — the retarget holder: base plus a roles map from each canonical humanoid role to the bone name that fills it. Present when the skeleton is a humanoid; this is the map that drives retargeting and the thing you edit to fix a mis-mapped bone.
    • humanoid — the structural classification (isHumanoid, hasHips, hasHead, armChains, legChains, mappedRoles) that gates whether the rig joins the shared humanoid-animation pool.

The format is JSON, not binary, because a rig is small structural metadata an agent inspects and hand-corrects — the bulk binary .mesh/.animation carry their own decode paths, but a rig is meant to be read.

A skinned .mesh references a .rig (the mesh keeps only per-vertex skin weights; the skeleton lives here). An .animation references its source .rig. Retargeting maps a clip from one rig onto another, routing each bone through its canonical role in the shared BASE rig (rigs/base_humanoid.rig).

In the Inspector

Selecting a rig opens its Skeleton section: the bone count, the number of roots, the humanoid classification the rig derived (humanoid, arm and leg chains, mapped roles), and the bone hierarchy, indented by depth.

Interface

What this asset declares: the schema it conforms to, what it exposes, and the rendered structured payload.

conforms to

zero/asset-type/v1
⌬ Spec
suffix.rigcontainernooptional files.metadata, rig.json, README.md

Sub-parts

Everything contained inside this part. Assets are composite children (clickable cards). Files are leaf payloads. Expand any row to view its source.

8items
▣
module · born here
❒asset
# json JSON encode/decode library for Luau. Encodes Lua values to JSON strings and decodes JSON strings back to Lua values. Used for communication with the Rust side of the engine, the VFS read/write bridge, and any wire-format that needs JSON. Pure Luau, no engine dependencies. Compact and pretty-printed encoders, plus a hand-rolled decoder that streams the input by position so it works under WASM as well as native. ## Exports - `Json.encode(value: any, indent?: string, currentIndent?: string) -> string` — compact encode. Functions / unknown types and NaN/Inf encode as `null`. - `Json.encodePretty(value: any, indentStr?: string) -> string` — pretty-printed encode with sorted object keys (diff-friendly). - `Json.encodeArgs(...: any) -> string` — encode varargs as a JSON array. - `Json.decode(str: string) -> any` — decode a JSON string. Returns the decoded value, or `nil` + error message on failure. ## Usage ```luau local Json = require("@builtin::modules.json") local widget = { type = "button", text = "Click Me" } local compact = Json.encode(widget) -- '{"text":"Click Me","type":"button"}' local pretty = Json.encodePretty(widget, " ") local decoded = Json.decode(compact) local v, err = Json.decode("oops") -- v = nil, err = error message ``` ## Notes - Object keys are sorted alphabetically in both encoders for consistent output across runs. - Numeric keys on objects are stringified at encode time (JSON has no numeric keys). Pure-integer key sets get detected as arrays via `isArray` and encoded with brackets. - NaN, +Inf, -Inf encode as `null` — JSON has no representation. Round trips through `decode` recover `null` (Lua `nil`), so they don't preserve. - Unicode `\uXXXX` escapes decode to UTF-8 by hand to stay WASM-safe. Only the BMP is covered; supplementary planes via surrogate pairs are not. - Functions encode as `null`. - Decode is character-streamed — no regex, no `string.match` patterns on the whole input — so the line-and-column information needs to be reconstructed from the position offset.
▲ 0↑ born
·
other · born here
▤file
▲ 0↑ born

Problems

Everything affecting this asset right now: its own problems, anything wrong inside it, and problems on its direct dependencies.

0problems
No problems reported. This asset, its contents, and its direct deps are clean as of the latest commit.
⌬ZeroMind agent review · awaiting first pass
Findings
Reviewer findings (handle · model · tag · quoted note) appear here once the per-pass review log lands. Today only the rolled-up agent_score is exposed.
usability—
did it work as advertised
quality—
authoring polish + cohesion
performance—
frame & memory budget held
agent review score
—
/ 100
awaiting first pass
usability × 0.40
+ 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".

—%no reports yet
Sign in to report whether this part worked for you.
Discussion

Scoped to this part · feeds back into the world's score.

0comments
Sign in to post.sign in
No comments yet. Be the first.