Skip to main content

MuJoCo + Google Filament — high-fidelity, faster-than-OpenGL PBR rendering for MuJoCo

Project description

MuJoFil — MuJoCo + Google Filament

High-fidelity, physically-based rendering for MuJoCo, powered by Google Filament instead of the legacy fixed-function OpenGL path — sharper materials, real image-based lighting, and faster frames on modern GPUs.

pip install mujofil

To install the GPU/warp edition together with the base package:

pip install "mujofil[warp]"

This keeps mujofil as the main package while pulling in mujofil-warp as an optional extra dependency.

📖 Full documentation: docs/getting started, API guide, feature reference, cookbook & troubleshooting.

🚀 Running physics on the GPU? For MJWarp (thousands of GPU worlds) with zero-copy torch.cuda observations, use the GPU edition, mujofil-warp.

That's it. The Filament engine is statically compiled into the wheel and the material packages ship inside it, so there's no separate SDK, no compiler, and no PYTHONPATH setup. MuJoCo itself comes from its own pip wheel (a dependency).

⚠️ One thing pip can't install for you: a Vulkan GPU driver

MuJoFil renders on the GPU via Vulkan (with an OpenGL fallback). That driver is part of your operating system and cannot be bundled in a wheel. MuJoFil detects this for you — if it's missing you'll see a clear message on first import mujofil, and mujofil-doctor prints exactly what to install:

OS Install command
Ubuntu/Debian sudo apt install libvulkan1 mesa-vulkan-drivers vulkan-tools
Fedora sudo dnf install vulkan-loader mesa-vulkan-drivers vulkan-tools
Arch sudo pacman -S vulkan-icd-loader vulkan-tools <gpu-vulkan-driver>
macOS LunarG Vulkan SDK (MoltenVK): https://vulkan.lunarg.com/sdk/home#mac
Windows Latest GPU driver, or LunarG SDK: https://vulkan.lunarg.com

NVIDIA GPUs also need the proprietary driver. Headless/no-GPU machines can use the software rasterizer (mesa-vulkan-drivers, "lavapipe"). After installing, run mujofil-doctor to confirm.

Verify your setup

mujofil-doctor      # prints a GPU/Vulkan diagnostic; exit 0 = ready to render

Quick start

import mujoco
from mujofil import VFRenderer, RenderConfig

model = mujoco.MjModel.from_xml_path("scene.xml")
data = mujoco.MjData(model)

r = VFRenderer(model, RenderConfig(width=1920, height=1080))
mujoco.mj_step(model, data)
rgb = r.render(data)        # (H, W, 3) uint8

It's a drop-in renderer swap — same model / data / mj_step as plain MuJoCo, you just build a VFRenderer instead of mujoco.Renderer. A neutral studio HDR is loaded automatically, so even a bare .xml renders photoreal with no lighting setup.

Parallel vision-RL (one call for N environments)

For batched pixel observations, BatchRenderer renders N environments with a single GPU sync — faster than, and simpler than, looping MuJoCo's renderer:

from mujofil import BatchRenderer

datas = [mujoco.MjData(model) for _ in range(32)]
br = BatchRenderer(model, n_envs=32, width=128, height=128, camera_id=0)
obs = br.render(datas)      # (32, 128, 128, 3) uint8 — one call

More runnable scripts in examples/.

What ships in the wheel

  • mujofil/_vf_mujoco_native.*.so — the Filament renderer (Filament linked statically; only libc++/libunwind bundled alongside via auditwheel).
  • mujofil/materials/*.filamat — precompiled Filament material packages.
  • Pure-Python API (VFRenderer, RenderConfig, VFRenderWrapper).

MuJoCo is not bundled — the bindings read mjModel/mjData through pointers and call no MuJoCo functions, so the mujoco pip package satisfies it at runtime.

Optional: USD / GLB asset tooling

pip install "mujofil[usd]" adds converters that turn a USD or GLB environment into a visual GLB plus a MuJoCo collision MJCF — so you can drop a robot into a photoreal scene and have it actually collide with the geometry:

python -m mujofil.tools.usd_to_assets scene.usd --name kitchen

The heavy usd-core / trimesh deps are only pulled by the [usd] extra; the base import mujofil never loads them.

Requirements

  • A GPU with a working Vulkan (preferred) or OpenGL driver — same as any realtime renderer. For headless CI, a software Vulkan (e.g. lavapipe) works.
  • Linux x86-64 (manylinux wheels). macOS / Windows wheels are produced by the same cibuildwheel config.

Building from source

export FILAMENT_DIR=/path/to/filament      # a Filament release
pip install .                              # scikit-build-core + CMake

Multi-platform release wheels are built in CI with cibuildwheel.

License

Apache 2.0 License

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

mujofil-0.1.7.tar.gz (2.2 MB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

mujofil-0.1.7-cp313-cp313-manylinux_2_34_x86_64.whl (8.9 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.34+ x86-64

mujofil-0.1.7-cp312-cp312-manylinux_2_34_x86_64.whl (8.9 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.34+ x86-64

mujofil-0.1.7-cp311-cp311-manylinux_2_34_x86_64.whl (8.9 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.34+ x86-64

mujofil-0.1.7-cp310-cp310-manylinux_2_34_x86_64.whl (8.9 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.34+ x86-64

File details

Details for the file mujofil-0.1.7.tar.gz.

File metadata

  • Download URL: mujofil-0.1.7.tar.gz
  • Upload date:
  • Size: 2.2 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for mujofil-0.1.7.tar.gz
Algorithm Hash digest
SHA256 f2b5a50ebada01811dbd2bdc1d03abc2037d460e4625b6f79d6019add260f5c8
MD5 59a06b060a1ad4cd2c9afa72ccba5a41
BLAKE2b-256 81d965051b5faca08ed162039de2cebe1ce9e1d22750c1285e2a35af32fe5a3b

See more details on using hashes here.

Provenance

The following attestation bundles were made for mujofil-0.1.7.tar.gz:

Publisher: wheels.yml on tau-intelligence/MuJoCo-Filament

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file mujofil-0.1.7-cp313-cp313-manylinux_2_34_x86_64.whl.

File metadata

File hashes

Hashes for mujofil-0.1.7-cp313-cp313-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 4f1a9a5e003e1983649a42d7716a1ae06d9a4a8eda38867ab85249dcb57d4b34
MD5 1818e26738f4886332e4de7c30663aae
BLAKE2b-256 0249211e3020d8b0af97187926d8a316e4580883c1de0056cdc3ed8724490b40

See more details on using hashes here.

Provenance

The following attestation bundles were made for mujofil-0.1.7-cp313-cp313-manylinux_2_34_x86_64.whl:

Publisher: wheels.yml on tau-intelligence/MuJoCo-Filament

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file mujofil-0.1.7-cp312-cp312-manylinux_2_34_x86_64.whl.

File metadata

File hashes

Hashes for mujofil-0.1.7-cp312-cp312-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 1d244beba254fc12c2f2d3c00035fd2409888ad56635534379340c60f28c665e
MD5 21856947b2636c6be4a2e9cbfd473b24
BLAKE2b-256 973c4368cc7a3deeec296782a11d7232ab78b365cc1ccc45ad38d016bade457c

See more details on using hashes here.

Provenance

The following attestation bundles were made for mujofil-0.1.7-cp312-cp312-manylinux_2_34_x86_64.whl:

Publisher: wheels.yml on tau-intelligence/MuJoCo-Filament

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file mujofil-0.1.7-cp311-cp311-manylinux_2_34_x86_64.whl.

File metadata

File hashes

Hashes for mujofil-0.1.7-cp311-cp311-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 d999fcf558416b89afcb53b80606c4ab5d8d54f1bbf28105ca0c87ce9786590e
MD5 1f9b66ea93ff45ef4732a9ad7b887012
BLAKE2b-256 e122d998bde83b02ec6120e45128b03b079e0447b58825fa611b9cdf27c10b03

See more details on using hashes here.

Provenance

The following attestation bundles were made for mujofil-0.1.7-cp311-cp311-manylinux_2_34_x86_64.whl:

Publisher: wheels.yml on tau-intelligence/MuJoCo-Filament

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file mujofil-0.1.7-cp310-cp310-manylinux_2_34_x86_64.whl.

File metadata

File hashes

Hashes for mujofil-0.1.7-cp310-cp310-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 763b580de0f2c497af31fb4c737cb4dae1529943b45beb2b95fa3019ba5f510a
MD5 f674eef2f1db7f6e097a7ad85004525c
BLAKE2b-256 a953228d2d616e00fcfc0afd8b45cf99e3acaa886e4ec0ed3fb041d1d2e198b0

See more details on using hashes here.

Provenance

The following attestation bundles were made for mujofil-0.1.7-cp310-cp310-manylinux_2_34_x86_64.whl:

Publisher: wheels.yml on tau-intelligence/MuJoCo-Filament

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page