Czy animacje Minecraft są na stałe zapisane w grze? [Zamknięte]

12

Chciałbym wiedzieć, jak działa system animacji w Minecrafcie. Mam wrażenie, że wszystkie moby są zakodowane na stałe w grze. Czy wycięcie tak naprawdę tam siedziało i ręcznie tworzyło matryce dla wszystkich kości animacji?

Lubię odtwarzać gry dla zabawy, więc chciałbym wiedzieć, jak to zrobił. Ponadto, jeśli naprawdę je koduje na stałe ... czy jest lepszy sposób?

radenon
źródło
2
jak myślisz, dlaczego miał na stałe animacje?
Ali1S232,
Wydaje się, że na to pytanie odpowiada tylko Notch.
MichaelHouse
9
Co więcej, dlaczego obchodzi cię, jak to zrobiło Minecraft? Czy masz pomysł, jak to zrobić w inny sposób?
Tetrad
1
minecraftforum.net/topic/361430-181smp-smart-moving Producent tego modu może mieć dla ciebie odpowiedź, ale animacja nie jest obszarem kodu minecrafta, który wcześniej przeglądałem.
James
1
Wcześniej przejrzałem kod MCP i jestem w 99% pewien, że pamiętam, jak widziałem animacje na stałe. Jednak nie mam już Minecrafta (ani nawet Eclipse) do sprawdzenia.
BlueRaja - Danny Pflughoeft

Odpowiedzi:

18

Jak powiedzieli inni, tak, modele i animacje są zakodowane na stałe. Jeśli chcesz zobaczyć, jak to się stało, przejdź do wiki Minecraft Coder Pack .

Pakiet został stworzony, aby pomóc twórcom modów w dekompilacji, zmianie i ponownej kompilacji klas Minecraft. Instrukcje znajdują się w plikach readme dołączonych do pakietu. Pakiet zawiera skrypty do dekompilacji, ponownej kompilacji i ponownej aktualizacji gry i serwera.

Klasy, które chcesz obejrzeć, to: ModelBase, ModelBiped i ModelRenderer.

ModelBiped zawiera następujące funkcje, które wykonują animacje humanoidalne:

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;
    ...
}

Huśtawki ramion są po prostu funkcjami cosinus. Prawa ręka jest przesunięta przez PI, aby kołysały się w przeciwnych kierunkach.

wykres wahań ramion

Mam nadzieję, że to odpowiada na twoje pytanie =)


Jeśli chcesz uzyskać więcej informacji o tym, jak faktycznie zmodyfikować Minecraft, sprawdź to pytanie:

Jak dodać niestandardowy mob do Minecraft?

zfedoran
źródło
Siostro! Rotacja euklidesowa :(.
Jonathan Dickinson
8

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

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

Elisée
źródło
0

Modele bloków Minecraft w rzeczywistości nie są zakodowane w grze od wersji 1.8 i można je edytować przy użyciu pakietów zasobów. System modelowania JSON jest dość łatwy do zrozumienia, a modele istnieją w katalogu / models / block. Następnie możesz spojrzeć na kod, aby zobaczyć, jak interpretuje modele JSON.

Rurowy
źródło