Переопределения библиотеки (library overrides)#

Library Overrides – это система, разработанная для того, чтобы разрешить редактирование связанных данных, сохраняя при этом их синхронизацию с исходными данными библиотеки. Большинство типов связанных блоков данных могут быть переопределены, а сами свойства этих переопределений в дальнейшем могут быть отредактированы. При изменении данных библиотеки, – немодифицированные свойства переопределённых данных будут обновляться соответствующим образом.

Примечание

Старая система прокси была упразднена в Blender 3.0 и полностью удалена в Blender 3.2. Автоматическое преобразование от прокси к переопределениям библиотеки происходит при загрузке blend-файла, но результаты для сложных символов не гарантируются и могут потребовать ручных исправлений.

Переопределения библиотеки поддерживают:

  • Множественные независимые переопределения одних и тех же связанных данных (например, наличие одного и того же персонажа несколько раз в одной сцене).

  • Добавление новых модификаторов и ограничителей в любое место стека.

  • Рекурсивное объединение переопределений (т. е. связывание и переопределение переопределений из другого файла библиотеки и т. д.).

Примечание

Известны проблемы, которые необходимо решить. Подробности см. в основной задаче проекта.

Предупреждение

Несмотря на то, что в большинстве случаев данные переопределений библиотеки сохраняются при потере ссылки на связанные данные (например, если файл библиотеки становится недоступным или перемещается), существуют некоторые исключения.

Главным из них, вероятно, являются поставленные в позу (но не анимированные) объекты-арматуры, когда их собственные «арматурные объектные данные» не переопределяются. Кости позы объекта арматуры полностью связываются с костями его арматурных объектных данных, если последние пропадают, то позовые кости теряются окончательно.

Примечание

Правильная компоновка коллекций – имеет значение

Для того, чтобы переопределения библиотек работали как нужно, – гораздо лучше, если все коллекции, необходимые персонажу, являлись потомками корневой (связанной и инстанцированной), так чтобы существовала чёткая иерархия. В противном случае некоторые данные могут не быть должным образом автоматически переопределены, а другие операции, в свою очередь, могут стать менее надёжными.

Переопределить иерархии#

Иерархия – очень важная концепция для понимания когда мы работаем с переопределениями библиотеки. В Blender’е ваш реальный ассет (персонаж, реквизит, набор и т. д.) почти никогда не состоит из одного блока данных, а скорее представляет собой группу блоков данных с зависимыми друг от друга иерархическими связями. Например, персонаж обычно имеет объект-арматуру, несколько объектов геометрии, объекты управления ригом, объектные данные всех этих объектов, материалы, текстуры и т. д..

Эти иерархические связи можно представить в виде дерева с корневым блоком данных, рекурсивно «связывающим» все его зависимости. При переопределении библиотеки, как правило, корень иерархии также является блоком данных, который напрямую связывается при импорте ассета (обычно коллекции).

Эту концепцию иерархии также можно рассматривать как своего рода супер мета-блок-данных. Она имеет решающее значение, когда есть несколько переопределений одних и тех же связанных данных, поскольку это позволяет чётко идентифицировать имеющийся блок данных для одного переопределения, не оставляя двусмысленности для процессов, которые влияют на всю иерархию в целом (например, повторная синхронизация переопределений с их связанными данными). Она также позволяет совместно использовать эти иерархические связи между блоками данных разных иерархий, например, родительские иерархические связи между двумя различными переопределениями одного и того же персонажа.

Анимация и Переопределения#

В соответствии с текущей конструкцией данных анимации в Blender’е, – то, что можно редактировать в анимациях переопределений, может значительно меняться в зависимости от того, были ли данные анимации уже определены в связанном эталонном блоке данных. Данные анимации создаются для блока данных в тех случаях, когда он анимируется ключевыми кадрами или через драйверы.

В общем случае, переопределение может сделать гораздо больше с данными анимации, если в связанном с ним ссылочном блоке данных нет данных анимации.

Ключевые кадры (также известные как F-кривые)

Анимация с ключевыми кадрами относится к другому блоку данных (блоку «действий»). Поэтому можно назначать чисто локальный блок данных действий, заменяя тот, что был связан из библиотеки. Это полностью заменяет анимацию с ключевыми кадрами из связанных данных, но не переопределяет её каким-либо образом.

Блоки данных переопределённого действия поддерживают только очень ограниченное редактирование. Например, существующая F-кривая может быть отключена, но её ключевые кадры не подлежат редактированию, так же, как нельзя добавить новую F-кривую.

Драйверы

Если связанные эталонные данные содержат данные анимации, то их переопределения будут иметь только ограниченные возможности для редактирования существующих драйверов. Например, можно будет изменять существующую цель драйвера, но нельзя будет добавить новые драйверы или новые цели к существующему драйверу.

Если связанные эталонные данные не имеют данных анимации, то их переопределения будут создавать новые, когда будут установлены некоторые драйверы. Драйверы затем могут быть редактируемыми в полной мере, их можно добавлять или удалять, как и в случае с чисто локальными блоками данных.

НЛА (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.

Повторная синхронизация переопределений#

Иерархические связи между связанными блоками данных могут изменяться, что приводит к устареванию переопределений. Когда это происходит, необходимо повторно синхронизировать эти переопределения, чтобы они соответствовали новой структуре в своей иерархии. Переопределения, при необходимости, могут быть автоматически повторно синхронизированы при открытии blend-файлов. Однако иногда им может потребоваться ручная повторная синхронизация, см. раздел «Устранение неполадок в иерархии переопределений».

Совет

Blender также может повторно синхронизировать переопределения библиотек из внешних библиотек, которые затем могут быть связаны с рабочим файлом. Однако этот процесс является затратным, поскольку его необходимо полностью переделывать каждый раз при загрузке рабочего файла, поскольку Blender не может редактировать/изменять внешнюю библиотеку напрямую.

Поэтому пользователи, связывающие переопределения (или создающие рекурсивные переопределения), должны убедиться, что их файлы библиотек регулярно обновляются, во избежания дополнительной нагрузки при загрузке файлов (обычно для их обновления достаточно открытия и сохранения этих файлов библиотек).

Совет

Автоматическую повторную синхронизацию можно отключить в экспериментальных настройках.

Нередактируемые переопределения#

По техническим причинам (метод хранения иерархических связей между блоками данных) Blender’у необходимо создавать переопределения множества блоков данных, даже если пользователю на самом деле нужно редактировать только один или два из них. Чтобы уменьшить объём информации и риск потенциального нежелательного редактирования, большинство этих блоков данных теперь по умолчанию помечаются как «нередактируемые». Этот статус можно изменять после создания переопределения.

Создание переопределения#

Ссылка

Редактор:

3D-Вьюпорт, Аутлайнер, Свойства

Режим (mode):

Объектный режим (object mode)

Меню:

3D-Вьюпорт ‣ Заголовок ‣ Объект ‣ Переопределение библиотеки ‣ Сделать Аутлайнер ‣ Контекстное меню ‣ Переопределение библиотеки ‣ Сделать Виджет ID ‣ Контекстное меню ‣ Переопределение библиотеки ‣ Сделать 3D Viewport ‣ Header ‣ Object ‣ Library Override ‣ Make Outliner ‣ Context Menu ‣ Library Override ‣ Make ID Widget ‣ Context Menu ‣ Library Override ‣ Make

Горячая клавиша:

Shift-ЛКМ на кнопке „Linked“/“Overridden“ виджета ID.

Создать переопределения из выделенных блоков данных.

Blender автоматически создаёт переопределения для всех требуемых блоков данных, чтобы гарантировать создание допустимых иерархий переопределений.

Для редактирования пользователем будут доступны только те переопределения, которые были созданы на основе выделенных элементов.

Предупреждение

Поддержка по созданию переопределений библиотек из виджета ID (в основном из редактора свойств) ограничена. Хотя наиболее распространённые варианты использования всё же поддерживаются, особенно с объектами, мешами и т. д., многое ещё предстоит реализовать.

Выделенные элементы#

В зависимости от того, где будет создаваться переопределение, существует несколько способов «выделять» элементы, которые необходимо переопределить и сделать доступными для редактирования пользователем.

Примечание

Это также относится и к другим распространённым операциям (“Reset“ и „Clear“).

Расширенные операции по „Устранению неполадок“, доступные только в аутлайнере, всегда применяются ко всей иерархии переопределений.

3D-Вид#

Выделенные объекты будут считаться выбранными.

When a selected object is a local Empty instantiating a linked collection, the following will happen: * The Empty object will be removed. * Its linked collection will be overridden, and that override will be instanced in the same collection in the current View Layer. * If the collection contains Armature objects, they will be user-editable. Otherwise, no created override will be defined as user-editable.

Аутлайнер (outliner)#

Операцию можно применить либо только к выделенным элементам, либо только к их содержимому, либо же и к тем и к другим вместе.

Совет

Использование опции „Selected & Content“ – это простой способ сделать все вновь созданные переопределения доступными для редактирования пользователем.

Виджет идентификатора (ID Widget)#

Только связанный блок данных в виджете ID считается «выбранным» и устанавливается в качестве редактируемого после переопределения.

Сделать редактируемым#

Эту же операцию можно использовать для того, чтобы сделать существующие переопределения доступными для пользовательского редактирования как после их создания, так и после очищения переопределения

Сбрасывание переопределения#

Ссылка

Редактор:

3D-Вьюпорт, Аутлайнер, Свойства

Режим (mode):

Объектный режим (object mode)

Меню:

3D-Вьюпорт ‣ Заголовок ‣ Объект ‣ Переопределение библиотеки ‣ Сбросить Аутлайнер ‣ Контекстное меню ‣ Переопределение библиотеки ‣ Сбросить Виджет ID ‣ Контекстное меню ‣ Переопределение библиотеки ‣ Сбросить 3D Viewport ‣ Header ‣ Object ‣ Library Override ‣ Reset Outliner ‣ Context Menu ‣ Library Override ‣ Reset ID Widget ‣ Context Menu ‣ Library Override ‣ Reset

Сбросить выделенные переопределения к их исходным значениям (из связанных эталонных данных). В отличие от операции „Clear“, переопределения остаются полностью редактируемыми и никогда не удаляются.

Очищение переопределения#

Ссылка

Редактор:

3D-Вьюпорт, Аутлайнер, Свойства

Режим (mode):

Объектный режим (object mode)

Меню:

3D-Вьюпорт ‣ Заголовок ‣ Объект ‣ Переопределение библиотеки ‣ Очистить Аутлайнер ‣ Контекстное меню ‣ Переопределение библиотеки ‣ Очистить Виджет ID ‣ Контекстное меню ‣ Переопределение библиотеки ‣ Очистить 3D Viewport ‣ Header ‣ Object ‣ Library Override ‣ Clear Outliner ‣ Context Menu ‣ Library Override ‣ Clear ID Widget ‣ Context Menu ‣ Library Override ‣ Clear

Горячая клавиша:

Shift-ЛКМ на кнопке „Overridden“ виджета ID.

Сбросить выделенные переопределения до их исходных значений и, если возможно, без нарушения существующей иерархии, удалить и заменить их связанными эталонными данными. В противном случае сохранить переопределения, но с их отметкой в качестве «нередактируемых».

Редактирование переопределения#

По сути, переопределение редактируется так же, как и обычный локальный блок данных. Вы можете использовать на них операторы, редактировать их свойства из различных редакторов и т. д.. Однако есть некоторые ограничения, наиболее заметным из которых является запрет на использование режима редактирования для переопределений. В большинстве случаев, как только вы начнёте редактировать свойство, вы сможете увидеть, что оно переопределено по его сине-голубому контуру/фону.

Вы также можете анимировать переопределения, анимированные свойства просто заменяют/отменяют переопределения. Обратите внимание, что вы не можете переопределить/отредактировать существующую анимацию, для этого вам нужно будет создать новое действие. Вы можете вручную установить или удалить переопределение из контекстного меню соответствующего свойства. Если переопределение является нередактируемым, вам нужно будет сначала сделать его таковым.

Установить переопределения (define overrides)#

Ссылка

Редактор:

Любой (any)

Режим (mode):

Объектный режим (object mode)

Свойство:

Контекстное меню ‣ Установить переопределения Контекстное меню ‣ Установить переопределение Context Menu ‣ Define Overrides Context Menu ‣ Define Override

Отметить свойство, которое будет переопределено в локальном blend-файле. Для связанных свойств, – будут переопределены все элементы.

Установить одно переопределение (define single override)#

Ссылка

Редактор:

Любой (any)

Режим (mode):

Объектный режим (object mode)

Свойство:

Контекстное меню ‣ Установить одно переопределение Context Menu ‣ Define Single Override

Отметить свойство, которое будет переопределено в локальном blend-файле. Для связанных свойств, – будет переопределён только выделенный элемент.

Удалить переопределения (remove overrides)#

Ссылка

Редактор:

Любой (any)

Режим (mode):

Объектный режим (object mode)

Свойство:

Контекстное меню ‣ Удалить переопределения Контекстное меню ‣ Удалить переопределение Context Menu ‣ Remove Overrides Context Menu ‣ Remove Override

Удалить свойство из переопределений. Будет использовано значение из связанного в блоке данных. Для связанных свойств, – из переопределения будут удалены все элементы.

Удалить одно переопределение (remove single override)#

Ссылка

Редактор:

Любой (any)

Режим (mode):

Объектный режим (object mode)

Свойство:

Контекстное меню ‣ Удалить одно переопределение Context Menu ‣ Remove Single Override

Удалить свойство из переопределений. Будет использовано значение из связанного в блоке данных. Для связанных свойств, – из переопределения будут удалены только выделенные элементы.

Устранение неполадок в иерархии переопределения#

Ссылка

Редактор:

Аутлайнер (outliner)

Режим (mode):

Объектный режим (object mode)

Аутлайнер (outliner):

Контекстное меню ‣ Переопределение библиотеки ‣ Устранение неполадок Context Menu ‣ Library override ‣ Troubleshoot

Данные операции доступны только из контекстного меню аутлайнера. Они могут помочь исправить сломанную иерархию переопределений.

Повторная синхронизация (resync)#

Ссылка

Редактор:

Аутлайнер (outliner)

Режим (mode):

Объектный режим (object mode)

Аутлайнер (outliner):

Контекстное меню ‣ Переопределение библиотеки ‣ Устранение неполадок ‣ Повторная синхронизация Context Menu ‣ Library override ‣ Troubleshoot ‣ Resync

Иерархическая структура связанных данных (отношения между связанными блоками данных) со временем может быть изменена. Переопределения должны быть повторно синхронизированы для соответствия новой иерархии. Этот оператор повторно синхронизирует переопределение сопоставляя с новой иерархией библиотеки.

Предупреждение

При повторной синхронизации переопределения библиотеки возможно, что изменённые переопределения будут удалены, если они были изменены в исходной библиотеке. В этом случае будет выведено предупреждающее сообщение с указанием количества удаляемых переопределений. Если удаление нежелательно, повторную синхронизацию можно отменить перед сохранением blend-файла.

Примечание

Этот процесс является автоматическим

Обычно эта операция происходит автоматически, когда Blender обнаруживает, что она необходима, при загрузке файла, если только она не отключена в экспериментальных настройках.

Принудительная повторная синхронизация (resync enforce)#

Ссылка

Редактор:

Аутлайнер (outliner)

Режим (mode):

Объектный режим (object mode)

Аутлайнер (outliner):

Контекстное меню ‣ Переопределение библиотеки ‣ Устранение неполадок ‣ Принудительная повторная синхронизация Context Menu ‣ Library override ‣ Troubleshoot ‣ Resync Enforce

В некоторых случаях, особенно со старыми blend-файлами, которые были сохранены со «сломанными» (не соответствующими иерархии) переопределениями, обычная повторная синхронизация сама по себе может некорректно восстановить переопределение, не так, как вы могли бы ожидать (например, могут пропасть некоторые объекты). Чтобы решить эту проблему данный оператор перестраивает локальное переопределение из его связанной ссылки вместе с его иерархией зависимостей, заставляя эту иерархию соответствовать связанным данным (т. е. игнорируя существующие переопределения свойств блоков данных). Это похоже на обычную повторную синхронизацию, но является более мощной повторной синхронизацией, агрессивной, за счёт потенциальной потери некоторых переопределений свойств указателей идентификаторов.

Удалить (delete)#

Ссылка

Редактор:

Аутлайнер (outliner)

Режим (mode):

Объектный режим (object mode)

Аутлайнер (outliner):

Контекстное меню ‣ Переопределение библиотеки ‣ Устранение неполадок ‣ Удалить Context Menu ‣ Library override ‣ Troubleshoot ‣ Delete

Удалить всю иерархию переопределения библиотеки и заменить все блоки данных переопределения их исходными связанными блоками данных. Это полностью отменяет операцию „Make“.