Chcę stworzyć linę, która może kolidować z obiektami, jak na poniższym filmie na youtube:
Myślę, że implementujesz integrację Verlet, która wykorzystuje punkty i łączy te punkty z liniami. Próbuję dowiedzieć się, jaki rodzaj wykrywania kolizji zastosowałbyś do liny, aby uzyskać efekt na filmie.
Myślę, że będziesz musiał zrobić trochę płyt CD do każdego punktu. Chciałbym użyć box2D, więc zastanawiam się, czy uczynienie z każdego punktu sztywnego ciała działałoby? Wszelkie porady będą mile widziane.
collision-detection
box2d
rope-physics
Joey Green
źródło
źródło
Odpowiedzi:
Ponieważ używasz Box2D, możesz utworzyć serię prostokątów i użyć połączeń Box2D, aby je połączyć. Tam masz swoją linę.
Aby uniknąć wysuwania się zakrętów z wygiętej liny, mogę sobie wyobrazić dwie opcje:
Ostrzeżenie: sam nigdy tego nie próbowałem, ale nie widzę, jak seria połączonych prostokątów może się nie powieść, gdy opublikowany film wyświetla praktycznie to samo w przebraniu.
Edycja: Właśnie widziałem PaulZ i zdałem sobie sprawę z tego samego. Przeczytaj także jego komentarz do pytania.
źródło
Szybki Google rzucił to tutaj . Demo, opis i kod (we Flashu) wykorzystujący Box2D do wdrożenia prostej liny. Lina zderza się ze sobą i blokiem na szczycie sceny.
źródło
Oto, co bym zrobił: uczyń każdy punkt na linii okręgiem, zrób wystarczającą liczbę punktów, aby okręgi zachodziły na siebie. Tethering każdego punktu z sąsiadem, zamiast standardowego zderzenia, ten tether powinien sprawić, że punkty pozostaną w stałej odległości od siebie.
Nie znam Box2D, ale sądzę, że wymagana funkcjonalność jest dostępna.
źródło
Pierwotnie Box2D miał demo mostu linowego wykonanego z cienkich pudeł połączonych ograniczeniami punkt-punkt; byłoby to dobre miejsce na rozpoczęcie (nie wiem, czy nadal jest dostarczane z tą wersją demonstracyjną, ale odtworzenie tego byłoby proste).
Łatwo jest wdrożyć linę jako cząstki z ograniczeniami odległości niezależnie od symulatora sztywnego ciała (jak wspominasz, używając schematu integracji i rozwiązywania więzów Verlet, takiego jak ten opisany w tym artykule: http://www.gamasutra.com/resource_guide/ 20030121 / jacobson_pfv.htm ), ale jeśli chcesz, aby sztywne ciała reagowały na twoją linę (jak na wideo, z wiszącą skrzynką), to staje się znacznie bardziej skomplikowane. Zaczynam od kompleksowego zestawu narzędzi, takich jak Box2D, i pracuję wstecz, a następnie próbuję gromadzić się na cząstkach.
źródło
Pamiętam tę grę Allegro: Amorek z SpeedHack 2002. Zawiera ona implementację lin zderzających się z krajobrazem. Zobacz klasy PhysParticles i HeartTrails w pliku heart_tails.cpp w kodzie źródłowym .
źródło