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

Aktuelle Zeit: Di Mai 14, 2024 17:17

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



Ein neues Thema erstellen Auf das Thema antworten  [ 8 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: Ambient Light
BeitragVerfasst: Mi Aug 20, 2008 19:45 
Offline
DGL Member

Registriert: So Jan 23, 2005 13:21
Beiträge: 46
Wohnort: Vietnam
Servus!

Ich versteh das ambient light irgendie nicht. Ich dachte, umso heller das ambient light umso heller das objekt. Sprich 0/0/0 wär ein schwarzes. Dann kann man mit den anderen Lichtern arbeiten. Wenn ich jetzt aber bei meinem Programm Nacht simulieren will, dann hätte das so den wert .1/.1/.1

Also sehr sehr dunkel, aber man kann trotzdem ein bisschen sehen, wegen dem mondlicht. Beim ambient ises also egal, wo man hinschaut und woher das licht kommt. Bei mir hängts aber davon ab, wie steil man auf die fläche schaut. umso direkter, umso heller is das ding. schaut man es von der seite an, wirds dunkler...
Naja, man siehts glaub ich ä im Bild

Code:

Code:
  1.  
  2.     private float[] lightAmbient = {0.3f, 0.3f, 0.3f, 1.0f};
  3.    
  4.     public LightningLogic(GL gl) {
  5.         gl.glLightfv(GL.GL_LIGHT0, GL.GL_AMBIENT, this.lightAmbient, 0);
  6.        
  7.         gl.glEnable(GL.GL_LIGHTING);
  8.         gl.glEnable(GL.GL_LIGHT0);
  9.     }
  10.  


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

_________________
"As the enemy went to heaven,
we stayed in hell!"


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Sa Aug 23, 2008 18:36 
Offline
DGL Member

Registriert: So Jan 23, 2005 13:21
Beiträge: 46
Wohnort: Vietnam
Jemand ne Möglichkeit, warum das so sein könnte?

Weil es gibt kein anderes Licht irgendwo. Habe nämlich alles in der LightningLogic Klasse und das is der ganze code. Vorher hab ich kein Licht gehabt...

_________________
"As the enemy went to heaven,
we stayed in hell!"


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Sa Aug 23, 2008 20:29 
Offline
DGL Member
Benutzeravatar

Registriert: Di Jul 29, 2003 00:11
Beiträge: 436
Generell eine Erklärung, was ambientes Licht ist, vielleicht hilft dir das ja:
Also, es schießen ja in der realen Welt millionen und abermillionen Lichtstrahlen durch die Gegend und reflektieren überall. Das kann man natürlich nicht wirklich in Griff kriegen mit APIs wie OpenGL.
Die ganzen Lichtstrahlen im Raum beleuchten nun alles in einer gewissen Grundhelligkeit.
Um diese Grundhelligkeit zu simulieren, dafür gibt es den ambienten Lichtanteil. Und zwar definiert der, wie stark ein Objekt nun selbst leuchtet. Deswegen auch der Effekt, dass du die Objekte siehst, die einen ambienten Material-Anteil haben, auch wenn keine Lichtquelle eingeschaltet ist.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So Aug 24, 2008 12:12 
Offline
DGL Member

Registriert: So Jan 23, 2005 13:21
Beiträge: 46
Wohnort: Vietnam
Philip hat geschrieben:
Generell eine Erklärung, was ambientes Licht ist, vielleicht hilft dir das ja:
Also, es schießen ja in der realen Welt millionen und abermillionen Lichtstrahlen durch die Gegend und reflektieren überall. Das kann man natürlich nicht wirklich in Griff kriegen mit APIs wie OpenGL.
Die ganzen Lichtstrahlen im Raum beleuchten nun alles in einer gewissen Grundhelligkeit.
Um diese Grundhelligkeit zu simulieren, dafür gibt es den ambienten Lichtanteil. Und zwar definiert der, wie stark ein Objekt nun selbst leuchtet. Deswegen auch der Effekt, dass du die Objekte siehst, die einen ambienten Material-Anteil haben, auch wenn keine Lichtquelle eingeschaltet ist.


Danke für die Erklärung! Ja, genau so hab ich das ambient light auch verstanden. Also hab ichs mal richtig kapiert.
Nur find ich dann meinen Effekt vom AmbientLight sehr sehr strange... Hmm, weiss zwar, das delhpi hier hauptsprache is bzw auch c++. Aber weiss vielleicht jemand, ob da dasss ambient light mit Jogl (Java+OpenGL) probleme macht?

Ich kann mir nichts anderes vorstellen. Weil wenn ich das licht einschalte, sind alle objekte schwarz. Füge ich dann das ambient light0 dazu, hab ich so einen effekt...

_________________
"As the enemy went to heaven,
we stayed in hell!"


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So Aug 24, 2008 12:33 
Offline
DGL Member
Benutzeravatar

Registriert: Fr Mai 16, 2008 20:26
Beiträge: 158
Wohnort: Berlin
Programmiersprache: c++,c#,java,ruby,php
Ich arbeite auch mit Jogl und kann auch sagen, dass das Licht im Standardfall, sich doch nicht so verhält, wie hier im Wiki beschrieben (jedenfalls sah es von Bildern her unterschiedlich aus).
Kannst du dich in der Szene den bewegen? Manchmal ändert sich der Lichteinfall beim bewegen auch extrem.

Code:
  1.     float[] light_position = {10.0f, 10.0f, 0.0f, 1.0f};
  2.         float[] light_ambient = {4.8f, 4.8f, 4.8f, 1.0f};
  3.         float[] light_diffuse = {0.8f, 0.8f, 0.8f, 1.0f};
  4.         gl.glLightfv(GL.GL_LIGHT0, GL.GL_AMBIENT,  light_ambient,0);
  5.         gl.glLightfv(GL.GL_LIGHT0, GL.GL_DIFFUSE,  light_diffuse,0);
  6.         gl.glLightfv(GL.GL_LIGHT0, GL.GL_POSITION, light_position,0);
  7.         gl.glEnable(GL.GL_LIGHTING);
  8.         gl.glEnable(GL.GL_LIGHT0);
  9.  

So setze ich mein Licht in der init-Methode und es wird alles ohne Probleme ausgeleuchtet, sieht dadruch zwar noch nicht richtig 3 Dimensional aus, aber man sieht wenigstens alles ;)

_________________
System: Phenom XII X4 955 3,21Ghz , GTX 560 TI, 4GB-Ram, Windows 7 64x


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So Aug 24, 2008 16:10 
Offline
DGL Member

Registriert: So Jan 23, 2005 13:21
Beiträge: 46
Wohnort: Vietnam
revolte hat geschrieben:
Ich arbeite auch mit Jogl und kann auch sagen, dass das Licht im Standardfall, sich doch nicht so verhält, wie hier im Wiki beschrieben (jedenfalls sah es von Bildern her unterschiedlich aus).
Kannst du dich in der Szene den bewegen? Manchmal ändert sich der Lichteinfall beim bewegen auch extrem.

Code:
  1.     float[] light_position = {10.0f, 10.0f, 0.0f, 1.0f};
  2.         float[] light_ambient = {4.8f, 4.8f, 4.8f, 1.0f};
  3.         float[] light_diffuse = {0.8f, 0.8f, 0.8f, 1.0f};
  4.         gl.glLightfv(GL.GL_LIGHT0, GL.GL_AMBIENT,  light_ambient,0);
  5.         gl.glLightfv(GL.GL_LIGHT0, GL.GL_DIFFUSE,  light_diffuse,0);
  6.         gl.glLightfv(GL.GL_LIGHT0, GL.GL_POSITION, light_position,0);
  7.         gl.glEnable(GL.GL_LIGHTING);
  8.         gl.glEnable(GL.GL_LIGHT0);
  9.  

So setze ich mein Licht in der init-Methode und es wird alles ohne Probleme ausgeleuchtet, sieht dadruch zwar noch nicht richtig 3 Dimensional aus, aber man sieht wenigstens alles ;)


Naja, wirklich 4.8 als ambient-werte? Dann is ja alles so hell wie möglich. änder ich 4.8 auf 0.8, is wieder dasselbe problem.
Ich hab jetzt mal ALLES ausgeschalten bzw auskommentiert was irgendwas in OpenGL macht, was nicht wichtig ist. (Culling usw...)

Tiefentest und die einstellung von glViewport und glPersprectiv is noch da. Mehr nicht...
Hab die normalen auch auskommentiert. Jetzt ists so, dass der effekt anders is. Ich lass den würfel ja rotieren. Er ist weiss (weil ich die texturen auch ausgschaltn hab). dann wird er dunkler während dem drehen und wieder heller, bis eine umdrehung fertig is. Dann geht das Spiel wieder von vorne los...

_________________
"As the enemy went to heaven,
we stayed in hell!"


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So Aug 24, 2008 17:42 
Offline
DGL Member

Registriert: So Jan 23, 2005 13:21
Beiträge: 46
Wohnort: Vietnam
Ich habs :D :D :D :D :D :D :D :D :D :D

Naja, was der fehler war, kA :lol:. Jedenfalls haut mit GL_LIGHT0 nicht hint. GL_LIGHT1 funktioniert einwandfrei...

_________________
"As the enemy went to heaven,
we stayed in hell!"


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So Aug 24, 2008 17:46 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Sep 23, 2002 19:27
Beiträge: 5812
Programmiersprache: C++
Für die Lichtquellen gibt es unter OpenGL Standardvorgaben, und für GL_LIGHT0 sind diese anders als für die folgenden Lichtquellen (GL_LIGHT1 etc.). Wenn du also nicht explizit eine Lichteinstellung änderst, wird die Standardeinstellung von OpenGL übernommen. Wenn man also nur GL_LIGHT0 aktiviert und dann daraus zum Testen GL_LIGHT1 macht sehen die Ergebnisse logischerweise unterschiedlich aus. Siehe dazu auch das Redbook, Kapitel 5.

_________________
www.SaschaWillems.de | GitHub | Twitter | GPU Datenbanken (Vulkan, GL, GLES)


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 » Einsteiger-Fragen


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 13 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.026s | 19 Queries | GZIP : On ]