Робпотік та Приклади – 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 є Простий Вираз – a 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. Спостерігається ефекти при прокрутці часолінії.

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

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

Драйвер Ключів Форм – 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. In order to author the shape key on top of the armature deformation, enable both Edit Mode Display and Cage Editing in the Armature modifier. 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 axis) є 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: top faces moved up by 1 m.

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

Key 2: inner top moved up by 1 m.

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

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

../../_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.