Обратный отсчет текстом

В Blender Geometry Nodes есть ряд нод для работы с текстовыми строками. Среди них есть ноды, позволяющие преобразовывать число в текст, а так же заменять в текстовой строке подстроки. Для примера реализуем “обратный отсчет” от десяти до нуля словами.

Добавим в начальную сцену куб, назначим ему модификатор Geometry Nodes и инициализируем стартовое дерево нод.

Добавим нод Value to String (shift + a – Text – Value to String) и нод String to Curves (shift + a – Text – String to Curves). Подсоединим их в главную ветку нодового дерева.

Число из поля Value нода Value to String преобразуется в текст, в формате кривых, и выводится в сцену.

Для того чтобы сделать “обратный отсчет”, нам нужно два исходных числа. Во-первых – общее количество фреймов на шкале времени, чтобы привести его к диапазону от десяти до нуля. А во-вторых – номер текущего фрейма, чтобы получить текущее показываемого число из этого диапазона.

Нода для получения общего количества фреймов в Geometry Nodes нет, однако мы легко можем получить его через драйвер.

Откроем N-панель, вкладку Group в окне Geometry Nodes. Во входной группе, нажатием на кнопку с плюсиком добавим новое поле и назовем его “frame_end”.

В панели модификатора в появившемся поле введем ссылку на свойство сцены, в котором хранится количество кадров таймлана. Впереди нужно обязательно поставить значок “#”:

Так мы сразу создаем драйвер и связываем его с нужным нам свойством сцены.

Если соединить появившийся выход frame_end нода Group Output со входом Value нода Value to String мы увидим отображение числа фреймов таймлайна в нашем объекте в сцене.

Чтобы сделать “обратный отсчет” от десяти до нуля, нам нужно разбить имеющиеся фреймы таймлана на десять промежутков.

Добавим нод Math (shift + a – Utilities – Math) и переключим его в режим деления Divide. Вставим его после нода Group Output. В оставшееся свободным нижнее поле введем значение 10.

На выходе этого нода мы получаем количество фреймов в промежутке.

Если номер текущего фрейма поделить на полученное значение, мы получим в каком промежутке сейчас находится курсор таймлайна.

Текущий фрейм можно получить при помощи нода Scene Time (shift + a – Input – Scene Time).

Добавим еще один нод Math (shift + a – Utilities – Math) в режиме Divide. На его верхний вход Value подадим значение с выхода Frame нода System Time а на нижний – результат с предыдущего нода Divide.

Подвигав курсор на таймлане можно убедиться, что значение нашего отсчета меняется от 0 до 10.

Для того чтобы оно менялось в обратном направлении от десяти до нуля, добавим еще один нод Math (shift + a – Utilities – Math) в режиме вычитания Subtract сразу после второго нода деления.

В его верхнем поле Value укажем значение 10, а нижнее соединим с результатом последнего деления.

Теперь отображаемое значение меняется от десяти до нуля, как нам и нужно.

Теперь нам осталось превратить числа в текст.

Добавим нод Replace String (shift + a – Text – Replace String) и вставим его сразу за нодом Value to String.

В верхнем поле нужно указать какой именно текст будет заменяться. Введем в это поле 10 (в данном случае это строка из двух символов, единицы и нуля).

В нижнем поле нужно указать на что будет заменена строка из верхнего поля. Введем в него строчку TEN.

Добавим последовательно еще девять таких же нодов, для замены каждого числа от девяти до нуля в текст.

Теперь, прогоняя кадры таймлайна, мы видим “обратный отсчет” словами, а не числами.

Для того чтобы буквы были видны при рендере добавим после нода String to Curve нод Fill Curve (shift + a – Curve – Fill Curve) и нод Set Material (shift + a – Material – Set Material). И назначьте подходящий материал.

Теперь можно запустить анимацию на выполнение нажатием на клавишу пробел.

0 0 голоса
Article Rating
Подписаться
Уведомить о
guest

0 Комментарий
Межтекстовые Отзывы
Посмотреть все комментарии