.[ ČeskéHry.cz ].
Pohyb po terénu

 
odeslat nové téma   Odpovědět na téma    Obsah fóra České-Hry.cz -> 3D API / 3D Enginy
Zobrazit předchozí téma :: Zobrazit následující téma  
Autor Zpráva
Juraj



Založen: 06. 12. 2007
Příspěvky: 189

PříspěvekZaslal: 10. březen 2010, 14:06:47    Předmět: Pohyb po terénu Odpovědět s citátem

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
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovi WWW stránky
]semo[



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

PříspěvekZaslal: 10. březen 2010, 14:29:02    Předmět: Odpovědět s citátem

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
Zobrazit informace o autorovi Odeslat soukromou zprávu
Juraj



Založen: 06. 12. 2007
Příspěvky: 189

PříspěvekZaslal: 10. březen 2010, 15:29:41    Předmět: Odpovědět s citátem

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
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovi WWW stránky
]semo[



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

PříspěvekZaslal: 10. březen 2010, 16:05:23    Předmět: Odpovědět s citátem

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
Zobrazit informace o autorovi Odeslat soukromou zprávu
Juraj



Založen: 06. 12. 2007
Příspěvky: 189

PříspěvekZaslal: 10. březen 2010, 22:04:36    Předmět: Odpovědět s citátem

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 Smile?
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovi WWW stránky
]semo[



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

PříspěvekZaslal: 11. březen 2010, 08:42:48    Předmět: Odpovědět s citátem

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
Zobrazit informace o autorovi Odeslat soukromou zprávu
Marek



Založen: 28. 07. 2007
Příspěvky: 1782
Bydliště: Velká Morava

PříspěvekZaslal: 15. březen 2010, 14:10:49    Předmět: Odpovědět s citátem

Do editorů se dává arcball rotace, googli.
_________________
AMD Open Source Graphics Driver Developer
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Juraj



Založen: 06. 12. 2007
Příspěvky: 189

PříspěvekZaslal: 16. březen 2010, 09:19:37    Předmět: Odpovědět s citátem

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 Wink
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 -> 3D API / 3D Enginy Č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