Автоматизация рендеринга в изометрии Blender
Я уже писал, как расположить камеры. Теперь опишу, как автоматизировать
процесс рендеринга и создания спрайт-листов. Исходники прилагаются.
Допустим, имеется анимированный персонаж, вокруг него расставлены камеры, поставлен свет. Теперь для того, что бы получить не что вроде:
Придется сделать 100500 рендеров и день их склеивать ). Т.к. средств автоматизации я не нашел, заморочился со своими. Суть такова:
Объект игровой состоит из нескольких элементов, оружие, одежда, шапка, голова и прочее. Все эти объекты должны быть отрендерены отдельно, и, затем, должны накладываться друг на друга в определенной последовательности.
И так, мы помещаем все предметы, которые можно прицепить к нашему персонажу на сцену, цепляем их к скелету, группируем в группы (на случай, если предмет состоит из нескольких мешей). И пишем скрипт:
К сожалению, своей игрушкой я не занимался уже давно и потому после экспериментальной версии, код больше не редактировался.
Допустим, имеется анимированный персонаж, вокруг него расставлены камеры, поставлен свет. Теперь для того, что бы получить не что вроде:
Придется сделать 100500 рендеров и день их склеивать ). Т.к. средств автоматизации я не нашел, заморочился со своими. Суть такова:
Объект игровой состоит из нескольких элементов, оружие, одежда, шапка, голова и прочее. Все эти объекты должны быть отрендерены отдельно, и, затем, должны накладываться друг на друга в определенной последовательности.
И так, мы помещаем все предметы, которые можно прицепить к нашему персонажу на сцену, цепляем их к скелету, группируем в группы (на случай, если предмет состоит из нескольких мешей). И пишем скрипт:
import bpy;
import math;
cameras = ["SE","E","NE","N","NW","W","SW","S"]
path = "D:/Hobby/vkGame/sketches/game/test/"
bpy.data.scenes["Scene"].frame_current = 1;
STEP = 13
COUNT = 17
bpy.data.scenes["Scene"].camera = bpy.data.objects['SW'];
for object in bpy.data.groups['Group'].objects:
bpy.context.scene.objects.active = object
object.select = True
j = 0;
while j < 8:
i = 0
while i < COUNT:
# bpy.data.scenes["Scene"].camera = bpy.data.objects[camera]
bpy.data.scenes["Scene"].frame_current = i * STEP + 1
bpy.ops.render.render()
bpy.ops.render.view_show()
bpy.data.images['Render Result'].save_render(path + "/" + str(j) + "/" + str(i) + ".png")
i += 1
j += 1
bpy.ops.transform.rotate(value=-math.pi/4,constraint_axis=(False,False,True))
На выходе у нас каталоги для каждого объекта, в которых содержатся подкаталоги со
всеми рендереными анимациями, со всех направлений. После рендеринга склейкой занимается
программа, написанная на Qt. Исходники я выложил на git, тут же можно найти и готовую сцену для рендеринга, в каталоге "Script". Для компиляции программы, придется установить Qt, либо вы можете попробовать скачать бинарники тут.К сожалению, своей игрушкой я не занимался уже давно и потому после экспериментальной версии, код больше не редактировался.
Комментарии
Отправить комментарий