animsmith-fbx
Pre-1.0: Breaking changes are expected between minor releases. Pin dependency versions and review the release notes before upgrading.
Overview
animsmith-fbx loads FBX files into animsmith-core's Document
model through the official ufbx bindings. It isolates the FBX parser
and bundled C build from the rest of the workspace; animsmith-core
stays file-format independent.
The loader normalizes FBX scenes to glTF-style conventions at parse time: right-handed +Y-up axes, metres, transform-adjust space conversion, helper nodes for geometric transforms, and scale-compensated inheritance where needed. Animation stacks are baked into linear TRS tracks so downstream checks operate on a plain skeleton-and-clip model. Scene assets carry triangulated meshes, skins, factor-only materials, and linked or embedded PNG/JPEG base-color and normal textures into the shared format-independent model.
Scale capability inventory
load_scale_source and load_scale_source_bytes return the normalized
Document together with a deterministic FbxScaleCapabilityInventory from
the same ufbx parse. The inventory gives every current DESIGN.md Appendix D.4
domain an explicit status and records the ingestion boundary: original/target units and axes,
adjusted transforms, helper nodes and inherit-mode compensation, baked takes
and discarded authored curve keys (including unsupported stackless curves),
generated normals, cluster-derived bind
matrices, influence truncation and renormalization, triangulation and exact-bit
welding, omitted point/line faces and zero-face mesh definitions (with stable
source identities), authored face/edge payloads,
uninstanced mesh definitions,
unsupported deformers/payloads, external resources, and stable ufbx source
identities. Shared source geometry remains one normalized mesh definition with
multiple node instances rather than duplicate definitions. Invalid or
unrepresentable influences have an explicit rejected
count. Only successfully projected cluster binds count toward bone-convenience
overwrites. The document also carries the documented source-node/source-skin
identity projection in normalized ufbx order when every joint slot is
representable. A missing cluster bone downgrades that generic projection to
Unavailable, and an unreadable bind declaration retains no shifted matrix
prefix. Normalized mesh definitions and source-skin attachments use the same
stable ufbx mesh identity even when an earlier source mesh emits no primitive.
Complete is coverage of the adjusted/compensated projection, not a
claim that raw FBX transform members or object payloads were preserved.
capability_facts projects the inventory into animsmith-core's
format-neutral scale gate. The projection is deliberately unsupported in this
inventory-only slice: FBX loading has already normalized transform/unit state,
rebuilt geometry, and baked curves, while ufbx exposes no raw payload spans for
artifact-preservation proof. Neither rest/bind nor whole-document scaling is
enabled. No API here claims raw FBX bytes, raw object properties, authored
curve keys, or source vertex identity are preserved.
Install
[]
= "0.3"
= "0.3"
The compiling load/check example lives in the crate-level API documentation.
Use this crate directly when your Rust pipeline accepts FBX input. If
you only ingest glTF/GLB, depend on animsmith-gltf instead and avoid
the ufbx C build.
Feature Flags
This crate has no public feature flags. In the
animsmith CLI, FBX input and the convert command are behind the
default fbx feature and are omitted by --no-default-features. The
workspace MSRV is Rust 1.88.
More Detail
- API reference on docs.rs
- Embedding guide
- Raw asset to game-ready pipeline scenarios
- CLI feature flags
- Workspace design
License
Licensed under either the MIT license or the Apache License, Version 2.0, at your option.
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in animsmith by you is licensed as MIT OR Apache-2.0, without any additional terms or conditions.