207 Commits

Author SHA1 Message Date
Syoyo Fujita
de47bc8f07 Merge branch 'anim-mtlx-phase2' of github.com:lighttransport/tinyusdz into anim-mtlx-phase2 2025-11-30 04:26:18 +09:00
Syoyo Fujita
4b506dc780 Add LTE SpectralAPI unit test USDA files
17 test files covering spectral data parsing:

Reflectance tests:
- spectral-reflectance-001.usda: Basic wavelength:reflectance
- spectral-reflectance-002.usda: With linear interpolation metadata
- spectral-reflectance-003.usda: With cubic interpolation

IOR tests:
- spectral-ior-001.usda: Basic wavelength:ior
- spectral-ior-002.usda: With linear interpolation
- spectral-ior-sellmeier-001.usda: Fused silica Sellmeier coefficients
- spectral-ior-sellmeier-002.usda: BK7 glass Sellmeier coefficients

Emission tests:
- spectral-emission-001.usda: Basic wavelength:emission
- spectral-emission-002.usda: With interpolation metadata
- spectral-emission-preset-*.usda: D65, D50, A, F2 illuminant presets

Other tests:
- spectral-stage-metadata-*.usda: Stage-level unitForWavelength
- spectral-held-interp-001.usda: Held interpolation
- spectral-material-binding-001.usda: Complete material with binding

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-30 03:41:58 +09:00
Syoyo Fujita
ab0ef8900c Add comprehensive UsdLux parsing and conversion system with test suite
Implements complete UsdLux light parsing and conversion pipeline:

Core Infrastructure:
- RenderLight data structure supporting 6 UsdLux light types (Point/Sphere, Directional, Rect, Disk, Cylinder, Dome)
- MeshLightAPI support for emissive geometry lights
- Full property extraction: color, intensity, exposure, shadows, shaping, IES profiles
- Color temperature support with Kelvin-based specification

JSON Serialization:
- Complete light data serialization in material-serializer.cc
- Geometry light mesh references with geometryMeshId
- Material sync mode for mesh lights

Three.js Exporter:
- Light type conversion to Three.js equivalents
- Shadow map configuration
- Directional/Point/Spot/Rect/Hemisphere light export

WASM Bindings:
- numLights() API for light count
- getLightWithFormat() supporting JSON/YAML output
- Node.js CLI tool (dump-usdlux-cli.js) for testing

Test Suite:
- Comprehensive test files in tests/usda/:
  * usdlux_basic_lights.usda - 6 light types
  * usdlux_advanced_features.usda - IES, shaping, textures
  * usdlux_mesh_lights_simple.usda - MeshLightAPI
- Automated test suite (test-usdlux-parsing.js)
- npm test:usdlux script for CI/CD integration
- All tests passing (4/4)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-19 03:27:19 +09:00
Syoyo Fujita
f3fb9015ed Add comprehensive timesamples test files for scalar and array types
Added 24 USDA test files covering scalar and array timesamples syntax:

Scalar types (15 tests):
- bool, int, uint, int64, uint64
- half, float, double
- token, assetpath
- vec2f, vec3f, vec4f, quatf, matrix4d

Array types (9 tests):
- bool[], int[], float[], double[], token[]
- vec2f[], vec3f[], vec4f[], quatf[]

Also added corresponding USDC binary format files generated via usdcat.
Each test follows a simple template with single Prim and Attribute with 2-3 keyframes.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-26 02:21:35 +09:00
Syoyo Fujita
6088dc4797 Merge branch 'crate-timesamples-opt' of github.com:lighttransport/tinyusdz into crate-timesamples-opt 2025-10-25 23:52:51 +09:00
Syoyo Fujita
7392324835 dd tests for string and string[] timesamples 2025-10-25 23:50:23 +09:00
Syoyo Fujita
1f18be0949 Fix empty timeSamples being omitted from output
Empty timeSamples (with size=0 but valid type_id) were being completely
omitted from output instead of being printed as "{}". This fix ensures
authored but empty timeSamples are preserved during round-trip parsing.

Changes:
- prim-reconstruct.cc: Check type_id != 0 to detect authored empty timeSamples in xformOp reconstruction
- primvar.hh: Update type_name() and type_id() to handle empty timeSamples
- pprinter.cc: Update printing logic to output empty timeSamples as "{}"
- timesamples-pprint.cc: Remove debug output
- timesamples.hh: Remove debug output
- ascii-parser-timesamples-array.cc: Add bool[] timeSamples support

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-24 11:36:02 +09:00
Syoyo Fujita
bbc01dfa50 timesamples pprint w.i.p. 2025-10-15 12:14:10 +09:00
Syoyo Fujita
e546a47090 Add TypedArray support to PODTimeSamples and redesign animation system for Three.js compatibility
- PODTimeSamples: Add add_typed_array_sample() and get_typed_array_at() to store TypedArray<T> as 8-byte packed pointers instead of full Value objects
- Tydra: Redesign animation system to match glTF/Three.js architecture
  - Replace Animation struct with AnimationClip containing KeyframeSampler and AnimationChannel
  - Use flat float arrays for keyframe storage (matches Three.js KeyframeTrack)
  - Remove node_animations from Node struct - animations now reference nodes by index
  - Add AnimationPath enum (Translation/Rotation/Scale/Weights) matching glTF paths
  - Add AnimationInterpolation enum (Linear/Step/CubicSpline) matching glTF spec
- Documentation: Add THREEJS_ANIMATION.md with Three.js animation system reference
- Documentation: Add ANIMATION_SYSTEM_REDESIGN.md with migration guide

This makes Tydra animations directly compatible with Three.js AnimationClip and
glTF 2.0 animation structure for easier web export.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-09 23:25:01 +09:00
Syoyo Fujita
d0b1a80d2d small buffer optimization. 2025-09-04 03:27:04 +09:00
Syoyo Fujita
efa08f0770 Fix "/" is not added to replaced path prefix.
Add feature of replacing path to 'Payload' command.
2025-06-15 07:50:53 +09:00
Syoyo Fujita
79533bc317 Rewrite Prim path prefix in References composition. 2025-06-14 11:06:05 +09:00
Syoyo Fujita
d76c9ce5a2 layerToStage: Fix untyped PrimSpec is not handled correctly.
typo.
add root prim path change test scene for USD composition.
2025-06-14 09:09:13 +09:00
Syoyo Fujita
2aa3d55e93 Add opacityMode attrib support(introduced from UsdPreviewSurface v2.6) 2025-05-20 06:52:23 +09:00
Syoyo Fujita
ae76912b85 Fix None in TimeSamples is not handled correctly. Fixes #232 2025-05-16 12:23:10 +09:00
Syoyo Fujita
d30de26288 Support kilogramsPerUnit stage metadataum.
Support displayName/displayGroup attribute metadataum.
2025-03-28 03:19:28 +09:00
Roberto De Ioris
7c85e00ae0 added sublayers example usda files 2024-11-22 11:50:07 +01:00
Syoyo Fujita
fb66ca5723 add repro scene for PR 195. 2024-10-21 22:25:17 +09:00
Syoyo Fujita
07f05cad04 Allow skipping unknown apiSchema by default. 2024-07-21 21:48:58 +09:00
Syoyo Fujita
1b46af8010 Support all of usdGeom/usdShade/usdLux API tokens. 2024-07-21 03:54:59 +09:00
Syoyo Fujita
8a5491db31 [USDC] fix some inlined values are reconstructed as wrong type(e.g. inlined float2 value was reconstructed as half3 type) 2024-06-12 22:35:08 +09:00
Syoyo Fujita
3b27bedc4f Fix ValueBlock Relationship was not handled correctly. 2024-05-10 05:15:51 +09:00
Syoyo Fujita
d869836502 Remove a debug log.
Add test files for xformOp.
2024-05-09 01:45:21 +09:00
Syoyo Fujita
2016236a4b Fix built-in property is not handled as TypedAttribute for SkelRoot
Prim.
2024-05-09 01:39:42 +09:00
Syoyo Fujita
71068ffd57 Use std::string insted of problematic 'value::StringData' for 'string' attribute 2024-05-08 09:27:58 +09:00
Syoyo Fujita
0902c19bc2 Initial support of reading attribute with multi-values. 2024-05-03 08:10:50 +09:00
Syoyo Fujita
27d6ba027f w.i.p 2024-05-02 09:17:54 +09:00
Syoyo Fujita
d336d0b57f Merge branch 'dev' into multi-value-prop 2024-05-02 02:35:09 +09:00
Syoyo Fujita
6cb1cff60d Support parsing unauthoredValuesIndex metadata.
Add unauthoredValuesIndex to GeomPrimvar.
Apply clang-format to ascii-parser.cc

Fixes #158
2024-04-30 02:37:48 +09:00
Syoyo Fujita
0c147e535a [USDA] Support parsing multi-valued attribute. 2024-04-23 22:53:21 +09:00
Syoyo Fujita
d14ce2a32d [USDA Parser] Report syntax error when attribute metadataum exists for timesampled attribute and attribute connection 2024-04-22 22:21:11 +09:00
Syoyo Fujita
30ed6a2b3a Support having multiple values in Attribute(W.i.p.) 2024-04-18 05:27:23 +09:00
Syoyo Fujita
a724ba3fec Support constructing timesampled enum token attribute. 2024-04-12 03:13:47 +09:00
Syoyo Fujita
6a6a150660 Support parsing timesampled enum tokens(w.i.p.) 2024-04-10 07:09:18 +09:00
Syoyo Fujita
e74d1d8906 rel + valueblock + metadataum 2024-04-07 04:11:57 +09:00
Syoyo Fujita
30b717fb63 Allow comment inside customLayerData(Dictionary) Stage metadataum. Fixes 2024-04-07 04:04:37 +09:00
Syoyo Fujita
a98b0882a1 Fix parsing declare-only enum token attribute. Fixes #136 2024-04-07 02:47:53 +09:00
Syoyo Fujita
8dce7bc170 Support parsing 'colorSpace' attribute metadataum. 2024-01-19 02:31:03 +09:00
Syoyo Fujita
caf86ade14 Support "point" elementType for GeomSubset 2023-12-15 01:37:09 +09:00
Syoyo Fujita
a0824568f4 Initial support of Prim attributes for Collection API 2023-12-12 22:18:57 +09:00
Syoyo Fujita
8e4948ca3e Improve support of material binding.
code format to example code.
2023-12-04 02:27:33 +09:00
Syoyo Fujita
536c8fd457 Initial support of rel material:binding:collection:NAME in GPrim. 2023-11-29 08:16:47 +09:00
Syoyo Fujita
d67e90b6fc listop qualifier check for empty list. 2023-11-27 02:46:40 +09:00
Syoyo Fujita
c405a7abba Proper familyType attribute handling(it should be described in GeomMesh, not GeomSubset) 2023-11-21 23:33:24 +09:00
Syoyo Fujita
03916f17d0 Manage GeomSubset as a child Prim of GeomMesh. 2023-11-17 23:29:20 +09:00
Syoyo Fujita
c266cfe745 Support primPath only references(No assetPath. reference a PrimSpec in a layer) 2023-10-30 01:57:07 +09:00
Syoyo Fujita
9a1d0afc2a [USDA parser] Fix parsing variantSet statement when it contains comments line.
[tusdcat] Fix composition logic.
2023-10-28 23:24:26 +09:00
Syoyo Fujita
ce3d2df06c [USDA] Do some property name validation. 2023-10-24 02:31:57 +09:00
Syoyo Fujita
29f91edf06 Initial support of __AnyType__ Prim typeName. 2023-10-08 19:24:36 +09:00
Syoyo Fujita
d77c5e5348 Support clips Prim metadatum. 2023-09-30 23:36:40 +09:00