Pipeline

Cette section du manuel traite de l’intégration de Blender dans un pipeline de production. C’est un vaste sujet qui couvre de nombreux domaines du logiciel, mais ici nous nous focaliserons sur la gestion de fichiers/actifs et l’entrée/sortie des données.

Note

Les outils et flux de travail documentés ici requièrent des connaissances dans le travail avec l’interface de la ligne de commande et sont principalement destinés aux TD et utilisateurs techniques.

BAM Asset Manager

Refactoring linked .blend files is a common practice in a production environment. While some basic operations can be accomplished within Blender, sometimes it is more practical to perform them on the command line or via a script. During the production of Cosmos Laundromat (Gooseberry Open Movie Project) the BAM Asset Manager (BAM) was developed. The original scope of BAM included client-server asset management tools going beyond Blender, but it was later refocused on core utilities to perform two operations:

  • Blend-file packing
  • Automatic dependencies remapping

The following section of the manual focuses on how to use BAM.

Installing BAM

BAM est un paquet Python autonome, qui peut être lancésur tout système, sans une configuration particulière. La seule exigence est Python 3 (et pip, le gestionnaire de paquet de Python, pour installer facilement BAM).

Windows, Linux et macOS prévoient des manières différentes d’installer Python 3 et pip. Consultez les docs en ligne pour en connaître plus sur une plateforme spécifique.

Une fois Python 3 et pip disponibles, BAM peut être installé via la ligne de commande en tapant :

pip3 install blender-bam

Après une installation réussie, la commande ‘bam’ sera disponible. En la tapant et en pressant la touche Entrée, toutes les sous-commandes disponibles seront affichées.

bam pack

This command is used for packing a .blend file and all its dependencies into a .zip file for redistribution.

usage: bam pack [-h] [-o FILE] [-m MODE] [-e PATTERNS] [-a] [-q] [-c LEVEL]
             paths [paths ...]

Vous pouvez simplement empaqueter un fichier blend comme ceci pour créer un fichier zip portant le même nom.

bam pack /path/to/scene.blend

Il se peut que vous vouliez donner un nom de dossier de sortie explicite. L’exemple montre la manière d’empaqueter un fichier blend avec une compression maximale pour des téléchargements en ligne.

bam pack /path/to/scene.blend --output my_scene.zip --compress=best

La commande prévoit plusieurs options pour s’adapter à des flux de travail différents (distribution finale, extraction partielle, rendu).

-o, --output <FILE>
Output file or a directory when multiple inputs are passed.
-m, --mode <MODE>
Output file or a directory when multiple inputs are passed. Possible choices: ZIP, FILE.
-e, --exclude <PATTERN(S)>

exclut facultativement des fichiers du paquet.

--exclude="*.png"

Utilise les jokers de type Unix (insensible à la casse).

--exclude="*.txt;*.avi;*.wav"

Des patterns multiples peuvent être passés en utilisant le séparateur ;.

-a, --all-deps
Follow all dependencies (unused indirect dependencies too).
-q, --quiet
Suppress status output.
-c, --compress <LEVEL>
Compression level for resulting archive. Possible choices: default, fast, best, store.
--repo <DIR PATH>

Spécifier un chemin “racine” à partir duquel empaqueter le fichier sélectionné. Ceci permet la création d’une copie clairsemée de l’arbre de production, sans aucune réorganisation.

--warn-external
Report external libraries errors (missing paths).

Exemples

Examinez la structure du dossier suivant, et en particulier le fichier 01_01_A.lighting.blend avec ses bibliothèques liées.

~/agent327/
└─ lib/
   ├─ chars/
   |  ├─ agent.blend  ------------->|
   |  ├─ boris.blend  ------------->|
   |  └─ barber.blend               |
   └─ scenes/                       |
      ├─ 01-opening                 |
      ├─ 01_01_A.lighting.blend  <--|  < BAM pack this file
      └─ 01_01_A.anim.blend  ------>|

Une fois que nous lançons bam pack /scenes/01-opening/01_01_A.lighting.blend, nous obtenons un 01_01_A.lighting.zip dans lequel nous trouvons la structure suivante.

~/01_01_A.lighting
   ├─ 01_01_A.lighting.blend
   └─ __/
      ├─ 01_01_A.anim.blend
      └─ __/
         └─ lib/
            └─ chars/
               ├─ agent.blend
               └─ boris.blend

Notez la réorganisation de tous les chemins par rapport à l’emplacement de 01_01_A.lighting.blend à la racine de la sortie. Si nous lançons bam pack /scenes/01-opening/01_01_A.lighting.blend --repo ~/agent327, la sortie sera différente.

~/01_01_A.lighting
   ├─ lib/
   |  └─ chars/
   |     ├─ agent.blend
   |     └─ boris.blend
   └─ scenes
      └─ 01-opening/
         ├─ 01_01_A.lighting.blend  < The BAM packed file
         └─ 01_01_A.anim.blend

Dans ce cas, aucun chemin n’est réorganisé, et nous enlevons simplement tout fichier qui n’est pas référencé comme une dépendance directe ou indirecte de 01_01_A.lighting.blend. C’est effectivement une copie clairsemée de l’arbre de production d’origine.

bam remap

Remap blend file paths:

usage: bam remap [-h] {start,finish,reset} ...

This command is a three step process:

  1. First run bam remap start . which stores the current state of your project (recursively).
  2. Then re-arrange the files on the filesystem (rename, relocate).
  3. Finally run bam remap finish to apply the changes, updating the .blend files internal paths.
cd /my/project

bam remap start .
mv photos textures
mv barbershop_v14_library.blend barberhop_libraray.blend
bam remap finish

Note

La réorganisation crée un fichier nommé bam_remap.data dans le dossier courant, Vous pouvez relocaliser le projet entier à un nouvel emplacement mais en exécutant finish, ce fichier doit être accessible depuis le dossier courant.

Note

Cette commande dépend du contenu unique des fichiers, prenez soin de modifier les fichiers une fois la réorganisation commencée.

Sous-commandes

remap start

Start remapping the blend files:

usage: bam remap start [-h] [-j] [paths [paths ...]]
-j, --json
Generate JSON output.
remap finish

Finish remapping the blend files:

usage: bam remap finish [-h] [-r] [-d] [-j] [paths [paths ...]]
-r, --force-relative
Make all remapped paths relative (even if they were originally absolute).
-d, --dry-run
Just print output as if the paths are being run.
-j, --json
Generate JSON output.
remap reset

Cancel path remapping:

usage: bam remap reset [-h] [-j]
-j, --json
Generate JSON output.