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