Update all CMakeLists.txt, Makefiles, meson.build, setup.py,
and documentation files to use C++17 standard.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add --yaml and --json command-line options to tydra_to_renderscene
- Implement YAML format (human-readable, now default) with metadata header
- Implement JSON format (machine-readable) with metadata header
- Both formats include: format_version, generator, source_file, scene settings
(upAxis, metersPerUnit, framesPerSecond, etc.), and summary counts
- Add configuration info output as comments (YAML: #, JSON: //)
- Config info includes: loading_method, input_file, triangulate,
triangulation_method, build_vertex_indices, asset_resolver, timecode, etc.
- Keep original KDL format available via API with format="kdl"
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Adds a new inspection feature similar to pxrUSD's sdfdump, providing
YAML-like tree output of USD Layer structure. New files:
- src/usd-dump.hh/cc: InspectLayer/InspectStage implementation
- GlobMatch/GlobMatchPath functions in str-util for pattern matching
New CLI options:
- --inspect: YAML-like Layer inspection output
- --inspect-json: JSON output (placeholder, not yet implemented)
- --value=MODE: Value printing mode (none/snip/full)
- --snip=N: Number of items to show in snip mode
- --path=PATTERN: Filter prims by path glob pattern (supports **)
- --attr=PATTERN: Filter attributes by name glob pattern
- --time=T or --time=S:E: TimeSamples time query
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Add progress_callback and progress_userptr to USDLoadOptions
- Add SetProgressCallback to USDAReader to forward to AsciiParser
- Integrate progress callback in LoadUSDCFromMemory and LoadUSDAFromMemory
- Implement ASCII progress bar [=====> ] with percentage display
- Only show progress bar if loading takes > 3 seconds
- Reformat tusdcat help message to 80 character lines
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
The mapbox earcut library returns triangles in clockwise winding order,
but USD expects counter-clockwise order. This was causing reversed face
orientation for polygons with 5 or more vertices when using the earcut
triangulation method.
Changes:
- src/tydra/render-data.cc: Reverse triangle winding order by swapping
indices 1 and 2 when processing earcut results to convert from CW to CCW
- examples/tydra_to_renderscene/to-renderscene-main.cc: Add --trifan
option to enable triangle fan triangulation method for testing
The triangle fan method was already producing correct CCW triangles and
did not require changes.
Tested with models/ngon.usdc containing pentagon, hexagon, and octagon.
Both triangulation methods now correctly produce CCW triangles.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Summary:
- Added TriangulationMethod enum to MeshConverterConfig with two options:
* Earcut (default): Robust algorithm for complex/concave polygons
* TriangleFan: Fast algorithm for convex polygons (simple fan splitting)
- Implemented triangle fan splitting for 5+ vertex polygons
* Creates triangles from first vertex as pivot: (0,1,2), (0,2,3), etc.
* Much simpler and faster than earcut for convex polygons
- Updated TriangulatePolygon() function signature to accept triangulation method
- Preserved backward compatibility with earcut as default method
- Added triangulation_method_example.cc demonstrating usage of both methods
Benefits:
- Performance improvement for applications with convex polygon meshes
- Flexible triangulation strategy based on polygon characteristics
- Default behavior unchanged for backward compatibility
Test plan:
- Build successfully with no compilation errors
- Example program demonstrates switching between triangulation methods
- Can be tested with USD files containing 5+ vertex polygons
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Fixed template deduction issues where set_value() was being called
with lvalue references, causing TypeTraits specialization errors.
Changed all problematic calls to use std::move() to ensure correct
non-reference type deduction.
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
This commit adds memory usage statistics reporting to the tusdcat tool:
- Added Stage::estimate_memory_usage() method to calculate Stage memory usage
including stage metadata, root prims, string storage, and prim ID management
- Enhanced tusdcat with --memstat command line option to display memory stats
- Added format_memory_size() helper function for human-readable memory display
(shows sizes in B, KB, MB, GB, TB with both formatted and raw byte counts)
- Memory stats are reported for:
- Layer memory usage (when using --flatten option)
- Stage memory usage (regular mode and --loadOnly option)
- Stage after composition (in flatten mode)
- Added layer.hh include to fix compilation issues with incomplete Layer type
Usage examples:
tusdcat --memstat input.usda
tusdcat --memstat --flatten input.usda
tusdcat --memstat --loadOnly input.usdz
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
## Features Added
### Core diff-and-compare implementation:
- Complete rewrite of src/tydra/diff-and-compare.cc with full diff algorithm
- Hierarchical PrimSpec comparison (added/deleted/modified primitives)
- Property comparison for attributes and relationships
- Recursive traversal with depth limits for security
- Memory-safe implementation using standard containers
### Text and JSON output formats:
- DiffToText(): Unix diff-style output with +/- symbols
- DiffToJSON(): Structured JSON format for programmatic use
- Proper JSON escaping and formatting
- Sorted output for consistent results
### usddiff command-line tool:
- Full-featured CLI application in examples/usddiff/
- Support for --json and --help options
- USD file loading with error handling
- Support for all USD formats (.usd, .usda, .usdc, .usdz)
- Comprehensive documentation and usage examples
## Implementation Details
- Path-based diff organization using USD scene graph paths
- Efficient O(n log n) sorting for consistent output
- Configurable depth limits (default: 1M levels) for security
- Proper error handling and input validation
- CMake integration with TinyUSDZ build system
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>