.[ ČeskéHry.cz ].
pathfinding-poloměr zatočení objektu

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



Založen: 06. 09. 2007
Příspěvky: 11

PříspěvekZaslal: 24. červen 2008, 11:13:00    Předmět: pathfinding-poloměr zatočení objektu Odpovědět s citátem

Zdravím,lámu si hlavu s následujícím problémem,řeším to,aby když dám objektu příkaz ,že se má přesunout na určenou pozici,tak aby vykroužil na kružnici určitou dráhu před tím než se natočí směrem,kterým se má pohybovat.Je to vlastně simulace efektu třeba u automobilu,který má poloměr otáčení daný,a musí nejdřív vytočit určitý oblouk aby se nasměroval kam chce jet.Přikládám obrázek k pochopení toho co chci.
http://www.eimg.cz/show.php?id=1780
Jedná se o to,že výpočet mám jen pro 2d prostor ale potřeboval bych ho pro 3D .Nevíte jak nato?nebo nákou stránku kde bych mohl najít info díky moc
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
if.then



Založen: 13. 04. 2008
Příspěvky: 579

PříspěvekZaslal: 24. červen 2008, 11:26:59    Předmět: Re: pathfinding-poloměr zatočení objektu Odpovědět s citátem

Napadlo mě, že bys udělal
jednu kružnici pro osu Y,Z(popř.X,Z)
a jednu pro osu X,Y.
Pak bys z
kružnice Y,Z vzal Z-ko a
z X,Y vzal obě hodnoty,
stmelil a měl bys to.

(strukturuju pro lepší pochopení Very Happy )
_________________
For guns and glory, go to www.ceske-hry.cz.
For work and worry, execute VC++.
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: 24. červen 2008, 11:33:54    Předmět: Odpovědět s citátem

Co takhle implementovat normální fyziku toho letounu a ovládání pomocí kláves/myši a nechat AI ať:
1) má možnost si zjistit stav hry
2) reagovat simulací kláves a myši (nebo rovnou volat určité metody)

V podstatě jde jen o zobecnění hráče. Zároveň tam budeš mít snadno autopilota (přepínáš mezi hráčem a AI u jednoho letounu).
_________________
AMD Open Source Graphics Driver Developer
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Amorph



Založen: 06. 09. 2007
Příspěvky: 68

PříspěvekZaslal: 24. červen 2008, 11:50:16    Předmět: Odpovědět s citátem

Ja pro steering pouzivam deleni vzdalenosti. Nesmerujes objekt primo k cili, ale k vektoru pohybu objektu prictes vektor k cili o velikosti rovne vzdalenosti (pripadne jejimu nasobku), kterou objekt urazil v predchozim frejmu. Vektor pohybu pak omezis nejakou max rychlosti. Nemusis se zabyvat zadnou analytikou (krome jednoduche prace s vektory). Jediny problem je omezeni uhlu toho pricitaneho vektoru a aktualniho vektoru pohybu. Resp. staci, kdyz ho omezis na nejakou mez a tim nastavis minimalni polomer zatacky. Plus se k tomu da treba pridat vektor setrvacnosti v aktualnim smeru.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovi WWW stránky
Lazaroz



Založen: 06. 09. 2007
Příspěvky: 11

PříspěvekZaslal: 24. červen 2008, 12:46:21    Předmět: Odpovědět s citátem

Děkuji z aodpovědi,sešlo se jich tu celkem dost.
if.then -tohle jsem zkoušel ale dopadlo to náko divně
eosie-ono to vlastně jakoby AI je co chci udělat
Amorph :to zní slibně ale docela sem zvědavej na výsledek ,du to zkusit implementovat ještě jendou díky za odpovědi
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Lazaroz



Založen: 06. 09. 2007
Příspěvky: 11

PříspěvekZaslal: 24. červen 2008, 14:46:53    Předmět: Odpovědět s citátem

Amorph napsal:
Ja pro steering pouzivam deleni vzdalenosti. Nesmerujes objekt primo k cili, ale k vektoru pohybu objektu prictes vektor k cili o velikosti rovne vzdalenosti (pripadne jejimu nasobku), kterou objekt urazil v predchozim frejmu. Vektor pohybu pak omezis nejakou max rychlosti. Nemusis se zabyvat zadnou analytikou (krome jednoduche prace s vektory). Jediny problem je omezeni uhlu toho pricitaneho vektoru a aktualniho vektoru pohybu. Resp. staci, kdyz ho omezis na nejakou mez a tim nastavis minimalni polomer zatacky. Plus se k tomu da treba pridat vektor setrvacnosti v aktualnim smeru.

Tak jsem to zkoušel,ale výsledek je pohyb ve směru přímky od pozice objektu k destinaci objektu tkaze asi jsem to nepochopil.Můžeš sem třebas pástnout trosku kodu,nebo to nak ještě vysvětlit?díkec chlape
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Amorph



Založen: 06. 09. 2007
Příspěvky: 68

PříspěvekZaslal: 24. červen 2008, 15:13:16    Předmět: Odpovědět s citátem

No napsal jsem to mozna moc zjednodusene mozna i trochu nepresne. Kod ti ale bohuzel nepastnu, protoze bys mi asi musel podepsat NDA Wink Ale zkusim jeste jednou napovedet.

fElapsed_dist - vzdalenost urazena za posledni update.
vActPos - moje pozice
vTarget - pozice cile
vActSpeed - aktualni vektor pohybu - udava smer a jeho velikost rychlost pohybu.

vDiff = vTarget - (vActPos + vActualSpeed) - rozdilovy vektor k cili.
vDiff = (vDiff.norm() * fElapsed_dist) - znormalizuju rozdilovy vektor a vynasobim urazenou vzdalenosti

vActSpeed += vDiff - prictu rozdilovy vektor k aktualnimu vektoru pohybu
vActSpeed.clamp(max_speed) - omezim maximalni rychlosti

pak tam jeste musis vyresit omezeni uhlu zataceni a kontrolovat vzdalenosti, abys neprejizdel cil, nastavit pocatecni stav a podminky pri rozjezdu z klidu a podobne. Ale kdyz to udelas spravne, tak budes mit luxusni plynulej steering po krivce.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovi WWW stránky
johnnash



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

PříspěvekZaslal: 24. červen 2008, 15:57:49    Předmět: Odpovědět s citátem

A nebylo by jednodussi pouzit rovnkou nejakou krivku? Napr bezierova kubika by se hodila.
Vypocet drahy je uz pak jednoduchy, jde jen o spravne umisteni ridicich bodu.
Pro predstavu http://www.cs.princeton.edu/~min/cs426/jar/bezier.html
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Amorph



Založen: 06. 09. 2007
Příspěvky: 68

PříspěvekZaslal: 24. červen 2008, 16:12:24    Předmět: Odpovědět s citátem

ad bezier: no nevim, jestli polynomialni krivka je jednodussi, nez prosta prace s vektory, ale pouzit se to samozrejme da. Ale v momente, kdy potrebujes hledat cestu - vyhybat se okolni geometrii, zacina byt to umisteni ridicich bodu pomerne slozitej problem.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovi WWW stránky
rezna



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

PříspěvekZaslal: 24. červen 2008, 16:40:36    Předmět: Odpovědět s citátem

no ja myslim ze bychom si prvne meli rict jaky problem presne resime Wink - jsou tu dve mozne verze totiz -

bud chce autor threadu opravdu obecne nataceni - jsem v libovolnem bode A a muj rychlosti vektor je v a chci do libovolneho bodu - pak opravdu budem muset resit ty obecne popsane problemy - premyslim jestli bezier ma to spravne zakriveni, ale asi jo - nicmene ani tak bych ho nedoporucoval - objekt by mel splnovat nejakou fyziku pri danem pohybu, tak mozna by bylo lepsi simulovat "stisky klaves" - tedy treba simulovat stisk klavesy doleva, dokud se nenatocim na objekt a pak dal primo

a nebo pokud chce delat AI treba pro auta tak byva jednodussi mit trasy preddefinovane a nutit AI aby se jich co nejvice drzela - pak neni potreba resit zadne vypocty, ale proste si tu trasu projet, nadefinovat way-pointy a je to
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
quas4



Založen: 18. 10. 2007
Příspěvky: 199

PříspěvekZaslal: 24. červen 2008, 20:11:56    Předmět: Odpovědět s citátem

Lazaroz> Nedavno jsem obecne steering/repulsion vectors/atd.. resil. Vysekal jsem ti maly funkcni priklad: http://inputwish.com/files/simple-steering.tgz
napsano v pythonu (pyopengl, pygame). Testovaci vizualizace je pouze ve 2d, ale jde skutecne jen o zobrazeni - vse je samozrejme pocitano ve 3d (otestovat lze zmenou nastaveni projekcni matice a umistenim "agent" do prostoru). V prikladu (test0.py) si zkus pohrat z hodnotami "agent" (mass, max_force apod.). Doufam ze priklad pomuze.
Jinak mnohem vic informaci lze najit zde: http://www.red3d.com/cwr/steer/
btw: nic podepsat nechci Smile
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Lazaroz



Založen: 06. 09. 2007
Příspěvky: 11

PříspěvekZaslal: 9. červenec 2008, 09:22:37    Předmět: Odpovědět s citátem

Amorph:tak jsem to nak splacal a je to fakt luxusni steering jak si říkal,díky moc za radu ,ted to jeste musim nak doladit abych si mohl volit polomer zatoceni atd ale jinak to funguje vyborne
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Zobrazit příspěvky z předchozích:   
odeslat nové téma   Odpovědět na téma    Obsah fóra České-Hry.cz -> Obecné Č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