OpenGL Light



  • Hallo,

    ich rendere eine Scene und repositioniere je nach Camera (matrix)
    das Licht in der Scene entsprechend neu.

    Seit eh' her habe ich dabei das Problem, das das Licht immer in
    Blickrichtung die Scene erhellt, ähnlich einer Lampe auf dem Kopf.

    Hier ein Beispiel mit zwei verschiedenen Blikwinkeln auf die Scene:

    http://kahnsoft.cwsurf.de/Image1.jpg

    http://kahnsoft.cwsurf.de/Image2.jpg

    Man sieht, desto steiler der Blickwinkel desto heller wird die ganze
    Scene in dieser Richtung.

    //Spread Factors
        glLightf(GL_LIGHT0+m_lnum, GL_CONSTANT_ATTENUATION ,0);
        glLightf(GL_LIGHT0+m_lnum, GL_LINEAR_ATTENUATION,m_hotspot);
        glLightf(GL_LIGHT0+m_lnum, GL_QUADRATIC_ATTENUATION ,1);
    
        //Öffnungswinkel Lower for more focus	 //m_hotspot m_falloff
        glLightf(GL_LIGHT0+m_lnum, GL_SPOT_CUTOFF,m_hotspot);
        //Ausbreitungsintensität 0-128
        glLighti(GL_LIGHT0+m_lnum, GL_SPOT_EXPONENT,1);
    
        glLightfv(GL_LIGHT0+m_lnum, GL_POSITION,m_LightPos);
        glLightfv(GL_LIGHT0+m_lnum, GL_SPOT_DIRECTION,m_LightDir);
    

    Der Scene entsprechend ist das ein SpotLight, dies wird so parameteriesiert
    das es wie eine Tischlampe von oben nach unten auf die scene scheint/scheinen sollte.

    Ist das Problem das, daß ich das Licht mit der CameraMatrix projektioniere anstatt es mit der Modelmatrix zu versuchen ?

    Danke für Hinweise
    gruß
    Karsten


Anmelden zum Antworten