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

Aktuelle Zeit: Sa Jul 19, 2025 21:03

Foren-Übersicht » Programmierung » Einsteiger-Fragen
Unbeantwortete Themen | Aktive Themen



Ein neues Thema erstellen Auf das Thema antworten  [ 5 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: Ungewöhnliches Licht
BeitragVerfasst: Di Dez 15, 2009 02:06 
Offline
DGL Member
Benutzeravatar

Registriert: Di Apr 29, 2008 18:56
Beiträge: 1213
Programmiersprache: Delphi/FPC
HI,

ich bin grad mal wieder dabei mich mit Licht zu beschäftigen. Ich hab zum Testen erstmal eine Kugel in der Mitte der Welt und ein Licht welches sich in der X-Z-Ebene um den Mittelpunkt dreht. Wenn das Licht jetzt "hinter" die Kugel kommt wird die Kugel nicht beleuchtet. Wenn das Licht "vor" der Kugel ist, dann wird die Kugel von hinten und vorn beleuchtet.
Hier der Code dazu:
Code:
  1. procedure TglLight.Activate(Light: Cardinal);
  2. begin
  3.   glLightfv(Light, GL_AMBIENT,  @fAmbient[0]);
  4.   glLightfv(Light, GL_DIFFUSE,  @fDiffuse[0]);
  5.   glLightfv(Light, GL_POSITION, @fPosition[0]);
  6.   glEnable(GL_LIGHTING);
  7.   glEnable(Light);
  8. end;
  9.  
  10. procedure TglMaterial.Activate;
  11. begin
  12.   glMaterialfv(GL_FRONT, GL_SPECULAR,  @fSpecular[0]);
  13.   glMaterialfv(GL_FRONT, GL_SHININESS, @fShininess);
  14.   glMaterialfv(GL_FRONT, GL_AMBIENT,   @fAmbient[0]);
  15.   glMaterialfv(GL_FRONT, GL_DIFFUSE,   @fDiffuse[0]);
  16.   glMaterialfv(GL_FRONT, GL_EMISSION,  @fEmission[0]);
  17. end;
  18.  
  19. procedure TForm1.Init;
  20. //[...]
  21. begin
  22. //[...]
  23.   Light := TglLight.Create;
  24.   Light.SetAmbient (glVector4f( 0.1,  0.1, 0.1, 1.0));
  25.   Light.SetDiffuse (glVector4f( 0.8,  0.8, 0.8, 1.0));
  26.   Light.SetPosition(glVector4f(20.0, 10.0, 5.0, 1.0));
  27.  
  28.   Material := TglMaterial.Create;
  29.   Material.Shininess := 1;
  30.   Material.SetAmbient (glVector4f(0.4, 0.4, 0.4, 1.0));
  31.   Material.SetDiffuse (glVector4f(0.4, 0.4, 0.4, 1.0));
  32.   Material.SetSpecular(glVector4f(0.4, 0.5, 0.8, 1.0));
  33. //[...]
  34. end;
  35.  
  36. procedure TForm1.Render;
  37. //[...]
  38. begin
  39. //[...]
  40.   glPointSize(3);
  41.   glColor3f(1,0,0);
  42.   glBegin(GL_POINTS);
  43.     glVertex3fv(@Light.Position[0]);
  44.   glEnd;
  45.  
  46.   Light.Activate(GL_LIGHT0);
  47.   Material.Activate;
  48.  
  49.   glColor3f(1,1,1);
  50.   glBegin(GL_TRIANGLES);
  51.     for i := 0 to TriangleList.Count-1 do begin
  52.       with TTriangle(TriangleList[i]) do begin
  53.         with TVertex(VertexList[v0]) do
  54.           glVertex3f(X, Y, Z);
  55.         with TVertex(VertexList[v1]) do
  56.           glVertex3f(X, Y, Z);
  57.         with TVertex(VertexList[v2]) do
  58.           glVertex3f(X, Y, Z);
  59.       end;
  60.     end;
  61.   glEnd;
  62. //[...]
  63. end;

Im Anhang ma noch die Exe zum angucken. Wäre toll wenn mir da jmd helfen kann.

MfG & Thx Bergmann


Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.

_________________
Aktuelle Projekte: BumpMapGenerator, Massive Universe Online
Auf meiner Homepage gibt auch noch paar Projekte und Infos von mir.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Ungewöhnliches Licht
BeitragVerfasst: Di Dez 15, 2009 02:16 
Offline
DGL Member

Registriert: Fr Okt 03, 2008 13:32
Beiträge: 367
Bei "ungewöhnliches Licht" dachte ich zuerst an ein UFO.^^
Aber zum Thema:
Bei Licht brauch man zwingend Normalen, die ich in deinem Code nicht finde.
Also mit glNormal müsste man für jeden Vertex die Normale festlegen. Die Normalen zeigt immer nach außen und sollte die Länge 1 haben. Steht denke ich auch in einem der Tutorials hier zum Licht.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Ungewöhnliches Licht
BeitragVerfasst: Di Dez 15, 2009 02:19 
Offline
DGL Member
Benutzeravatar

Registriert: Di Apr 29, 2008 18:56
Beiträge: 1213
Programmiersprache: Delphi/FPC
ahh, schön blöd, hab die normalen als kleine Striche gezeichnet aber die normalen an sich nich an OpenGL übergeben. Danke für den Tipp^^

MfG Bergmann.

_________________
Aktuelle Projekte: BumpMapGenerator, Massive Universe Online
Auf meiner Homepage gibt auch noch paar Projekte und Infos von mir.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Ungewöhnliches Licht
BeitragVerfasst: Di Dez 15, 2009 02:21 
Offline
DGL Member

Registriert: Fr Okt 03, 2008 13:32
Beiträge: 367
Ja, habs grad noch mal gesehen, als ich dein Programm getestet hab'. Naja schön wenn die Lösung so einfach ist.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Ungewöhnliches Licht
BeitragVerfasst: Di Dez 15, 2009 02:28 
Offline
DGL Member
Benutzeravatar

Registriert: Di Apr 29, 2008 18:56
Beiträge: 1213
Programmiersprache: Delphi/FPC
Wenns nur immer so einfach wäre xD

_________________
Aktuelle Projekte: BumpMapGenerator, Massive Universe Online
Auf meiner Homepage gibt auch noch paar Projekte und Infos von mir.


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


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 6 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 ]