Gestionnaire d’actifs BAM

Le remaniement des fichiers blend liés est une pratique courante dans un environnement de production. Bien que certaines opérations de base puissent être accomplies dans Blender, parfois c’est plus pratique de les effectuer en ligne de commande ou via un script. C’est pendant la production de Cosmos Laundromat (Gooseberry Open Movie Project) que le BAM Asset Manager (BAM) fut développé. Le cadre original de BAM comprenait des outils de gestion d’actifs de type client-serveur allant bien au delà de Blender, mais il fut plus tard recentré sur des utilitaires essentiels pour effectuer deux opérations :

  1. Empaquetage de fichier blend
  2. Réorganisation automatique des dépendances

La section suivante du manuel traite de l’utilisation de BAM.

../_images/pipeline_bam_chart.png

Gestionnaire d’actifs.

Installation de BAM

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

Windows, Linux et macOS offrent différentes manières d’installer Python 3 et pip. Consultez les docs en ligne pour en savoir plus sur une plateforme spécifique.

Une fois Python 3 et pip3 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 Entrée, toutes les sous-commandes disponibles seront affichées.

bam pack

Cette commande est utilisée pour empaqueter un fichier .blend et toutes ses dépendances dans un fichier .zip pour la 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 est possible que vous souhaitiez désigner un dossier de sortie explicite. L’exemple montre la manière d’empaqueter un fichier blend avec une compression maximale pour les téléchargements en ligne.

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

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

-o, --output <FILE>
Fichier de sortie ou un dossier quand plusieurs sorties sont passées.
-m, --mode <MODE>
Fichier de sortie ou un dossier quand plusieurs entrées sont passées. les choix possibles sont : ZIP, FILE.
-e, --exclude <PATTERN(S)>

Exclure facultativement des fichiers du paquetage.

--exclude="*.png"
En utilisant des caractères génériques de style shell (insensibles à la casse).
--exclude="*.txt;*.avi;*.wav"
Plusieurs modèles peuvent être passés en utilisant le séparateur ;.
-a, --all-deps
Suivre toutes les dépendances (dépendances indirectes inutilisées aussi).
-q, --quiet
Supprimer la sortie du status.
-c, --compress <LEVEL>
Niveau de compression pour l’archive finale. Les choix possibles : default, fast, best, store.
--repo <DIR PATH>
Spécifier un chemin « racine » depuis lequel empaqueter le fichier sélectionné. Ceci permet la création d’une copie incomplète de l’arbre de production, sans aucune réorganisation.
--warn-external
Faire un rapport des erreurs sur les bibliothèques externes (chemins manquants).

Exemples

Considérer la structure de dossiers 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 bam pack /scenes/01-opening/01_01_A.lighting.blend lancé, 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 manière dont tous les chemins ont été réorganisés en les rendant relatifs à l’emplacement de 01_01_A.lighting.blend dans 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 supprimons simplement tout fichier qui n’est pas référencé comme une dépendance directe ou indirecte de 01_01_A.lighting.blend. Ceci est effectivement une copie incomplète de l’arbre de production d’origine.

bam remap

Réorganiser les chemins des fichiers blend

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

Cette commande est un processus en trois étapes :

  1. D’abord lancez bam remap start . qui enregistre l’état courant de votre projet (récursivement).
  2. Puis réarrangez les fichiers dans le système de fichiers (renommer, déplacer).
  3. Enfin lancez bam remap finish pour appliquer les modifications, en mettant à jour les chemins internes des fichiers .blend.
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 appelé bam_remap.data dans le dossier courant. Vous pouvez relocaliser le projet entier dans 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 ne pas modifier les fichiers une fois la réorganisation commencée.

Sous-commandes

remap start

Démarrer la réorganisation des fichiers blend

usage: bam remap start [-h] [-j] [paths [paths ...]]
-j, --json
Générer la sortie JSON.

remap finish

Terminer la réorganisation des fichiers blend

usage: bam remap finish [-h] [-r] [-d] [-j] [paths [paths ...]]
-r, --force-relative
Rendre tous les chemins réorganisés relatifs (même s’ils étaient absolus à l’origine).
-d, --dry-run
Afficher simplement la sortie comme si les chemins sont en cours d’exécution.
-j, --json
Générer la sortie JSON.

remap reset

Annuler la réorganisation des chemins

usage: bam remap reset [-h] [-j]
-j, --json
Générer la sortie JSON.