.[ ČeskéHry.cz ].
Kolize se třením
Jdi na stránku 1, 2  Další
 
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
frca



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

PříspěvekZaslal: 22. srpen 2007, 20:45:51    Předmět: Kolize se třením Odpovědět s citátem

Zdravím,
jak je složité naimplementovat tuto simulaci vzhledem ke kolizím bez tření? Jde mi o to, jestli se tím vůbec zabývat, jestli mám šanci to stvořit, resp. jestli se tady vychází z kolizí bez tření a jen se něco přidá.
Díky
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovi WWW stránky
tangent



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

PříspěvekZaslal: 22. srpen 2007, 21:23:49    Předmět: Odpovědět s citátem

Taky jsem si pokladal podobnou otazku a jsem zvedavy na odpoved. Uz mam totiz delsi v bookmarksech "k precteni" tenhle clanek na gamasutre o kontaktni fyzice..
http://www.gamasutra.com/resource_guide/20030121/kennedy_pfv.htm
..ale ne a ne se k tomu dostat Rolling Eyes, tak jsem zevedavy jestli me nekdo namotivuje ci odradi Smile
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Fila



Založen: 31. 07. 2007
Příspěvky: 853

PříspěvekZaslal: 23. srpen 2007, 13:38:13    Předmět: Odpovědět s citátem

Zalezi dost jak je napsano jadro simulace (pouzivas numerickou integraci? semiimplicitni nebo explicitni? nebo to mas nejak "uvarene na miru" (to jde spis tak ve 2D)?).
Obecne s trenim neni zadna prdel, zvlast kdyz ma byt presnejsi (treba u zavodni hry vlastnosti pneumatik) -- tady bych spis sahl po existujicim reseni, napr. ODE nebo PhysX.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Strana



Založen: 31. 07. 2007
Příspěvky: 2
Bydliště: Olomouc / Brno

PříspěvekZaslal: 23. srpen 2007, 18:28:24    Předmět: Odpovědět s citátem

Nedávno jsem se na to trochu díval, ODE to řeší zajímavě. Umí simulovat tuhá tělesa pospojovaná různými klouby a pro každou kolizi si vytváří speciální kloub, který ty tělesa na 1 "krok herního světa" vlastně přichytí k sobě (nastavíš jak pevně pomocí vlastností povrchu těch těles).

Je to trochu popsané tady - http://www.ode.org/ode-latest-userguide.html.
sekce 3.9 - 3.11 a 7.3.7

Potom co jsem tím user guide letmo prošel bych se teda do něčeho podobného na vlastní pěst určitě nepouštěl Very Happy
_________________
Stráňa
"Lidstvo je ještě v betatestu."
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
frca



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

PříspěvekZaslal: 23. srpen 2007, 19:39:56    Předmět: Odpovědět s citátem

A já jsem myslel, že se jenom nějak spočítá tangenciální impuls a použije se nějak pro změnu rychlostí. Rolling Eyes
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovi WWW stránky
Sun Wu Kung



Založen: 14. 08. 2007
Příspěvky: 7

PříspěvekZaslal: 24. srpen 2007, 11:24:30    Předmět: Odpovědět s citátem

Určitě se tím zabývej.
Záleží na tom, jakým způsobem zajišťuješ pohyb těles. Tření většinou vyjadřujeme jako třecí sílu. Takže abys ji mohl správně zapojit, musíš k pohybu tělesa používat sil.

Numerická integrace, vychází ze součtu všech sil působících na těleso. Dostaneš výslednou sílu a po vydělení hmotností i její zrychlení. Právě tohle zrychlení vynásobíš časovou změnou dt (aktuálním časovým rozdílem mezi dvěma smyčkami programu). Dostaneš změnu rychlosti. (Z toho vyplývá, že když na těleso žádná síla nepůsobí, rychlost tělesa se nemění)
Rychlost oproti minulé pozici upravíš a vypočítáš změnu pozice pomocí stejné časové změny.

Příklad v rovině:
Vyslednice.X = TihovaSila.X + HnaciSila.X+TreciSila.X
Vyslednice.Y = TihovaSila.Y + HnaciSila.Y+TreciSila.Y

a.X = Vyslednice.X/hmotnost
a.Y = Vyslednice.Y/hmotnost

v.X = v.X + (a.X)x(dt)x(nějaké měřítko)
v.Y = v.Y + (a.Y)x(dt)x(nějaké měřítko)

Pos.X = Pos.X + (v.X)xdt
Pos.Y = Pos.Y + (v.Y)xdt


Takhle nějak vypadá numerická integrace a takhle musíš tělesy hýbat, abys mohl třecí sílu implementovat. A to ještě chybí momenty sil otáčející tělesem.

Velikost třecí síly je definována jako součin velikosti normálové reakce a součinitele tření - ten si definuješ ty podle charakteru povrchu.
Působiště třecí síly je bodě dotyku tělesa s podložkou. Pokud to je plocha, třecí síla je v těžišti.
Směr vektoru třecí síly je opačný oproti směru vektoru rychlosti.
Tohle je dobrý způsob, protože ti umožňuje dělat s tím spoustu dalších věcí. Ale jestli to chceš udělat nějak...

... tak si zjistíš kolizní normálu, k ní určíš kolizní plochu (nebo přímku ve 2D) do ní promítneš vektor rychlosti -> dostaneš složku rychlosti v tečném směru a tu upravíš. např:
vt = vt * 0.9
prostě ji zmenšíš. Vektor musíš zpátky převést (nebo nemusíš, nevím jak to máš řešené. Rychlost v normálovém směru můžeš třeba vynulovat, protože to je rychlost, která míří do překážky - těleso narazilo a zastavilo se, nebo ji můžeš obrátit -těleso narazilo a odrazilo se)

[EDIT] Před pádem CH byl v magazínu seriál o podobné tematice.


Naposledy upravil Sun Wu Kung dne 24. srpen 2007, 11:46:20, celkově upraveno 1 krát
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
frca



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

PříspěvekZaslal: 24. srpen 2007, 11:39:40    Předmět: Odpovědět s citátem

To je myslím popis kolizí bez tření, jenom s vyzářením energie nedokonale pružným odrazem. Tím třením se myslí spíš něco jako např. tření o zeď při pohybu podél zdi. Určitě by šlo naklást spousty podmínek pro zjištění pohybu podél zdi, ale jsem přesvědčený, že existuje obecnější řešení, kde se tření projeví vždy, ale někdy méně.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovi WWW stránky
Sun Wu Kung



Založen: 14. 08. 2007
Příspěvky: 7

PříspěvekZaslal: 24. srpen 2007, 11:57:35    Předmět: Odpovědět s citátem

Obecné řešení je právě ona pohybová rovnice, kam třecí sílu přidáš pokaždé, když ke tření dochází (když koliduješ) a její velikost závisí na tom, jak moc tlačíš na překážku (normálová reakce).

Příklad:

Auto najede šikmo na zeď a pokračuje dál podél stěny o níž dře bokem.

Auto má na začátku vektor rychlosti, který svírá se stěnou úhel třeba třicet stupňů. V místě srážky (kolizní bod) odečteš od vektoru rychlosti normálovou složku.
Vektor rychlosti pak bude rovnoběžný se stěnou. Do pohybové rovnice přidáš třecí sílu (protože jsi vyhodnotil kolizi) a budeš jí tam mít tak dlouho, dokud auto podél stěny jede - tj dokud budeš vyhodnocovat kolizi. Důsledkem tření pak bude změna rychlosti.

Příklad je samozřejmě zjednodušený, musíš počítat i momenty sil a auto není zrovna ideální objekt. Ale můžeš si to představit na kouli a ploše.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Fila



Založen: 31. 07. 2007
Příspěvky: 853

PříspěvekZaslal: 24. srpen 2007, 12:17:47    Předmět: Odpovědět s citátem

frca -- co pises za aplikaci? Pokud budes potrebovat jointy (klouby propojujici telesa), docela se nadres, jestli to zacnes psat sam. A pokud budes mit vyssi pozadavky na stabilitu (tzn. napr. aby se kulicka zapadla do dulku ustalila a nezacla tam poskakovat), nebude ti stacit zpusob jaky tu popisuje Sun Wu Kung.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Sun Wu Kung



Založen: 14. 08. 2007
Příspěvky: 7

PříspěvekZaslal: 24. srpen 2007, 12:34:28    Předmět: Odpovědět s citátem

To je pravda.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Tomas_Dejmek



Založen: 28. 07. 2007
Příspěvky: 7
Bydliště: Visual studio

PříspěvekZaslal: 24. srpen 2007, 14:01:33    Předmět: Odpovědět s citátem

Sice jsem todle nikdy neprogramoval, ale mám otom představu, myslím že na to jdete moc složitě, pokud autro topicu dělá nějakou hru kde budou zdi a třeba i stoli... a né nějaký rychlý auta co se osebe třískaj... tak to jde celkem jednoduše.
Tady máte článek, dokonce v češtině http://monade.cz/Item.php?item=4 Je to sice na kameru, ale snad neni problém to dát na model či mesh.

PS: tady je pak ten výsledek http://monade.cz/Item.php?item=5

Tak good luck Smile
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
frca



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

PříspěvekZaslal: 24. srpen 2007, 14:05:42    Předmět: Odpovědět s citátem

To, co dělám, je tak jednoduché, že tam žádné jointy a nestabilita nehrozí. Mám to ve 2D. K těm slovním popisům, pro mě by bylo přijatelnější to popsat vzorcem. Díky.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovi WWW stránky
Sinuhet



Založen: 25. 08. 2007
Příspěvky: 5

PříspěvekZaslal: 25. srpen 2007, 15:02:52    Předmět: Odpovědět s citátem

No něco už ti tady napsal Sun Wu Kung... to jsou vzorce. Anebo by bylo lepší napsat co chceš nasimulovat. Protože takhle obecný problém můžeš řešit jen obecnými rovnicemi.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Sun Wu Kung



Založen: 14. 08. 2007
Příspěvky: 7

PříspěvekZaslal: 27. srpen 2007, 12:30:30    Předmět: Odpovědět s citátem

Mělo by to vypadat nějak takhle?
Je to splácaný na rychlo.
Ovládá se to šipkami, enter spouští/stopuje timer.

http://www.couf.wz.cz/AlfaProject3x6.zip
(300 kB)
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
frca



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

PříspěvekZaslal: 27. srpen 2007, 13:06:33    Předmět: Odpovědět s citátem

Ano, asi nějak tak. Škoda jen, že nejde vidět otáčení objektu, když je kruhový.
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
Jdi na stránku 1, 2  Další
Strana 1 z 2

 
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