Modele w Minecraft są zakodowane na stałe. Nie ma pojęcia hierarchii bloków (tylko lista bloków). Oznacza to, że animacje są wykonywane proceduralnie (w bardzo prosty sposób) lub na stałe zakodowane z interpolacją.
Istnieje kilka edytorów dla modeli Minecraft, takich jak Techne lub FMCModeler, które umożliwiają importowanie / eksportowanie kodu modelu Minecraft dla modów, ale nie obsługują animacji, ponieważ prawdopodobnie jest obsługiwany inaczej dla każdego modelu.
Oto krótka próbka wygenerowana za pomocą FMCModeler:
//variables init:
public ModelRenderer box;
//constructor:
box = new ModelRenderer(0, 0);
box.addBox(0F, 0F, 0F, 16, 16, 16);
//render:
box.render(f5);
Lepszym sposobem na to byłoby zbudowanie pełnego modelera blokowego z pewnymi pojęciami hierarchii bloków, aby można było animować modele za pomocą klatek kluczowych i interpolacji.
Obecnie buduję narzędzie do budowania gier wieloosobowych, które właśnie to robi (między innymi http://craftstud.io/ ). Pozwala już na budowanie złożonych modeli z teksturą statyczną, a kolejne są w drodze.
Oto złożony model zbudowany za pomocą CraftStudio Jak widać, bloki są ułożone w drzewie po prawej stronie:
Każdy blok jest szeregowany na dysk / przez sieć z następującymi danymi:
- Unikalny identyfikator
- Identyfikator węzła nadrzędnego
- Pozycja (wpływa na potomków)
- Skala (dotyczy potomków)
- Kąt (dotyczy potomków)
- Przesunięcie od punktu obrotu
- Rozmiar bloku
- Blokowanie przesunięcia tekstury (przesunięcie współrzędnych UV dla teksturowania)
Planuję dodać obsługę animacji, przechowując mapę z nazwami animacji jako kluczem i listą klatek kluczowych jako wartością. Każda klatka kluczowa zostanie powiązana z blokiem i wartością do animacji. Pomiędzy klatkami kluczowymi wartości należy interpolować (liniowo dla pozycji lub sferycznie dla kątów, szukaj lerp i slerp).