NVIDIA / NVIDIA/simready-foundation
Sample assets ship incorrect semantic labels and a deprecated SemanticsAPI block (nvbug 5945197)
Nobody has claimed this yet.
- Dominant language
- Python
- Stars
- 88
- Forks
- 18
- PR merge metrics
- No merged PRs in 30d
Description
Summary
The sample assets ship incorrect semantic labels, and ship a deprecated SemanticsAPI block alongside the current one. This was originally reported in nvbug 5945197; I re-verified it against the currently shipped binary .usd assets (not just the ASCII sources) on main (2026.04.1), so the file/line evidence below reflects what consumers actually download.
Note: the primary asset files are binary USD crate, so a plain
grepover the repo finds nothing. The evidence below was produced by piping each asset throughusdcat. (Shipping these as ASCII would make this directly greppable — filed separately.)
Problem 1 — semantics:labels:wikidata_class is the placeholder key string, not the class name
Across the props + packaging samples, the Wikidata class label is the literal metadata-key string "wikidata_qcode" instead of the object's class. For example, apple_a01/simready_usd/sm_apple_a01_01.usd:
token[] semantics:labels:wikidata_class = ["wikidata_qcode"] # should be ["apple"]
token[] semantics:labels:wikidata_qcode = ["Q89"] # Q-code is correct
Every apple/orange/coffee-cup/lamp/etc. asset therefore claims its class is the string "wikidata_qcode", which is meaningless to any downstream perception/training consumer.
Scope: 28 shipped files contain the broken placeholder. Affected assets (each in simready_usd + simready_physx_usd unless noted):
alcohol_a01,apple_a01,coffee_cup_grasp_a01,gen_cleaning_dishwand_v01_01,obs_electricians_large_tool_box_a01,obs_joystick_a01,obs_lamp_revolute_a01,obs_orange_a01,obs_small_sledge_hammer_a01,obs_workbench_tool_a01coffee_cup_grasp_a01/isaac_usd/payloads/sample_coffee_cup_grasp_meshes.usd- 5 packaging copies of
apple/orangeunderpackaging/simple_packages/**
Mixed: gen_appliance_toaster_v01_01 — root prim is correct (["toaster"]) but its 5 child prims are still ["wikidata_qcode"] (lines 336, 493, 557, 619, 680). The fix updated the top-level label but didn't propagate to part-level labels.
Correct counter-example: obs_light_bulb_01 ships ["light bulb"] / ["Q1318740"] — proof the correct shape is achievable; most assets just weren't re-exported through whatever path produced it.
Problem 2 — deprecated SemanticsAPI block still ships alongside the new API
Every asset that has any semantics applies both the new SemanticsLabelsAPI:* and the old SemanticsAPI:* schemas, e.g. apple_a01/.../sm_apple_a01_01.usd:
prepend apiSchemas = ["SemanticsLabelsAPI:wikidata_class", "SemanticsAPI:wikidata_class", ...]
custom string semantic:wikidata_class:params:query = "apple" # correct
custom string semantic:wikidata_class:params:semanticData = "wikidata_qcode" # broken — should be "apple"
custom string semantic:wikidata_class:params:semanticType = "wikidata_class"
token[] semantics:labels:wikidata_class = ["wikidata_qcode"]
Two parallel semantic APIs ship in the same asset. Where they disagree (most assets today), behavior depends on which API the consumer happens to read. In the old block, query holds the right value but semanticData — the slot the SemanticsAPI consumer actually reads — is the placeholder.
Scope: 30 shipped files still carry the semantic:*:params block. This includes even the two correct obs_light_bulb_01 files: their values were repaired in both APIs, but the deprecated block was never removed — so zero assets pass "deprecate the old API."
Suggested resolution
- Set
semantics:labels:wikidata_classto the human-readable class name on every prim (root and children), matching theobs_light_bulb_01shape. - Drop the deprecated
SemanticsAPI:*/semantic:*:paramsschemas and properties; ship onlySemanticsLabelsAPI. - Re-export all props + packaging through whatever path produced
obs_light_bulb_01. - Decide whether robots should carry semantic labels — they currently carry none (separate from this issue, noted for completeness).
- Consider a CI check in the conformance/validation suite that fails on
["wikidata_qcode"]and on presence of the deprecated block.
How to verify (works against the shipped binary assets)
# From sample_content/ — usdcat each asset, since the files are binary crate
find . \( -name '*.usd' -o -name '*.usda' \) -not -path '*/.thumbs/*' \
-not -path '*/dcc_source/*' -not -path '*/temp/*' | while read -r f; do
usdcat "$f" 2>/dev/null | grep -q 'wikidata_class = \["wikidata_qcode"\]' && echo "BROKEN LABEL: $f"
usdcat "$f" 2>/dev/null | grep -q 'semantic:wikidata_class:params' && echo "OLD API: $f"
done
Verified on main @ 2026.04.1 (HEAD a1e9dd6), 2026-05-28: 28 files with the broken label, 30 with the deprecated block. Originating report: nvbug 5945197.
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start in sample_content/ with the provided usdcat verification loop, using the listed affected assets and the obs_light_bulb_01 files as the comparison case. Trace the asset re-export path that produced the shipped binary USD files and inspect any conformance or validation suite mentioned by the issue. Done means all shipped prims have the intended class labels and no deprecated semantic:*:params blocks remain.
Written by the indexing model from the issue text.
Assessment
- Domain
- computer-graphics, content
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Quiet
- Clarity
- Mostly clear
- Newbie friendliness
- 48/100