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?


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?


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


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.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.