• Projektinhalt
  • Game Engines
  • Glossar
  • Tutorial
    1. Erste Schritte
    2. Treiber initialisieren
    3. Skybox & Skydome
    4. GUI Text
    5. Terrain
    6. Nebel
    7. Objekte einfügen
    8. Kamera
    9. Beleuchtung
    10. Kollisionsdetektion
    11. Hintergrundmusik
    12. Szene darstellen
    13. Gras
    14. Bäume

  • Download
  • Links

Beleuchtung

Etwas ganz Wichtiges fehlt der Szene noch: Licht. Um das zu ändern, bittet man den SceneManager um Hilfe, der wieder einen eigenen Knotentyp bereitstellt:
Den LightSceneNode. Der Methode addLightSceneNode können folgende Argumente übergeben werden:

Als erstes parent. Hier wird die Kamera als Vaterknoten eingesetzt, so dass die Lichtquelle sich mit der Kamera mitbewegt.

Danach kommt position, die anfängliche Position der Lichtquelle relativ zum Vaterknoten.

Danach kann die Farbe des Lichts angegeben werden. Es handelt sich dabei um die diffuse Komponente des Lichts; die anderen Komponenten müssen mit der
ILightSceneNode::getLightData()-Methode gesetzt werden.

Der Radius des Lichtes kann anschließend verändert werden. Der Standardwert ist 100.0f.

Und zu guter Letzt folgt natürlich die Id.

//add light source and attach it to the camera

ILightSceneNode* light1 = irrSceneMgr->addLightSceneNode(
  • camera, vector3df(0,20,0), SColorf(1.0f,1.0f,1.0f), 100.0f, 1 );

Wird nichts anderes angegeben, so wird als Lichtquelle Point Light verwendet. Die anderen in Irrlicht verfügbaren Lichtquellen ELT_SPOT (Spot Light) und ELT_DIRECTIONAL (Directional Light) können eingestellt werden, indem man ELT_POINT in der folgenden Methode durch eine von ihnen ersetzt.

light1->getLightData().Type = ELT_POINT;

Damit das Ganze schöner aussieht, kann man noch die Farbe des Ambient Lights verändern und schon ist die Beleuchtung fertig.

//set ambient light color

irrSceneMgr->setAmbientLight(SColorf(0.1, 0.1, 0.4));
zurück weiter

Katarina Boland