.[ ČeskéHry.cz ].
Reakce na kolizi - 2D

 
odeslat nové téma   Odpovědět na téma    Obsah fóra České-Hry.cz -> Fyzikální modely
Zobrazit předchozí téma :: Zobrazit následující téma  
Autor Zpráva
yaqwsx



Založen: 25. 02. 2008
Příspěvky: 66

PříspěvekZaslal: 28. leden 2009, 17:50:19    Předmět: Reakce na kolizi - 2D Odpovědět s citátem

Zkouším jednoduchou "simulaci" (jestli se tomu vůbec dá tak říkat) ve 2D. Veškerá tělesa uvažuji pouze jako hmotné - během každé smyčky poskládám síly a pak pohnu.
Při kolizi těles rozložím sílu a rychlost na 2 kolmé složky atd...
Mám však problém, že tělesa se mi do sebe mírně "zanoří".
Vím, že řešením je před pohybem tělesa zkontrolovat kolizi, ale to mi s mou (prozatím) neoptimalizovanou detekcí kolize nepřipadá jako dobrý nápad. Exisuje nějaké jiné řešení jak to ošetřit?
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
pcmaster



Založen: 28. 07. 2007
Příspěvky: 1821

PříspěvekZaslal: 28. leden 2009, 21:33:29    Předmět: Odpovědět s citátem

Nie som si celkom isty, co tym myslis.
Obecny postup najdes v kazdom clanku, aj tu na wiki a je priblizne nasledovny:
- pomocou newtonovych zakonov spocitas nove pozicie (integracia)
- zistis kolizie, tj. kolizne body, normaly v tychto bodoch a hlbku penetracie (detekcia kolizii)
- zareagujes na kolizie, tj "posunies" telesa v smere normaly o hlbku penetracie, alebo teda aplikujes novu silu tak, aby sa posunuli a uz neboli v sebe (odpoved na kolizie).

Da sa to spravit este aj nejako principialne odlisne? Smile

http://newwiki.ceske-hry.cz/Kolize_a_n%C3%A1sledn%C3%A1_reakce
_________________
Off-topic flame-war addict since the very beginning. Registered since Oct. 2003!
Interproductum fimi omne est.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
yaqwsx



Založen: 25. 02. 2008
Příspěvky: 66

PříspěvekZaslal: 29. leden 2009, 16:37:51    Předmět: Odpovědět s citátem

Jej, já opomenul pár věcí. Myslel sjem jak to ošetřit bez znalosti hloubky průniku zkrz těleso - zatím se nedaří najít nějaký rozumný způsob jeho vypočítání a mám problémy s rychlostí.
Kolizi dělám pomocí úseček, které ohraničují těleso. Pak jen zjišťuji jejich průnik...
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
]semo[



Založen: 29. 07. 2007
Příspěvky: 1525
Bydliště: Telč

PříspěvekZaslal: 30. leden 2009, 11:18:12    Předmět: Odpovědět s citátem

citace:
Veškerá tělesa uvažuji pouze jako hmotné


takže duchové tam nebudou? :-D (sorry, vtip)

Možná tak, že při kolizi uložíš dvě navzájem kolidující tělesa do pole a každý jeho prvek pak ošetříš následovně:
1) standard. reakce na kolizi (síly...)
2) nová detekce mezi dvěma objektama s případným odsunem od sebe

rozdíl je ten, že tělesa neodsovuáš od sebe před pohybem, ale po kolizi (cca jako je to v tom článku, ale bez znalosti hloubky). Tím ušetříš nějaký výpočty. Musíš ovšem zanedbat případ, kdy se vlivem odsunutí zasune jeden objekt do dalšího. Vážně se to většinou prostě zanedbává (-Máš li málo hustou scénu. Jinak to je nutný několikrát opakovat.).

Nebo nějaký fejkovaný řešení:
- pokud se to pohybuje všechno pomalu, můžeš dva kolidující objekty vrátit do předchozího snímku.
- můžeš taky vždy přidat nějakou rychlost obou tělesům, která je od sebe odhodí. Když se to vyladí, člověk si nevšimne toho drobnýho zanoření.
_________________
Kdo jede na tygru, nesmí sesednout.
---
http://www.inventurakrajiny.cz/sipka/
Aquadelic GT, Mafia II, simulátory
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
yaqwsx



Založen: 25. 02. 2008
Příspěvky: 66

PříspěvekZaslal: 18. únor 2009, 16:50:14    Předmět: Odpovědět s citátem

Díky za rady. Reaguji trochu později, ale týden jsem nebyl u PC. Nějakou konstantu na vrácení (ať už zvětšení sil, tak i posunutí) jsem již zkoušel, ale nemohl jsme se dopátrat nějaké smysluplné hodnoty. Proto jsme tu psal. Asi to vypadá, že budu muset počítat hloubku zanoření...

Jinak s duchy se počítá, ale duch nemá žádnou hmotnost, je to vlastně jen energie a na tu newtonovi zákony nepůsobí.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Hardwire



Založen: 04. 09. 2007
Příspěvky: 117

PříspěvekZaslal: 18. únor 2009, 18:47:59    Předmět: Odpovědět s citátem

Nemá moc smysl se patlat s vlastním algoritmem pro detekci kolize, když jich je na netu k dispozici několik (viz. http://physics.hardwire.cz/index.php?action=show&sortby=order&parent_id=36) rychlejších, které ti navíc dají i MTV (minimum translation vector) - vektor, podle kteryho musis posunout od sebe objekty, aby uz nekolidovaly...teda ze vsech takovejch vektoru je to ten s nejmensi delkou. Presne to, co potrebujes.

Pokud budes podporovat jen polygon x polygon kolize, tak je podle me nejlepsi sahnout po SATu: http://physics.hardwire.cz/index.php?action=show&sortby=order&parent_id=45
Pro pochopení je nejlepší hned první položka, je to tam i s pohyblivýma obrázkama.
Pokud programuješ v C++, můžeš přímo copypastnout potřebnej kód z http://uk.geocities.com/olivier_rebellion/Polycolly.zip
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovi WWW stránky
Zobrazit příspěvky z předchozích:   
odeslat nové téma   Odpovědět na téma    Obsah fóra České-Hry.cz -> Fyzikální modely Časy uváděny v GMT + 1 hodina
Strana 1 z 1

 
Přejdi na:  
Nemůžete odesílat nové téma do tohoto fóra
Nemůžete odpovídat na témata v tomto fóru
Nemůžete upravovat své příspěvky v tomto fóru
Nemůžete mazat své příspěvky v tomto fóru
Nemůžete hlasovat v tomto fóru


Powered by phpBB © 2001, 2005 phpBB Group


Vzhled udelal powermac
Styl "vykraden" z phpBB stylu MonkiDream - upraveno by rezna