Les modèles dans Minecraft sont codés en dur. Il n'y a aucune notion de hiérarchie de blocs (seulement une liste de blocs). Cela signifie que les animations sont effectuées de manière procédurale (de manière très basique) ou codées en dur avec interpolation.
Il existe quelques éditeurs pour les modèles Minecraft comme Techne ou FMCModeler qui permettent d'importer / exporter du code de modèle Minecraft pour les mods, mais ils ne prennent pas en charge les animations car il est probablement géré différemment pour chaque modèle.
Voici un exemple rapide généré avec FMCModeler:
//variables init:
public ModelRenderer box;
//constructor:
box = new ModelRenderer(0, 0);
box.addBox(0F, 0F, 0F, 16, 16, 16);
//render:
box.render(f5);
Une meilleure façon de le faire serait de construire un modeleur complet basé sur des blocs avec quelques notions de hiérarchie de blocs afin que vous puissiez animer les modèles avec des images clés et une interpolation.
Je suis en train de créer un outil de création de jeu multijoueur qui fait exactement cela (entre autres, http://craftstud.io/ ). Il permet déjà de créer des modèles texturés statiques complexes et d'autres sont en cours.
Voici un modèle complexe construit avec CraftStudio Comme vous pouvez le voir, les blocs sont disposés dans un arbre à droite:
Chaque bloc est sérialisé sur disque / sur le réseau avec les données suivantes:
- Identifiant unique
- ID du nœud parent
- Position (affecte les descendants)
- Échelle (affecte les descendants)
- Angle (affecte les descendants)
- Décalage par rapport au point de pivot
- Taille de bloc
- Décalage de texture de bloc (décalage des coordonnées UV pour la texturation)
Je prévois d'ajouter un support d'animation en stockant une carte avec des noms d'animation comme clé et une liste d'images clés comme valeur. Chaque image clé sera associée à un bloc et à une valeur à animer. Entre les images clés, les valeurs doivent être interpolées (soit linéairement pour la position, soit sphériquement pour les angles, recherchez lerp et slerp).