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:
- First run
bam remap start .
which stores the current state of your project (recursively). - Then re-arrange the files on the filesystem (rename, relocate).
- 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.