Muszę wykonać symulację z kamieniem rzuconym przez szklane okno. Jak mogę to osiągnąć?
To znaczy myślałem o stworzeniu modelu 3D kamienia i szkła w 3D Studio Max 2012, rozbiciu szkła i wyeksportowaniu obu do XNA 4.0 jako modeli .x. Następnie w XNA wykonaj animację - pisząc własny silnik fizyki. Czy to możliwe w ten sposób? Czy możliwe jest zniszczenie szkła w XNA po uderzeniu, czy powinienem to zrobić w 3DS Max? Przez „niszczenie szkła” mam na myśli odłączenie niektórych wcześniej odłamanych kawałków szkła od siebie, ponieważ w zależności od prędkości początkowej i ciężaru kamienia oraz rezystancji (twardości?) Szkła (wszystkie zdefiniowane przez użytkownika) bity zostaną odłączone od nawzajem na różne sposoby.
Zrób niezniszczoną szybę i zniszczoną szybę. Po otrzymaniu kolizji wyłącz niezniszczoną wersję i zacznij korzystać z rozbitego panelu.
Jeśli rzucasz jednym oknem (o dość jednolitym rozmiarze) w okno, możesz uzyskać długą drogę dzięki swojemu modelowi 3D złamanej szyby (modeluj odłamki na miejscu w szybie, a następnie uruchom prostą symulację fizyki na każdym z okien odłamki, aby zasymulować ich spadanie / latanie). O ile kamera nie jest bardzo blisko (lub w zwolnionym tempie), nie powinieneś robić kolizji między elementami - tylko z otaczającą geometrią (płaszczyzna podłoża?). Nie zapomnij rozpylić efektów cząsteczkowych na chmurę mniejszych cząstek szkła, które towarzyszą rozbiciu.
Jeśli zrobisz pękniętą szybę przy założeniu, że kamień uderza w środek, możesz przeskalować elementy na podstawie rzeczywistej pozycji trafienia, aby uzyskać całkiem dobrze wyglądającą przerwę dla większości trafień.
źródło
Jeśli pobierzesz bibliotekę fizyki pocisków, zawiera ona próbkę zawierającą tłuczone szkło, a będziesz potrzebować czegoś takiego jak kula w każdej grze z tłuczonym szkłem.
Edycja: Pocisk byłby świetną demonstracją do modelowania własnego silnika.
źródło
Bardzo dziękuję za odpowiedzi i bezcenną pomoc. W końcu udało mi się zbudować projekt. Wypróbowałem wszystkie twoje sugestie i ostatecznie wybrałem częściowo własną drogę do tej symulacji.
Użyłem bulledsharp (otoki fizyki pocisków dla c #) do silnika fizyki, ale ważne jest, aby używać najnowszego, skompilowanego przez siebie ze źródłem bulletsharp ze sourceforge svn, a także ze świeżymi źródłami fizyki pocisków. Nie ten wstępnie skompilowany plik .dll, dostępny do pobrania ze stron internetowych. Wersja wstępnie skompilowana była dla mnie za stara i nie zawierała niektórych cennych funkcji, które były dalej rozwijane. Dowiedziałem się również, że w przypadku prostych symulacji, w których nie potrzebujesz zaawansowanej grafiki, lepiej jest używać starszego programu 3dsmax, tj. 2011 (nie najnowszego z 2012 r.), Do opracowania modelu itp. Głównie dlatego, że jest więcej wtyczek i eksporterów. Co więcej, naprawdę pomocne jest sprawdzenie samouczków we wszystkich dostępnych frameworkach (sharpdx, xna, xna4, slimdx, c ++ i inne).
Wreszcie, moim podejściem było zbudowanie szklanej ściany przy użyciu naprawdę małych kawałków kostki. Oczywiście, aby uruchomić symulację, musisz mieć naprawdę potężną maszynę. Jeśli masz coś mniej potężnego, możesz użyć większych kostek. Ważne jest, aby wszystkie kostki utworzone ze stanu wysp sypialnych. Teraz każdy element ma swoją reprezentację w dwóch wymiarowych szeregach pływaków. Liczba wskazuje, jaka jest siła połączenia między dwiema kostkami. Kiedy kamień zostanie rzucony i wykryte zostanie zderzenie, obliczana jest siła dla każdego sześcianu w ścianie (w tym masa kamienia i prędkość, masa i rozmiar kostki oraz odległość od środka zderzenia) i odejmowane od układu w kole podobny wzór. Aktywowane są te kostki, które po odjęciu mają zerową lub mniejszą siłę połączenia. To powoduje ruch młodych.
To jest to. Dzięki za pomoc.
źródło