Table des matières
MistubaVideo
MistubaVideo effectue le rendu de sorties de simulation avec Mitsuba 3, sous ETSim. La commande par lots traite des séquences OBJ ; le module mitsuba-video lit les poses et champs de surface enregistrés grâce aux adaptateurs de manifeste et de TextureFriction. Les faits ci-dessous viennent de la documentation du dépôt, lue pour la présentation du projet.
1. Aperçu
Pourquoi il existe. Une simulation calcule le mouvement et les changements de surface ; rendre un enregistrement montre où les corps ont bougé et comment l’apparence des matériaux a évolué, et permet de changer caméra ou éclairage sans relancer la simulation.
Cas d’usage. Transformer poses et champs d’usure enregistrés en images, cartes de chaleur, panneaux d’atlas et vidéos pour rapports et présentations.
2. Cas d’utilisation
Outils Mitsuba 3 d'ETSim qui rendent par lancer de rayons des suites OBJ et des enregistrements d'usure en images, MP4 et GIF.
- Rendre une suite d'OBJ
- Chercheur (simulation)Mitsuba 3 et FFmpeg
python main.py multi --folder exports --regex "\d+\.obj" crée une scène XML par OBJ trouvé, la rend sur CPU ou CUDA avec le spp et la résolution voulus, puis encode MP4 et GIF avec FFmpeg.
- Rendre plusieurs vues
- Chercheur (simulation)
--view front --view top ou --all-views rend chaque image depuis les caméras avant, arrière, gauche, droite, dessus, dessous ou perspective de src/mitsuba/camera.py, avec le nom de la vue dans le fichier.
- Débruiter et extraire les AOV
- Chercheur (simulation)Mitsuba 3 et FFmpeg
python main.py denoise <chemin> applique le débruiteur OptiX de src/mitsuba/denoising.py aux images rendues, et python main.py aov <fichier.exr> extrait les couches AOV d'un EXR dans des fichiers séparés.
- Produire une vidéo de champ
- Chercheur (simulation)Mitsuba 3 et FFmpeg
mitsuba-video render <manifest.json> -q paper rend les corps rigides à leurs poses enregistrées avec un mélange de matériaux piloté par le champ et une carte de chaleur, ajoute l'atlas UV et un graphique d'aire couverte, puis encode un MP4.
- Rendre un essai d'usure
- Chercheur (simulation)Essais TextureFriction
python main.py wear render simulation_<ts> ou tf-render lit un dossier --record ou un fichier .h5 de TextureFriction via la source texturefriction.
- Écrire et valider un manifeste
- Chercheur (simulation)
Tout projet peut produire un manifest.json versionné avec ManifestWriter ; mitsuba-video validate le vérifie avec manifest-v1.schema.json, et mitsuba-video fixture crée un petit exemple synthétique.
2.1. Scénario : Rendre la vidéo de champ de démonstration
- Installer FFmpeg et Mitsuba 3, puis lancer pip install -e "packages/mitsuba_video[texturefriction]" pour obtenir mitsuba-video et tf-render.
- Créer une entrée synthétique avec mitsuba-video fixture demo.
- Vérifier rapidement le cadrage avec mitsuba-video preview demo.
- Lancer mitsuba-video render demo -q preview pour rendre les images et encoder le MP4.
- Pour des données réelles, lancer python main.py wear render sur un dossier simulation_<ts> de TextureFriction avec -q paper.
Fichiers consultésREADME.mdmain.pyconfig.jsonrequirements.txtpackages/mitsuba_video/README.mdpackages/mitsuba_video/src/mitsuba_video/cli.pysrc/mitsuba/camera.py.github/workflows/mitsuba-video.yml
3. Démarrage
python main.py multi --folder exports # rendu par lots d'une séquence OBJ
mitsuba-video inspect path/to/manifest.json # vérifier les données d'entrée
mitsuba-video preview path/to/manifest.json # vérifier caméra et cadrage
mitsuba-video render path/to/manifest.json -q preview
Préréglages de qualité : preview, draft, paper. encode réassemble des images existantes en vidéo ; FFmpeg fait l’encodage.
4. Fonctions et composants
| Étape | Données |
|---|---|
| Entrée | Maillages, matériaux, poses et champs de surface enregistrés ; un manifeste versionné (corps, maillages, matériaux, poses, images de champ) ou un enregistrement TextureFriction via un adaptateur ; ManifestWriter permet à un autre simulateur d’exporter ce format |
| Traitement | Application des poses, mélange des matériaux de base et affectés selon le champ, lancer de chemins Mitsuba 3 ; carte de chaleur, panneau d’atlas UV et courbe de surface couverte en option |
| Sortie | Images beauty et composites, CSV de surface du champ, render_config.json avec paramètres et temps, MP4 ; images EXR linéaires en option |
5. Architecture
flowchart TD
subgraph Inputs[Sortie de simulation]
R[Enregistrement TextureFriction]
M[Manifeste : maillages, poses et champs]
end
subgraph Helper[Module mitsuba-video]
A[Adaptateur de source]
B[Appliquer les poses et mélanger les matériaux]
C[Lancer de chemins Mitsuba 3]
D[Panneau d'atlas et courbe de surface]
end
R --> A
M --> A
A --> B --> C --> D
D --> E[Images et MP4]
6. Limites et points à vérifier
- La courbe de surface mesure la surface couverte du champ enregistré, pas la surface visible de l’objet rendu.
- Conservez les réglages d’affichage avec le rendu : changer l’échelle de la carte de chaleur fait paraître différent le même champ.
- Le module documente des tests pytest pour les transformations, le mélange des matériaux, les lecteurs OBJ/MTL et le schéma de manifeste ; aucun pourcentage de couverture mesuré n’est cité ici.
7. Liens
- Sources et utilisation
- Module de rendu
- TrueMapData mesure les surfaces que ces enregistrements montrent
8. Pipeline CI/CD
1 workflow GitHub Actions, 2 tâches. Chaque boîte est une tâche ; les boîtes à double bord publient ou déploient, et les flèches suivent les dépendances needs.
Mermaid Déroulement du pipeline
flowchart LR
subgraph wf0["mitsuba-video"]
direction LR
wf0_linux[["linux<br/>ubuntu-latest"]]
wf0_windows["windows<br/>windows-latest"]
end
t0(["push · demande de fusion · lancement manuel"])
t0 --> wf0_linux
t0 --> wf0_windows
| Workflow | Déclencheurs | Tâches | Publie vers |
|---|---|---|---|
mitsuba-video.github/workflows/mitsuba-video.yml | push, demande de fusion, lancement manuel |
| — |
Généré à partir du code au commit 87b180b.
9. Schéma de déploiement
Mermaid Schéma de déploiement
flowchart LR
repo[("Dépôt GitHub")]
ci[["GitHub Actions<br/>1 workflow"]]
image["Image Docker<br/>FROM nvidia/cuda:12.0.1-cudnn8-devel-ubuntu22.04"]
subgraph compose["Docker Compose"]
svc_mitsuba_renderer["mitsuba-renderer"]
end
repo -->|"push ou demande de fusion"| ci
ci -->|"docker build"| image
image -->|"docker compose up"| compose
10. Dépendances externes
16 paquets déclarés (14 à l’exécution, 2 pour le développement) dans pyproject.toml, requirements.txt, packages/mitsuba_video/pyproject.toml.
Tableau des paquets 16
| Paquet | Version | Usage | Rôle | Registre |
|---|---|---|---|---|
typer | — | exécution | Ligne de commande | pypi.org |
rich | — | exécution | Ligne de commande | pypi.org |
python-dotenv | — | exécution | Configuration | pypi.org |
jsonschema | — | exécution | Validation des données | pypi.org |
mitsuba | — | exécution | Graphisme, image et 3D | pypi.org |
rpds | — | exécution | — | pypi.org |
xmltodict | — | exécution | Makes working with XML feel like you are working with JSON | pypi.org |
xmlschema | — | exécution | An XML Schema validator and decoder | pypi.org |
numpy | — | exécution | Analyse de données | pypi.org |
tqdm | — | exécution | Ligne de commande | pypi.org |
gradio | — | exécution | Interface utilisateur | pypi.org |
imageio | >=2.30.0 | exécution | Graphisme, image et 3D | pypi.org |
pillow | >=10.0.0 | exécution | Graphisme, image et 3D | pypi.org |
coverage | — | exécution | Tests | pypi.org |
h5py | >=3 | développement | Read and write HDF5 files from Python | pypi.org |
pytest | >=7 | développement | Tests | pypi.org |
11. Glossaire
Dépôt
Les fichiers source, la configuration et l’historique versionné d’un projet.
README
Le document d’entrée du dépôt, qui présente généralement son rôle et son installation.
Dépendance
Une bibliothèque, un outil ou un service nécessaire à la compilation ou à l’exécution d’un composant.
HTTP
Un protocole de requête et réponse utilisé par les navigateurs et services web. Une requête comprend une méthode, un chemin, des en-têtes et parfois un corps.
Port publié
Un port de l’hôte associé au port d’un service dans un conteneur. Sa publication peut rendre le service accessible hors du réseau des conteneurs.
Interface en ligne de commande
Une interface textuelle où les commandes et arguments choisissent les opérations. Les codes de retour permettent aux scripts de détecter un succès ou un échec.
Intégration continue
Des vérifications automatiques lors des changements de source, comme la compilation, les tests et l’analyse statique. Elles ne couvrent que ce qu’elles vérifient.
Mermaid
Un langage de diagrammes textuel. Les nœuds et liens décrivent un modèle ; le diagramme n’exécute pas le projet.
GPU
Un processeur conçu pour les calculs parallèles, dont le rendu graphique et de nombreuses opérations numériques.
Maillage
Une surface représentée par des sommets et des éléments reliés, souvent des triangles. Sa géométrie est distincte de son matériau ou de sa texture.
Décodeur vidéo
Un composant qui reconstruit des images à partir d’un flux vidéo compressé. Le décodage et l’affichage sont des étapes distinctes.
12. Références
- ETSim. (2026, 5 novembre). [Web page] github.com.
- ETSim. (2026, 5 novembre). MistubaVideo. [Software repository] github.com.
- ETSim. (2026, 5 novembre). Module de rendu. [Source file or documentation] github.com.
Les sources sans date de publication indiquent la date de leur dernière vérification, le 5 novembre 2026. Les liens des fichiers conservent la révision inspectée lorsqu’elle est disponible.