В дереве нодов, созданном для разделения сторон модели планеты на “дневную” и “ночную”, присутствует один момент – при изменении положения источника освещения, его новые координаты нужно каждый раз заново указывать в нодах вручную. При быстрой настройке сцены это очень неудобно. Устранить данный недостаток можно, подключив систему “драйверов” Blender.
Создадим простейшую сцену, демонстрирующую разделение сторон планеты. Создадим сферу-планету. Источник света (плоскость) расположим в точке 5,0,0. Для планеты создадим материал с разделением на “дневную” и “ночную” стороны.
Упростим дерево нодов, убрав то, что нам не понадобится в настройке, в группы.
- Выделить нужные ноды
- ctrl+G
Вне групп остались только необходимые нам для настройки ноды Value с координатами источника освещения. На них мы и установим драйверы.
Драйверы – это механизм Blender, использующий свойства, значения, трансформации и скрипты для того, чтобы установить значение определенного свойства. Говоря простым языком – драйверы устанавливают зависимость одних свойств объектов от других. В нашем случае нужно связать значения нодов Value в используемом для планеты материале с координатами плоскости – источника освещения.
Для установки драйвера на нод Value для координаты X источника освещения:
- Кликнуть по его числовому значению правой кнопкой мышки
- Выбрать Add Driver
При этом значение окрасится в фиолетовый цвет.
- Откроем Graph Editor.
- В меню установить режим Mode в Drivers
При выбранном ноде с установленным на него драйвером, в Graph Editor будет отображаться наименование и путь к контролируемому значению, кривая изменения значения и вкладка Drivers в N-панели.
Вкладка Drivers нас сейчас и интересует.
Для начала нужно настроить тип драйвера – регулируется параметром Type. Собственно тип драйвера – это формула, по которой драйвер вычисляет конченое выходное значение. Возможны несколько вариантов:
- Maximum Value – максимальное значение
- Minimum Value – минимальное значение
- Scripted Expression – значение, заданное выражением на скриптовом языке
- Sum Values – суммарное значение
- Average Values – среднее значение
Эти формулы, кроме Scripted Expression, нужны для того, чтобы драйвер мог обрабатывать одновременно несколько входных значений. Например, если положение одного объекта зависит от положения нескольких других объектов, через драйвер, обрабатывающий несколько входных значений местоположения, можно получить одно результирующее. Через тип Scripted Expression можно задавать выходные значения драйвера на скриптовом языке Pithon – этот тип используется, если не хватает возможностей других предопределенных типов.
В нашем случае входное значение одно – координата X источника освещения. Поэтому можно выбрать любой тип драйвера, кроме Scripted Expression. Например – Sum Values. Сумма одного числа всегда равна самому числу.
- Graph Editor
- в N-панели
- вкладка Drivers
- Type установить в Sum Values
- вкладка Drivers
- в N-панели
Далее обратим внимание на созданную по умолчанию переменную драйвера с именем var. Эта переменная собственно и есть то входное значение, которое обрабатывает драйвер. У нее также есть тип:
- Distance – расстояние между двумя объектами
- Rotation Difference – разница между углами поворота двух объектов
- Transform Channel – данные о положении объекта
- Single Property – значение параметра объекта, задаваемое через скриптовый язык
Все типы, кроме Single Property, используются для получения значений параметров, требующихся чаще всего. Как и в случае типа драйвера, через Single Property можно получить значение любого параметра объекта при помощи языка Pithon без ограничений. Нам нужно на входе драйвера получить координату X источника освещения. Поэтому используем тип Transform Channel.
В поле Object/Bone указывается объект – источник входного значения. В нашем случае – это плоскость освещения. В его типе нужно указать требуемую координату.
- Graph Editor
- в N-панели
- вкладка Drivers
- переменная var
- Type установить в Transform Channel
- В поле Object/Bone указать плоскость освещения
- Type установить в X Location
- переменная var
- нажать Update Dependencies – обновить зависимость, т.е. применить установленные значения
- вкладка Drivers
- в N-панели
Драйвер, связывающий координату X источника освещения планеты и значение нода Value для этой координаты в дереве нодов планеты, подключен и настроен. Если сейчас начать перемещать плоскость – источник освещения по координате X так, чтобы она была то с одной стороны планеты, то – с другой, можно заметить, что вслед за ее перемещениями меняется и расположение “дневной” и “ночной” текстур на сторонах планеты.
Таким же образом нужно настроить еще два драйвера на ноды Value для двух оставшихся координат.
- Клик правой кнопкой мышки на значении нода Value для координаты Y источника освещения
- Add Driver
- Выделить нод
- В Graph Editor
- Вкладка Drivers
- Type установить в Sum Values
- Для переменной var
- Type установить в Transform Channel
- В поле Object/Bone выбрать плоскость освещения
- Type установить в Y Location
- Нажать Update Dependencies
- Вкладка Drivers
- В Graph Editor
- Клик правой кнопкой мышки на значении нода Value для координаты Z источника освещения
- Add Driver
- Выделить нод
- В Graph Editor
- Вкладка Drivers
- Type установить в Sum Values
- Для переменной var
- Type установить в Transform Channel
- В поле Object/Bone выбрать плоскость освещения
- Type установить в Z Location
- Нажать Update Dependencies
- Вкладка Drivers
- В Graph Editor
Все три драйвера для трех координат источника освещения настроены. Теперь можно перемещать плоскость освещения в любую точку – “дневная” и “ночная” стороны планеты всегда будут расположены правильно.