Vlákno názorů k článku Grafická knihovna OpenGL (21): nastavení světelných zdrojů od lioil - Dobry den, mam nasledujici problem: svetlo jsem umistil nekam "ke...

  • Článek je starý, nové názory již nelze přidávat.
  • 7. 12. 2003 5:53

    lioil (neregistrovaný)

    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

  • 9. 4. 2004 18:02

    Razi (neregistrovaný)

    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.