Pravděpodobněji nejlepší budou stránky na odkazech "Zobrazení pro tisk". Já samozřejmě mám svoje neupravené originály, které posílám do redakce, ale myslím že je korektní, aby se kopírovaly pouze stránky, na které je označení Roota a URL (je to pouze jeden řádek).
Předpokládám že někdo z redakce Roota čte tyto příspěvky a tak se k tématu vytváření "seskupení" vyjádří.
No já jsem se ze začátku rozmýšlel, jestli to psát v LaTeXu nebo přímo v HTML. Nakonec jsem zvolil HTML protože:
1. někdy používám značkování, které je v LaTeXu nestandardní - barvy apod.
2. šlo o článek určený přímo na WEB
3. překladače z (La)TeXu do HTML někdy zlobí (znám jich víc - Latex2HTML, TTH, tex2rtf apod.)
4. mám rád vše pod kontrolou, a to i kód HTML
5. umím oboje, makra mám ve vimu taky podobná
Klidně by ale šlo vytvořit nějakou indexovou stránku s odkazy na jednotlivé díly.
Abych se priznal, zacinam se v tom ztracet. Jestli jsem to spravne pochopil, pro materialy se zadava: ambientni, difuzni slozka svetla, barva odlesku a faktor odlesku. Pro svetla se zadava to same (nejsem si jisty faktorem odlesku) plus dalsi parametry, ktere jsou zavisle na typu svetelneho zdroje (pozice, smer sireni svetla atd.).
Typ stinovani urcuje, pro co se bude vysledna barva pocitat. Bud muzeme pouzit konstantni (pocita se pro celou plosku) nebo Gouraudovo (pocita se pro vrcholy a na ploskach se interpoluje).
Ted uz zbyvaji jen normaly vrcholu. To jsou normaly na co (neni mi jasny jejich smer vzhledem k plosce)? Domnivam se, ze normala na plosku to byt nemuze, protoze obvykle jeden vrchol patri vice ploskam.
Já myslím, že se v tom neztrácíte, protože jste to shrnul velmi dobře. Takže k tomu stínování:
1. konstantní stínování bere v úvahu pouze normálu zadanou u jednoho vrcholu (u trohúhelníků se jedná vždy o první vrchol, jinde je to trošku složitější). OpenGL resp. grafický akcelerátor vůbec nezajímá, zda se jedná o skutečnou normálu k povrchu nebo je to nějaký vektor zadaný "od oka". Jestliže však chceme, aby bylo těleso správně osvětleno, definujeme normálový vektor korektně.
2. Gouraudovo stínování počítá barvu v každém vrcholu. Proto musí být zadána pro každý vertex normála, ze které se za pomoci Phongova osvětlovacího modelu barva spočítá. Proto se zadávají normály ve vrcholech, i když z geometrického hlediska je to samozřejmě nesmysl. Normály ve vrcholech se spočtou například tak, že se provede součet normalizovaných normál stěn které mají tento vrchol společný. Výsledný vektor se poté znovu normalizuje, takže výsledkem je průměr všech normál stěn se stejným vrcholem. No a následně se provede lin. interpolace mezi barvami vypočtenými ve vrcholech.
Kdyžtak zkusím nakreslit nějaký vysvětlující obrázek a potom zde uvést odkaz.
Dobry den,
mam nasledujici problem:
svetlo jsem umistil nekam "ke stropu" doprostred sceny
pri kazdem Render() hned po glLoadIdentity() MODEL_VIEW matice jej znovu umistuji na stejnou pozici
glLightfv(GL_LIGHT0, GL_POSITION, light_position);
presto pokud se otacim ve scene obraz se ztmavuje a zesvetluje a na obektech lze spatrit zcela jasne jak se svetlo pohybuje spolecne se mnou (kamerou)
co delam spatne?
dekuji za odpoved
ps. pouzivam ve scene take masking (pistolka v Ortho() modu ) a pokud zacnu pracovat se svelem ona pruhlednost kolem pistolky je jaksi mene pruhledna, pouze u svetla "jednicka na konci->bodove svetlo" je pruhlednost vpohode
V podstate ste napisal presny navod na to, ako nastavit svetlo, ktore sa pohybuje spolu s pozorovatelom (co je presny opak vasej snahy :).
Pohyb po scene si mozete predstavit ako posun a rotaciu sceny vzhladom na staticku poziciu (a smer pohladu) pozorovatela. V OpenGL sa tento nachadza v pociatku suradnej sustavy a pozera sa v zapornom smere osi Z.
Ak sa pozicia svetla nastavuje hned po resetovani modelview matice, osvetli vykreslenu scenu vzdy z rovnakej pozicie. Ale pozor! Rovnakej nie vzhladom na scenu, ale vzhladom na pociatok suradnej sustavy (a teda aj vzhladom na pozorovatela).
Ak chcete mat svetlo staticke vzhladom ku scene a nie ku pozorovatelovi, nastavte jeho poziciu v case, ked modelview matica obsahuje transformaciu, ktora sa aplikuje na vykreslovanu scenu. Bezne je to napriklad tesne predtym, nez zacnete scenu skutocne vykreslovat.