Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Animacja Szkieletowa Pixel Art

Ostatnio zmodyfikowano 2026-10-20 22:49
Autor Wiadomość
tBane
Temat założony przez niniejszego użytkownika
Animacja Szkieletowa Pixel Art
» 2026-10-18 15:20:09
Cześć.
Tworzę Edytor do tworzenia gier 2D RPG, i utknąłęm na generowaniu NPC z części. Myślałem, żeby zrobić sprajtsheety ale dla paru kombinacji wychodzi mi ponad 500 zestawów. Nie jestem w stanie tego wszystkiego sam narysować - stąd pomysł, żeby zrobić animację szkieletową.
Da się to sensownie zrobić w pixel arcie w SFML 3.1?
Chciałbym dodac przynajniej z 10-15 zbroi, tyle samo spodni, rękawów i hełmów, no i dochodzą jeszcze animacje idle, walk, attack. A sprajty postaci miałby 48x64px.


std::vector<std::wstring> animations = { L"idle", L"walk", L"attack"};

std::vector<std::wstring> commonParts = {
    L"legs",
    L"pants_01", L"pants_02", L"pants_03",
   
    L"torso",
    L"armor_01", L"armor_02", L"armor_03",
   
    L"left_arm",
    L"left_sleeve_01", L"left_sleeve_02", L"left_sleeve_03",
   
    L"right_arm",
    L"right_sleeve_01", L"right_sleeve_02", L"right_sleeve_03",
   
    L"head_01", L"head_02",
    L"helmet_01", L"helmet_02", L"helmet_03"
};

std::vector<CharacterSet> sets = {
    { L"empty", {} },
    { L"1h", { L"weapon", L"shield" } },
    { L"2h", { L"weapon" } },
    { L"spire", { L"weapon" } },
    { L"bow", { L"weapon" } },
    { L"magic_single", {} },
    { L"magic_area", {} },
    { L"magic_buff", {} }
};

P-184768
pekfos
» 2026-10-18 17:57:59
Da się to sensownie zrobić w pixel arcie w SFML 3.1?
To zależy co rozumiesz przez pixel art. Czy to wciąż pixel art, jeżeli masz dość rozdzielczości żeby wygładzać i deformować "piksele"? Stary pixel art przy minimalnej rozdzielczości to była sztuka, bo trzeba było świadomie decydować o większości pikseli, by efekt był właściwy. Automat by tego nie ogarnął, teraz pewnie też nie, ale możesz uciec w większą rozdzielczość i trochę pooszukiawć ;)

Myślałem, żeby zrobić sprajtsheety ale dla paru kombinacji wychodzi mi ponad 500 zestawów
Nie ma sensu, zajedziesz się na robieniu grafik. Jeżeli założyć że kształt postaci się nie zmienia, niezależnie od tego co ma na sobie, można zrobić 1 spritesheet i kolorami oznaczać co ma być podmienione na co. Tak zdaje się było zrobione kiedyś w Tibii personalizowanie postaci. Jeżeli kształt się zmienia, to robi się problem z tym co kiedy ma na siebie nachodzić. Tu ma sens robić animację szkieletową i na wierzchu postaci rysować elementy ekwipunku. Skoro masz rozdzielczość do "oszukiwania", rób transformacje afiniczne na tych sprajtach ekwipunku, w szczególności obroty (np machanie rękami/nogami w widoku z boku). Animacja szkieletowa da informacje potrzebne by to zrobić. Jest też szczególny przypadek, gdy ekwipunek tułowia i rąk na siebie nachodzą, trzeba wtedy zadbać o to by się rysowały we właściwej kolejności.

Opcja najbardziej uniwersalna: 3D (w 2D), czyli zamodeluj postać w 3D, z "pixel artowymi" teksturami, zrób animacje szkieletowe w 3D i po prostu wyrenderuj spritesheety w 2D i używaj ich. Możesz sobie wtedy pozwolić na więcej kątów widzenia postaci niż tylko 4 główne kierunki. Sporo gier miało 8 kierunków, chociaż grafiki były robione ręcznie. Najlepiej renderować spritesheety na żądanie, bo nie musisz wtedy przechowywać nie wiadomo ilu kombinacji. To prostsza integracja niż przejście na pełne renderowanie 3D.
P-184770
tBane
Temat założony przez niniejszego użytkownika
» 2026-10-18 20:08:24
Przede Wszystkim - dziękuję za tak sporą odpowiedź :-) Mhm.. może 3D to faktycznie rozwiązanie.. Zacząłem trochę przepisywać kod i jak na razie udało mi się renderować sześcian 3D na mapie zbudowanej z sf::VertexArray. Zastanawiam się czy nie przepisać wszystkiego do 3D ... Tylko jeszcze nie umiem w 3D za bardzo, trochę po omacku. No i nie potrafię tworzyć modeli - tym bardziej z animacjami. :-/

P-184771
DejaVu
» 2026-10-20 19:15:34
Ja robię sobie eksperyment z generowaniem tilesetów z modelu 3D z animacją szkieletową - wybieram kąt nachylenia kamery, kierunki i ilość klatek/s. Prace równoległe przy innych projektach, bo co i rusz coś ciekawego wychodzi :)
P-184793
tBane
Temat założony przez niniejszego użytkownika
» 2026-10-20 20:39:05
Spoko opcja, tylko dla wielu kombinacji  różnych części equipmentu powstaną tysiące spritesheetów. :-/ chciałbym zrobić to w w ten sposób, że model byłby animowany 3D, następnie nałożyć efekt pikselizacji i outlline czarny. Jutro będę próbował załadować ten model glb co go podesłałeś ostatnio. :-)
P-184795
DejaVu
» 2026-10-20 22:38:02
Jutro może Ci wygeneruję nowszy model z lepszym szkieletem, animacjami i teksturami, bo nad tym też pracowałem.

A co do broni... to też doszedłem do punktu w którym zacząłem się zastanawiać 'jak ogarniać bronie w grze ze sprajtami' ale na razie nie ciągnąłem tego tematu do przodu. Może to jedno z ważniejszych ograniczeń gier tilesowych. Kwestia też ile animacji potrzebnych jest w grze.
P-184796
tBane
Temat założony przez niniejszego użytkownika
» 2026-10-20 22:40:48
A masz może jakiś algorytm na niestandardowe szkielety? :-)

Trzy animacje... Idle, walk, attack.
P-184797
DejaVu
» 2026-10-20 22:41:53
Nie - ponoć jest jakiś model LLM który ogarnia niestandardowe szkielety.

/edit: ChatGPT:

Do animowania modeli 3D warto sprawdzić cztery rozwiązania:

Rozwiązanie Do czego służy
HY-Motion 1.0 Generuje ruch humanoida z opisu tekstowego. Animację trzeba następnie przenieść na szkielet własnej postaci.
UniRig Automatycznie tworzy szkielet i wagi deformacji dla różnych modeli 3D. Przygotowuje model do animowania, ale sam nie generuje ruchu.

Dla własnej postaci humanoidalnej można połączyć UniRig → HY-Motion → przeniesienie animacji na jej szkielet. github.com

Rozwiązanie Do czego służy
AnimateAnyMesh Animuje statyczny model GLB na podstawie tekstu, bez wcześniejszego przygotowania szkieletu. Obsługuje różne typy obiektów, oferuje eksport FBX/ABC; kod i wagi są dostępne na Apache 2.0.
Puppeteer Automatycznie tworzy szkielet i wagi, a następnie animuje model na podstawie filmu referencyjnego. Dostępne są kod i checkpointy.

Najbliżej rozwiązania „wrzucam dowolny model i opisuję ruch” jest AnimateAnyMesh, choć jakość bywa zmienna i może wymagać kilku prób z różnymi promptami i seedami. Puppeteer pasuje do animowania według filmu. github.com

P-184798
« 1 » 2
  Strona 1 z 2 Następna strona