Le animazioni di Minecraft sono codificate nel gioco? [chiuso]


12

Vorrei sapere come funziona il sistema di animazione in Minecraft. Ho la sensazione che tutti i mob siano codificati nel gioco. Notch si è davvero seduto lì e ha creato le matrici per tutte le ossa dell'animazione a mano?

Mi piace ricreare i giochi per divertimento, quindi vorrei sapere come ha fatto. Inoltre, se li codifica davvero ... c'è un modo migliore?


2
perché pensi che possa avere animazioni hardcoded?
Ali1S232,

Sembra che questa domanda sia solo rispondente a Notch.
MichaelHouse

9
Più precisamente, perché ti interessa come ha fatto Minecraft? Hai un'idea su come realizzare la stessa cosa in qualche altro modo?
Tetrad,

1
minecraftforum.net/topic/361430-181smp-smart-moving Il creatore di questa mod potrebbe avere una risposta per te ma l'animazione non è un'area del codice di Minecraft che ho esaminato prima.
James,

1
Ho già esaminato il codice MCP e sono sicuro al 99% di ricordare di aver visto le animazioni codificate. Tuttavia, non ho più Minecraft (o Eclipse) da controllare.
BlueRaja - Danny Pflughoeft,

Risposte:


18

Come altri hanno già detto, sì, i modelli e le animazioni sono codificati. Se vuoi vedere come è stato fatto, vai al wiki di Minecraft Coder Pack .

Il pacchetto è stato creato per aiutare i creatori di mod a decompilare, modificare e ricompilare le classi di Minecraft. Le istruzioni sono incluse nei file Leggimi forniti con il pacchetto. Il pacchetto contiene script per decompilare, ricompilare e riapplicare il gioco e il server.

Le classi che vorrai guardare sono: ModelBase, ModelBiped e ModelRenderer.

ModelBiped contiene le seguenti funzioni che eseguono le animazioni umanoidi:

public void render(Entity entity, float time, float f1, ...)
{
    setRotationAngles(time, f1, ...);
    ...
}

public void setRotationAngles(float time, float f1, ...)
{
    ...
    bipedRightArm.rotateAngleX = MathHelper.cos(time * 0.6662F + 3.141593F) * 2.0F * f1 * 0.5F;
    bipedLeftArm.rotateAngleX = MathHelper.cos(time * 0.6662F) * 2.0F * f1 * 0.5F;
    ...
}

Le oscillazioni del braccio sono semplicemente funzioni del coseno. Il braccio destro è sfalsato da PI per farli oscillare in direzioni opposte.

grafico delle oscillazioni del braccio

Spero che risponda alla tua domanda =)


Se desideri maggiori informazioni su come modificare effettivamente Minecraft, dai un'occhiata a questa domanda:

Come faccio ad aggiungere un mob personalizzato a Minecraft?


Sis! Rotazione euclidea :(.
Jonathan Dickinson,

8

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: http://i.stack.imgur.com/FRQeV.png

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).


0

I modelli di blocchi di Minecraft non sono effettivamente codificati nel gioco a partire dall'1.8 e possono essere modificati usando i pacchetti di risorse. Il sistema di modellazione JSON è abbastanza facile da capire e i modelli esistono in / models / block. È quindi possibile guardare il codice per vedere come interpreta i modelli JSON.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.