Files |  Tutorials |  Articles |  Links |  Home |  Team |  Forum |  Wiki |  Impressum

Aktuelle Zeit: Di Jul 15, 2025 05:52

Foren-Übersicht » Programmierung » OpenGL
Unbeantwortete Themen | Aktive Themen



Ein neues Thema erstellen Auf das Thema antworten  [ 8 Beiträge ] 
Autor Nachricht
BeitragVerfasst: Mo Dez 08, 2003 18:27 
Offline
Guitar Hero
Benutzeravatar

Registriert: Do Sep 25, 2003 15:56
Beiträge: 7810
Wohnort: Sachsen - ERZ / C
Programmiersprache: Java (, Pascal)
Wieso? (siehe Bild)

Alle Felder sind gleich hoch und haben die selbe Grasfarbe.

Hier ma mein Code:
Code:
  1. procedure TForm1.Render;
  2. const
  3.     mat_specular   : Array[0..3] of GlFloat = (1.0, 1.0, 1.0, 1.0);
  4.     mat_shininess  : Array[0..0] of GlFloat = (70.0);
  5.     mat_ambient    : Array[0..3] of GlFloat = (0.7, 0.7, 0.7, 1.0);
  6.     mat_diffuse    : Array[0..3] of GlFloat = (0.7, 0.8, 0.7, 1.0);
  7.  
  8.     light_position : Array[0..3] of GlFloat = (10.0, 7.0, 10.0, 1.0);
  9.     light_ambient  : Array[0..3] of GlFloat = (0.8, 0.8, 0.8, 1.0);
  10.     light_diffuse  : Array[0..3] of GlFloat = (0.8, 0.8, 0.8, 1.0);
  11.  
  12. var RenderMode   : GLuint;
  13. begin
  14.   glGetIntegerv(GL_RENDER_MODE, @RenderMode);   //aktuellen RenderModus auslesen
  15.  
  16.   glMaterialfv(GL_FRONT, GL_SPECULAR,  @mat_specular[0]);
  17.   glMaterialfv(GL_FRONT, GL_SHININESS, @mat_shininess[0]);
  18.   glMaterialfv(GL_FRONT, GL_AMBIENT,   @mat_ambient[0]);
  19.   glMaterialfv(GL_FRONT, GL_DIFFUSE,   @mat_diffuse[0]);
  20.  
  21.   glLightfv(GL_LIGHT0, GL_AMBIENT,  @light_ambient[0]);
  22.   glLightfv(GL_LIGHT0, GL_DIFFUSE,  @light_diffuse[0]);
  23.   glLightfv(GL_LIGHT0, GL_POSITION, @light_position[0]);
  24.  
  25.   glLightf(GL_LIGHT0, GL_CONSTANT_ATTENUATION, 1.0);
  26.   glLightf(GL_LIGHT0, GL_LINEAR_ATTENUATION, 0.001);
  27.   glLightf(GL_LIGHT0, GL_QUADRATIC_ATTENUATION, 0.004);
  28.  
  29.   glEnable(gl_Lighting);
  30.   glEnable(gl_Light0);
  31.   glEnable(gl_Color_Material);
  32.  
  33.   ...
  34.  


Seltsam nur, dass der Infomodus bei selben Licht und selben Code funktioniert. (siehe Bild2)

_________________
Blog: kevin-fleischer.de und fbaingermany.com


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Dez 08, 2003 19:36 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 05, 2002 10:35
Beiträge: 4234
Wohnort: Dortmund
Das sieht stark danauch aus als ob deine Flächennormalen nicht richtig sind. Überprüfe mal das was du mit glNormal setzt.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Dez 08, 2003 20:02 
Offline
Guitar Hero
Benutzeravatar

Registriert: Do Sep 25, 2003 15:56
Beiträge: 7810
Wohnort: Sachsen - ERZ / C
Programmiersprache: Java (, Pascal)
Hm gesetzt hab ich gar nix.

Wenn die Punkte der Einzelflächen gegen den Urzeiger definiert wurden und in einer Ebene liegen, müsste doch auch die Normale die gleiche Richtung haben, oder?

_________________
Blog: kevin-fleischer.de und fbaingermany.com


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Dez 08, 2003 20:17 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 05, 2002 10:35
Beiträge: 4234
Wohnort: Dortmund
Also ich würde sagen, dass du gar keine gesetzt hast sind die auch nicht definiert. Es sollte genügen wenn du am Anfang vor dem Zeichnen der Flächen einmal die Normale setzt. da deine Flächen ja eh alle in ein und die selbe Richtung zeigen.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Dez 09, 2003 00:03 
Offline
Guitar Hero
Benutzeravatar

Registriert: Do Sep 25, 2003 15:56
Beiträge: 7810
Wohnort: Sachsen - ERZ / C
Programmiersprache: Java (, Pascal)
Danke Lossey eX!

Einmaliges definieren der Normale hat net funktioniert. Wenn ichs für jedes Feld mach dann siehts gut aus.

_________________
Blog: kevin-fleischer.de und fbaingermany.com


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Dez 09, 2003 10:31 
Offline
DGL Member
Benutzeravatar

Registriert: Fr Dez 13, 2002 12:18
Beiträge: 1063
Dann veränderst du irgendwann die Normale wenn du den Boden zeichnest, da OpenGL die Normale so lange beibehält, bis sie explizit neu gesetzt wird. Aber ein glNormal Kommando braucht ohnehin fast keine Zeit.

_________________
Viel Spaß beim Programmieren,
Mars
http://www.basegraph.com/


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Dez 09, 2003 10:37 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 05, 2002 10:35
Beiträge: 4234
Wohnort: Dortmund
Hmm. Kann es sein, dass du deine Objekte direkt nach der Grundfläche zeichnest? Dann wird nämlich die Normale durch das Objekt verändert.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Dez 09, 2003 13:25 
Offline
DGL Member

Registriert: Di Okt 07, 2003 12:26
Beiträge: 23
Also so wie ich das sehe, wechselt die Art der Beleuchtung immmer bei einem Objekt. Wenn inerhalb des Objektes die Normalen verändert werden, ändern sich ja auch die Normalen der Fläche.

Ich würde also etweder zuerst die Ganze Grundfläche, und dann die Objekte zeichnen, oder nach jedem Objekt die Flächennormale neu setzen(sehe grade das du das ja schon gemacht hast).


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 8 Beiträge ] 
Foren-Übersicht » Programmierung » OpenGL


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 17 Gäste


Du darfst keine neuen Themen in diesem Forum erstellen.
Du darfst keine Antworten zu Themen in diesem Forum erstellen.
Du darfst deine Beiträge in diesem Forum nicht ändern.
Du darfst deine Beiträge in diesem Forum nicht löschen.
Du darfst keine Dateianhänge in diesem Forum erstellen.

Suche nach:
Gehe zu:  
  Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de
[ Time : 0.008s | 14 Queries | GZIP : On ]