MJCF2USD

June 27, 2025 ยท View on GitHub

A powerful Isaac Sim extension for converting MuJoCo XML Configuration Format (MJCF) files to Universal Scene Description (USD) format.

Welcome to the Lightwheel open-source community!

Join us, contribute, and help shape the future of AI and robotics. For questions or collaboration, contact Frank Chen at ming.chen@lightwheel.ai.

Overview

MJCF2USD is a user-friendly tool that enables seamless conversion of MuJoCo simulation files to USD format, making it easy to integrate MuJoCo models into Omniverse workflows and other USD-compatible applications.

Features

  • Batch Conversion: Convert multiple MJCF files at once
  • Intuitive UI: Simple and clean interface with step-by-step guidance
  • Flexible Output: Choose custom output locations or use default paths
  • Progress Tracking: Real-time conversion progress with time estimates
  • Error Handling: Detailed success/failure reporting
  • XML Modification: Optional temporary XML file saving for debugging

Installation

Prerequisites

  • NVIDIA Isaac Sim

Installation Steps

  1. Clone this repository to your Omniverse extensions directory:

    git clone <repository-url> /path/to/isaacsim/extensions
    
  2. Enable the extension through the Extensions Manager in Isaac Sim.

  3. Set the Import Path in Isaac Sim:

    • Open Isaac Sim and go to Window > Extensions.
    • Click the Settings (gear) icon.
    • In the Extension Search Paths section, click the + button.
    • Copy and paste the parent path of the mjcf2usd folder (the path where you cloned this repository).

๐Ÿ“„ For detailed step-by-step instructions with screenshots, please refer to Installation.pdf included in this repository.

Usage

Getting Started

  1. Launch the Extension:

    • Open IsaacSim
    • Go to Window > Extensions.
    • Enable "MJCF2USD" extension
    • The MJCF2USD window will appear
  2. Select MJCF Files:

    • Click "Select File or Folder" in step 1
    • Choose either a single MJCF file or a folder containing multiple MJCF files
    • The extension will automatically scan and list all found MJCF files
  3. Choose Output Location (Optional):

    • Click "Select Folder" in step 2
    • Choose where you want the USD files to be saved
    • If left empty, USD files will be saved in the same directory as the MJCF files
  4. Configure Options:

    • Check "Save Temp MJCF XML" if you want to save modified XML files for debugging
  5. Start Conversion:

    • Click "MJCFs to USDs" button
    • Monitor the progress in the status area
    • View conversion results and timing information

Output

  • Success: USD files will be created in the specified output location
  • File Naming: Output files follow the pattern {parent_folder}_{filename}.usd
  • Reports: Detailed conversion statistics including:
    • Total conversion time
    • Number of successful conversions
    • Number of failed conversions
    • List of successful and failed files

Project Structure

MJCF2USD/
โ”œโ”€โ”€ config/
โ”‚   โ””โ”€โ”€ extension.toml          # Extension configuration
โ”œโ”€โ”€ data/
โ”‚   โ”œโ”€โ”€ logo.png               # Extension icon
โ”‚   โ””โ”€โ”€ preview.jpeg           # Extension preview image
โ”œโ”€โ”€ lightwheel/
โ”‚   โ””โ”€โ”€ MJCF2USD/
โ”‚       โ””โ”€โ”€ connection/
โ”‚           โ”œโ”€โ”€ extension.py   # Main extension entry point
โ”‚           โ”œโ”€โ”€ window.py      # UI window implementation
โ”‚           โ”œโ”€โ”€ mjcf2usd_utils.py  # Core conversion utilities
โ”‚           โ”œโ”€โ”€ option_widget.py   # UI components
โ”‚           โ”œโ”€โ”€ ui_utils.py    # UI utility functions
โ”‚           โ””โ”€โ”€ style.py       # UI styling
โ”œโ”€โ”€ LICENSE.txt                # License file
โ””โ”€โ”€ README.md                  # This file

Development

Dependencies

  • omni.kit.uiapp: Omniverse UI framework
  • omni.ui: Omniverse UI components
  • omni.usd: USD manipulation utilities
  • omni.kit.commands: Omniverse command system

Building

The extension is built using Omniverse Kit's extension system. No additional build steps are required beyond the standard Python module structure.

Version

Current version: 1.0.0

Support

For issues and questions, please contact the development team or create an issue in the repository.