Jak symulować opadanie piór w box2d?

10

Pracuję z AndEngine z rozszerzeniem Box2d, ale doceniona zostanie również ogólna odpowiedź lub pomysł na koncepcję.

Mam podobne do piór obiekty w świecie 2D, które chcę brać udział w symulacji fizyki. Używam tłumienia liniowego, aby „pióro” opadało powoli. To może nie być dobry pomysł, może powinienem raczej zastosować siłę przy każdej aktualizacji, ale mimo to działa i sprawia, że ​​obiekt wygląda na „lekki” i wydaje się, że jest powietrze z oporem.

Jak mogę sprawić, by przedmioty wyglądały jak pióra spadające w powietrze?

W szczególności szukam dwóch rodzajów obiektów: Długich o niskiej gęstości, które powinny poruszać się w dół powolnym ruchem wahadłowym i kwadratowych obiektów, które po prostu losowo zmieniłyby trajektorię. Byłoby wspaniale, gdyby mogła to być jedna symulacja, a długość byłaby parametrem - im dłuższy jest obiekt, tym bardziej się waha. Teraz chcę symulować pióra, liście i płatki śniegu w świecie kreskówek.

Ścieżki spadających przedmiotów

MartinTeeVarga
źródło
2
Co powiesz na zrzut ekranu lub szkic koncepcyjny? W końcu istnieje mnóstwo różnych rzeczy, które można rozważyć za pióro, i powiedziałbym, że większość będzie zachowywać się inaczej w zależności od twojej sytuacji.
Mario
Dodano więcej informacji i obraz.
MartinTeeVarga

Odpowiedzi:

6

Podobnie jak lądowanie na Księżycu, powinieneś je sfałszować . Fizyka autorotacji wywołanej trzepotaniem, upadkiem i wirowaniem jest złożona. Są artykuły na temat symulacji tego efektu i produkują piękne animacje Java .

Ale poszedłbym nawet dalej w twoje oszustwo i wdrożyłbym coś w rodzaju rosnącej fali sinusoidalnej, aby ożywić ruch.

wprowadź opis zdjęcia tutaj

Oczywiście będziesz chciał dostosować wartości początkowe, tempo niezależnego wzrostu amplitudy i częstotliwości, aż uzyskasz coś, co wygląda bliżej tego, czego chcesz. Chcielibyście wrzucić trochę losowości, aby było interesująco. Dodatkowo, jak Twój przykład pokazuje, bardzo lekkie przedmioty o dużej powierzchni może faktycznie iść w górę w pobliżu krawędzi swoich fal. Tak więc fale powyżej pewnej amplitudy powinny zacząć uwzględniać wartość zamiatania, z małą maksymalną wartością graniczną.

Im mniejsza masa i więcej powierzchni ma obiekt, tym bardziej zwiększasz amplitudę i częstotliwość fali sinusoidalnej. Większa masa i mniejsza powierzchnia powinny skutkować spadkiem amplitudy i częstotliwości.

MichaelHouse
źródło
3
** Konspirator **
Mikołaj Marcisz
Ok, więc mogę mieć dwie funkcje, rosnącą falę sinusoidalną, która będzie kontrolować ruch poziomy, a następnie jakąś funkcję, która będzie kontrolować ruch pionowy i prawdopodobnie będzie zależeć od odległości od środka obiektu i będzie miała czapkę, która przerwie ruch i odeślij to ... Jeśli wymyślę taką połączoną funkcję, która da mi siłę, jak zastosować tę siłę? W każdym ticku silnika trochę w oparciu o upływ czasu? Tak naprawdę wcześniej nie pracowałem z box2d.
MartinTeeVarga
Wygląda na to, że tak będzie dobrze działać, pozwalając grawitacji zająć się resztą. Istnieje kilka różnych sposobów radzenia sobie z siłą. Prawdopodobnie byłby w każdym ticku silnika, w oparciu o czas, jaki upłynął, jak mówisz. Byłyby to siły impulsowe, oznaczające chwilowe dla tej ramy. Zobacz to pytanie, aby dowiedzieć się więcej (to samo, nawet jeśli nie używasz Cocos2D jak w pytaniu).
MichaelHouse