Library Overrides#

Library Overrides est un système conçu pour permettre l’édition de données liées, tout en les maintenant synchronisées avec les données de bibliothèque d’origine. La plupart des types de blocs de données liés peuvent être remplacés et les propriétés de ces remplacements peuvent ensuite être modifiées. Lorsque les données de la bibliothèque changent, les propriétés non-modifiées de celle remplacée seront mises à jour en conséquence.

Note

L’ancien système de proxy est obsolète dans Blender 3.0 et entièrement supprimé dans Blender 3.2. La conversion automatique des proxies en substituts de bibliothèque se produit lors du chargement d’un fichier blend, mais les résultats sur les personnages complexes ne sont pas garantis et peuvent nécessiter des corrections manuelles.

Les Library Overrides prennent en charge :

  • Plusieurs remplacements indépendants d’une même donnée liée (par exemple, un personnage complet).

  • Ajout de nouveaux modificateurs et contraintes, n’importe où dans la pile.

  • Chaînage récursif des remplacements (c’est-à-dire remplacements de lien et de remplacement à partir d’un autre fichier de bibliothèque, etc.).

Note

Il y a des problèmes connus qui doivent être résolus. Voir la tâche principale du projet, pour plus de détails.

Avertissement

Bien que dans la plupart des cas, les données de remplacement de la bibliothèque soient préservées en cas de perte de données liées à la référence (si, par exemple, le fichier de la bibliothèque devient indisponible ou est déplacé), il existe quelques exceptions.

La principale est probablement les objets d’armature posés (mais non animés), lorsque leur “obdata” Aramture elle-même n’est pas remplacée. Les Pose bones d’un objet armature sont entièrement liés aux bones de son Armature “obdata”, si ce dernier vient à manquer, les pose bones sont définitivement perdus.

Note

La mise en page appropriée des Collections est importante

Pour que les remplacements de bibliothèque fonctionnent bien, il est préférable que toutes les collections nécessaires au personnage soient des enfants de la racine (liée et instanciée), de sorte qu’il y ait une hiérarchie claire. Sinon, certaines données risquent de ne pas être correctement remplacées automatiquement et d’autres opérations risquent d’être moins fiables.

Remplacer les hiérarchies#

La hiérarchie est un concept très important à comprendre lorsque vous travaillez avec des remplacements de bibliothèque. Dans Blender, un asset réel (un personnage, un accessoire, un ensemble, etc.) n’est presque jamais constitué d’un seul bloc de données, mais plutôt d’un groupe de blocs de données avec des relations de dépendance les uns avec les autres. Par exemple : un personnage a généralement un objet armature, plusieurs objets géométriques, des objets rig-controllers, les données d’objet pour tous ces objets, matériaux, textures, etc.

Ces relations peuvent être représentées sous la forme d’un arbre, avec un bloc de données racine “reliant” toutes ses dépendances, de manière récursive. Avec les remplacements de bibliothèque, généralement, la racine de la hiérarchie est également le bloc de données qui est directement lié lors de l’importation de l’asset (généralement une collection).

Ce concept de hiérarchie peut également être considéré comme une sorte de super bloc de métadonnées. Il est essentiel lorsqu’il y a plusieurs remplacements des mêmes données liées, car il permet d’identifier clairement un bloc de données donné à un remplacement, ne laissant aucune ambiguïté aux processus qui affectent l’ensemble de la hiérarchie (par exemple, resynchroniser les remplacements avec leurs données liées). Il permet également de partager des relations entre des blocs de données de hiérarchies différentes, comme une relation parentale entre deux remplacements différents d’un même caractère.

Animation & remplacements#

En raison de la conception actuelle des données d’animation dans Blender, ce qui est modifiable dans les remplacements d’animations peut changer considérablement selon que les données d’animation ont déjà été définies dans le bloc de données de référence lié. Les données d’animation sont créées pour un bloc de données si elles sont animées par des images clés ou via des pilotes.

En général, un remplacement peut faire bien plus avec ses données d’animation si aucune donnée d’animation n’existe dans son bloc de données de référence lié.

Keyframes (a.k.a. F-Curves)

L'animation par images clés appartient à un autre bloc de données (un bloc d’action). Il est donc possible d’attribuer un bloc de données Action purement local en remplacement de celui lié à la bibliothèque. Cependant, cela relacera complètement l’animation par images clés des données liées, et ne la remplacera en aucun cas.

Les blocs de données d’action remplacées ne prennent en charge qu’un nombre très limité d’éditions. Par exemple, une courbe-F existante peut être mise en sourdine, mais ses images clés ne peuvent pas être modifiées et aucune nouvelle courbe-F ne peut être ajoutée.

Pilotes

Si les données de référence liées contiennent des données d’animation, leurs remplacements n’ont que des possibilités limitées pour modifier les pilotes existants. Par exemple, il sera possible de modifier la cible existante d’un pilote, mais il ne sera pas possible d’ajouter de nouveaux pilotes, ni de nouvelles cibles à un pilote existant.

Si les données de référence liées ne contiennent pas de données d’animation, leurs remplacements en créeront une nouvelle lorsque certains pilotes seront définis. Les pilotes peuvent ensuite être entièrement modifiés, ajoutés ou supprimés, tout comme avec des blocs de données purement locaux.

NLA

The NLA editor data also belongs to the animation data of a data-block. However, this data does support some greater level of edition in overrides, including moving or resizing existing strips from the linked data, and adding new local strips.

Remplacements de resynchronisation#

Les relations entre les blocs de données liés peuvent être modifiées, ce qui entraîne des remplacements obsolètes. Lorsque cela se produit, les remplacements doivent être resynchronisés pour correspondre à la nouvelle structure de leur hiérarchie. Les remplacements sont automatiquement resynchronisés, si nécessaire, lors de l’ouverture des fichiers blend. Cependant, il peut parfois être nécessaire de les resynchroniser manuellement, voir Troubleshoot an Override Hierarchy.

Astuce

Blender est également capable de resynchroniser les remplacements de bibliothèque à partir de bibliothèques externes, qui sont ensuite liées dans un fichier de travail. Cependant, il s’agit d’un processus coûteux qui doit être entièrement refait à chaque fois que le fichier de travail est chargé, car Blender ne peut pas éditer/modifier directement la bibliothèque externe.

Ainsi, les utilisateurs liant des remplacements (ou créant des remplacements récursifs) doivent s’assurer que leurs fichiers de bibliothèque sont régulièrement mis à jour, pour éviter cette surcharge lors du chargement des fichiers (généralement, l’ouverture et l’enregistrement de ces fichiers de bibliothèque devraient suffire pour les mettre à jour).

Astuce

La resynchronisation automatique peut être désactivée dans les Préférences Expérimentales.

Remplacements non-éditables#

Pour des raisons techniques (comment les relations entre les blocs de données sont stockées), Blender doit créer des remplacements d’un grand nombre de blocs de données, même lorsque seulement un ou deux d’entre eux doivent être modifiés par l’utilisateur. Pour réduire la quantité d’informations et le risque d’éventuelles modifications indésirables, la plupart de ces blocs de données sont désormais marqués comme non modifiables par défaut. Cela peut être modifié une fois le remplacement créé.

Make an Override (Faire un remplacement)#

Référence

Éditeur:

3D Viewport, Outliner, Properties

Mode:

Mode Objet

Menu:

3D Viewport ‣ Header ‣ Object ‣ Library Override ‣ Make Outliner ‣ Context Menu ‣ Library Override ‣ Make ID Widget ‣ Context Menu ‣ Library Override ‣ Make

Raccourci:

Shift-LMB sur le bouton “linked”/”overridden” d’un widget d’identification (ID).

Créer des remplacements à partir des blocs de données sélectionnés.

Blender crée automatiquement des remplacements pour tous les blocs de données requis afin de s’assurer que des hiérarchies de remplacement valides sont créées.

Seuls les remplacements créés à partir des éléments sélectionnés seront modifiables par l’utilisateur.

Avertissement

La prise en charge de la création de remplacements de bibliothèque à partir du widget ID (principalement depuis de l’Éditeur de Propriétés) est limitée. Si les usages les plus courants doivent être supportés, notamment avec les Objets, les maillages, etc., beaucoup reste à implémenter.

Les items sélectionnés#

Selon l’endroit à partir duquel le remplacement est créé, il existe plusieurs façons de “sélectionner” les éléments à remplacer et à modifier par l’utilisateur.

Note

Ceci s’applique également aux autres opérations courantes (Reset and Clear).

Les opérations avancées de dépannage (Troubleshoot) uniquement disponibles à partir de l’Outliner s’appliquent toujours à toute une hiérarchie de remplacement.

Vue 3D#

Les objets sélectionnés seront considérés comme sélectionnés.

Lorsqu’un objet sélectionné est un Empty local instanciant une collection liée, voici ce qui se produit : L’objet Empty sera supprimé. Sa collection liée sera remplacée et cette substitution sera instanciée dans la même collection dans le calque de vue actuel. Si la collection contient des objets Armature, ils seront modifiables par l’utilisateur. Sinon, aucun remplacement créé ne sera défini comme modifiable par l’utilisateur.

Outliner#

L’opération peut être appliquée soit aux éléments sélectionnés uniquement, soit à leur contenu uniquement, soit aux deux.

Astuce

L’utilisation de Selected & Content est un moyen simple d’obtenir que tous les remplacements nouvellement créés soient immédiatement modifiables par l’utilisateur.

ID Widget#

Seul le bloc de données lié dans le widget ID est considéré comme sélectionné et défini comme modifiable une fois remplacé.

Make Editable#

Cette même opération peut également être utilisée pour rendre les remplacements existants modifiables par l’utilisateur, une fois qu’ils ont été créés ou effacés

Reset an Override (Réinitialiser un remplacement)#

Référence

Éditeur:

3D Viewport, Outliner, Properties

Mode:

Mode Objet

Menu:

3D Viewport ‣ Header ‣ Object ‣ Library Override ‣ Reset Outliner ‣ Context Menu ‣ Library Override ‣ Reset ID Widget ‣ Context Menu ‣ Library Override ‣ Reset

Réinitialise les remplacements sélectionnés à leurs valeurs d’origine (à partir des données de référence liées). Contrairement à l’opération Clear (Effacer), les remplacements restent entièrement modifiables et ne sont jamais supprimés.

Clear an Override (Effacer un remplacement)#

Référence

Éditeur:

3D Viewport, Outliner, Properties

Mode:

Mode Objet

Menu:

3D Viewport ‣ Header ‣ Object ‣ Library Override ‣ Clear Outliner ‣ Context Menu ‣ Library Override ‣ Clear ID Widget ‣ Context Menu ‣ Library Override ‣ Clear

Raccourci:

Shift-LMB sur le bouton “overridden” d’un widget d’identification (ID).

Réinitialise les remplacements sélectionnés à leurs valeurs d’origine et, si possible, sans rompre la hiérarchie existante, supprimez-les et remplacez-les par leurs données de référence liées. Sinon, conservez les remplacements mais marquez-les comme non-modifiables.

Éditer un Remplacement#

Essentiellement, un remplacement est édité de la même manière qu’un bloc de données local normal. Vous pouvez utiliser des opérateurs dessus, éditer leurs propriétés à partir de divers éditeurs, etc. Il existe cependant certaines limitations, notamment le mode d’édition n’est pas autorisé pour les remplacements. Dans la plupart des cas, dès que vous modifiez une propriété, vous pouvez voir qu’elle est remplacée par son contour/arrière-plan bleu sarcelle.

Vous pouvez également animer les remplacements, les propriétés animées remplacent/annulent simplement les remplacements. Notez que vous ne pouvez pas remplacer-modifier une animation existante, vous devrez créer une nouvelle action. Vous pouvez définir ou supprimer manuellement un remplacement à partir du menu contextuel de la propriété concernée. Si un remplacement n’est pas modifiable, vous devez d’abord le rendre éditable.

Define Overrides (Définir les remplacements)#

Référence

Éditeur:

N’importe lequel

Mode:

Mode Objet

Propriété:

Context Menu ‣ Define Overrides Context Menu ‣ Define Override

Marque une propriété à remplacer dans le fichier-blend local. Pour un tableau de propriétés, tous les éléments seront remplacés.

Define Single Override (Définir un remplacement unique)#

Référence

Éditeur:

N’importe lequel

Mode:

Mode Objet

Propriété:

Context Menu ‣ Define Single Override

Marque une propriété à remplacer dans le fichier-blend local. Pour un tableau de propriétés, seul l’élément sélectionné sera remplacé.

Remove Overrides (Supprimer les remplacements)#

Référence

Éditeur:

N’importe lequel

Mode:

Mode Objet

Propriété:

Context Menu ‣ Remove Overrides Context Menu ‣ Remove Override

Supprime la propriété des remplacements. La valeur du bloc de données lié sera utilisée. Pour les propriétés de tableau, tous les éléments seront supprimés du remplacement.

Remove Single Override (Supprimer un remplacement unique)#

Référence

Éditeur:

N’importe lequel

Mode:

Mode Objet

Propriété:

Context Menu ‣ Remove Single Override

Supprime la propriété des remplacements. La valeur du bloc de données lié sera utilisée. Pour les propriétés de tableau, seuls les éléments sélectionnés seront supprimés du remplacement.

Troubleshoot an Override Hierarchy (Dépanner une hiérarchie de remplacement)#

Référence

Éditeur:

Outliner

Mode:

Mode Objet

Outliner:

Context Menu ‣ Library override ‣ Troubleshoot

Ces opérations ne sont disponibles que depuis le menu contextuel de l’Outliner. Elles peuvent aider à réparer une hiérarchie de remplacement cassée.

Resync (Resynchroniser)#

Référence

Éditeur:

Outliner

Mode:

Mode Objet

Outliner:

Context Menu ‣ Library override ‣ Troubleshoot ‣ Resync

La structure des données liées (les relations entre les blocs de données liés) peut être modifiée. Les remplacements doivent être resynchronisés pour correspondre à la nouvelle hiérarchie. Cet opérateur resynchronisera le remplacement avec la nouvelle hiérarchie de la bibliothèque.

Avertissement

Lors de la resynchronisation d’un remplacement de bibliothèque, il est possible que les remplacements modifiés soient supprimés s’ils sont modifiés dans la bibliothèque d’origine. Si tel est le cas, un message d’avertissement s’affichera indiquant combien de remplacements ont été supprimés, si la suppression n’est pas souhaitable, la resynchronisation peut être annulée avant d’enregistrer le fichier blend.

Note

Ce processus est automatique

Habituellement, cette opération se produit automatiquement lorsque Blender détecte qu’elle est nécessaire, lors du chargement du fichier, à moins qu’elle ne soit désactivée dans les Préférences Expérimentales.

Resync Enforce (Forcer une resynchronisation)#

Référence

Éditeur:

Outliner

Mode:

Mode Objet

Outliner:

Context Menu ‣ Library override ‣ Troubleshoot ‣ Resync Enforce

Dans certains cas, en particulier avec les anciens fichiers blend qui ont été enregistrés avec des remplacements “cassés” (sans correspondance avec la hiérarchie), une resynchronisation régulière elle-même ne peut pas reconstruire correctement le remplacement comme prévu (par exemple, certains objets peuvent disparaître). Pour résoudre ce problème, cet opérateur reconstruit le remplacement local à partir de sa référence liée, ainsi que sa hiérarchie de dépendances, en forçant cette hiérarchie pour qu’elle corresponde aux données liées (c’est-à-dire en ignorant les remplacements existants sur les propriétés des blocs de données). C’est similaire à une resynchronisation régulière mais est une resynchronisation plus puissante, au prix d’une perte potentielle de certains remplacements sur les propriétés des pointeurs d’ID.

Delete#

Référence

Éditeur:

Outliner

Mode:

Mode Objet

Outliner:

Context Menu ‣ Library override ‣ Troubleshoot ‣ Delete

Supprime toute la hiérarchie de remplacement de la bibliothèque et remplace tous ces blocs de données de remplacement par leurs blocs de données liés d’origine. Cela annule complètement l’opération Make.