Моделі 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 Як ви бачите, блоки розташовані в дереві праворуч:
Кожен блок серіалізується на диск / по мережі з такими даними:
- Унікальний ідентифікатор
- Ідентифікатор батьківського вузла
- Посада (впливає на нащадків)
- Шкала (впливає на нащадків)
- Кут (впливає на нащадків)
- Зсув від точки зсуву
- Розмір блоку
- Блок зміщення текстури (зміщення УФ координат для текстурування)
Планую додати підтримку анімації, зберігаючи карту з іменами анімації як ключовими та списком ключових кадрів як значення. Кожен ключовий кадр буде асоційований з блоком і значенням для анімації. Між ключовими кадрами значення повинні бути інтерпольовані (або лінійно для позиції, або сферично для кутів, пошук lerp та slerp).