Как вы добавляете временную зависимость в шейдерных узлах блендера? - PullRequest
0 голосов
/ 10 декабря 2018

В GLSL есть атрибут gl_Time.
Что является эквивалентным в узлах цилиндров блендера?Я нашел использование ключевых кадров, чтобы быть ответом, но я должен был бы установить ключевые кадры для сотен кадров на руку (кадр 1: значение = 1; кадр 2 = значение = 2; ...)
Там должно бытьлучший способ сделать прокрутку текстуры поверх чего-либо.

1 Ответ

0 голосов
/ 28 декабря 2018

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

Драйверы позволяют программно анимировать значение с помощью Pythonexpression.

В дереве узлов вы можете добавить узел ввода значения и установить драйвер для значения.Ярлык для ввода выражения состоит в том, чтобы отредактировать значение и ввести выражение после #.Введя #frame в поле значения, вы получите драйвер, равный текущему номеру кадра.

Обратите внимание, что при использовании драйверов в дереве узлов возникают проблемы с зависимостями.Хотя это было исправлено в 2.80, при использовании более старой версии вы должны включить новый граф зависимостей с параметром --enable-new-depsgraph CLI .

Существует также возможность использования сценария длясоздать ключевые кадры с вычисленным значением.

import bpy

scn = bpy.context.scene
node = bpy.context.object.material_slots['Material'].material.node_tree.nodes['Value']

for f in range(scn.frame_start, scn.frame_end):
    node.outputs[0].default_value = f * 1.25
    node.outputs[0].keyframe_insert("default_value", frame=f)
...