od dr.Bik » 24. 1. 2007 22:42
Ja si myslim, ze je to takhle (pozor, nasledujici radky se nemusi nutne zakladat na pravde
ale v OpenGL to takhle nejak funguje)
1) Normala je tam pouzita dost nesikovne, protoze kazda rovina v 3D ma normaly 2 (a pak nasobky, ale ja budu predpokladat, ze normaly jsou normalizovany) a ty jsou presne opacny.
2) Aby slo jednoduse urcit, ktera stena je privracena, potrebuje to od tvurce sceny konzistenci v tom, jak bude ty steny zadavat. Predpokladam, ze scena je tvorena polygonama (hezkejma, takovejma, ktery jsou v jedny rovine)
Kazda stena ma 2 strany, jedna je videt zevnitr telesa a jedna z vnejsku. Pozaduje se, kdyz se podivas na tu stranu, ktera jakoby miri ven z objektu, aby jednotlivy vertexy byly zadany po smeru hodinovejch rucicek (nebo mozna je to obracene, nicmene na principu to nic nemeni)
3) Vezmes 1., 2. a posledni bod v tomhle poradi a udelas z nich 2 vektory mirici z 1. bodu (tzn. 1. a 2, 1. a posledni) a udelas vektorovej soucin - tak dostanes jednu normalu pro kazdou stenu (je to teda lepsi jeste znormalizovat)
4) Dal si vezmes smer tvyho pohledu a porovnas ho s tou normalou a rozhodnes se podle toho, jestli je uhel mezi normalou a tvym pohledem z rozmezi (-Pi/2, Pi/2) nebo ne.
Tady normalizaci vlastne ani nepotrebujes, jde jen o znaminko skalarniho soucinu tech vektoru, ale je hezky mit vektory znormalizovany, ne
Takhle nejak to funguje (mam hrozne blbou 3D predstavivost, takze jak se mas konkretne rozhodnout bych musel chvili badat)
Ja si myslim, ze je to takhle (pozor, nasledujici radky se nemusi nutne zakladat na pravde :-) ale v OpenGL to takhle nejak funguje)
1) Normala je tam pouzita dost nesikovne, protoze kazda rovina v 3D ma normaly 2 (a pak nasobky, ale ja budu predpokladat, ze normaly jsou normalizovany) a ty jsou presne opacny.
2) Aby slo jednoduse urcit, ktera stena je privracena, potrebuje to od tvurce sceny konzistenci v tom, jak bude ty steny zadavat. Predpokladam, ze scena je tvorena polygonama (hezkejma, takovejma, ktery jsou v jedny rovine)
Kazda stena ma 2 strany, jedna je videt zevnitr telesa a jedna z vnejsku. Pozaduje se, kdyz se podivas na tu stranu, ktera jakoby miri ven z objektu, aby jednotlivy vertexy byly zadany po smeru hodinovejch rucicek (nebo mozna je to obracene, nicmene na principu to nic nemeni)
3) Vezmes 1., 2. a posledni bod v tomhle poradi a udelas z nich 2 vektory mirici z 1. bodu (tzn. 1. a 2, 1. a posledni) a udelas vektorovej soucin - tak dostanes jednu normalu pro kazdou stenu (je to teda lepsi jeste znormalizovat)
4) Dal si vezmes smer tvyho pohledu a porovnas ho s tou normalou a rozhodnes se podle toho, jestli je uhel mezi normalou a tvym pohledem z rozmezi (-Pi/2, Pi/2) nebo ne.
Tady normalizaci vlastne ani nepotrebujes, jde jen o znaminko skalarniho soucinu tech vektoru, ale je hezky mit vektory znormalizovany, ne :)
Takhle nejak to funguje (mam hrozne blbou 3D predstavivost, takze jak se mas konkretne rozhodnout bych musel chvili badat)