💥 Fizyka ragdoll
Interaktywna fizyka ragdoll 2D z całkowaniem Verleta i więzami odległości. Przeciągnij dowolną część ciała, by rzucić postacią. Reguluj grawitację, tłumienie, liczbę iteracji więzów i sprężystość. Platformy tworzą dynamiczną arenę.
🤸 Fizyka ragdoll — całkowanie Verleta
Symulacja fizyki ragdoll 2D wykorzystująca całkowanie Verleta i więzy odległości. Obserwuj, jak przegubowa postać upada, odbija się od platform i reaguje na przeciąganie — wszystko bez jawnego przechowywania prędkości.
🔬 Co pokazuje
Całkowanie Verleta przechowuje pozycję i poprzednią pozycję zamiast prędkości. Iteracyjny solver więzów wymusza kości o stałej długości i ograniczenia kątowe w każdym stawie. Rezultatem jest stabilny, realistyczny ruch ragdolla przy minimalnej ilości kodu.
🎮 Jak korzystać
Kliknij i przeciągnij dowolną część ciała, by rzucić ragdollem. Obserwuj, jak wchodzi w interakcję z platformami. Zwróć uwagę, jak więzy odległości utrzymują kończyny o stałej długości, jednocześnie pozwalając na naturalną artykulację stawów.
💡 Czy wiesz, że?
Fizykę ragdoll opartą na Verlecie spopularyzował Thomas Jakobsen w swoim wystąpieniu na GDC w 2001 roku. Technika ta jest wciąż używana we współczesnych grach — Hitman, Gang Beasts i Happy Wheels korzystają z systemów ragdoll opartych na Verlecie.
O fizyce ragdoll
Ta symulacja modeluje przegubową postać 2D jako 16 punktów masy połączonych „kośćmi” o stałej długości. Używa całkowania Verleta, w którym prędkość każdego punktu wynika z różnicy między jego bieżącą a poprzednią pozycją, zamiast być przechowywana jawnie: x ← x + (x − x_poprzednie) × tłumienie + grawitacja. Po każdym kroku całkowania iteracyjny solver wielokrotnie wymusza spełnienie każdego więzu odległości, dając stabilny, realistyczny ruch kończyn przy bardzo małej ilości kodu.
Suwak Grawitacja skaluje przyspieszenie w dół stosowane w każdym podkroku, Tłumienie odprowadza prędkość dla stabilności, Iteracje więzów ustala, ile razy solver przechodzi przez każdą kość na klatkę (więcej przebiegów oznacza sztywniejsze kości), a Sprężystość kontroluje, ile energii przetrwa uderzenie w ścianę lub platformę. Przeciągnij dowolny staw, by rzucić postacią, albo naciśnij Drop, by upuścić ją w powietrzu. Ragdolle Verleta to podstawowy element fizyki gier czasu rzeczywistego dla postaci, tkanin i lin.
Najczęściej zadawane pytania
Czym jest fizyka ragdoll?
Fizyka ragdoll to technika animowania ciała postaci jako układu połączonych sztywnych segmentów sterowanych przez solver fizyczny, a nie przez wcześniej nagraną animację. Tutaj ciało to 16 stawów (głowa, szyja, klatka piersiowa, biodro, dwie ręce i dwie nogi) połączonych więzami odległości, dzięki czemu naturalnie się zapada i reaguje na siły oraz kolizje.
Czym jest całkowanie Verleta i dlaczego jest tu używane?
Całkowanie Verleta przesuwa punkt na podstawie jego bieżącej i poprzedniej pozycji zamiast jawnego wektora prędkości. Wynikowa prędkość to po prostu (bieżąca − poprzednia). Dzięki temu metoda jest numerycznie stabilna, przyjazna dla energii i bardzo wygodna przy rozwiązywaniu więzów, ponieważ punkty można przesuwać bezpośrednio, by spełnić więz, a kolejny krok automatycznie uwzględnia zmianę wynikowej prędkości.
Jak więzy odległości utrzymują ciało w całości?
Każda „kość” przechowuje długość spoczynkową zmierzoną przy budowie ragdolla. Przy każdym przebiegu solvera mierzy on bieżącą odległość między dwoma końcami i przesuwa je wzdłuż łączącej linii tak, by odległość wróciła do wartości spoczynkowej, dzieląc korektę równo między niezakotwiczone punkty. Powtarzanie tego dla wszystkich kości wiele razy na klatkę utrzymuje sztywność kości.
Co właściwie zmieniają cztery suwaki fizyki?
Grawitacja skaluje siłę ciągnącą w dół na każdy podkrok (etykieta pokazuje 0–30, wewnętrznie mnożone przez 0,04). Tłumienie (0,90–1,00) mnoży wynikową prędkość w każdym kroku, więc niższe wartości szybciej uspokajają postać. Iteracje więzów (2–20) ustalają, ile przebiegów solvera wykonuje się na klatkę, zwiększając sztywność kości. Sprężystość (0–0,9) to część prędkości odbita przy uderzeniu w ścianę lub platformę.
Dlaczego zwiększenie liczby iteracji więzów usztywnia ragdolla?
Pojedynczy przebieg więzów tylko częściowo koryguje każdą kość, a korekta jednej kości może zaburzyć sąsiednią. Więcej iteracji pozwala solverowi zbliżyć się do konfiguracji, w której wszystkie więzy odległości są spełnione jednocześnie. Przy niewielu iteracjach ciało wygląda gumowo i rozciągliwie; przy wielu zachowuje się jak sztywne kości. Kosztem jest więcej obliczeń na klatkę.
Jak ragdoll zderza się z podłożem i platformami?
Każdy punkt jest sprawdzany względem krawędzi płótna oraz prostokątnych platform po całkowaniu. Jeśli punkt wnika w powierzchnię, zostaje cofnięty do granicy, a jego poprzednia pozycja jest korygowana tak, by wynikowa prędkość odwróciła kierunek i została przeskalowana wartością Sprężystości. Ta prosta reakcja oparta na pozycji daje wiarygodne odbicia bez pełnego systemu impulsów kolizyjnych.
Jaką rolę pełnią podkroki i stała SUB?
Pętla wykonuje trzy podkroki na każdą wyświetlaną klatkę. Podział klatki na mniejsze kroki całkowania zmniejsza odległość, jaką punkty pokonują między rozwiązaniami więzów, co poprawia stabilność i zapobiega przenikaniu szybko poruszających się kończyn przez ściany. Grawitacja stosowana w każdym podkroku jest dzielona przez liczbę podkroków, więc ogólne przyspieszenie pozostaje spójne niezależnie od podziału na podkroki.
Co oznaczają wskazania w panelu Stats?
Prędkość głowy pokazuje wielkość wynikowej prędkości stawu głowy w pikselach na klatkę, dzięki czemu widać, jak energiczny jest ruch. Błąd więzów sumuje bezwzględne odchylenie długości we wszystkich kościach, wskazując, jak daleko solver jest od idealnego rozwiązania. Iteracje solvera pokazują liczbę iteracji pomnożoną przez liczbę podkroków, czyli łączną liczbę przebiegów więzów stosowanych w każdej klatce.
Czy to jest fizycznie dokładne?
To jakościowe przybliżenie oparte na pozycji, a nie rygorystyczna symulacja brył sztywnych. Używa dowolnych jednostek pikselowych, pomija prawdziwą masę, moment bezwładności i tarcie, a kolizje rozwiązuje przez bezpośrednie przesunięcie pozycji. Zachowanie jest przekonująco realistyczne i świetnie nadaje się do nauki, ale nie zostałoby użyte w analizie inżynierskiej, gdzie siły, momenty obrotowe i właściwości materiałów muszą być dokładne.
Gdzie ta technika jest używana w rzeczywistym oprogramowaniu?
Ragdolle oparte na Verlecie leżą u podstaw fizyki postaci, tkanin i lin w wielu grach czasu rzeczywistego, ponieważ są tanie obliczeniowo i stabilne. Podejście oparte na pozycji, spopularyzowane przez Thomasa Jakobsena na GDC 2001, doprowadziło bezpośrednio do współczesnej dynamiki Position Based Dynamics, która dziś napędza miękkie bryły, płyny i tkaniny w silnikach gier i narzędziach efektów wizualnych.
Interaktywna fizyka ragdoll 2D z całkowaniem Verleta i więzami odległości. Przeciągnij dowolną część ciała, by rzucić postacią. Reguluj grawitację, tłumienie, liczbę iteracji więzów i sprężystość. Platformy tworzą dynamiczną arenę.
3D · Three.js / WebGL renderer · 60 FPS target · runs fully client-side, no install