Workflow & Examples – Робпотік та Приклади

Прості Драйвери можуть бути сконфігуровані з випливного вікна, що з’являється, коли додається новий Драйвер. Коли додаються кілька одночасно Драйверів або для більш просунутих конфігурацій, то корисно мати відкритим редактор драйверів Drivers Editor.

Transform Driver – Драйвер Трансформ

Керування властивістю за допомогою трансформи об’єкта. У цьому прикладі обертання навколо Y об’єкта Object 2 буде керуватися позицією по X об’єкта Object 1. Починається з простого укладу з двох об’єктів:

  1. Додається Драйвер для властивості Rotation Y другого об’єкта через контекстне меню або за допомогою Ctrl-D.

    ../../_images/animation_drivers_workflow-examples_transform-driver-1.png
  2. Відкривається редактор драйверів Drivers Editor та вибирається властивість Y Euler Rotation у регіоні калів.

  3. Відкривається регіон Sidebar та вибирається вкладка Drivers.

  4. Конфігурується драйвер на Averaged Value – «Усереднене Значення» для каналу трансформи Transform Channel першого об’єкта.

    ../../_images/animation_drivers_workflow-examples_transform-driver-2.png
  5. Поекспериментуйте з переміщенням першого об’єкта та зверніть увагу на те, як воно впливає на обертання по Y для другого об’єкта.

Scripted Expression - Orbit a Point – Скриптовий Вираз - Обліт Точки

Обліт позиції об’єкта навколо певної точки за допомогою кастомного скриптового виразу Scripted Expression. Позиція об’єкта буде змінюватися при прошкрябуванні часолінії. Використовуючи тригонометрію, круговий рух можна визначити у 2D за допомогою функцій синуса та косинуса. (Дивіться Unit Circle.) У цьому прикладі поточний кадр використовується як змінна, що спричиняє цей рух. frame є простим виразом Simple Expression, що відповідає bpy.context.scene.frame_current.

../../_images/animation_drivers_workflow-examples_object-rotation.png
  1. Додається драйвер для властивості локації – Location по X.

    1. Задається Driver Type – «Тип Драйвера» як Scripted Expression – «Скриптовий Вираз».

    2. Додається вираз 0 + (sin(frame / 8) * 4), де:

      • frame/8 : номер поточного кадру анімації, поділений на 8 для уповільнення обльоту вниз.

      • (sin( )*4) : множить результат sin(frame/8) на 4 для більшого кола.

      • 0 + : використовується для керування зсуву до центральної точки обльоту.

  2. Додається драйвер для властивості локація Y Location з виразом 0 + (cos(frame / 8) * 4).

  3. Прошкрябуйте часолінію, щоб бачити ефект. Експериментуйте зі змінними для керування розміром та центром обльоту.

Custom Function - Square Value – Кастомна Функція - Квадратне Значення

Створюється кастомна функція для отримання квадрата значення (тобто, value2). Додавання цієї функції до простору імен драйвера Driver Namespace дозволяє використовувати її з виразами драйверів. Простір імен драйвера Driver Namespace має вбудовані функції для використання у виразах драйверів, а також константи, такі як π та e. Їх можна оглянути через консоль Python Console:

>>> bpy.app.driver_namespace[' <tab>
                              acos']
                              acosh']
                              asin']
                              asinh']
                              atan']
                              ...

Для додання нової функції у простір імен драйверів Driver Namespace ця функція сама повинна бути імплементована і потім додана у bpy.app.driver_namespace.

  1. Додайте наступне в редактор тексту Text Editor всередині Blender та натисніть Run Script – «Запуск Скрипту».

    import bpy
    
    def square(val):
       """Returns the square of the given value"""
       return val * val
    
    # Add function to driver_namespace.
    bpy.app.driver_namespace['square'] = square
    
  2. Додається драйвер зі скриптовим виразом Scripted Expression, таким як square(frame).

  3. Спостерігається ефект при прокрутці часолінії.

Існує більше кастомних прикладів функцій, що доступні через Templates ‣ Python ‣ Driver Functions – «Шаблони > Python > Функції Драйверів» у Редакторі Тексту Blender’а. Оскільки прості вирази Simple Expressions не можуть мати доступ до кастомних функцій, їх використовування має сенс лише для складних обчислень.

Попередження

Trying to replace built-in entries of the driver namespace may result in undefined behavior.

View Layer Attribute Lookup

The material Attribute Node in the View Layer mode automatically searches for the attribute property in multiple locations. This, for example, can allow setting a certain value of the custom attribute at the Scene or World level, and then overriding it differently for one View Layer.

../../_images/animation_drivers_workflow-examples_attribute-lookup.png

Context Properties of drivers don’t implement this behavior, so if necessary it has to be manually emulated via fallback values and a conditional expression (conditions are Simple Expressions).

For an attribute named attr, the node tries the following six RNA path lookups in order:

  • ["attr"] in the active View Layer (custom property).

  • attr in the active View Layer (built-in property).

  • ["attr"] in the active Scene.

  • attr in the active Scene.

  • world["attr"] in the active Scene.

  • world.attr in the active Scene.

Depending on the specific property it may be sufficient to check only a subset of these locations. For example, the image on the right shows how to access an attribute that is known to definitely be a custom property with a color value.

Driver variables accessing locations that are not final in the lookup chain should use fallback values that are invalid for the attribute (e.g. negative color values), which can then be checked by the conditional expression. The final variable should fallback to a valid default value to be used when the property is not set at all.

Shape Key Drivers – Драйвери Ключів Форм

Improved Mesh Deformation – Поліпшена Деформація Сіті

Виправляються проблеми перетинів, що трапляються при використовуванні арматур та малювання вагомостей, особливо в суглобах. Ключі форм можуть також використовуватися для підправлення та уточнення оснастки, наприклад, для припущення формацій м’язів. У цьому прикладі ключ форми використовується для поліпшення деформації в лікті елементарної руки.

../../_images/animation_drivers_workflow-examples_shape-key-improved-deformation.png

Зліва: Скелетна деформація сіті без корекції. Справа: Застосовано коригувальний ключ форми

Setup – Уклад
  1. Додається сіть (у цьому прикладі, циліндр з нарізами петель).

  2. Додається арматура з ланцюгом кісток.

  3. Покривається сіттю арматура за допомогою малювання вагомостей.

(Примітка: для приріднення сіті до арматури: вибирається спершу сіть, потім арматура та використовується Ctrl-P для приріднення з авто вагомостями.)

Поекспериментуйте з позуванням арматури та постежте за деформацією в суглобі. Для виправлення проблем перетинів або кутів, що виглядають незадовільно, ви можете асоціювати ключ форми Shape Key з позою.

Shape Key – Ключ Форми
  1. Позуйте арматуру так, щоб проблеми були видні. Обов’язково охопіть пози екстрем, які ви хочете підтримати для оснастки.

  2. З вибраною сіттю додайте новий ключ форми Shape Key на додаток до базисного Basis ключа. Properties ‣ Mesh tab ‣ Shape Keys – «Властивості > вкладка Сіть > Ключі Форм»

  3. Щоб створити ключ форми поверх деформації арматури, увімкніть обидві опції, показ редагування сіті Edit Mode Display та редагування клітки Cage Editing для модифікатора арматури Armature. Properties ‣ Modifiers tab ‣ Armature Modifier ‣ Header – «Властивості > вкладка Модифікатори > модифікатор Арматура»

  4. Увійдіть у режим редагування Edit Mode та виберіть новий ключ форми на панелі властивостей. Наладнайте бажаним чином вершини. Виберіть ключ Basis для перемикання між оригінальною сіттю та вашими редагуваннями. (Примітка: будьте обережні, застосовуйте редагування лише на вашій формі, а не на оригінальній сіті чи інших наявних ключах.)

Як тільки ви задоволені тим, як деформація виглядає для проблематичної пози, вам необхідно сконфігурувати драйвер для активування форми плавно при входженні у цю позицію.

Driver – Драйвер
  1. Додається драйвер для Value ключа форми, що ви створили.

  2. Відкривається Drivers Editor та вибирається цей драйвер.

Метод 1 – Безпосереднє розкладання на значення обертання кістки

Простий спосіб конфігурувати драйвер полягає в прямій відповідності значення каналу обертання кістки зі значенням Value активації ключа форми. Недолік цього методу полягає в тому, що він покладається на одиничний канал обертання кістки, який може бути недостатнім для точного вираження стану, за якого ключ форми повинен активуватися.

  1. У вкладці Drivers виберіть Averaged Value для обертання кістки, яку ви позуєте.

    Розумійте вісь обертання, яка вас цікавить, шляхом вмикання показу осей для арматури або спостерігаючи значення трансформ кістки у властивостях Properties.

    Виберіть канал обертання та задайте його локальним, тобто, значення обертання кістки відносно її предківської кістки.

    ../../_images/animation_drivers_workflow-examples_shape-key-method1.png
  2. Вручну задайте точки для кривої драйвера, вибираючи держак та перетягуючи його або вставляючи значення у вкладці функційної кривої F-Curve. Вісь Y представляє значення Value ключа форми, яке повинно бути від 0.0 до 1.0. Вісь X зазвичай є значенням кадру, але для цього драйвера вона представляє значення обертання в радіанах. Ви можете мати більше, ніж дві точки, на кривій та підправляти переходи за допомогою держаків в огляді кривої (G для переміщення).

  3. Для пересвідчення, що драйвер поводиться коректно, зневиберіть опцію, щоб драйвери показувалися лише для вибраних об’єктів. Таким чином, ви можете позувати арматуру та стежити за драйвером.

Метод 2 – Різниця обертань для цільової кістки

Цей метод вимагає додаткову цільову target або коригувальну corrective кістку, але вона краще виражає просторовий стан у 3D просторі кістки, що спричиняє проблему.

  1. У режимі редагування Edit Mode для арматури додайте нову кістку шляхом видавлення з Bone 1 у позицію, в якій Bone 2 повинна мати активним ключ форми. Цей тип кісток зазвичай дотримується умовності іменування, такої як «TAR-» (target – ціль) або «COR-» (corrective – коригування).

  2. У вкладці Drivers виберіть Averaged Value для різниці обертань між кісткою, що ви обертаєте, та цільовою кісткою. Різниця обертань – це мінімальний кут між двома об’єктами у просторі світу World Space. Тому важливо, щоб кістки мали один і той же корінь, так, щоб єдиним, що впливає на кут між кістками, було обертання однієї з них. Коли деформації кістки (Bone 2) досягає обертання цілі (TAR-Bone 2), то різниця обертань буде 0°.

    ../../_images/animation_drivers_workflow-examples_shape-key-method2.png
  3. Вручну наладнайте держаки кривої драйвера, щоб значення Value (вісь Y) ключа форми було 1.0, коли різниця обертань (вісь X) є 0°. Значення Value повинно бути 0.0, коли рука витягнута, і в це момент різниця обертань повинна бути біля 90° або більше (в радіанах).

  4. Дивіться кроки в Методі 1 про те, як наладнувати держаки кривої та підтверджувати, що ця функціональність працює. Позуйте арматуру для пересвідчення, що діапазони є коректними.

Chained Relative Shape Keys – Зчеплені Відносні Ключі Форм

Активуються різні ключі форм послідовно. У цьому прикладі переміщування одиничної кістки буде активувати спершу Key 1, а потім Key 2. Дивіться також relative shape keys mix additively.

Shape Keys – Ключі Форм

Додаються два ключі форм, окрім Basis.

../../_images/animation_drivers_workflow-examples_chained-shape-keys-basis.png

Basis.

../../_images/animation_drivers_workflow-examples_chained-shape-keys-key1.png

Key 1: верхні грані переміщуються уверх на 1 м.

../../_images/animation_drivers_workflow-examples_chained-shape-keys-key2.png

Key 2: внутрішній верх переміщується уверх на 1 м.

Драйвери – Драйвери

Додається арматуру з одиничною кісткою для керування ключами форм. Метою є активувати ключі послідовно, як ця кістка переміщається уверх.

../../_images/animation_drivers_workflow-examples_chained-shape-keys-result.png

Як показано на картинці вище, коли кістка є напівдорозі уверх, то обидва, Key 1 та Key 2, мають вплив. Це питання переваги, якщо Key 1 повинен бути на його максимумі значення Value до того, як Key 2 починає ставати активним, а наскільки вони повинні перекриватися. Цей приклад показує безшовне змішання.

Для безшовного змішання, де є перекриття, Key 1 повинен мати значення Value як 0.0, коли кістка знаходиться на низу, і воно має збільшуватися лінеарно до 1.0, допоки кістка не пройде середину по висоті. Key 2 повинен мати значення як 0.0 до середини по висоті, і воно повинно збільшуватися з такою ж швидкістю, як і в Key 1, до досягнення значення Value як 1.0, коли кістка знаходиться на максимумі по висоті.

  1. Додається драйвер для значення Value ключів Key 1 та Key 2. У вкладці Drivers сконфігуруйте обидва драйвери на усереднене значення Averaged Value змінної для локації по Z кістки.

  2. Визначається діапазон руху кістки по світовій осі World Z, переміщаючи її уверх так, щоб вона вирівнялася з верхом сіті, коли обидві кістки активні. Тут ми будемо використовувати [0.0, 2.5].

  3. Конфігуруються функції драйвера, щоб Value цих ключів форм (вісь Y) були як бажано для висоти кістки (вісь X).

    Функції драйвера повинні бути лінеарними, тому вони можуть бути визначені аналітично за допомогою функції типу \(y = a + bx\), де \(a\) є зсув \(y\), а \(b\) є схилення.

    1. У вкладці Modifiers додається Generator з типом Extended Polynomial для обох драйверів.

    2. Пограйтеся зі значеннями \(a\) та \(b\), щоб криві проходили від [0.0, 1.0] по осі Y та від [0.0, 2.5] по осі X. Криві повинні перекриватися у серединні області осі X і мати однаковий схил (\(b\)).

      Додатні значення є Key 1: \(y = 0.0 + 0.6x\) та Key 2: \(y = -0.5 + 0.6x\).

      ../../_images/animation_drivers_workflow-examples_chained-shape-keys-driver-setup.png

      Зауважте, що ці функції проходять назовні діапазону [0.0, 1.0] для значення Value цих ключів форм, але це не має впливу, оскільки Value затиснуте діапазоном Range на панелі Shape Keys.