Skip to content

Releases: mxpv/openusd

v0.5.0

Choose a tag to compare

@mxpv mxpv released this 08 Jun 22:48
f6ee3f7

openusd continues to gain usable shape and form. This release introduces
high-level APIs to manage stages, layers, primitives, and more — while
bringing several major subsystems to spec compliance.

  • The PCP composition engine is fully rewritten around a task-queue indexer
    that now conforms to all pcp.txt compliance tests, covering correct
    LIVRPS strength ordering, scene-graph instancing, specializes, relocates,
    value clips, and arc permissions.

  • Layer management graduates from a flat stack to a full LayerGraph model
    with surgical change invalidation. Stage gains a new set of APIs to add,
    remove, and mute layers.

  • Scene-query APIs move from Stage onto the Prim, Attribute, and
    Relationship handles where they belong.

  • All domain schemas (geom, lux, shade, render, skel, physics,
    vol, ui, proc, media) are rewritten as composable trait-based
    views modelling the schema object hierarchy with supertrait chains. The
    same handle exposes both read and author operations, and setters chain:

    use openusd::{usd, schemas::geom};
    
    let stage = usd::Stage::open("scene.usda")?;
    for prim in stage.traverse() {
        if let Some(mesh) = geom::Mesh::new(prim.clone()) {
            // read
            let counts = mesh.face_vertex_counts_attr()
                .get::<Vec<i32>>(usd::TimeCode::DEFAULT)?;
            // author
            mesh.create_extent_attr().set(extent_value)?;
        }
    }

    The trait hierarchy mirrors the C++ schema hierarchy —
    SchemaBase → Imageable → Xformable → Boundable → Gprim → PointBased → Curves
    — with concrete newtype views like Mesh, Camera, and Sphere.

  • Math utilities scattered across the crate are consolidated into a new gf
    module mirroring the C++ Gf namespace: Vec2/3/4, Quat, and Matrix
    types in multiple numeric precisions, all bytemuck::Pod for zero-copy
    binary serialization.

New AOUSD Core Spec coverage

New AOUSD Core Spec coverage in this release:

  • 7.6.1.2.2 Layer-offset retiming applied during value resolution
  • 8.2 Element ordering (sdf::element_cmp, primOrder / propertyOrder reordering)
  • 10.3.3 Arc permissions — direct arcs to permission = private sites are inerted and reported as pcp::Error::ArcPermissionDenied
  • 11.3.1 Ordered prim children via primOrder reordering
  • 11.3.2 Ordered property children via propertyOrder reordering
  • 11.3.3 Scene-graph instancing — instances share one composed prototype; nested instances, instance-proxy redirects, and population-mask integration covered
  • 11.5 IN_PROTOTYPE flag and instance-proxy traversal toggle
  • 12.3 Basic attribute resolution — layer-offset retiming applied during value resolution
  • 12.3.4 Value clips — explicit and template clip resolution, manifest gating, active-clip selection, stage-to-clip time mapping, interpolateMissingClipValues
  • 12.4 Relationship targets (raw + forwarded chains) and attribute connections with a stage-wide connection graph
  • 15.1 / 15.2 CollectionAPIapply_collection, include_path / exclude_path, MembershipQuery, compute_included_paths

PCP composition engine

  • Rewrote the composition engine as a priority task-queue indexer (Indexer)
    mirroring C++ Pcp_PrimIndexer, now the sole composition path (abf6ca4)
  • Replaced LayerStack with a full LayerGraph model: LayerNode,
    LayerGraph, and pcp::LayerId handles with O(1) identifier lookup;
    sublayer edges derive from authored metadata and are rebuilt on change
    (f2eab23)
  • Implemented LIVRPS arc strength ordering via #[repr(u8)] ArcType and
    the compare_sibling_node_strength / compare_node_strength comparators
    (095728a)
  • Graph-clone seed for ancestral opinions: a child prim clones its parent's
    composed graph and deepens every site path, so referenced ancestor arcs
    re-evaluate at the child (4ea2ae4)
  • References and payloads compose as per-(layerStack, path) site nodes,
    retaining culled arc targets as CULLED nodes for structural visibility
    (a714040, c27146f)
  • Inherits and implied classes including subroot-arc propagation (5773348,
    a188515, c80e421)
  • Specializes as globally-weak class-based arcs with propagate_node_to_root
    and implied-specializes propagation (f6f5fe7, 141c610)
  • Local and ancestral variant sets resolved through a second task band;
    EvalNodeVariantAuthoredEvalNodeVariantFallback with live-node
    strength tie-breaking (40bb677, 7c4de1f)
  • Expression-valued asset paths in reference / payload arcs evaluated during
    index build; composed_expr_vars folds expressionVariables across arcs
    (41ab8a8, 7119565)
  • MapFunction invertibility-checked target translation,
    without_variant_selections stripping, and true compose semantics
    (0638cea, b04dffe)
  • Relocates ported into the task-queue indexer via eval_node_relocations;
    per-layer layerRelocates validated and chained within a node's layer
    stack (0b642d3, 65fbf28, 4484d7d)
  • Direct arcs to permission = private sites inerted and reported via
    pcp::Error::ArcPermissionDenied; descendant arcs inerted through
    denied_prefixes (9ae8510, a6a5b93)
  • Scene-graph instancing: PrototypeRegistry keyed by InstanceKey
    (arc + variant selections); prototype namespace composed in place, instance
    proxies redirect onto /__Prototype_N; targeted invalidation via
    invalidate_prototypes (cc43d29, 1285318, e659568)
  • Value clips: ClipSet parsing, manifest gating, active-clip selection,
    stage-to-clip time mapping, template clip expansion, and
    interpolateMissingClipValues (d6d4d83, 14c93fc, a837749)
  • Layer-offset retiming of timeSamples during value resolution (8886672)
  • Relationship target forwarding through chains with cycle-breaking (737fdd1)
  • Attribute connection graph: ConnectionGraph stage-wide index with composed
    connectionPaths and authoring on Attribute (d75feb7, c864da8)
  • Dependencies reverse map for surgical change fanout
  • Changes / IndexCache::process_changes for three-tier change
    classification and targeted cache invalidation
  • Recoverable composition errors collected via Stage::composition_errors
    rather than callbacks (750af7e)
  • PrimIndex::dump_to_string composition-tree dump for debugging (e668aea)
  • reorder rootPrims parsed and emitted in USDA (0543612)

Stage and layer management

  • LayerGraph replaces the flat LayerStack; Stage::insert_sub_layer /
    remove_sub_layer and sub_layers routed through it so edits persist on
    save (f2eab23)
  • Direct access to the session layer from Stage (18afede)
  • Stage::mute_layer and layer muting support
  • StageBuilder builder methods shortened to load / mask (8d7fb2b)
  • EditTarget and EditContext (RAII guard) for routing authoring through
    any layer; for_local_direct_variant for variant-namespace writes
  • Stage refactored as a cheap Rc<StageInner> reference-counted handle —
    cloning bumps the refcount, no lifetime parameters on Prim / Attribute
    / Relationship (700e2c2)

Schema views

  • usd::SchemaBase trait introduced as the schema-view foundation (665467a)
  • UsdGeom migrated: Imageable → Xformable → Boundable → Gprim → PointBased → Curves
    chain, all intrinsic shapes, Camera, Xform/Scope, Mesh +
    GeomSubset, curve/point/patch types, PointInstancer (2ff1faa)
  • UsdLux migrated: light hierarchy and LightAPI / ShapingAPI applied
    API schemas (cede873)
  • UsdShade migrated: Connectable interface trait, Shader / NodeGraph /
    Material, MaterialBindingAPI with direct + collection binding resolution,
    UsdPreviewSurface + UsdUVTexture (b05b4f3f7c35ab)
  • UsdRender migrated: RenderSettingsBase / RenderSettings /
    RenderProduct / RenderVar / RenderPass / RenderDenoisePass with
    compute_render_spec (f6f8d7110be3a1)
  • UsdSkel migrated: SkelRoot / Skeleton / SkelAnimation /
    BlendShape, SkelBindingAPI, SkeletonResolver / SkinningResolver,
    LBS + blend-shape math (fd39231)
  • UsdPhysics migrated: typed Scene / Joint prims, single- and
    multi-apply API schemas (DriveAPI / LimitAPI) (ed641fb)
  • UsdVol migrated: Volume + OpenVDBAsset / Field3DAsset (7780720)
  • UsdMedia migrated: SpatialAudio, AssetPreviewsAPI thumbnails (5ebf1b1)
  • UsdProc migrated: GenerativeProcedural (e6883c1)
  • UsdUI migrated: Backdrop, SceneGraphPrimAPI, NodeGraphNodeAPI
    (042519c)
  • Attribute::get made generic; Value From/TryFrom impls for all gf
    types (a95f6f5, 97133b1)
  • Typed token ↔ Value conversions via impl_token_value! macro (97133b1)
  • CollectionAPIapply_collection, include_path / exclude_path,
    MembershipQuery, compute_included_paths (80285f6404531a)

Resurfaced API — moved to handles

  • Prim::prim_stack, Prim::prim_index, Prim::children,
    Prim::property_names, Prim::attributes, Prim::relationships,
    Prim::variant_sets (a3fb43c, 8ea96c8)
  • Attribute::property_stack, Attribute::connections,
    Attribute::compute_connections (a3fb43c)
  • Relationship::property_stack, Relationship::targets,
    Relationship::forwarded_targets, Relationship::compute_targets (a3fb43c)
  • Prim::set_metadata for prim-level fields (7d5c02f)
  • Attribute and Relationship split into their own modules (209f441)

Graphics foundations (gf)

  • Vec2/3/4 in f32 (f), f64 (d), f16 (h), and i32 (i)
    variants; Quatf/d/h with (w, x, y, z) field order and slerp;
    Mat2d, Mat3d, Matrix4d (row-major) (5d5b0db)
  • All types are #[repr(C)] / #[repr(transparent)] + bytemuck::Pod
    for bulk-cast binary serialization
  • Free-function constructors (vec3f, quatf, …) and lerp / slerp
    ...
Read more

v0.4.0

Choose a tag to compare

@mxpv mxpv released this 28 May 21:04
0c8d8f1

This is the largest openusd release so far. It introduces full USD writers for all three file formats, a complete authoring API spanning both the sdf::Layer and usd::Stage tiers, four new domain schema modules (UsdGeom, UsdLux, UsdSkel, UsdPhysics) covering both reading and authoring, and a much more capable composition engine — including dictionary composition, specifier/variability/custom resolution, layer-offset propagation, and a granular cache-invalidation pipeline modeled on PcpChanges. Many of these features still need further polishing, but with so many API changes since v0.3.0 it felt worth cutting a release for an intermediate alignment point.

Huge thanks to @bresilla for the enormous volume of high-quality contributions in this release — including all three writers, the entire UsdSkel reader and skinning toolkit, and the bulk of the UsdLux / UsdPhysics / UsdGeom schema modules.

Highlights

  • First-class USD writers: usda::TextWriter, usdc::CrateWriter, and usdz::ArchiveWriter, with round-trip coverage and explicit format selection on save.
  • Complete authoring stack: sdf::Layer typed Spec views and a Stage-tier authoring API (define_prim / override_prim / create_attribute / create_relationship / set_default_prim) routed through an EditTarget.
  • Composed scene handles: usd::Prim, usd::Attribute, usd::Relationship returned from authoring methods.
  • Granular cache invalidation: sdf::ChangeList + pcp::Changes + pcp::Dependencies form a PcpChanges-style pipeline with a three-tier classifier (significant / prim / spec) and per-layer reverse-dep map.
  • Domain schemas: UsdGeom, UsdLux, UsdSkel, and UsdPhysics readers + authoring helpers behind cargo features.
  • Stage querying: payload loading control (InitialLoadSet), StagePopulationMask, traversal predicates, prim status, model-hierarchy queries, and a stage-level time-sample evaluator with held and linear interpolation.

Compliance

New AOUSD Core Spec coverage in this release:

  • 6.6.2.1 Dictionary combining
  • 10.3.1.1 Sublayer offset composition
  • 10.3.2.1.2 Reference offset composition
  • 10.3.2.2 Payload loading control
  • 10.3.2.2.2 Payload offset composition
  • 11.3 Population mask
  • 11.3.1 Ordered prim children (primOrder reordering, partial)
  • 11.3.2 Ordered property children (propertyOrder reordering)
  • 11.4 Model hierarchy (kind)
  • 11.5 Stage queries (Active, Loaded, Defined, Abstract, Instance)
  • 12.2.1 Specifier resolution
  • 12.2.3 Variability resolution (weakest opinion)
  • 12.2.4 Custom field resolution (any-true)
  • 12.2.5 Dictionary combining
  • 12.2.6 List op resolution (partial)
  • 12.5.1 Interpolation (Held)
  • 12.5.2 Interpolation (Linear)
  • 16.2 USDA (text) writing
  • 16.3 USDC (binary) writing
  • 16.4 USDZ (package) writing

Composition engine (pcp)

  • Propagate layer time offsets through composition (66a14d5)
  • Implement specifier/variability/custom resolution (b564010)
  • Apply primOrder/propertyOrder during composition (1fa0f7b)
  • Compose dictionary opinions and isolate pseudo-root metadata (40b5b6d)
  • Granular cache invalidation pipeline (3e9335e)
  • Correctness fixes for apiSchemas composition (f53fc9c)
  • Anchor relative reference paths against layer parents (4f0b560)
  • Delegate relative path anchoring in find_layer to resolver (f1fd849)
  • LayerStack holds Vec<sdf::Layer> (56b5ae1)

Stage / usd tier

  • Stage-tier authoring API and EditTarget (63e4c03)
  • Composed Prim / Attribute / Relationship handles (04da139)
  • Consolidate Usd-tier types under usd module (f46992a)
  • Add payload loading control and population mask (ea2793f)
  • Add traversal predicates (f3caca8)
  • Add prim status and model-hierarchy queries (bff3d99)
  • Add api_schemas, has_api_schema, and type_name helpers (dd02dfe)
  • Prim::add_applied_schema (51a6e8a)
  • Add Prim::append_to_uniform_token_array (498296f)

Interpolation

  • Stage-level time-sample evaluator (de7c8a4)
  • Tighten evaluator and add Stage::time_samples (0d8e1b9)

sdf / layer

  • Authoring API and typed Spec views on sdf::Layer (26e7de6)
  • Move Layer into sdf to mirror C++ SdfLayer (87fa3c0)
  • sdf::Data for in-memory layer data (4611947)
  • Add mutable access to Data (c36ad01)
  • Split AbstractData::get into try_get + get (9fa274d)
  • Refactor SDF spec views to share read APIs (7a4523f)
  • Remove write_usda/write_usdc shims from Data (cf36bcc)
  • Introduce Collector builder; mask-aware dependency skipping in layer::collect_layers (a29d4bf)

USD text format (usda)

  • Add USDA writer (usda::TextWriter) (444d52a)
  • Parse typed scalar-array values inside time samples (77929be)
  • Parse typed tuple values inside time samples (2bfe869)
  • Keep type-blind fallback for lenient time samples (0d235ab)
  • Read nested dictionaries (643b080)
  • Bug fix for variantSets and variants (ccf5812)
  • write_quoted falls through on strings with both quote types (b0694e4)

USD binary format (usdc)

  • Add USDC writer (usdc::CrateWriter) (a74f6bd)
  • Enable compressed integer arrays in writers (22f969a)
  • Reorder quat bytes to match USDA convention (3eccc28)
  • Apply matching quat reorder in writer for round-trip (9f4a302)
  • Avoid allocations when changing quat order (b74638e)

USD archive format (usdz)

  • Add USDZ writer (usdz::ArchiveWriter) (ccdd722)
  • Open archives via resolver instead of File directly (b691498)
  • Validate USDZ entry names and de-flake temp-path tests (56f808d)

Writers (cross-format)

  • Explicit layer format selection for saving (bcb2e83)
  • Reader/writer contract gaps for sentinel values (e037102)
  • Corner-case round-trip bugs surfaced by new tests (a314238)
  • Tidy up writers (b838cb8)

UsdGeom schema (reader + authoring, geom feature)

Reader:

  • Scaffold + Imageable + Boundable (51587e9)
  • Xformable + xformOpOrder evaluator (3860f8f)
  • Intrinsic shape readers (6865d5b)
  • Camera reader (78cc036)
  • Mesh + GeomSubset + Primvars (d23e9a5)
  • Curves + patch + points + tetmesh (3f946d0)
  • PointInstancer (a71a71a)
  • NurbsPatch uForm + vForm (a5150a4)
  • Expose NurbsCurves.pointWeights for rational curves (1b37e98)
  • Typed mesh subdiv tags with Pixar spec defaults (e3bd6e1)

Authoring:

  • Scaffold authoring + Imageable + Boundable (b3ee697)
  • Xformable + xformOpOrder authoring (c6c8dc6)
  • Intrinsic shapes + Xform + Scope (7ed7a1c)
  • Mesh + GeomSubset + primvars authoring (abcca2c)
  • Camera authoring (dac19bf)
  • Curves + points + tetmesh + instancer + roundtrip (2e0eb0d)

Fixes:

  • Camera.fStop default 0.0 per Pixar schema (a1857a6)
  • Correct Hermite tangents and primvar interpolation defaults (05c5c22)
  • Prefer orientationsf over orientations on PointInstancer (47ccdfc)
  • Accept list-op authored PointInstancer.inactiveIds (f4f7393)
  • find_geom_prims only counts token-typed imageable opinions (f34d933)
  • Align ancestor walks in compute_visibility / compute_purpose (f66e272)
  • Preserve f64 precision through xform and camera readers (11dacfd)
  • Reject out-of-range elementSize instead of silently wrapping (1eded92)
  • Plane.double_sided defaults to true (1b767a9)
  • Preserve xform precision and schema fallbacks (1942faa)
  • Author primvar interpolation metadata (1168a6c)
  • Drop incorrect Uniform variability on GeomSubset.indices (399c552)
  • Unify Author structs on Prim<'s> (31319ef)

UsdLux schema (reader + authoring, lux feature)

  • Add lux cargo feature (eeea981)
  • UsdLux schema reader (5f501ef)
  • Fixture + integration tests (6eadb32)
  • timeSamples, LightAPI gate, and bucket additions (96809f8)
  • Align LightAPI reader with advertised prims (83281df)
  • Scaffold authoring module + LightAPI (94ccf1b)
  • Boundable light authoring (ad3427a)
  • Nonboundable light authoring (72b90ce)
  • DomeLight + DomeLight_1 authoring (d3d15ba)
  • ShapingAPI + ShadowAPI authoring (f57a836)
  • LightListAPI + full-scene roundtrip test (c211a3f)

UsdSkel schema (reader + authoring + skinning, skel feature)

  • UsdSkel reader + skinning toolkit (b0e97b3)
  • SkelAnimQuery + array interp (e491398)
  • Scaffold authoring module + SkelRoot (e834862)
  • Skeleton authoring (6eab66a)
  • SkelAnimation authoring (f8853cc)
  • BlendShape authoring (497b60c)
  • Inbetween authoring (a9348ff)
  • SkelBindingAPI authoring (6f95ebc)
  • Share joint_index_map across topology and types (f39e2f2)
  • Use Path::has_prefix for subtree filter (87b769e)
  • Propagate errors from traverse closures (813eed8)

UsdPhysics schema (reader + authoring, physics feature)

  • UsdPhysics schema reader module (fa527f4)
  • Gate physics module behind physics feature flag (34c7647)
  • Use Stage helpers in place of raw field reads (864dc38)
  • Scaffold authoring module + PhysicsScene (bad9a9f)
  • RigidBodyAPI + MassAPI (58624bc)
  • CollisionAPI + MeshCollisionAPI + MaterialAPI (21c2628)
  • CollisionGroup + FilteredPairs + ArticulationRoot (f03ac4c)
  • Joints (base + 5 typed) (74426af)
  • LimitAPI + DriveAPI multi-apply (a97954d)

Shared infrastructure

  • Extract crate::math from skel/skinning (535c7f6)
  • Consolidate matrix builders shared by geom and skel (ebab67c)
  • Nest physics + skel under schemas/ (5da08a5)
  • Hoist shared author helpers; add Prim::author_relationship_targets (5718f26)

v0.3.0

Choose a tag to compare

@mxpv mxpv released this 13 Apr 17:54
b01ca13

Changelog

0.3.0

This release introduces the PCP composition engine — a ground-up rewrite of the composition module with an arena-based prim index, namespace mapping via MapFunction, and full LIVRPS arc support including relocates. The new StageBuilder API adds support for session layers, variant fallbacks, and composition error callbacks. USDA and USDC parsers also gain broader coverage for time samples, spline attributes, and several metadata fields.

Compliance

New AOUSD Core Spec coverage in this release:

  • 10.3.2.1.1 Reference namespace mapping
  • 10.3.2.3.1 Inherit namespace mapping
  • 10.3.2.5.1 Variant fallback map
  • 10.3.2.6 Relocates
  • 10.3.2.6.1 Relocates namespace mapping
  • 10.4 LIVERPS strength ordering
  • 10.4.1 Specializes global weakness
  • 10.5 Namespace mappings (MapFunction)
  • 10.6 Composition errors (non-fatal)
  • 11.2 Session layer

New PCP Composition Engine

  • Add PrimIndex arena-based DAG with LIVRPS strength ordering (3e86045)
  • Introduce LayerStack to bundle layers, identifiers, and sublayer stacks (6da01af)
  • Add MapFunction for namespace mapping across composition arcs (6f12d69)
  • Implement relocates composition with cycle detection (009ade5, 37e6cba)
  • Implement specializes global weakness per spec 10.4.1 (ef8d29f)
  • Propagate implied inherits through seed prefix equivalences (7dc1f43)
  • Recursive inherits, specializes, and variant arc processing (d7efb57)
  • Nested variant resolution and variant-scoped dependency collection (461a350)
  • Resolve variant selections across all node paths (73b8d74)
  • Default variant selection from first variant in set (3c0f7bd)
  • Expand ancestral seeds for reference, payload, inherit, and specialize targets (e5e592d, f127c7f)
  • Propagate child specs from parent composition nodes (ae43049)
  • Add composition error reporting with CompositionError and DependencyKind (b51efb0, ce2c4b6)
  • Restructure dependency collection with error callback (d4f664c)
  • Canonicalize resolver identifiers (ccbc875)

Stage

  • Add StageBuilder and simplify Stage::open (ce11f1e)
  • Add session layer support (b3ec6e0)
  • Add variant fallback map (PcpVariantFallbackMap) (40dadfb)

Text Format (USDA)

  • Parse time samples, property suffixes, and relationship list ops (27d3488)
  • Parse spline attributes (de7ce40)
  • Parse relocates (82c6781)
  • Support block comments in the tokenizer (c1818ef)
  • Accept unrecognized type names and dotless float literals (c0e61c1)
  • Accept instanceable prim metadata (baf363f)
  • Support displayName prim metadata (40e3384)
  • Allow type name on all prim specifiers (aa6dddf)
  • Accept USDA version 1.0.x in magic header (b2ee2b4)

Binary Format (USDC)

  • Parse relocates (82c6781)
  • Fix bool parsing (f23b856)
  • Fix variant path format to use canonical form (0f64de4)
  • Fix half-float vector inlined value reading (ebeae8d)
  • Fix string array default value read (40d42be)

SDF

  • Add ListOp composition with compose_over and combine_chain (6a50227)
  • Add optional serde Serialize for SDF types (801065b)
  • Use fixed-size arrays for vec/quat/matrix Value variants (669d9b6)
  • Separate array semantics from Type enum into TypeInfo (3324408)

Bug Fixes

  • Fix relocate node strength ordering in LIVRPS (1f60dbf)
  • Fix cross-seed variant slice invalidation (bd5912b)
  • Fix propertyChildren key name and emit variantSetChildren (3768f3f)
  • Fix several text parser issues found by compliance tests (655da04)
  • Skip default and empty field values in text parser (4e195ba)
  • Store pseudo-root bare string as comment, not documentation (3deb0a4)
  • Fix USDA parser gaps for composition tests (e2c8bb8)
  • Fix test on windows (e1e7446)

Performance

  • Avoid heap allocation for single-pair MapFunction (4f1a790)
  • Extract Relocates struct and eliminate O(n^2) cache cloning (5c26022)
  • Remove unnecessary clones to reduce allocation pressure (3bb43dc)

Testing

  • Add composition compliance tests (63515dd)
  • Add text format compliance tests (0fcbbd9)
  • Vendor sample implementations for compliance testing (f1d3e9e)
  • Use vendored assets instead of duplicate fixtures (eed406e)

Dependencies

v0.2.0

Choose a tag to compare

@github-actions github-actions released this 06 Apr 17:15

What's Changed in v0.2.0

Composition & Stage API

  • Add Stage API with sublayer value resolution (9a214e2)
  • Initial resolver and composer implementation (160521f)
  • Add PrimIndex types for composition (e026132)
  • Add reference and payload arcs to PrimIndex (a90e285)
  • Add inherit arcs to PrimIndex (2e12c5b)
  • Add variant selection to PrimIndex (452d38a)
  • Add specialize arcs to PrimIndex (675a67b)
  • Add ListOp::compose_over for list-edit composition (82845fd)
  • Add Path helper methods for composition (62316ec)
  • Improve Stage API ergonomics with impl Into (c041881)
  • Change AbstractData::get to take &self (59ddda7)

Variable Expressions

  • Tokenize var expressions (a62b797)
  • Implement expression parser (3641ec6)
  • Implement expression evaluator (3bbeb2f)
  • Support expressions when loading layers (c2cabfd)
  • Add is_expression helper (9379e2a)

USDC (Binary Format)

USDA (Text Format)

  • Parse variantSet (9298d68)
  • Parse dictionary (ba17b8b)
  • Parse connections/relationships; Matrix support (c643030)
  • Fix USDA parser to accept quoted dictionary keys (b8e7943)
  • Add dictionary type (d424269)
  • Add support for dictionaries in pseudo-root metadata and relationship specs (ad6c4bf)
  • Implement prim metadata support (cafae42)
  • Rewrite tokenizer (bc35999)
  • Parse sublayers (f2d8dea)
  • Improve error reporting for USDA parser (432dd0a)

USDZ (Archive Format)

  • Initial usdz file format support (ba23a1d)

API Improvements

  • Replace FromValue with TryFrom (8b71b48)
  • Remove get_ prefix (ba88f4d)
  • Rework ref parser (a96ea82)
  • Add TextReader helpers for child and attribute access (05c95ca)
  • Add FromValue trait for type-safe value conversion (09a6166)
  • Derive Clone for sdf::Spec and TextReader (dbd5ef5)
  • Make TextReader::data public for external composition (7df6e33)
  • Support internal path references in parse_reference (160f6e0)
  • Support int64[], add test to read expressionVariables field (61ea225)

Dependencies

  • Update zip requirement from 2.2.2 to 8.2.0
  • Update lz4_flex requirement from 0.11.1 to 0.13.0
  • Update strum requirement from 0.27.2 to 0.28.0
  • Update logos requirement from 0.15.0 to 0.16.0
  • Bump codecov/codecov-action from 4 to 6
  • Bump actions/checkout from 4 to 6
  • Bump Rust toolchain to 1.89

v0.1.4

Choose a tag to compare

@github-actions github-actions released this 19 Jul 20:12

Changes

  • Fix cargo publish (d9eb393)
  • Update publish script (ee9c3a3)
  • Bump EmbarkStudios/cargo-deny-action from 1 to 2 (#7) (624462a)
  • Update OS list to latest (092d08f)
  • Format project files (8ab5481)
  • Add Claude CI action (f583a07)
  • Fix cargo deny (a42621e)
  • Fix clippy (70ccd31)
  • Update Rust to 1.88 (3824dc0)
  • Add CLAUDE.md (f590e16)
  • Parse layer offsets (6455059)
  • Refactor array parsing (81d0661)
  • Fix string array parser (0f95f02)
  • Use field keys instead of strings (f9cd11e)
  • Add codecov targets for patches (8d07aac)
  • Minor comment fixes (07b6739)
  • Align value types with binary reader (3652450)
  • Parse attributes (ab83ef0)
  • Update dump USDC example (9819514)
  • Initial text parser implementation (8b032bc)
  • Add dependencies badge (6e72b2e)
  • Merge pull request #6 from mxpv/dependabot/cargo/strum-0.26.2 (46e6332)
  • Merge pull request #4 from mxpv/dependabot/github_actions/codecov/codecov-action-4 (47b9e90)
  • Merge pull request #5 from mxpv/dependabot/github_actions/actions/checkout-4 (765463a)
  • Remove token lifetime (b82157f)
  • Make tokenizer iterable (94bd1fa)
  • Update strum requirement from 0.25.0 to 0.26.2 (53e0ac8)
  • Bump actions/checkout from 3 to 4 (2464c02)
  • Bump codecov/codecov-action from 3 to 4 (7e0af95)
  • Increase codecov threshold to 15% (f1bf153)
  • Add dependabot (6a1f08a)
  • Add field and children keys (2b22c24)
  • Consolidate usdc modules (051bee2)
  • Move version to layout (220170e)
  • Implement tokenizer (3a860e5)
  • Update toolchain (0c05e01)
  • Read quats, uchar, and bool (c2efe31)
  • Decode 64 bit integers (support int64 and uint64 arrays (2f85401)
  • Read compressed floats (half, float, double) (da4bd6f)

v0.1.3

Choose a tag to compare

@mxpv mxpv released this 18 Jan 03:36

What's Changed

  • b509995 Fix tagging in release script

Full Changelog: v0.1.2...v0.1.3

v0.1.2

Choose a tag to compare

@mxpv mxpv released this 18 Jan 02:36

What's Changed

Full Changelog: v0.1.1...v0.1.2

v0.1.1

Choose a tag to compare

@mxpv mxpv released this 18 Jan 02:37

What's Changed

  • ae5088a Read hierarchy from crate file
  • e4efb84 Move crate file reader to a separate file
  • 9ffe19c Implement SdfPath
  • 4d5072c Read crate (usdc) files

Full Changelog: v0.1.0...v0.1.1