Navigationslinks überspringen
About
Products
Downloads
Contact
Tutorial
Dokumentation
OpenGl für Android
 
Navigationslinks überspringen
Hallo Welt
Texturen
Mathematik
Abbildungen
Animationen
Kurven
Surfaces
Licht & Farben
Text
Camera
Schatten

Licht

Übersicht


1. Das Phong-Lichmodell
2. Die Drawing3d Klasse Light
3. Die Drawing3d Klasse Material
4. Beispiele

Up

1. Das Phong-Lichtmodell


Beim Beleuchtungsmodell von Phong hat das Licht drei Farbanteile
  • Ambientes Licht (Color Ambient)
  • Diffuses Licht (Color Diffuse)
  • Gespiegeltes Licht (Color specular)

 

Diese drei Farben kommen auch beim Material vor. Zusätzlich gibt es beim Material den Emissionanteil,
der die Ausstrahlung der Materie bewirkt. Er ist unabhänging vom Licht.

Ambientes Licht ist unabhänging vom Einfallswinkel.

Diffuses Licht wird berechnet mit der Formel I = cos(θ).
Hier ist θ der Winkel zwischen einfallendem Strahl und dem Normalwinkel der Oberfläche.

Beim gespiegelten Licht kommt noch ein Exponent Shininess hinzu:
I =cosShininess(θ), wobei Shininess eine Materialeigenschaft ist. Sie bestimmt die Rauigkeit der Oberfläche. Ein hoher Wert (~ 30) ergibt eine spiegelnde, ein niedriger Wert eine rauhe Oberfläche. Insgesamt entsteht das ausgehende Licht durch die Addition aller vier Lichtarten:

  Iout = Iambient + Idiffuse +Ispecular  +Iemission.
 
Dabei sind die resultierenden Intensitäten jeweils eine Übelagerung des Lichtanteils und der entsprechenden des Materialfarbe.

Die Positionseigenschaft des Lichtes: Sie bestimmt das Lichtzentrum

  • Position : Lichtzentrum
Die Attenuationeigenschaften bestimmen die Abnahme des Lichtes.
Default ist:
ConstantAttenuation = 1,
LinearAttenuation und Quadraticattenuation = 0;
  • ConstantAttenuation: Konstanter Abfall der Lichtintensität vom Lichtzentrum.
  • QuadraticAttenuation: Quadratischer Abfall der Lichtintensität vom Lichtzentrum
  • LinearAttenuation: Linearer Abfall der Lichtintensität vom Lichtzentrum
  • SpotCutOff: Wird bei einem Spotlicht verwendet. Ein Wert von 180 schaltet das Spotlicht aus.
Die Spoteigenschaften werden nur bei SpotCutOff  < 180 unterstützt:
  • SpotExponent : Abnahme des Spotlichtes vom Zentrum des Lichtkegels nach außen
  • Direction: Die Richtung des Lichtkegels.

 

Up

2. Die Drawing3d Klasse Light

Eigenschaften der Klasse Light.

  • Enable: Schaltet ein Licht ein oder aus
  • Diffuse : Diffuses Licht
  • Ambient: Ambientes Licht
  • Specular: Spiegelndes Licht
  • Position: Position der Lichtquelle
  • Direction: Richtung des Lichtes. Diese Eigenschaft hat nur dann Bedeutung wenn der SpotCutOffwinkel kleiner als 180° ist.
  • ConstantAttenuation: Die Attenuationeigenschaften bestimmen die Abnahme des Lichtes. Default ist ConstantAttenuation = 1, LinearAttenuation und Quadraticattenuation = 0;
  • LinearAttenuation ;
  • QuadraticAttenuation;
  • SpotCutOff: Gibt den Winkel des Spotlights in Graden an. Bei 180° ist das Spotlight disabled.

Hinzufügen eines Lichtes

Die Drawing3D Device enthält eine Liste Lights, in der standardmäßig ein Licht eingefügt ist.
Weitere Lichter können folgendermaßen eingefügt werden:
 Light L=  Device.addLight();
L.Enable = true;
Es können je nach Videokarte mindestens acht Lichter erzeugt werden.

Up

3. Die Drawing3d Klasse Material

Eigenschaften der Klasse Material.
  • Name: Dem Material kann ein String zugewiesen oder abgefragt werden
  • Ambient: Ambiente Farbe
  • Diffuse: Diffuse Farbe
  • Specular: Spiegelungsfarbe
  • Emission: Ausstrahlungsfarbe
  • Shininess: Rauhigkeitsexponent
  • Translucent: Durchsichtigkeit. Der Wert liegt zwischen 0 und 1.


Folgende Eigenschaften sind in Drawing 3d vordefiniert:

Brass
PolishedBronze
Bronze
Crome
Copper
PolishedCopper
Gold
PolishedGold
Pewter
Silver
PolishedSilver
Emerald
Jade
Obsidian
Pearl
Ruby
Turqoise
BlackPlastic
BlackRubber

Die Drawing3dDevice enthält eine Eigenschaft Material. Weiters gibt es sämtliche Eigenschaften von Materia auch als Eigenschaft der Device.

Up

4. Beispiele

Für diese Beispiele verwenden wir folgende Loadmethode:
private void Form1_Load(object sender, EventArgs e)
{
Device.WinControl = this;
Device.OnPaint += new EventHandler(Device_OnPaint);
Device.Navigate = NavigateKind.ZoomRotateTrans;
Device.BackColor = Color.Gray;
Device.Lights[0].Position = new xyz(0, 3, 5);
}

und die Paintmethode
void Device_OnPaint(object sender, EventArgs e)
{
Device.PushMatrix();
Device.MulMatrix(Matrix.Translation(-1.5, -1.5, 0));
Device.drawSphere(new xyz(0, 0, 0), 1);
Tools.drawCone(Device, new xyz(0, 0, 0), new xyz(1, 0, 0), 3, 0.5, 0.5, false, false);
Device.drawSphere(new xyz(3, 0, 0), 1);
Tools.drawCone(Device, new xyz(3, 0, 0), new xyz(0, 1, 0), 3, 0.5, 0.5, false, false);
Device.drawSphere(new xyz(3, 3, 0), 1);
Tools.drawCone(Device, new xyz(3, 3, 0), new xyz(-1, 0, 0), 3, 0.5, 0.5, false, false);
Device.drawSphere(new xyz(0, 3, 0), 1);
Tools.drawCone(Device, new xyz(0, 3, 0), new xyz(0, -1, 0), 3, 0.5, 0.5, false, false);
Device.PopMatrix();
}
In die Paintmethode fügen wir die Zuweisungen der Farben ein, z.B.:
Device.Ambient = Color.DarkBlue;
Device.Diffuse = Color.Gray;
Device.Specular = Color.White;
Device.Emisson = Color.Black;

Je nachdem welche Farben wir setzen, erhalten wir folgende Ergebnisse:
 
Ambient = Black
Diffuse = Black
Specular = Black
Emission = Black
Ambient = Black
Diffuse = White
Specular = Black
Emission = Black
Ambient = Black
Diffuse = Black
Specular = White
Emission = Black
Ambient = DarkBlue
Diffuse = Black
Specular = Black
Emission = Black
Ambient = DarkBlue
Diffuse = Black
Specular = White
Emission = Black
Ambient = DarkBlue
Diffuse = White
Specular = Gray
Emission = Black
Ambient = DarkBlue
Diffuse = White
Specular = White
Emission = Black
Ambient = DarkBlue
Diffuse = Gray
Specular = White
Emission = Red
 
Copyright © Drawing3D inc