Zobrazit předchozí téma :: Zobrazit následující téma |
Autor |
Zpráva |
Manox
Založen: 30. 07. 2007 Příspěvky: 140 Bydliště: Brno
|
Zaslal: 23. červen 2008, 10:59:53 Předmět: Pohyb po terenu |
|
|
Ahoj,
premyslim jak vyresit pohyb po terenu, ale ne takovy ten zakladni pro postavu. Chtel bych to udelat tak, ze gravitace je vzdy opacna k normalovemu vektoru trojuhelniku terenu, na kterem se nachazi objekt. Ve vysledku, kdyz si predstavime scenu, ktera ma treba tvar vrtule, tak na jedne strane bode normala v ose Z a na druhe treba v Y. Nejradeji bych do toho vubec netahal fyziku, chci jen, aby objekt "jezdil" po tom terenu, zadne skakni a dalsi blbovinky. Idelane, kdyby se na to dalo nejake namapovat 2D. Posun bych chtel jen ve dvou smerech a objekt bude podle toho jezdit po povrchu. Idealne prave aby posun a AI fungovalo jen nad 2D reprezentaci a pak se pozice ze 2D transformovala do 3D a nalepila na povrch.
Diky |
|
Návrat nahoru |
|
|
Fila
Založen: 31. 07. 2007 Příspěvky: 853
|
Zaslal: 23. červen 2008, 12:11:43 Předmět: |
|
|
Nejsu si ted jisty, jestli chapu, co chces presne na pohybu resit. Jako spocitat, kdyz jsi v urcitem miste na terenu a dejmetomu chces se pohnout o metr rovne, tak jak ve skutecnosti pohyb vypada? IMHO muzes pohyb pocitat na normalni rovine a tu mapovat na povrch terenu (tedy pohnes-li se na rovine ve smyslu nejakeho 2D vektoru, pak tento vektor transformujes na rovinu, kterou tvori trojuhelnik terenu, na kterem se nachazis). Problem nastane, kdyz vyjedes z jednoho trojuhelniku na druhy -- tady musis zjistit, kdy jsi opustil rovinu danou jednim trojuhelnikem, udelat prislusne velky krok a zbytek pocitat pro novou rovinu.
Jinak obecna trojuhelnikova sit nejde prevezt na spojitou rovinu, to by snad ale nemuselo vadit (nevim, co presne tam ma pachat AI -- problem bych videl napr. v pathfindingu). |
|
Návrat nahoru |
|
|
Manox
Založen: 30. 07. 2007 Příspěvky: 140 Bydliště: Brno
|
Zaslal: 23. červen 2008, 12:19:41 Předmět: |
|
|
Chapes to docela dobre, scenu bych chtel mit jen ve "2D" kvuli lepsimu hledani cest, pohyb klavesami ja taky jen ve 2 osach, ale scena by mela byt ve 3D. jde o to, kdyz zmacknu treba sipku doleva, zjisti jak se ma vubec pohnout ve 3D a tak. I pro AI, kdy se tam bude potloukat par postav jen tak, bude navigace mnohem lepsi jen ve 2D prostoru. Rovina asi neni to spravne slovo, spise neco jako graf, kde uzly jsou trojuhelniky a vazby jsou hrany mezi nimi. |
|
Návrat nahoru |
|
|
frca
Založen: 28. 07. 2007 Příspěvky: 1558
|
Zaslal: 23. červen 2008, 12:32:57 Předmět: |
|
|
Mám nějak problém představit si scénu ve tvaru vrtule.
Vpodstatě jde o to, abys měl dva vektory, přední a vrchní. Vrchní je normála k trojúhelníku. Přední si na začátku nějak zvolíš a budeš s ním točit kolem vrchního. Jediný problém, který je, je přepočítat ten přední vektor při přechodu mezi dvěma trojúhelníky. Musí být totiž pořád kolmý na vrchní, který se mění podle konkrétního trojúhelníku. |
|
Návrat nahoru |
|
|
Fila
Založen: 31. 07. 2007 Příspěvky: 853
|
Zaslal: 23. červen 2008, 14:42:33 Předmět: |
|
|
Manox napsal: |
Chapes to docela dobre, scenu bych chtel mit jen ve "2D" kvuli lepsimu hledani cest, pohyb klavesami ja taky jen ve 2 osach, ale scena by mela byt ve 3D. jde o to, kdyz zmacknu treba sipku doleva, zjisti jak se ma vubec pohnout ve 3D a tak. I pro AI, kdy se tam bude potloukat par postav jen tak, bude navigace mnohem lepsi jen ve 2D prostoru. Rovina asi neni to spravne slovo, spise neco jako graf, kde uzly jsou trojuhelniky a vazby jsou hrany mezi nimi. |
Ted budu mozna placat, neprogramuju 3D grafiku, takze su v tomto lajk, predstavuju si to nejak takto:
na 2D rovine mas vektor pohybu. Kdyz vezmes soustavu "vektor pohybu + normala roviny", preneses ji na trojuhelnik na 3D siti rotaci, kterou sjednotis normalu se zminene soustavy s normalou daneho trojuhelniku. Vektor pohybu se tim vyprojektuje na trojuhelnik a provedes uz jen translaci tak, aby zacinal v bode, ve kterem jsi byl na trojuhelniku v kroku v predchozim case. |
|
Návrat nahoru |
|
|
]semo[
Založen: 29. 07. 2007 Příspěvky: 1526 Bydliště: Telč
|
Zaslal: 24. červen 2008, 08:35:57 Předmět: |
|
|
Každý trojúhelník (nikoli vertex, jak bývá zvykem) by mohl mít svoji "Tangent Space" matrix. Zjistil bys trojúhelník, kde se nachází původní pozice, následně vzal jeho Tangent Space matrix a vynásobil jí vektor pohybu. Kdyby výsledná pozice byla již mimo trojúhelník, musel bys nejspíš přizpůsobit výšku a zanedbat nepřesnost. Nebo zaříznout transformovaný vektor pohybu podle rovin vytažených ze stran trojúhelníka a pohyb rozdělit na více trojúhelníků.
Tohle řeší ale jen posun, jak takhle udělat celý AI, Bůh ví :)
Pak mě ještě napadlo, že kdyby se podařilo nějak pěkně namapovat texturu, tak by se daly použít rovnou texturové koordináty. Ty by vlastně vytvořily mesh v 2D, po kterým by přímo mohla běhat AI a převod do 3D by už byl triviální. Ovšem jsou zde určité detaily:
Namapování může být někde "roztržené" a tak by se musely vytvořit "mosty":
V místech, kde reálný 3D mesh sousedí hranama, ale "2D" mesh ne, by se uložila informace o návaznosti. Kdyby došla AI na takovou hranu, musela by přejít na druhou stranu po tomto "logickém můstku".
Textura může být někde více či méně napnutá. Bylo by dobré porovnávat poměr vzdáleností vertexů v 3D a v 2D a určit tak rychlost pohybu. Pokud by byla textura namapovaná dobře, tohle by se nemuselo dělat a drobné chyby by se zanedbávaly. _________________ Kdo jede na tygru, nesmí sesednout.
---
http://www.inventurakrajiny.cz/sipka/
Aquadelic GT, Mafia II, simulátory |
|
Návrat nahoru |
|
|
|