I modelli in Minecraft sono codificati. Non esiste una nozione di gerarchia di blocchi (solo un elenco di blocchi). Ciò significa che le animazioni vengono eseguite proceduralmente (in modo molto semplice) o valori codificati con interpolazione.
Ci sono alcuni editor per i modelli Minecraft come Techne o FMCModeler che consentono di importare / esportare il codice del modello Minecraft per le mod, ma non supportano le animazioni poiché è probabilmente gestito in modo diverso per ciascun modello.
Ecco un breve esempio generato con FMCModeler:
//variables init:
public ModelRenderer box;
//constructor:
box = new ModelRenderer(0, 0);
box.addBox(0F, 0F, 0F, 16, 16, 16);
//render:
box.render(f5);
Un modo migliore per farlo sarebbe quello di costruire un modellatore completo basato su blocchi con alcune nozioni di gerarchia dei blocchi in modo da poter animare i modelli con fotogrammi chiave e interpolazione.
Attualmente sto costruendo uno strumento di costruzione di giochi multiplayer che fa proprio questo (tra le altre cose, http://craftstud.io/ ). Permette già di costruire modelli strutturati statici complessi e altro è in arrivo.
Ecco un modello complesso creato con CraftStudio Come puoi vedere, i blocchi sono disposti in un albero sulla destra:
Ogni blocco è serializzato su disco / sulla rete con i seguenti dati:
- ID univoco
- ID nodo padre
- Posizione (interessa i discendenti)
- Scala (influisce sui discendenti)
- Angolo (influenza i discendenti)
- Offset dal punto di articolazione
- Misura del blocco
- Offset trama blocco (offset coordinate UV per la trama)
Ho intenzione di aggiungere il supporto per l'animazione memorizzando una mappa con i nomi delle animazioni come chiave e un elenco di fotogrammi chiave come valore. Ogni fotogramma chiave verrà associato a un blocco e un valore da animare. Tra i fotogrammi chiave, i valori devono essere interpolati (in modo lineare per la posizione o sfericamente per gli angoli, cercare lerp e slerp).