From BlenderWiki

Jump to: navigation, search
Blender3D FreeTip.gif
IMPORTANT! Do not update this page!
We have moved the Blender User Manual to a new location. Please do not update this page, as it will be locked soon.

Драйвери

Про Драйвери

Редактор Графів: приклад Драйвера.
Драйвери (driver) застосовуються для керування значеннями властивостей на основі використання інших властивостей, числових значень, значень трансформацій та скриптів.
Базуючись на характеристиках Ф-Кривої драйвер зчитує значення «Driver Value» та визначає значення виділеної властивості, для якої він був доданий.
Так, на ілюстрації з драйвером, оскільки значення «Driver Value» — «2.0», то значення властивості, для якої він доданий буде «0.5».
Значення Драйвера «Driver Value» визначається Змінними Драйвера «Driver Variables» або Скриптовим Виразом «Scripted Expression».
Про опис інших параметрів для драйверів детальніше дивіться тут та тут.


Опції драйвера

Секція Drivers (Драйвери) на панелі «Властивості» N у Graph Editor (Редакторі Графів).
Секція параметрів Drivers (Драйвери) для роботи з драйверами розміщена на панелі «Властивості» N у Редакторі Графів та доступна у режимі Редактора Drivers (Драйвери).
Дана панель призначення для установки Driver Variables або Scripted Expression, які будуть визначати значення Driver Value.

Параметри драйвера

Update Dependencies (Оновити Залежності)
Примусово оновлює залежності Driver Value.
Remove Driver (Вилучити Драйвер)
Вилучає драйвер з об'єкта.
Type (Тип)
Тип обчислення, який використовується набором Змінних Драйвера. (Якщо у встановлена тільки одна Змінна Драйвера, то відсутня фактична різниця між типами «Average», «Sum», «Minimum» та «Maximum»)
Average Value (Усереднене Значення)
Для розрахунку Змінної Драйвера використовується усереднене значення заданих змінних.
Sum Values (Підсумоване Значення)
Для розрахунку Змінної Драйвера використовується підсумоване значення заданих змінних.
Scripted Expression (Скриптовий Вираз)
Для розрахунку Змінної Драйвера використовується скриптовий вираз на Python'і.
Minimum Value (Мінімальне Значення)
Для розрахунку Змінної Драйвера використовується найменше значення із заданих змінних.
Maximum Value (Максимальне Значення)
Для розрахунку Змінної Драйвера використовується найбільше значення із заданих змінних.
Expr (Вираз)
Скриптовий вираз.
У виразі можуть використовуватися реальні числа, математичні оператори, математичні функції, властивості з мови Python, функції драйвера (нижче є кілька прикладів таких виразів).
Show Debug Info (Показ Інфо про Відладку)
Показує поточне значення змінної драйвера або виразу.
Add Variable (Додати Змінну)
Додає нову Змінну Драйвера.
Установка Однієї Властивості (Single Property).
Установка Каналу Трансформацій (Transform Channel).
Установка Відстані (Distance).

Змінні драйвера

Name (Ім'я)
Ім'я, яке буде використовуватися для скриптових виразів/функцій. Не повинно містити пробілів та крапок та має починатися з літери.
Variable Type (Тип Змінної)
Тип змінної
Single Property (Одна Властивість)
Використовує значення RNA-властивості (наприклад, програмну назву кольору тонування Навколишнього середовища з матеріалу).
Порядок налаштування наступний
Вибрати тип ID-блоку;
Вибрати конкретний ID-блок;
За допомогою команди Copy Data Path (Копіювати Шлях Даних) зі спливною меню, яке з'являється після клацку RMB Template-RMB.png на більшості властивостей в інтерфейсі Blender'а, скопіювати RNA ID ім'я у буфер.
Вставити скопійоване RNA ID ім'я у поле Path за допомогою CtrlV.
ID-Type (Тип ID)
Тип ID-блоку, наприклад, Key, Image, Object, Material.
ID
Ідентифікатор (ID) типу ID-блоку, наприклад, Material.001.
Path (Шлях)
RNA ID ім'я властивості, наприклад, «ambient» для тонування матеріалу.
Transform Channel (Канал Трансформацій)
Використовується один з каналів трансформацій з об'єкта або кості.
ID
ID (ідентифікатор) об'єкта у сцені, наприклад, Cube, Armature, Camera.
Bone (Кість)
ID кості Арматури, наприклад, Bone, Bone.002, Arma.r.
Дана опція лише для арматур.
Type (Тип)
Тип змінної, наприклад, X Location, X Rotation, X Scale.
Space (Простір)
Простір обчислення змінної трансформації з врахуванням приріднення, пози спокою та застосованих обмежників (значення — World Space (Простір Світу), Transform Space (Простір Трансформацій), Local Space (Локальний Простір)).
Rotational Difference (Різниця Обертань)
Використовується різниця обертань між двома костями або об'єктами.
Distance (Відстань)
Використовується відстань між двома об'єктами або костями.
Value (Значення)
Показ значення змінної.


Порядок використання драйверів

Додання драйверів

Для керування властивістю за допомогою драйвера
Знайдіть властивість, для якої хоче додати драйвер.
Клацніть RMB Template-RMB.png над властивістю та виберіть один пунктів меню
Add Drivers (Додати Драйвери)
Додає драйвери для набору властивостей, пов'язаних з виділеною (як приклад, якщо натиснути над «X» для «Rotation», то драйвери додадуться також для «Y» та «Z».
Add Single Driver (Додати Один Драйвер)
Додасть одиничний драйвер тільки для виділеної (над якою ви клацнули RMB Template-RMB.png) властивості.
Додання одиничного драйвера (Add Single Driver).

Приклад трансформації за допомогою драйвера=

Розглянемо приклад обертання сітьового куба за допомогою переміщення іншого куба вліво/вправо у 3D-вигляді через драйвер.
Для цього спершу перейдемо в ортогональний вигляд Front (Перед) Num1, Num5.
  1. У режимі Object (Об'єкт) зробіть дублікат стандартного Куба (Duplicate ⇧ ShiftD).
    Перемістіть куб у нову локацію. Ви повинні отримати два сітьових об'єкти — Cube та Cube.001.
  2. Виділіть Cube.001 та застосуйте команду Add Single Driver для властивості «Rotation Y» property.
  3. Відкрийте Редактор Графів (Graph Editor) та установіть для нього режим роботи «Драйвери» (Drivers).
  4. Відкрийте панель Properties (Властивості) за допомогою швидкої клавіші N та перейдіть в її секцію Drivers (Драйвери).
  5. Установіть Type драйвера на Sum Values (Підсумовані Значення).
  6. Налаштуйте змінну var драйвера так:
    Type на Transform Channel.
    Ob/Bone ID-block на Cube.
    Type на X Location.
    Space на World Space.
Налаштування драйвера для трансформації.
Тепер, коли ви будете переміщувати Cube вліво або вправо у 3D-вигляді, то Cube.001 повинен обертатися.

Приклади драйверів

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

Приклад зі скриптовим виразом

Обертання об'єкта.

Обертання по орбіті

Для властивостей «X» «Location» та «Y» «Location» куба Cube були додані два одиничні драйвери.
Для встановлення локації об'єкта був використаний скриптовий вираз
X Location Expr
0+(sin(frame/8)*4)
(frame/8): поточний кадр анімації, поділений на «8» для уповільнення обертання.
(sin( )*4): для збільшення кола орбіти тут отримано синус від «(frame/8)», а потім помножено на «4».
0+: використовується для керуванням зсуву X Location орбіти.
Y Location Expr
0+(cos(frame/8)*4)
(frame/8): поточний кадр анімації, поділений на «8» для уповільнення обертання.
(cos( )*4): для збільшення кола орбіти тут отримано косинус від «(frame/8)», а потім помножено на «4».
0+: використовується для керуванням зсуву Y Location орбіти.

frame — це те ж чаме, що й bpy.context.scene.frame_current.

Driver Namespace

Список вбудованих функцій та властивостей драйверів
Показ можна увімкнути у консолі Python.
>>> bpy.app.driver_namespace['
                              __builtins__']
                              __doc__']
                              __loader__']
                              __name__']
                              __package__']
                              acos']
                              acosh']
                              asin']
                              asinh']
                              atan']
                              atan2']
                              atanh']
                              bpy']
                              ceil']
                              copysign']
                              cos']
                              cosh']
                              ..
Скрипт нижче додає функцію у простір імен драйвера, що може потім використовуватися у виразі driverFunc(frame).
import bpy
 
def driverFunc(val):
 
    return val * val    # return val squared
 
bpy.app.driver_namespace['driverFunc'] = driverFunc    # add function to driver_namespace

Приклад драйвера Ключа Форми

Приклад з драйвером Ключа Форми, який був доданий до параметра «Value» ключа форми.
Налаштування Драйвера Ключа Форми.
Тут використовується значення «Z Rotation» кості арматури «b» для керування значенням «Value» Ключа Форми.
Режим обертання кості встановлено на «XYZ Euler».
Ф-Крива Драйвера розкладається ніби так
Bone Z Rotation 0.0(0.0): Shape Key value 0.0
Bone Z Rotation -2.09(-120.0): Shape Key value 1.0
Такий виді драйверів також може бути установлено з Типом зміної «Rotational Difference».
Про Ключі Форм детальніше описується тут.


Драйвери та одночасно кілька Ключів Форм

На ілюстраціях нижче демонструється комбінування ключів форми, костей та драйверів, що дає спільне керування ними одиничним коренем. Хоча цій системі бракує зручності керування через єдине значення «Evaluation Time» абсолютного ключа форми, однак це дозволяє мати більш складні відношення між задіяними ключами форми.

Ключ Форми «Basis» має стеки повністю втягнуті. Key1 має основу повністю втягнуту. Key2A має лівий стек повністю втягнутий. Key2B має правий стек повністю втягнутий. Key2A та Key2B обидва відносні до Key1 (як можна побачити у полі внизу справа секції-панелі «Shape Keys»).

Значення Key1 обмежується позицією костей через драйвер за допомогою двох змінних. Кожна змінна використовує Z-координату світу для кості та максимальне значення для визначення кількості основи, яка має бути розширена. Багаточленний генератор формуюється так, що верх домінантного стека повинен біднятися за допомогою кості на даний стек.

Значення Key2A обмежується позицією кості «bone.L». Параметри його генератора формуються так, що, коли значення Key1 досягає «1», то значення «Key2A» починає збільшуватися більше нуля. У цьому разі верх лівого стека буде переміщуватися кістю «bone.L» (у більшості випадків).

Значення Key2B обмежується позицією «bone.R». Параметри його генератора формуються до генератора Key2A, так що верх лівого стека буде переміщуватися кістю «bone.R» (у більшості випадків).

Оскільки, зовсім легко костям «bone.L» та «bone.R» розміщатися, то це вказує на конфлікт значень для Key1, коли кості не доходять до верхів їх відповідних стеків. Ви маєте поекспериментувати для досягнення бажаного результату.

Проблеми і їх вирішення

Ось деякі поширені проблеми при використанні драйверів.

Скриптовий вираз

Секція «Drivers» на панелі «Properties» (N) у Редакторі Графів (Graph Editor).
Заголовок «Info».
Стандартно Blender не запускає автоматично скрипти Python.
Якщо ви використовуєте тип драйвера «Scripted Expression», то слід відкрити файл як «Trusted Source» (Довірене Джерело) або увімкнути опцію «Auto Execution» (Автозапуск)
«Auto Run Python Scripts» (Автозапуск скриптів Python) у вкладці «File» вікна «User Preferences».
Оглядач файлів Blender'а.
«User Preference» > «File» > «Auto Execution».


Властивості обертання задані в радіанах

Інтерфейс Blender'а дозволяє використовувати різні одиниці виміру для кутів. Однак, для роботи з Драйверами у Редакторі Графів, усі кути обчислюються тільки у Радіанах.

Інтра-арматурні драйвери костей можуть збоїти

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




Попередня: Дії | Головна | Наступна: Набори Ключів