Skip to content

fix(urdf): improve collision-role and resolvable UDIM export - #800

Open
MrHenriA wants to merge 2 commits into
isaac-sim:developfrom
MrHenriA:issue-709-public-candidate
Open

MrHenriA wants to merge 2 commits into
isaac-sim:developfrom
MrHenriA:issue-709-public-candidate

Conversation

@MrHenriA

@MrHenriA MrHenriA commented Aug 27, 2026

Copy link
Copy Markdown

Summary

I reproduced the two exporter problems reported in #709.

First, hidden or guide-purpose collision geometry could appear in the URDF visual output when Visualize Collisions was disabled. This produced visible collision boxes after the URDF was imported back into Isaac Sim.

Second, an encoded UDIM path could be written into the generated MTL file without resolving the concrete tiles or copying the texture files into the exported package.

What changed

  • Pass the collision visualization setting into link conversion.
  • Keep collision-only geometry out of visual output by default.
  • Preserve visible collision-enabled geometry for visual and collision use.
  • Normalize literal and percent-encoded UDIM tokens.
  • Resolve and copy concrete supported UDIM tiles.
  • Assign OBJ faces to concrete tile materials.
  • Reject unsupported cross-tile faces.
  • Avoid unresolved texture paths in generated MTL files.
  • Add five focused regression tests.

Tests

Validated the repaired, repository-formatted candidate f9a2b05996fa0f3ec095b1d2a2b8d4993334341b on Windows using Isaac Sim 6.1.0-rc.26+release.49347.2d230af4.gl.

  • The pinned repository formatter passed verification for all five changed Python files.
  • Ran the packaged NVIDIA launcher tests\tests-isaacsim.asset.exporter.urdf.bat, with the complete committed exporter extension staged using --ext-path.
  • Native startup configuration: passed.
  • Native default configuration: 109/109 tests passed, with no failures or skips.
  • Breakdown: 54 TestUrdfExporter tests, including the five issue-709 regressions; 54 geometry/breadcrumb tests; one extension API documentation check.
  • Native launcher exit: 0; no timeout, forced cleanup, or remaining child processes.
  • A read-only probe verified all 29 staged extension files against the committed source and checked canonical converter and exporter-test identities. It did not substitute an importer or manually select tests.

The native test result was reconciled after correcting a local reporting-only assumption that confused the 54-test class with the complete 109-test extension suite. The native reports and contribution were unchanged; the corrected reporting guard passed 10 positive/negative checks.

This validates the committed Python extension against the packaged 6.1 runtime. It is not a full source build or NVIDIA-hosted integration/security validation; those checks remain for maintainers. The visual comparisons below are earlier asset validation, not a newly repeated three-asset 6.1 matrix.

Test cases

I validated the change with three separate NVIDIA assets:

For each test case, I compared the source asset, stock reimport, and patched reimport.

Related work

PR #774 independently addresses the collision-visualization option reported in #709. This PR overlaps that narrow portion and additionally addresses resolvable UDIM export, texture packaging, per-tile material assignment, unsupported mapping
diagnostics, and three-asset visual validation.

Limits

NVIDIA documents that “there is no direct one-to-one mapping between USDs and URDFs” because USD can describe a broader set of scenes and robots than URDF.

The exporter documentation lists assumptions and constraints for supported source USD assets.

This patch improves collision-role handling and resolvable UDIM delivery within the supported exporter path. It does not claim lossless USD → URDF → USD conversion. Depending on the asset, materials, metadata, names, joints, sensors, and application-specific behavior may still change or be omitted.

The exported robot still requires structural and visual review.

Reference: NVIDIA Isaac Sim: Export URDF - Limitations

Visual validation

issue709-iwhub-source-stock-patched issue709-jetbot-source-stock-patched issue709-ur10e-source-stock-patched

Addresses #709

Update: Isaac Sim 6.1 visual validation

Validation recorded: 2026-09-12.

Source USD | Stock 6.1 reimport | Patched 6.1 reimport

Rechecked #709 using iW Hub on Isaac Sim 6.1. The stock exporter
still reproduced collision-only geometry appearing in visuals and
unresolved UDIM texture references. The patched export corrected
both in this case, while preserving all nine collision entries.

These screenshots precede the final formatting-only commit.
The earlier UR10e and JetBot comparisons remain separate validation.
iw-hub-isaac-6 1-comparison-strip

@copy-pr-bot

copy-pr-bot Bot commented Sep 12, 2026

Copy link
Copy Markdown

This pull request requires additional validation before any workflows can run on NVIDIA's runners.

Pull request vetters can view their responsibilities here.

Contributors can view more details about this message here.

Preserve collision-only geometry outside visual output when collision visualization is disabled. Resolve supported UDIM tiles into delivered OBJ/MTL texture materials and reject unsupported cross-tile faces. Include the original issue-709 regressions with the upstream exporter tests preserved.

Addresses isaac-sim#709. Reconstruct the accepted repaired source tree on the pinned develop base; retain prior history and validation evidence in local recovery backups.

Signed-off-by: Henri <11547269+MrHenriA@users.noreply.github.com>
Apply the pinned NVIDIA repo_format tooling to mesh_exporter.py and test_exporter_urdf.py. The five-file formatter verification and syntax compilation pass; before/after Python AST hashes are unchanged. Preserve the earlier repair commit and its historical runtime evidence without rewriting history.

Signed-off-by: Henri <11547269+MrHenriA@users.noreply.github.com>
@MrHenriA
MrHenriA force-pushed the issue-709-public-candidate branch from 5abe2fb to f9a2b05 Compare September 13, 2026 04:38
@MrHenriA
MrHenriA changed the base branch from main to develop September 13, 2026 04:42
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant