Автоматизация рендеринга в изометрии Blender

Я уже писал, как расположить камеры. Теперь опишу, как автоматизировать процесс рендеринга и создания спрайт-листов. Исходники прилагаются.




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




Придется сделать 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, либо вы можете попробовать скачать бинарники тут.
К сожалению, своей игрушкой я не занимался уже давно и потому после экспериментальной версии, код больше не редактировался.

Комментарии

Популярные сообщения из этого блога

Siege Up! Editor (beta)

STM32F4 и программный выход в DFU

Git и Yandex.Disk