.[ ČeskéHry.cz ].
Výběr vertexu nebo line?

 
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
Master



Založen: 28. 08. 2007
Příspěvky: 35

PříspěvekZaslal: 11. listopad 2007, 09:23:23    Předmět: Výběr vertexu nebo line? Odpovědět s citátem

Zdarec.Mam problem.Vykresluju si body nebo linky na obrazovku a potreboval bych je jakoby uchytit a presouvat.Bohuzel ale nevim,jak se uchopuji vertexy a line.Na vertexy bych jeste vedel(kontroloval bych pozici mysi s nejakym radiusem),ale na line nemam tucha,jak bych ho mohl vybrat.

Sou na to nejake algoritmy nebo nejaky popis jak to udelat?
Diky moc za radu.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
nou



Založen: 28. 07. 2007
Příspěvky: 1050

PříspěvekZaslal: 11. listopad 2007, 09:45:04    Předmět: Odpovědět s citátem

na priamku sa ide tak isto ako na bod. tiez zistis ci nie je pozicia dost blizko k linke. tento vzorecek ti vyrata vzdialenost bodu od plochy v 3D x y z su suradnice bodu nx ny a nz su zlozky normaloveho vektoru plochy teda vektoru ktory je kolmy na tu plochu. ak to chces v 2D tak staci vynechat tie tretie suradnice. (x*nx+y*ny)/sqrt(nx^2+ny^2) ak vyde kladne cislo je bod v polopriestore kam ukazuje normalovy vektor ak zaporne tak v opacnom.
_________________
Najjednoduchšie chyby sa najtažšie hľadajú.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Master



Založen: 28. 08. 2007
Příspěvky: 35

PříspěvekZaslal: 11. listopad 2007, 16:02:38    Předmět: Odpovědět s citátem

No mam v tom ted trochu zmatek.Normalove vektory k jake plose?Ja mam na mysli neco jako picking(asi).Proste moznost uchopit mysi bod a pretahnout ho(jako v maxku).Jestli,tak by pomohl i maly example,kde bych videl kod a nejak si to uz prebral.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
pcmaster



Založen: 28. 07. 2007
Příspěvky: 1827

PříspěvekZaslal: 11. listopad 2007, 16:56:19    Předmět: Odpovědět s citátem

Pre tvoju aplikaciu bude stacit OpenGL picking (to aj hladaj - glSelect()).
Kazdej lajne/bodu das unikatne "meno" (tj cislo) a potom uz len budes testovat co vsecko je pod kurzorom ked ho stlacis a budes tahat...
A nefungujes pod OpenGL, tak to co nou napisal, myslel sice dobre, ale nebude to ok Very Happy
Ty budes mat tie body/ciary v 2D (budes pocitat s window coordinates) no a vzorec, ako zistit, ktora ciara je najblizsie k nejakemu pixelu (kurzoru) je taka ista, akurat Z suradnice budu nula... Je to vzorec pre vzdialenost bodu od roviny v 3D (v nasom pripade od priamky v 2D).
_________________
Off-topic flame-war addict since the very beginning. Registered since Oct. 2003!
Interproductum fimi omne est.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Master



Založen: 28. 08. 2007
Příspěvky: 35

PříspěvekZaslal: 11. listopad 2007, 17:41:42    Předmět: Odpovědět s citátem

takze ono se to pocitalo k plose jako ke kurzoru?Ok,zkusim to s tim glSelect.

Nemate primo nejaky zdrojak po ruce,na kterem bych to pekne okoukal Smile
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Icek



Založen: 29. 07. 2007
Příspěvky: 45
Bydliště: Banov 375

PříspěvekZaslal: 11. listopad 2007, 19:44:31    Předmět: Odpovědět s citátem

Stačilo by promítnout úsečku na viewport a testovat ve 2D. Je to jednoduché a univerzálnější než to s glSelect...
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovi WWW stránky
pcmaster



Založen: 28. 07. 2007
Příspěvky: 1827

PříspěvekZaslal: 11. listopad 2007, 19:54:22    Předmět: Odpovědět s citátem

Ano, akurat glSelect to robi (aspon by mal Smile) hardwarovo Wink
Inak nam prosim, Icek, vysvetli, ako konkretne to teda inak myslis, ako to co som napisal ja.
_________________
Off-topic flame-war addict since the very beginning. Registered since Oct. 2003!
Interproductum fimi omne est.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Master



Založen: 28. 08. 2007
Příspěvky: 35

PříspěvekZaslal: 11. listopad 2007, 20:00:11    Předmět: Odpovědět s citátem

No popisu zde muj konkretni problem.Mam za ukol udelat bezierovy plochy pomoci vlastni vypoctu.A to tak,ze si zadam vlastni body nejake krivky,to vypocita toho beziera a pak tu krivku oznacim a dam ji jakoby extrudovat.Tudiz ji vlastne okopiruju.

Jde mi taky o to,ze u beziera se propocitava vice casti,tak jak rozpoznat celou tu line a ne jenom tu cast ,ktera se vypocitala.

Popripade by icek fakt mohl vysvetlit,jak to presne mysli.
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: 11. listopad 2007, 20:23:58    Předmět: Odpovědět s citátem

pcmaster napsal:
Ano, akurat glSelect to robi (aspon by mal Smile) hardwarovo Wink

Nikoliv, selection buffer se počítá softwarově. Je to jedna z těch zastaralých funkcí v GL, které se vymyslely před 13 lety a v další verzi GL to už nebude. Je to moc pomalý - nepoužíval bych to. Aby to bylo hardwarově akcelerované, muselo by to být na způsob queries (tzn. výsledek bys dostal asi za N framů, kde N je počet gpu). Řešení pomocí analytické geometrie je vždy upřednostňovaný způsob.
_________________
AMD Open Source Graphics Driver Developer


Naposledy upravil Marek dne 11. listopad 2007, 20:27:40, celkově upraveno 1 krát
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Icek



Založen: 29. 07. 2007
Příspěvky: 45
Bydliště: Banov 375

PříspěvekZaslal: 11. listopad 2007, 20:26:06    Předmět: Odpovědět s citátem

Promítnutí úsečky na viewport se dá udělat buď pomocí gluProject, nebo "ručním" násobením matic.

2DPos = 3DPos * (ModelView * Projection);
2DPos /= 2DPos.w;
2DPos *= ViewPortWidth;
2DPos *= ViewPortHeight;

Psal jsem to z placu, takze brát s rezervou.

Pak prostě jen zjistit vzdálenost bodu od té úsečky, a pokud je menší než nějaké zvolené minimum, tak je kurzor na úsečce.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovi WWW stránky
pcmaster



Založen: 28. 07. 2007
Příspěvky: 1827

PříspěvekZaslal: 11. listopad 2007, 20:31:53    Předmět: Odpovědět s citátem

Vsak ale to ano, Icek, to je jasne Wink Vsak to som napisal - musis brat suradnice v window-space Smile

Ale dalej plati to co som napisal, ty si premietnes koncove body do window-space ale aby si zistil, ci je dany bod X k usecke AB blizsie ako k BC, musis otestovat vzdialenost, co je vzorec, ktory napisal nou.

Eo> hej, ja viem, ze dnes to uz HW nevie, ale nejako som v kutiku pcmastra dufal, ze to kedysi HW vedel Embarassed Laughing
_________________
Off-topic flame-war addict since the very beginning. Registered since Oct. 2003!
Interproductum fimi omne est.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Icek



Založen: 29. 07. 2007
Příspěvky: 45
Bydliště: Banov 375

PříspěvekZaslal: 11. listopad 2007, 21:07:48    Předmět: Odpovědět s citátem

PCMASTER > čoveče asi jsem si špatně přečetl co jsi napsal....
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovi WWW stránky
Master



Založen: 28. 08. 2007
Příspěvky: 35

PříspěvekZaslal: 11. listopad 2007, 21:15:40    Předmět: Odpovědět s citátem

dikes,zkusim si to nejak prebrat.
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 -> 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