Переопределения библиотеки (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)
- Меню:
- Горячая клавиша:
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)
- Меню:
Сбросить выделенные переопределения к их исходным значениям (из связанных эталонных данных). В отличие от операции „Clear“, переопределения остаются полностью редактируемыми и никогда не удаляются.
Очищение переопределения#
Ссылка
- Редактор:
3D-Вьюпорт, Аутлайнер, Свойства
- Режим (mode):
Объектный режим (object mode)
- Меню:
- Горячая клавиша:
Shift-ЛКМ на кнопке „Overridden“ виджета ID.
Сбросить выделенные переопределения до их исходных значений и, если возможно, без нарушения существующей иерархии, удалить и заменить их связанными эталонными данными. В противном случае сохранить переопределения, но с их отметкой в качестве «нередактируемых».
Редактирование переопределения#
Essentially, an override is edited the same way as a regular local data-block. You can use operators on them, edit their properties from various editors, etc. There are some limitations however, most notably Edit Mode is not allowed for overrides. In most cases, as soon as you edit a property, you can see that it’s overridden by its teal blue outline/background.
You can also animate overrides, animated properties just replace/supersede overrides then. Note that you cannot override/edit an existing animation, you’ll have to create a new action. You can manually define or remove an override from the context menu of the relevant property. If an override is not editable, you have to make it editable first.
Определить переопределения (Define Overrides)#
Ссылка
- Редактор:
Любой (any)
- Режим (mode):
Объектный режим (object mode)
- Свойство:
Mark a property to be overridden in the local blend file. For array properties all elements will be overridden.
Определить одиночное переопределение#
Ссылка
- Редактор:
Любой (any)
- Режим (mode):
Объектный режим (object mode)
- Свойство:
Mark a property to be overridden in the local blend file. For array properties only the selected element will be overridden.
Удалить переопределения#
Ссылка
- Редактор:
Любой (any)
- Режим (mode):
Объектный режим (object mode)
- Свойство:
Remove the property from the overrides. The value of the linked in data-block will be used. For array properties all elements will be removed from the override.
Удалить одиночное переопределение#
Ссылка
- Редактор:
Любой (any)
- Режим (mode):
Объектный режим (object mode)
- Свойство:
Remove the property from the overrides. The value of the linked in data-block will be used. For array properties only the selected elements will be removed from the override.
Устранение неполадок Иерархии Переопределения#
Ссылка
- Редактор:
Аутлайнер (outliner)
- Режим (mode):
Объектный режим (object mode)
- Аутлайнер (outliner):
These operations are only available from the Outliner contextual menu. They can help fixing a broken override hierarchy.
Повторная синхронизация#
Ссылка
- Редактор:
Аутлайнер (outliner)
- Режим (mode):
Объектный режим (object mode)
- Аутлайнер (outliner):
The hierarchy of the linked data (the relationships between linked data-blocks) can change. Overrides need to be resynced to match the new hierarchy. This operator will resync the override to match the new hierarchy in the library.
Предупреждение
While resyncing a library override it is possible that edited overrides get deleted if they are changed in the original library. If this is the case, a warning message will be displayed stating how many overrides were deleted, if the deletion is undesirable the resync can be undone before saving the blend-file.
Примечание
This Process is Automatic
Обычно эта операция происходит автоматически, когда Blender обнаруживает, что она необходима, при загрузке файла, если только она не отключена в Экспериментальных настройках.
Resync Enforce#
Ссылка
- Редактор:
Аутлайнер (outliner)
- Режим (mode):
Объектный режим (object mode)
- Аутлайнер (outliner):
In some cases, especially with older blend-files that were saved with „broken“ (non-hierarchy-matching) overrides, a regular resync itself cannot rebuild properly the override as expected (e.g. some objects might go missing). To solve this issue, this operator rebuilds the local override from its linked reference, as well as its hierarchy of dependencies, enforcing that hierarchy to match the linked data (i.e. ignoring existing overrides on data-blocks properties). This is similar to a regular resync, but is more forceful, aggressive, at the cost of a potential loss of some overrides on ID pointers properties.
Удалить (delete)#
Ссылка
- Редактор:
Аутлайнер (outliner)
- Режим (mode):
Объектный режим (object mode)
- Аутлайнер (outliner):
Remove the whole library override hierarchy, and replace all of these override data-blocks by their original linked data-blocks. This fully reverts the Make operation.