Summary
The sample prop obs_workbench_tool_a01 has an inverted top surface. Under back-face culling the entire worktop disappears and the unlit interior of the cabinet shows through. It fails this repository's own culling_xz FET001 benchmark.
This is the reference asset shipped for the benchmark that detects the defect.
Reproduction
simready-validate ... --stamp-asset-validation sm_obs_workbench_tool_a01_01.usd
simready-benchmark --assets sm_obs_workbench_tool_a01_01.usd --max-concurrent 1
Asset: sample_content/common_assets/props_general/obs_workbench_tool_a01/isaacsim_usd/
Result:
FAIL culling_xz XZ-axis culling check failed at angle 0 deg:
27.8% object pixel diff (threshold 10%).
The other seven tests in the run pass (ground_drop, slope_drop, light_response, normals_xz, pivot, presence), so rendering and framing are working — this is not the "no frames captured" or "camera misframed" failure mode from the test doc.
Visually: with doubleSided = True the asset renders correctly in orange diagnostic material. With culling on, the worktop renders solid black while the drawer fronts, sides and edges remain correct. Happy to attach the captured frame pair if useful — culling_xz_worst_pair.mp4 is produced by the run.
Root cause
Offending prim:
/sm_obs_workbench_tool_a01_01/workbench_main_obj/workbench_main_trans/workbench_main_obj/workbench_main_mesh
Geometry lives in payloads/obs_workbench_tool_01_meshes.usd.
Checking face orientation on that mesh (stage upAxis = Z, mesh Z range -0.0010 .. 0.9134):
| Surface |
normals UP |
normals DOWN |
| Top faces (z ≈ 0.9134) |
0 |
35 |
| Bottom faces (z ≈ -0.0010) |
0 |
4 |
Every one of the 35 faces forming the worktop points downward, into the object. The bottom faces also point down, which is correct for a bottom surface — so the top surface is simply inverted relative to the rest of the model.
Worth noting: this is not inconsistent winding
The test documentation attributes a culling_xz failure to "incorrect (clockwise) winding order". That is not what is happening here. Comparing winding-derived normals against the authored normals attribute, every face of every mesh in the asset agrees — 496/496 on workbench_main_mesh, 403/403 on each of the ten drawers, 0 opposed, all faceVarying.
Winding and normals are consistent with each other; they are jointly inverted on the top surface. So the fix is not "flip the winding to match the normals" — both need flipping together (or normals recalculated outward after the flip). The culling_xz "How to Fix" guidance may be worth widening to cover this case, since following it literally would produce a mesh whose winding and normals disagree.
doubleSided is authored True on the mesh, which is why the defect is invisible in most DCC viewports and in any renderer that does not cull.
Scope not checked
Only the isaacsim_usd variant was tested. The asset also ships simready_usd and simready_physx_usd variants plus the original Blender source at dcc_source/working/model/blender/obs_workbench_tool_a01.blend — worth checking whether the inversion originates upstream of the USD conversion and affects the other variants too.
Environment
simready-benchmark 2026.6.5, simready-validate 2026.6.4, Isaac Sim 6.0.1, driver 596.86, RTX 6000 Ada, Windows 11, Python 3.12. Repo at 0ed0dfb.
Summary
The sample prop
obs_workbench_tool_a01has an inverted top surface. Under back-face culling the entire worktop disappears and the unlit interior of the cabinet shows through. It fails this repository's ownculling_xzFET001 benchmark.This is the reference asset shipped for the benchmark that detects the defect.
Reproduction
Asset:
sample_content/common_assets/props_general/obs_workbench_tool_a01/isaacsim_usd/Result:
The other seven tests in the run pass (
ground_drop,slope_drop,light_response,normals_xz,pivot,presence), so rendering and framing are working — this is not the "no frames captured" or "camera misframed" failure mode from the test doc.Visually: with
doubleSided = Truethe asset renders correctly in orange diagnostic material. With culling on, the worktop renders solid black while the drawer fronts, sides and edges remain correct. Happy to attach the captured frame pair if useful —culling_xz_worst_pair.mp4is produced by the run.Root cause
Offending prim:
Geometry lives in
payloads/obs_workbench_tool_01_meshes.usd.Checking face orientation on that mesh (stage
upAxis = Z, mesh Z range-0.0010 .. 0.9134):Every one of the 35 faces forming the worktop points downward, into the object. The bottom faces also point down, which is correct for a bottom surface — so the top surface is simply inverted relative to the rest of the model.
Worth noting: this is not inconsistent winding
The test documentation attributes a
culling_xzfailure to "incorrect (clockwise) winding order". That is not what is happening here. Comparing winding-derived normals against the authorednormalsattribute, every face of every mesh in the asset agrees — 496/496 onworkbench_main_mesh, 403/403 on each of the ten drawers, 0 opposed, allfaceVarying.Winding and normals are consistent with each other; they are jointly inverted on the top surface. So the fix is not "flip the winding to match the normals" — both need flipping together (or normals recalculated outward after the flip). The
culling_xz"How to Fix" guidance may be worth widening to cover this case, since following it literally would produce a mesh whose winding and normals disagree.doubleSidedis authoredTrueon the mesh, which is why the defect is invisible in most DCC viewports and in any renderer that does not cull.Scope not checked
Only the
isaacsim_usdvariant was tested. The asset also shipssimready_usdandsimready_physx_usdvariants plus the original Blender source atdcc_source/working/model/blender/obs_workbench_tool_a01.blend— worth checking whether the inversion originates upstream of the USD conversion and affects the other variants too.Environment
simready-benchmark2026.6.5,simready-validate2026.6.4, Isaac Sim 6.0.1, driver 596.86, RTX 6000 Ada, Windows 11, Python 3.12. Repo at0ed0dfb.