Skip to content

Features

Core Architecture

  • Full MuJoCo C API accessible (mjModel*, mjData*) -- users can call any MuJoCo function directly
  • Async physics thread with configurable timestep
  • Component-based design matching MJCF element hierarchy
  • Singleton MjManager orchestrates compilation, stepping, and state

MJCF Import

Drag-and-drop XML import into Content Browser. Auto-generates Unreal Blueprints with full component hierarchy, mesh conversion, material import, and default class inheritance.

See MuJoCo Import for details.

Quick Convert

  • Convert any Unreal Static Mesh to a MuJoCo physics body with one click
  • CoACD convex decomposition with adjustable threshold (0.01-1.0)
  • Visual/collision mesh separation (group 2 visual, group 3 collision)
  • Static, dynamic, or mocap-driven modes
  • Friction, solver parameters configurable per component

Heightfield Terrain

  • Convert Unreal Landscapes to MuJoCo heightfield collision
  • Configurable sample resolution (2-512)
  • Complex trace mode for accurate mesh sampling
  • Actor whitelist filtering
  • Binary cache for fast recompilation
  • Editor grid preview visualization

Physics Simulation

  • Solvers: PGS, CG, Newton
  • Integrators: Euler, RK4, Implicit, ImplicitFast
  • Sim speed control (5-100%)
  • Pause, resume, reset, single-step
  • Snapshot capture and restore (full state)
  • Keyframe reset and hold
  • Sleep support with per-body policies
  • Multi-CCD collision detection
  • Gravity, wind, density, viscosity

Actuators (8 types)

Motor, Position, Velocity, IntVelocity, Damper, Cylinder, Muscle, Adhesion

  • All transmission types: joint, tendon, site, body, slider-crank
  • Runtime control via SetControl() (BlueprintCallable)
  • Gain/bias parameter arrays
  • Control/force/activation range limits

Sensors (40+ types)

Site-attached: Touch, Accelerometer, Velocimeter, Gyro, Force, Torque, Magnetometer, RangeFinder, CamProjection

Joint/tendon/actuator: Pos, Vel, Frc for each

Ball joint: Quat, AngVel

Frame: Pos, Quat, XYZ axes, LinVel, AngVel, LinAcc, AngAcc

Subtree: COM, LinVel, AngMom

Geometric: InsideSite, GeomDist, GeomNormal, GeomFromTo

Global: Contact, EPotential, EKinetic, Clock

  • All readable via GetSensorReading() / GetSensorScalar() on the articulation (BlueprintCallable)

Controllers

PD, passthrough, keyframe, and twist controllers for articulations. Keyframe controller includes built-in presets for Franka, UR5e, Spot, ANYmal, and Go2.

See Controller Framework for details.

Debug Visualization

Hotkey-driven toggles during PIE for contacts, collision wireframes, joint axes, and visual meshes. Per-articulation and global toggles available via MjSimulate widget.

See Blueprint Reference for all hotkeys.

Camera System

  • MjCamera: scene capture attached to MuJoCo sites, streams via ZMQ, respects post-process volumes
  • MjOrbitCamera: auto-orbiting cinematic camera with target detection, height oscillation, configurable focal length
  • MjKeyframeCamera: waypoint-based camera path with smooth interpolation, O key play/pause

See Blueprint Reference for camera API details.

Networking (ZMQ)

Binary pub/sub protocol broadcasting joint state, sensors, and camera images. Receives actuator targets and PD gains. Prefix-based filtering for multi-articulation scenes.

See ZMQ Networking for details.

Python Integration (urlab_bridge)

  • Policy GUI: DearPyGui dashboard for policy selection, articulation targeting, force twist override, motion/gait preset selection
  • UnrealEnv: RoboJuDo-compatible environment over ZMQ with auto-detection, forward kinematics, born-place alignment
  • Pre-integrated policies: Unitree G1 locomotion (12/29 DOF), BeyondMimic (dance/violin/waltz/jump), Walk-These-Ways Go2, AMO, H2H, Smooth, ASAP
  • ROS 2 bridge: republishes ZMQ streams to standard ROS 2 topics

Replay System

Record and play back full simulation state. Supports CSV trajectory import, snapshot capture/restore, and multi-session management.

See Blueprint Reference for recording/replay API.

Blueprint API

40+ BlueprintCallable functions for simulation control, state queries, actuator commands, snapshots, and replay.

See Scripting with Blueprints for the full API reference.

MjSimulate Widget

  • In-editor dashboard replicating MuJoCo's simulate UI
  • Physics options: timestep, solver, integrator, iterations, sim speed
  • Per-actuator control sliders
  • Joint state readouts
  • Sensor value display
  • Camera feed thumbnails
  • Articulation selector dropdown
  • Record/replay/snapshot controls
  • Possess button for spring-arm camera follow

Forces

  • MjImpulseLauncher: velocity-based object launching (matching MuJoCo's object_launcher_plugin approach)
  • Direct mode (arrow direction + speed) or targeted mode (ballistic arc toward target actor)
  • Reset-and-fire for iterative testing during PIE
  • F key fires all launchers in scene

Simulation Hotkeys

See Hotkeys for the complete list of keyboard shortcuts.

Mesh Preparation Tool

  • Scripts/clean_meshes.py: XML-aware mesh converter
  • Parses MJCF, detects GLB stem conflicts, renames automatically
  • Converts OBJ/STL to GLB with UV preservation
  • Strips embedded textures to prevent Interchange import conflicts
  • Outputs updated _ue.xml ready for drag-and-drop import