Zobrazit předchozí téma :: Zobrazit následující téma |
Autor |
Zpráva |
Juraj

Založen: 06. 12. 2007 Příspěvky: 189
|
Zaslal: 10. březen 2010, 14:06:47 Předmět: Pohyb po terénu |
|
|
Zdravím,
opět mám na Vás nějaký dotaz. Konkrétně jak na pohyb po terénu.
Terén si vytvářím z výškové mapy, mám tedy uložené údaje o výškách v jednotlivých souřadnicích, normálách atd.
Nyní jsem narazil na problém při řešení obecného algoritmu pro pohyb vetších objektů - např. aut. Zde se snažím vypočítat rotaci auta, podle povrchu terénu. Můj výpočet pomocí sin, transformací atd.. cca na 60 procent funguje. Občas se mi ovšem stává, že mi kola u auta zapadnou pod terén a nebo jsou ve zvduchu...
Začínám tedy pochybovat zda jsem se vydal správným směrem. Potřeboval bych tedy poradit jak, správně rotaci vypočítat. |
|
Návrat nahoru |
|
 |
]semo[

Založen: 29. 07. 2007 Příspěvky: 1526 Bydliště: Telč
|
Zaslal: 10. březen 2010, 14:29:02 Předmět: |
|
|
Spočítej přímo rotační matici:
Matice se skládá z 3 vektorů: Direction, Right, Up. Buď to jsou sloupce, nebo řádky. Záleží, jestli máš OpenGL nebo DirectX.
Up je normála terénu, musíš najít Direction a Right. Máš ale směr auta, kterým chceš jet, to je nějakej vektor ve 2D - CarDir. Teď když vezmeš Up a CarDir a uděláš jejich CrossProduct, zjískáš Right. CrossProduct mezi Right a Up ti dá Direction.
Tolik rotace.
Ale stejně to bude trochu složitější, protože budeš muset zjišťovat vejšku pod každým kolem a ze získaných bodů teprve vytvářet Up vektor, normála povrchu by se nechovala dobře např. kdybys měl pod středem auta nějakou jamku. Další problém je, že auto má většinou 4 kola, ale na terén správně usadíš jen 3. Takže můžeš dojít k více výsledkům a některý musíš zvolit (třeba jedno kolo ve vzduchu, nebo upravit tlumiče...).
U fyzikálních simulací auta se na to jde trochu jinak, ale to se mi nechce rozepisovat. _________________ Kdo jede na tygru, nesmí sesednout.
---
http://www.inventurakrajiny.cz/sipka/
Aquadelic GT, Mafia II, simulátory |
|
Návrat nahoru |
|
 |
Juraj

Založen: 06. 12. 2007 Příspěvky: 189
|
Zaslal: 10. březen 2010, 15:29:41 Předmět: |
|
|
Tak výpočet už bych tak nějak měl. A teď kdo mi poradí jak dostat z rotační matice tvar Vector3, kde jsou uvedené úhy v radianech.
Nebude s tím nějaký problém, ne? Uchovávám si právě rotaci os X,Y a Z ve Vectoru3 a teď nevím jak to z matice dostat zpět.. |
|
Návrat nahoru |
|
 |
]semo[

Založen: 29. 07. 2007 Příspěvky: 1526 Bydliště: Telč
|
Zaslal: 10. březen 2010, 16:05:23 Předmět: |
|
|
Na to rovnou zapomeň, uchovávat rotaci timhle způsobem je hrozný peklo a nepoužívá se to. Když už, tak se uchovává osa rotace X Y Z a úhel. A i to těžko z matice dostaneš. Musel bys jí převést na quaternion. V enginech bejvá běžně rotace reprezentovaná maticí nebo quaternionem a úhly X Y Z se neřeší, protože neexistuje rozumný způsob, jak z nich udělat rotační matici. _________________ Kdo jede na tygru, nesmí sesednout.
---
http://www.inventurakrajiny.cz/sipka/
Aquadelic GT, Mafia II, simulátory |
|
Návrat nahoru |
|
 |
Juraj

Založen: 06. 12. 2007 Příspěvky: 189
|
Zaslal: 10. březen 2010, 22:04:36 Předmět: |
|
|
Tak to jsem si myslel a dokonce jsem to asi i nědke četl. V podstatě, je mi to jedno, pro kolize, vykresleni atd používám matici.
Teď mě ale nenapadá, jak v editoru zobrazit rotaci a také reagovat na rotaci? Přece nemůžu chtít, aby člověk který chce natočit model v ose X z hodnoty 20 na 50 se musel vyznat v maticích.. Nějaký nápad ? |
|
Návrat nahoru |
|
 |
]semo[

Založen: 29. 07. 2007 Příspěvky: 1526 Bydliště: Telč
|
Zaslal: 11. březen 2010, 08:42:48 Předmět: |
|
|
Může s tim rotovat pouze vizuálně, přes nějaký gizma. Nicméně v editoru můžeš matici převádět na úhly a úhly na matici, když se tam stane nějaká haluz, tak to člověk hned vidí a opraví to. Ale interně v enginu s tim opravdu nedoporučuju pracovat po úhlech. _________________ Kdo jede na tygru, nesmí sesednout.
---
http://www.inventurakrajiny.cz/sipka/
Aquadelic GT, Mafia II, simulátory |
|
Návrat nahoru |
|
 |
Marek

Založen: 28. 07. 2007 Příspěvky: 1782 Bydliště: Velká Morava
|
Zaslal: 15. březen 2010, 14:10:49 Předmět: |
|
|
Do editorů se dává arcball rotace, googli. _________________ AMD Open Source Graphics Driver Developer |
|
Návrat nahoru |
|
 |
Juraj

Založen: 06. 12. 2007 Příspěvky: 189
|
Zaslal: 16. březen 2010, 09:19:37 Předmět: |
|
|
Eosie napsal: |
Do editorů se dává arcball rotace, googli. |
Ani jsem nevěděl že se to takto jmenuje, každopoádně to už mám v editoru implementované nějaký čas  |
|
Návrat nahoru |
|
 |
|