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", {} } };
 |
|
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. |
|
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. :-/  |
|
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 :) |
|
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. :-) |
|
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. |
|
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. |
|
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:
Dla własnej postaci humanoidalnej można połączyć UniRig → HY-Motion → przeniesienie animacji na jej szkielet. github.com
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 |
|
| « 1 » 2 |