Blender: Часы, обновляющиеся в реальном времени

// You can find the English version of this tutorial here.

В данном коротком уроке я расскажу о том, как сделать часы, обновляющиеся в режиме реального времени. Пример на видео.

Часы «идут» без использования ключей анимации.

Понадобится:

0. Blender (1 шт.)

1. аддон Animation Nodes (1 шт.)

2. знания Python (хотя бы базовые)

Для начала создаём в Blender новую сцену. Кидаем пару объектов типа Text. Один называем «text_date». Второй — «text_time».

Теперь нужно написать скрипт на Python, который и будет обновлять дату/время. Это текстовый файл следующего содержания:

from datetime import datetime # подключаем модуль для работы с датой и временем
import bpy # модуль для взаимодействия Python с Blender

def time_update(): # функция, при запуске обновляющая дату и время
today = datetime.today()

if len(str(today.day)) == 2:
    dd = today.day
else:
   dd = '0'+str(today.day)

if len(str(today.month)) == 2:
   mm = today.month
else:
   mm = '0'+str(today.month)

yy = today.year

if len(str(today.hour)) == 2:
   h = today.hour
else:
   h = '0'+str(today.hour)

if len(str(today.minute)) == 2:
   m = today.minute
else:
   m = '0'+str(today.minute)

if len(str(today.second)) == 2:
   s = today.second
else:
   s = '0'+str(today.second)

bpy.data.scenes['Scene'].objects['text_date'].data.body = str(dd)+'.'+str(mm)+'.'+str(yy)
bpy.data.scenes['Scene'].objects['text_time'].data.body = str(h)+':'+str(m)+':'+str(s)

time_update() # запуск функции time_update()

Файл сохраняем под именем date_and_time_updater.py. Убедитесь, что название именно такое, потому что в windows, например, при попытке так назвать файл он будет назван date_and_time_updater.py.txt — во всяком случае, при использовании стандартного блокнота.

В Blender разбиваем экран на 3: нам нужны стандартный 3D-вьюпорт, текстовый редактор и редактор нодов.

В текстовом редакторе нажимаем Open и открываем созданный ранее скрипт. Чтобы он запускался автоматически после запуска сцены — включаем флажок Register на этой же панели.

Если нажать кнопку Run Script — в Text'ах установятся текущие дата и время. Поскольку включена опция Register, дата и время будут устанавливаться на текущие автоматически при каждом открытии файла со сценой.

Теперь сделаем так, чтоб время и дата обновлялись в режиме реального времени. Для этого понадобится аддон Animation Nodes.

Если аддон правильно установлен, в редакторе нодов появляется новая вкладка:

Выбираем её, нажимаем кнопку New.

Добавляем нод Subprograms → Script.

В качестве скрипта выбираем ранее созданный файл. Имя «My Script» для удобства лучше заменить на что-то другое.

Добавляем второй нод — Subprograms → Invoke Subprogram. Blender предложит сразу добавить этот нод, связанный с нашим скриптом:

После этого часы заработают.

Автор: Денис Скиба aka Mapper720

21.08.2018



Blender: Часы, обновляющиеся в реальном времени
Blender: Часы, обновляющиеся в реальном времени

// You can find the English version of this tutorial here.

В данном коротком уроке я расскажу о том, как сделать часы, обновляющиеся в режиме реального времени. Пример на видео.

Часы «идут» без использования ключей анимации.

Понадобится:

0. Blender (1 шт.)

1. аддон Animation Nodes (1 шт.)

2. знания Python (хотя бы базовые)

Для начала создаём в Blender новую сцену. Кидаем пару объектов типа Text. Один называем «text_date». Второй — «text_time».

Теперь нужно написать скрипт на Python, который и будет обновлять дату/время. Это текстовый файл следующего содержания:

from datetime import datetime # подключаем модуль для работы с датой и временем
import bpy # модуль для взаимодействия Python с Blender

def time_update(): # функция, при запуске обновляющая дату и время
today = datetime.today()

if len(str(today.day)) == 2:
    dd = today.day
else:
   dd = '0'+str(today.day)

if len(str(today.month)) == 2:
   mm = today.month
else:
   mm = '0'+str(today.month)

yy = today.year

if len(str(today.hour)) == 2:
   h = today.hour
else:
   h = '0'+str(today.hour)

if len(str(today.minute)) == 2:
   m = today.minute
else:
   m = '0'+str(today.minute)

if len(str(today.second)) == 2:
   s = today.second
else:
   s = '0'+str(today.second)

bpy.data.scenes['Scene'].objects['text_date'].data.body = str(dd)+'.'+str(mm)+'.'+str(yy)
bpy.data.scenes['Scene'].objects['text_time'].data.body = str(h)+':'+str(m)+':'+str(s)

time_update() # запуск функции time_update()

Файл сохраняем под именем date_and_time_updater.py. Убедитесь, что название именно такое, потому что в windows, например, при попытке так назвать файл он будет назван date_and_time_updater.py.txt — во всяком случае, при использовании стандартного блокнота.

В Blender разбиваем экран на 3: нам нужны стандартный 3D-вьюпорт, текстовый редактор и редактор нодов.

В текстовом редакторе нажимаем Open и открываем созданный ранее скрипт. Чтобы он запускался автоматически после запуска сцены — включаем флажок Register на этой же панели.

Если нажать кнопку Run Script — в Text'ах установятся текущие дата и время. Поскольку включена опция Register, дата и время будут устанавливаться на текущие автоматически при каждом открытии файла со сценой.

Теперь сделаем так, чтоб время и дата обновлялись в режиме реального времени. Для этого понадобится аддон Animation Nodes.

Если аддон правильно установлен, в редакторе нодов появляется новая вкладка:

Выбираем её, нажимаем кнопку New.

Добавляем нод Subprograms → Script.

В качестве скрипта выбираем ранее созданный файл. Имя «My Script» для удобства лучше заменить на что-то другое.

Добавляем второй нод — Subprograms → Invoke Subprogram. Blender предложит сразу добавить этот нод, связанный с нашим скриптом:

После этого часы заработают.

Автор: Денис Скиба aka Mapper720

21.08.2018