| name | usd-inspect |
| description | Reference for inspecting USD/USDA/USDC files using OpenUSD CLI tools. Use when you need to query prim hierarchies, attribute values, material bindings, skeleton data, or compare USD outputs. |
| allowed-tools | Bash, Read |
USD Inspection Reference
Environment dependency: This skill requires OpenUSD CLI tools (usdcat, usdtree, sdffilter, sdfdump) to be built and on PATH. On this machine they're installed at D:\USD\install\bin from the OpenUSD source at C:\Users\Geoff\Source\Repos\OpenUSD. These tools won't be available on other machines unless OpenUSD is built and installed there.
OpenUSD CLI tools are installed at D:\USD\install\bin and on PATH. Use these instead of writing ad-hoc Python scripts.
Tools Overview
| Tool | Best For |
|---|
usdcat | Dump full USDA text, extract specific prim subtrees via --mask |
usdtree | Quick hierarchy overview, see all prims with optional attributes |
sdffilter | Primary query tool — filter by path regex, field regex, time ranges |
sdfdump | Raw layer data with path/field filtering, good for debugging |
Common Recipes
See the full prim hierarchy
usdtree file.usda
See hierarchy with all authored attributes
usdtree -a file.usda
See hierarchy with metadata (kind, active, etc.)
usdtree -a -m file.usda
Extract a specific prim subtree as USDA
usdcat --mask /root/skeleton file.usda
Extract multiple prims
usdcat --mask /root/skeleton,/root/mesh file.usda
Flatten compositions and dump
usdcat -f file.usda
sdffilter — The Query Powerhouse
Filter by prim path (regex)
sdffilter -p "/root/skeleton" --outputType pseudoLayer file.usda
sdffilter -p "Bip01" --outputType pseudoLayer file.usda
sdffilter -p "/root/skeleton/Bip01_R_Calf$" --outputType pseudoLayer file.usda
Filter by field name (regex)
sdffilter -f "jointNames" --outputType pseudoLayer file.usda
sdffilter -f "xformOp" --outputType pseudoLayer file.usda
sdffilter -f "skel:(jointNames|bindTransforms|restTransforms)" --outputType pseudoLayer file.usda
Combine path + field filters
sdffilter -p "/root/skeleton" -f "bindTransforms" --outputType pseudoLayer file.usda
sdffilter -p "mesh" -f "material:binding" --outputType pseudoLayer file.usda
Output types
sdffilter --outputType outline file.usda
sdffilter --outputType pseudoLayer file.usda
sdffilter --outputType layer file.usda
sdffilter --outputType summary file.usda
sdffilter --outputType validity file.usda
Control array truncation
sdffilter --arraySizeLimit 20 --outputType pseudoLayer file.usda
sdffilter --arraySizeLimit -1 --outputType pseudoLayer file.usda
Time samples (animation data)
sdffilter -t 0 --outputType pseudoLayer file.usda
sdffilter -t 0..30 --outputType pseudoLayer file.usda
sdffilter --timeSamplesSizeLimit 5 --outputType pseudoLayer file.usda
sdfdump — Raw Layer Inspection
sdfdump -s file.usda
sdfdump --fullArrays file.usda
sdfdump -p "/root/skeleton" file.usda
sdfdump -f "bindTransforms" file.usda
sdfdump --validate file.usda
Skeleton-Specific Queries
These are the most common queries for debugging armature/skinning issues:
sdffilter -f "joints" -p "Skeleton" --outputType pseudoLayer --arraySizeLimit -1 file.usda
sdffilter -f "bindTransforms" -p "Skeleton" --outputType pseudoLayer --arraySizeLimit -1 file.usda
sdffilter -f "restTransforms" -p "Skeleton" --outputType pseudoLayer --arraySizeLimit -1 file.usda
sdffilter -f "skel:(jointIndices|jointWeights)" --outputType pseudoLayer --arraySizeLimit 40 file.usda
sdffilter -f "skel:" --outputType pseudoLayer file.usda
sdffilter -p "Skeleton$" -f "xformOp" --outputType pseudoLayer file.usda
Material Queries
sdffilter -f "material:binding" --outputType pseudoLayer file.usda
sdffilter -p "_materials" --outputType pseudoLayer file.usda
sdffilter -p "_materials" -f "inputs:" --outputType pseudoLayer file.usda
Geometry Queries
sdffilter -f "(points|extent|faceVertexCounts|faceVertexIndices)" --outputType pseudoLayer --arraySizeLimit 10 file.usda
sdffilter -p "mesh" -f "points" --outputType pseudoLayer --arraySizeLimit -1 file.usda
sdffilter -f "normals" --outputType pseudoLayer --arraySizeLimit 10 file.usda
sdffilter -f "primvars:st" --outputType pseudoLayer --arraySizeLimit 10 file.usda
Tips
- Pipe to file for large outputs:
sdffilter ... file.usda > output.txt then use Read tool
- Pipe to head for quick peek:
sdffilter ... file.usda | head -50
- pseudoLayer is almost always the right outputType — it's readable and concise
- arraySizeLimit defaults: 0 for outline, 8 for pseudoLayer, -1 for layer
- Path regexes are standard regex — use
$ for exact match, .* for wildcards
- These tools work on both
.usda (text) and .usdc (binary crate) files
- For
.usd files, the tools auto-detect the underlying format