Syoyo Fujita
|
69e5426ac6
|
Add OpenUSD Crate format analysis and C++ examples
Comprehensive documentation and working C++ examples for OpenUSD's
Crate (USDC binary) format implementation.
Documentation (crate-impl.md, 1249 lines):
- Complete binary format specification with diagrams
- File layout: Bootstrap, Value Data, Structural Sections, TOC
- Key data structures: ValueRep (8 bytes), Spec, Field, TimeSamples
- Type system: All 60 supported types documented
- Reading implementation: 3 ByteStream backends (mmap/pread/asset)
- Writing implementation: Packing, deduplication, async I/O
- Compression: Integer/float/LZ4 algorithms detailed
- Deduplication: 3-level system (structural/per-type/time arrays)
- Version history: 13 versions (0.0.1 to 0.13.0)
- Optimizations: Zero-copy arrays, parallel construction, etc.
- Performance: Read/write speeds, memory usage, file sizes
- Security: Bounds checking, recursion protection, validation
C++ Examples (aousd/crate/):
Three working programs demonstrating OpenUSD C++ API:
1. crate_reader (157 KB)
- Read .usdc/.usda files
- Traverse prim hierarchy
- Display attributes and TimeSamples
- Works with any USD file
2. crate_writer (329 KB)
- Create animated USD scenes
- Write TimeSamples for animation
- Animated transforms and colors
- Simple and complex scene modes
3. crate_internal_api (169 KB)
- Inspect binary format (magic, version, TOC)
- Analyze TimeSamples (uniform/non-uniform sampling)
- Compare format sizes (ASCII vs binary)
- Low-level format introspection
Build Systems:
- Makefile: Simple, fast Unix builds
- CMake: Cross-platform, IDE integration
- build.sh: Convenience wrapper script
- Both monolithic and standard USD linking
- Links against no-python OpenUSD builds
Documentation:
- README.md: Complete build/usage instructions
- EXAMPLES_OUTPUT.md: Actual program outputs
- Full API usage examples
- Troubleshooting guide
Verified Working:
- Compiles with C++17
- Links against libusd_ms.so (monolithic)
- Creates/reads .usdc files successfully
- Binary format inspection working
- TimeSamples encoding/decoding functional
File sizes: ~660 KB total (all 3 programs)
Binary compression: 50-60% smaller than ASCII
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
|
2025-11-01 06:37:26 +09:00 |
|