Zobrazit předchozí téma :: Zobrazit následující téma |
Autor |
Zpráva |
lukas.balaz
Založen: 13. 05. 2013 Příspěvky: 3
|
Zaslal: 22. srpen 2013, 16:18:27 Předmět: OpenGL - normály |
|
|
Ahojte
Chcem sa spýtať čo to vlastne je normála ?? Myslím že je to čiara kolmá na polygon, ktorá začína v jeho strede a aby som opengl povedal, kde je, poviem jeden bod z tej čiary(vlastne polpriamky), ale možno som to zle pochopil
A neviem čo je to stred polygonu (myslím že je to priemer bodov, ale tu som si vôbec neni istý)
A ešte sa chces spýtať, ako normálu vypočítať, teda algoritmus do ktorého dám body polygonu a on mi vráti X,Y,Z KTORĚ M?M DAŤ DO glNormal3f() (lebo keď som googlil našiel som nejaké algoritmy, ktoré počítajú normály, ale oni vracajú niečo iné a ja neviem ako to použiť)
Ďakujem za pomoc
(pripomínam že som úplný začitočník v opengl a ako 13-ročný ani matematiku neviem najlepšie) |
|
Návrat nahoru |
|
 |
perry

Založen: 28. 07. 2009 Příspěvky: 879
|
Zaslal: 22. srpen 2013, 17:34:10 Předmět: |
|
|
Dělat grafiku bez základní znalosti vektorové algebry je dost heavy-duty stuff. Měl bys vědět o tranformacích, dot (skalární součin) a cross (vektorový součin), vektor vs bod, násobení matic a vektorů. Jinak se bez tohohle daleko nedostaneš.
Jinak normála ve 3D je kolmice na plochu (nebo na úsečku ve 2D). Vypočítat se dá ve 3D vektorovým součinem (což ale asi taky nevíš co je) dvou vektorů, které v té ploše leží. Celá plocha má vždy v každém bodě stejnou normálu.
Ve 2D se počítá jednodušeji, stačí ti bod na úsečce a znalost úhlu (90°) _________________ Perry.cz |
|
Návrat nahoru |
|
 |
pcmaster

Založen: 28. 07. 2007 Příspěvky: 1827
|
Zaslal: 22. srpen 2013, 18:30:01 Předmět: |
|
|
A toto ste este na strednej skole na matematike nepreberali? Na gymnaziu sa to berie snad v 1.-2. rocniku? _________________ Off-topic flame-war addict since the very beginning. Registered since Oct. 2003!
Interproductum fimi omne est. |
|
Návrat nahoru |
|
 |
lukas.balaz
Založen: 13. 05. 2013 Příspěvky: 3
|
Zaslal: 22. srpen 2013, 18:46:26 Předmět: |
|
|
Teraz sa na osem-ročnom gymnáziu preberajú samé sprostrosti (práve idem do tercie a ešte sme na matike nepreberali nič čo by som nevedel už pár mesiacov dopredu, väčšina spolužiakov nevie ani čo je to mocnina) |
|
Návrat nahoru |
|
 |
Tringi

Založen: 28. 07. 2007 Příspěvky: 290
|
Zaslal: 22. srpen 2013, 19:37:50 Předmět: |
|
|
No jasně, matika, když jsem já začínal s 3D v OpenGL, bylo mi úplně ukradené že jsou pod tím skryté matice, bylo pro mě podstatné že glRotate otáčí a glTranslate posouvá, a že je musím volat v opačném pořadí než by bylo logické.
Bylo pro mě podstatné, že pomocí glNormal3f řeknu u každého vrcholu, kterým směrem je jakoby zakřiven a jak se od něj má odrážet světlo.
Matika na mě přišla, až jsem chtěl dělat něco trochu chytřejšího, ale to už bylo pozdě abych se tím vším vyděsil a utekl, což může u třináctiletého snadno nastat, když ho zavalíte vzorečky. _________________ WWW | GitHub | TW |
|
Návrat nahoru |
|
 |
lukas.balaz
Založen: 13. 05. 2013 Příspěvky: 3
|
Zaslal: 22. srpen 2013, 19:51:27 Předmět: |
|
|
Mňa veľmi baví matika, len ešte nemám myslenie v takom štádiu, aby som mohol rozmýšlať o goniometrii alebo vektoroch, ale pomaly k tomu idem.
A určite by som od grafiky neutiekol, už pred rokom (pre mňa je rok veľa) som si povedal, že budem programovať hry a hoci som ešte nič neurobil, ale určite by som od toho neodišiel (teda nie že by som nič neurobil, celý rok som hľadal enginy, ktoré by boli pre mňa dobré, ale nič som nenašiel, teraz som sa už definitívne rozhodol pre programovanie) |
|
Návrat nahoru |
|
 |
Poky

Založen: 29. 06. 2009 Příspěvky: 184 Bydliště: Písek / Plzeň
|
Zaslal: 22. srpen 2013, 21:35:58 Předmět: |
|
|
Normála z analytiky je kolmice k ploše - tedy vektor, v OpenGL však máš možnost nastavit si je ručně a to s sebou nese značnou výhodu. Jak psal Tringi, můžeš tím definovat tvar tělesa pro osvětlovací model (tedy nemusí tento tvar být stejný s geometrií) |
|
Návrat nahoru |
|
 |
pcmaster

Založen: 28. 07. 2007 Příspěvky: 1827
|
Zaslal: 23. srpen 2013, 09:32:57 Předmět: |
|
|
Ok, kazdopadne, nechcel som byt zly Len som predpokladal, ze uz si aspon na tretom stupni skoly.
Normala urcuje len smer. Nie je to "polpriamka" ako sa bezne kresli, je to vektor a nemusi byt nikde umiestnena. Cize nie v strede trojuholnika ale VSADE a zaroven kdekolvek, lebo urcuje len smer. "Smer zakrivenia".
V 3D grafike maju normalu nielen plochy ale i vrcholy. Kazdy z troch vrcholov moze mat trochu inu normalu a pre body trojuholnika medzi vrcholmi to bude znamenat, ze ich normaly su "priemerom" tychto troch normal. A to je prave preto, ze tie trojuholniky su len "pribliznym" modelom reality a prave aj napriklad takto ho mozes "spresnit" (skraslit). Dokonca i kazdy jeden bod trojuholnika moze mat inu normalu a to si potom predstav tak, ze je na kazdom mieste akoze "mikroploska", ktora je inak naklonena a tym padom inak odraza svetlo. Takato normala sa trojuholniku doda pomocou normalnovej textury (normal map, normal texture, bump texture a podobne nazvy).
Normalu ti vzdy spolocne s poziciou a texturovacimi koordinatmi vrcholu da 3D modelovaci program (Maya, Max, Blender...), ale ak si vyrabas svoje trojuholniky rucne, mozes ju spocitat takto:
V0, V1, V2 su 3D vrcholy tvojho trojuholnika
V10 = V1 - V0 je vektor od V0 do V1
V20 = V2 - V1 je vektor od V0 do V2
Normala N = V10 x V20 je pomocou vektoroveho sucinu (anglicky "cross product")
N.x = V10.y * V20.z - V10.z * V20.y
N.y = V10.z * V20.x - V10.x * V20.z
N.z = V10.x * V20.y - V10.y * V20.x
Vzniknuta normala N bude kolma ako na vektor V10, tak na vektor V20. Ci su fakt kolme si mozes overit pomocou skalarneho sucinu (anglicky napriklad "dot product"). Vstupom skalarneho sucinu su 2 vektory a vysledkom jedno realne cislo. Ak je 0, su kolme -- to je dolezita vec do zivota, zapamataj si ju a ked si spocitas svoju normalu, rovno si to aj vyskusaj.
SkalarnySucin(V1, V2) = (V1.x*V2.x + V1.y*V2.y + V1.z*V2.z)
EDIT: Upravil som preklepy  _________________ Off-topic flame-war addict since the very beginning. Registered since Oct. 2003!
Interproductum fimi omne est. |
|
Návrat nahoru |
|
 |
nou

Založen: 28. 07. 2007 Příspěvky: 1050
|
Zaslal: 24. srpen 2013, 17:33:05 Předmět: |
|
|
Tringi: v dnesnom modernom OpenGL so shadermi sa ale bez tejto matematiky nezaobydes. teda v core OpenGL nie je dnes implementovany ani sprosty phong. dnesne OpenGL ma omnoho strmsiu uciacu krivku. _________________ Najjednoduchšie chyby sa najtažšie hľadajú. |
|
Návrat nahoru |
|
 |
Ladis

Založen: 18. 09. 2007 Příspěvky: 1537 Bydliště: u Prahy
|
Zaslal: 24. srpen 2013, 23:02:42 Předmět: |
|
|
Si stáhne tutoriál a veme shader odtamtud. _________________ Award-winning game developer |
|
Návrat nahoru |
|
 |
|