Fix MJWarp USD friction loss import - #7298
Conversation
Route Newton USD imports through solver-owned schema resolvers and register MuJoCo attributes for both clone and standalone paths. Addresses isaac-sim#6829. Signed-off-by: NeoZng <neozng@foxmail.com>
There was a problem hiding this comment.
Isaac Lab Review Bot
The change centralizes USD schema-resolver selection in the active Newton manager and extends MJWarp imports with SchemaResolverMjc, preserving MuJoCo-authored joint friction and damping across clone-replication and standalone stage-import paths.
- Design and architecture: The protected resolver hook follows the existing solver-manager extension pattern and keeps MJWarp-specific schema handling within
NewtonMJWarpManager. Both import paths now consume the same manager-owned resolver ordering. Resolver precedence still depends on Newton's ordered resolver semantics, but the explicit Newton/PhysX/MuJoCo ordering is consistent with the intended fallback behavior. - API: No public API or dependency changes are introduced. The new protected classmethods use existing manager hooks, and MuJoCo custom-attribute registration is integrated through the established builder-registration mechanism. The package changelog fragment documents the user-visible fix.
- Implementation: The resolver list is passed through the clone path to both the main builder and source builders, and through the standalone stage-import path. Non-MJWarp managers retain the prior Newton and PhysX resolver defaults. The focused regression test exercises both production import paths and verifies
mjc:frictionlossandmjc:dampingin the finalized model.
No blocking issues. No inline issue met the actionable-evidence threshold; the assessment above records the review feedback.
Automated review; human maintainers own approval decisions.
Greptile SummaryThe PR preserves MuJoCo-authored joint friction loss during MJWarp USD imports by moving resolver selection behind the active Newton manager.
Confidence Score: 5/5The PR appears safe to merge, with both affected USD import paths covered by focused regression tests. The resolver hook is inherited by all reachable Newton managers, production clone dispatch occurs after manager initialization, and the MJWarp override preserves base behavior while adding the required MuJoCo import support. Important Files Changed
Flowchart%%{init: {'theme': 'neutral'}}%%
flowchart LR
USD[USD stage with mjc attributes] --> Path{Import path}
Path -->|Clone| Clone[Replication builder]
Path -->|Standalone| Standalone[Stage builder]
Clone --> Manager[Active Newton manager]
Standalone --> Manager
Manager --> Resolvers[Newton → PhysX → MuJoCo resolvers]
Manager --> Attributes[SolverMuJoCo custom attributes]
Resolvers --> Builder[Newton ModelBuilder]
Attributes --> Builder
Builder --> Model[Finalized MJWarp model]
Reviews (1): Last reviewed commit: "Fix MJWarp USD friction loss import" | Re-trigger Greptile |
Description
Preserve MuJoCo-authored joint friction loss when Isaac Lab imports USD stages
for the Newton MJWarp backend.
Before this change, the vectorized clone path and the standalone stage-import
path both passed only
SchemaResolverNewtonandSchemaResolverPhysxtoNewton. As a result, a joint authored with
mjc:frictionloss=0.11finalizedwith
Model.joint_friction=0.0, even though Newton supports that attributethrough
SchemaResolverMjc.This change:
SolverMuJoCocustom attributes fromNewtonMJWarpManager;SchemaResolverMjcafter the Newton and PhysX resolvers, soMuJoCo values remain fallbacks rather than overriding higher-priority schema
values; and
stage import.
The production-path regression covers both imports. In each case,
mjc:frictionloss=0.11now reachesModel.joint_friction, whilemjc:damping=0.23continues to reachModel.joint_dampingthrough theexisting MuJoCo custom-attribute path.
No new dependency or public API is introduced.
Addresses #6829.
Type of change
Screenshots
Not applicable; this fixes a non-visual USD import path.
Verification
isaaclab-newton==5.4.0,newton==1.5.0,warp-lang==1.16.0, andmujoco-warp==3.11.0.joint_friction=0.0instead of0.11;joint_friction=0.0instead of0.11.uv run python tools/changelog/cli.py check develop --include-worktree.uv run isaaclab -f.Checklist
pre-commitchecks withuv run isaaclab -fsource/<pkg>/changelog.d/for every touched package (do not editCHANGELOG.rstor bumpextension.toml— CI handles that)CONTRIBUTORS.mdor my name already exists there