.[ ČeskéHry.cz ].
OpenGL - normály

 
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
lukas.balaz



Založen: 13. 05. 2013
Příspěvky: 3

PříspěvekZaslal: 22. srpen 2013, 16:18:27    Předmět: OpenGL - normály Odpovědět s citátem

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



Založen: 28. 07. 2009
Příspěvky: 879

PříspěvekZaslal: 22. srpen 2013, 17:34:10    Předmět: Odpovědět s citátem

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



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

PříspěvekZaslal: 22. srpen 2013, 18:30:01    Předmět: Odpovědět s citátem

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



Založen: 13. 05. 2013
Příspěvky: 3

PříspěvekZaslal: 22. srpen 2013, 18:46:26    Předmět: Odpovědět s citátem

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



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

PříspěvekZaslal: 22. srpen 2013, 19:37:50    Předmět: Odpovědět s citátem

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
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovi WWW stránky  
ICQ
lukas.balaz



Založen: 13. 05. 2013
Příspěvky: 3

PříspěvekZaslal: 22. srpen 2013, 19:51:27    Předmět: Odpovědět s citátem

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



Založen: 29. 06. 2009
Příspěvky: 184
Bydliště: Písek / Plzeň

PříspěvekZaslal: 22. srpen 2013, 21:35:58    Předmět: Odpovědět s citátem

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



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

PříspěvekZaslal: 23. srpen 2013, 09:32:57    Předmět: Odpovědět s citátem

Ok, kazdopadne, nechcel som byt zly Smile 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 Smile
_________________
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  
nou



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

PříspěvekZaslal: 24. srpen 2013, 17:33:05    Předmět: Odpovědět s citátem

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



Založen: 18. 09. 2007
Příspěvky: 1537
Bydliště: u Prahy

PříspěvekZaslal: 24. srpen 2013, 23:02:42    Předmět: Odpovědět s citátem

Si stáhne tutoriál a veme shader odtamtud.
_________________
Award-winning game developer
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