Zobrazit předchozí téma :: Zobrazit následující téma |
Časový krok (který používám) |
ODE - konstantní |
|
5% |
[ 1 ] |
ODE - proměnný |
|
0% |
[ 0 ] |
Vlastní fyz. engine - konstantní |
|
40% |
[ 8 ] |
Vlastní fyz. engine - proměnný |
|
10% |
[ 2 ] |
Jiný fyz. engine (Bullet, ...) - konstantní |
|
20% |
[ 4 ] |
Jiný fyz. engine (Bullet, ...) - proměnný |
|
10% |
[ 2 ] |
Fyziku neřeším ;) nebo nevím (třeba Blender GE, kdoví, jak to tam je) |
|
15% |
[ 3 ] |
|
Celkem hlasů : 20 |
|
Autor |
Zpráva |
frca
Založen: 28. 07. 2007 Příspěvky: 1558
|
Zaslal: 1. květen 2008, 17:01:37 Předmět: ODE - determinismus |
|
|
Pracuje ODE deterministicky? Např. když 10x volám dWorldQuickStep(world, 0.1) anebo 1000x dWorldQuickStep(world, 0.001), dojde simulace ze stejného výchozího bodu do stejného cílového?
Díky.
Naposledy upravil frca dne 1. květen 2008, 23:30:09, celkově upraveno 2 krát |
|
Návrat nahoru |
|
|
pcmaster
Založen: 28. 07. 2007 Příspěvky: 1824
|
Zaslal: 1. květen 2008, 17:24:30 Předmět: |
|
|
Ano. IMHO. _________________ Off-topic flame-war addict since the very beginning. Registered since Oct. 2003!
Interproductum fimi omne est. |
|
Návrat nahoru |
|
|
johnnash
Založen: 30. 07. 2007 Příspěvky: 80
|
Zaslal: 1. květen 2008, 17:27:20 Předmět: |
|
|
ODE neznam, deterministicky pracuje urcite ale to roli nehraje. Dulezite je pouziti numericke metody a s tim spojene nepresnosti ve FP jednotce. Cim lepsi metody tim vetsinou vice operaci a s tim spojene naakumulovani nepresnosti a pri jemnejsim kroku se to muze celkem projevit. |
|
Návrat nahoru |
|
|
nou
Založen: 28. 07. 2007 Příspěvky: 1047
|
Zaslal: 1. květen 2008, 17:49:35 Předmět: |
|
|
NIE nie je. co som s nim experimentoval tak nie je deterministicky. ak som spustil 10x tu istu simulaciu vysledok bol vzdy iny. a to pri fixnom casovom kroku. je to sposobene tym ze sa generuju kolizne body a z tych sa nahodne vyberu vetsinou tak 3 a pracuje sa uz len s nimi. ale da sa to hacknut tak ze pred kazdym krokom zavolate srand(0) (aspon co som cital na nete) _________________ Najjednoduchšie chyby sa najtažšie hľadajú. |
|
Návrat nahoru |
|
|
pcmaster
Založen: 28. 07. 2007 Příspěvky: 1824
|
Zaslal: 1. květen 2008, 18:17:48 Předmět: |
|
|
Nevedel som, ze tam fakt pouzivaju random. Ojebavaci _________________ Off-topic flame-war addict since the very beginning. Registered since Oct. 2003!
Interproductum fimi omne est. |
|
Návrat nahoru |
|
|
frca
Založen: 28. 07. 2007 Příspěvky: 1558
|
Zaslal: 1. květen 2008, 19:26:17 Předmět: |
|
|
Poddotazy:
1) Při proměnném časovém kroku je simulace nedeterministická? Teď mě zajímá spíš situace kolem vlastního pohybu objektů, než kolem kolizí (tzn. předpokládejme, že se objekty nesrazí).
2) Jde nějak pushnout/popnout stav simulace? Moje představa je taková: Pro časový rozdíl 0.26 odsimulovat kroky 0.0-0.1, 0.1-0.2, push, 0.2-0.26, hotovo; další frame - pop (tím se dostane do stavu 0.2), pak pro časový rozdíl např. 0.22 přičíst 0.6 -> rozdíl 0.28 a odsimulovat příslušné kroky - 0.0-0.1, 0.1-0.2, push, 0.2-0.28, hotovo; další frame... |
|
Návrat nahoru |
|
|
Mem
Založen: 28. 07. 2007 Příspěvky: 1959 Bydliště: Olomouc
|
Zaslal: 1. květen 2008, 19:35:33 Předmět: |
|
|
pcmaster napsal: |
Nevedel som, ze tam fakt pouzivaju random. Ojebavaci |
Tak priroda to robi tiez, ked pustis simulaciu, tak su atomy v roznej pozicii _________________
|
|
Návrat nahoru |
|
|
Marek
Založen: 28. 07. 2007 Příspěvky: 1782 Bydliště: Velká Morava
|
Zaslal: 1. květen 2008, 20:01:23 Předmět: Re: ODE - determinismus |
|
|
frca napsal: |
Např. když 10x volám dWorldQuickStep(world, 0.1) anebo 1000x dWorldQuickStep(world, 0.001) |
Tohle je přesně případ, kdy to fungovat nebude kvůli té numerické nestabilitě. To s tím menším časovým krokem může být méně stabilní bez ohledu na to, zda ODE používá rand() nebo ne. _________________ AMD Open Source Graphics Driver Developer |
|
Návrat nahoru |
|
|
]semo[
Založen: 29. 07. 2007 Příspěvky: 1526 Bydliště: Telč
|
Zaslal: 1. květen 2008, 20:56:29 Předmět: |
|
|
Hlavně bych řek, že čim menší časovej krok, tím menší chyba. Takže jestli nebude docházet ke kolizím a budeš používat stejnej časovej krok, pak by simulace měla dopadnout stejně. Ale dopadnou rozdílně dvě stejný simulace s odlišným časovým krokem.
(S ODE nedělám, beru v potaz jen takovej svůj obecnej pohled na fyzikální enginy...)
Eosie> výsledek nebude stejný kvůli numerické nestabilitě, ale kvůli rozdílné chybě numerické integrace (čistě logicky, časový krok 1 s pro simulaci dlouhou 1 s nedokáže křívkou "podchytit" jevy, které nastanou třeba v čase 0.35 s ). _________________ Kdo jede na tygru, nesmí sesednout.
---
http://www.inventurakrajiny.cz/sipka/
Aquadelic GT, Mafia II, simulátory |
|
Návrat nahoru |
|
|
frca
Založen: 28. 07. 2007 Příspěvky: 1558
|
Zaslal: 1. květen 2008, 23:21:09 Předmět: |
|
|
Co byste mi doporučili? V ODE API není, pokud vím, prostředek pro přímou podporu konstantního časového kroku, takže řešit to by mohlo být zbytečné, jak to děláte vy? Konstantní, nebo proměnný časový krok? Možná by to chtělo hlasování |
|
Návrat nahoru |
|
|
nou
Založen: 28. 07. 2007 Příspěvky: 1047
|
Zaslal: 2. květen 2008, 07:52:40 Předmět: |
|
|
neviem ale v dokumentacii ODE odporucaju prave konstantny casovy krok. teda zvolit si nejaku jeho dlzku a ej sa uz drzat. pretoze jeho zmena by mohla sposobit nestabilitu. _________________ Najjednoduchšie chyby sa najtažšie hľadajú. |
|
Návrat nahoru |
|
|
frca
Založen: 28. 07. 2007 Příspěvky: 1558
|
Zaslal: 2. květen 2008, 08:25:46 Předmět: |
|
|
Takže už zbývá vyřešit jenom poddotaz 2.
Jiné řešení, které mě napadá, je pozice objektů mezi časovými kroky nesimulovat, ale interpolovat. |
|
Návrat nahoru |
|
|
Ash
Založen: 30. 07. 2007 Příspěvky: 13 Bydliště: Bratislava
|
Zaslal: 2. květen 2008, 09:04:34 Předmět: k ankete |
|
|
Používam Bullet, typ krokovania mám nastavený v konfigurácii, takže môže byť konštantný aj premenlivý.
GameBlender používa Bullet s premenlivým časovým krokom. |
|
Návrat nahoru |
|
|
Fila
Založen: 31. 07. 2007 Příspěvky: 853
|
Zaslal: 2. květen 2008, 10:06:11 Předmět: Re: ODE - determinismus |
|
|
frca napsal: |
Pracuje ODE deterministicky? Např. když 10x volám dWorldQuickStep(world, 0.1) anebo 1000x dWorldQuickStep(world, 0.001), dojde simulace ze stejného výchozího bodu do stejného cílového?
Díky. |
To je chybne polozena otazka. ODE je deterministicke -- kdyz zavolas 1000x dWorldQuickStep(world, 0.001), pak spustis program znovu a zavolas 1000x dWorldQuickStep(world, 0.001), pak bude vysledek stejny.
Ty se ale neptas na to, zda je ODE deterministicke, ale na to, zda je vysledek simulace konstantni vzhledem k delce casoveho kroku. To neni. ODE leze mezi jednotlivymi kroky po derivacich pohybovych funkci a ty jsou primky. Zkus si nakreslit nejakou krivku a pak ji aprozimovat pomoci spousty kratkych primek a pomoci desetiny desetkrat delsich primek. Bude to vypadat jinak.
Tim jsem odpovedel i na promennou delku casoveho kroku -- pokud budes delat nedeterministicky dlouhe casove kroky, pak bude i vysledek nedeterministicky. |
|
Návrat nahoru |
|
|
Fila
Založen: 31. 07. 2007 Příspěvky: 853
|
Zaslal: 2. květen 2008, 10:10:21 Předmět: |
|
|
frca napsal: |
Poddotazy:
1) Při proměnném časovém kroku je simulace nedeterministická? Teď mě zajímá spíš situace kolem vlastního pohybu objektů, než kolem kolizí (tzn. předpokládejme, že se objekty nesrazí).
2) Jde nějak pushnout/popnout stav simulace? Moje představa je taková: Pro časový rozdíl 0.26 odsimulovat kroky 0.0-0.1, 0.1-0.2, push, 0.2-0.26, hotovo; další frame - pop (tím se dostane do stavu 0.2), pak pro časový rozdíl např. 0.22 přičíst 0.6 -> rozdíl 0.28 a odsimulovat příslušné kroky - 0.0-0.1, 0.1-0.2, push, 0.2-0.28, hotovo; další frame... |
1) Jo, pokud je casovy krok nedeterministicky (napr. zalezi na rychlosti behu programu -- kdyz nestiha, tak zacne delat vetsi kroky).
2) Nerad bych kecal, ale toto jsem nejak resil a slo to, ale ODE to primo nepodporuje (tzn. musis u kazdeho objektu rucne sebrat jeho aktualni pozici, orientaci, linearni a uhlovou rychlost, musis sebrat jointy, kontaktni jointy atd a ulozit si je, pak je zase vytvorit). Mozna by bylo lepsi, kdybys napsal, co konkretne potrebujes udelat, treba bude existovat snazsi cesta. |
|
Návrat nahoru |
|
|
|