Модели в Minecraft жестко запрограммированы. Не существует понятия иерархии блоков (только список блоков). Это означает, что анимация выполняется либо процедурно (очень простым способом), либо жестко закодированными значениями с интерполяцией.
Существует несколько редакторов для моделей Minecraft, таких как Techne или FMCModeler, которые позволяют импортировать / экспортировать код модели Minecraft для модов, но они не поддерживают анимацию, поскольку она, вероятно, обрабатывается по-разному для каждой модели.
Вот быстрый пример, созданный с помощью FMCModeler:
//variables init:
public ModelRenderer box;
//constructor:
box = new ModelRenderer(0, 0);
box.addBox(0F, 0F, 0F, 16, 16, 16);
//render:
box.render(f5);
Лучший способ сделать это - создать полностью основанный на блоках моделер с некоторыми понятиями иерархии блоков, чтобы вы могли анимировать модели с помощью ключевых кадров и интерполяции.
В настоящее время я создаю инструмент для создания многопользовательских игр, который делает именно это (среди прочего, http://craftstud.io/ ). Это уже позволяет создавать сложные статические текстурированные модели и многое другое находится в пути.
Вот сложная модель, построенная с помощью CraftStudio. Как видите, блоки расположены в виде дерева справа:
Каждый блок сериализуется на диск / по сети со следующими данными:
- Уникальный идентификатор
- ID родительского узла
- Положение (влияет на потомков)
- Масштаб (влияет на потомков)
- Угол (влияет на потомков)
- Смещение от точки поворота
- Размер блока
- Смещение текстуры блока (смещение координат UV для текстурирования)
Я планирую добавить поддержку анимации, сохранив карту с названиями анимаций в качестве ключа и списком ключевых кадров в качестве значения. Каждый ключевой кадр будет связан с блоком и значением для анимации. Между ключевыми кадрами значения должны быть интерполированы (линейно для положения или сферически для углов, поиск lerp и slerp).