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

Aktuelle Zeit: Sa Jul 19, 2025 21:23

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



Ein neues Thema erstellen Auf das Thema antworten  [ 9 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: Problem mit Licht
BeitragVerfasst: Di Sep 20, 2005 13:33 
Offline
DGL Member
Benutzeravatar

Registriert: Di Sep 20, 2005 13:18
Beiträge: 1054
Wohnort: Dresden
Programmiersprache: C, C++, Pascal, OPL
Ich habe ein kleines Problem!
Und zwar spiele ich im Moment mit einem eigene, Dateiformat für Objekte rum (funktioniert auch, da is nich das Problem), nun finde ich aber Licht ganz nett, da es dne Realismus leicht fördert...
Ansich habe ich auch Licht schaffen können.
Es ist auch soweit realistisch und hällt sich an meine Anweisungen.
Aber ein Objekt, dass ohne Licht z.b. Blau ist, ist mit Licht: weiß...
genauso rote: weiß

soll heißen jegliches mit glcolor angegebenes wird vollkommen ignoriert.
Ich habe glColorMaterial(GL_FRONT,GL_DIFFUSE); shcon probiert, funktioniert aber nicht.
(Ja, ich nutze nur diffuses Licht!)

Bin für jeden ratschlag dankbar

Cyberpuer


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Sep 20, 2005 15:08 
Offline
Guitar Hero
Benutzeravatar

Registriert: Do Sep 25, 2003 15:56
Beiträge: 7810
Wohnort: Sachsen - ERZ / C
Programmiersprache: Java (, Pascal)
glEnable(GL_COLOR_MATERIAL);

siehe Wiki dazu. ;)

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


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Sep 20, 2005 15:19 
Offline
DGL Member
Benutzeravatar

Registriert: Di Sep 20, 2005 13:18
Beiträge: 1054
Wohnort: Dresden
Programmiersprache: C, C++, Pascal, OPL
Is mir auch aufgefallen!
Dachte mir vielleicht sollte man was enablen und habe einfach rumprobiert...
Schwupps, es ging!
Danke trotzdem! :)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Sep 20, 2005 16:44 
Offline
DGL Member
Benutzeravatar

Registriert: Di Dez 02, 2003 12:47
Beiträge: 300
Wohnort: Marburg
probiere auch gerade mit nem eigenen Loader und Licht herum:

kann es sein, dass Lichtpositionen bei einer Verschiebung der glprojection Matrix ignoriert werden?
Also, dass, wenn ich meine Kamera in der Projektionsmatrix verschiebe, meine Lichter immer an der selben Position relative zur Kamera bleiben???

_________________
Nothing, oh sweet nothing,
today we are doing nothing at all...
http://www.geo-progs.de


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Sep 20, 2005 17:09 
Offline
DGL Member
Benutzeravatar

Registriert: Di Sep 20, 2005 13:18
Beiträge: 1054
Wohnort: Dresden
Programmiersprache: C, C++, Pascal, OPL
Also, vielleicht versteh ich dein Problem falsch, aber kann man nicht mit gllightv oder so ähnlich die postion ändern?
setz sie halt nach dem ändern der matrix. :)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Sep 20, 2005 17:21 
Offline
Guitar Hero
Benutzeravatar

Registriert: Do Sep 25, 2003 15:56
Beiträge: 7810
Wohnort: Sachsen - ERZ / C
Programmiersprache: Java (, Pascal)
Jein...
Lichter und deren Position sind eine filigrane Sache.

Du kannst mit einem Licht hunderte Objekte von jeweils verschiedenen Punkten aus beleuchten. Wenn du ein Objekt aber von zwei Punkten aus beleuchten willst, brauchst du mehrere Lichter. Der Grund dafür ist der Aufbau der GL als Statemachine. Wenn du ein neues Objekt renderst wird die Farbe der Flächen des Objekts anhand der aktuellen Lichtposition berechnet. Diese Farbe wird in den Framebuffer gespeichert. Wenn du nun das Licht erschiebst, ist das dem Objekt egal. Es hat ja schon seine Farbe. Darauffolgende Objekte allerdings nutzen nun die neue Lichtposition.

Ich hoffe das wars was du wissen wolltest. :)

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


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Sep 20, 2005 19:14 
Offline
DGL Member
Benutzeravatar

Registriert: Di Dez 02, 2003 12:47
Beiträge: 300
Wohnort: Marburg
Aua!!!!

Ich hatte vergessen die Positionen der Lichter nach Verschieben der Matrix neu zu setzen (Modelle darf mann ja auch erst hinterher zeichnen). Hatte die Positionen nur 1 mal bei programmstart übergeben...

:oops:

_________________
Nothing, oh sweet nothing,
today we are doing nothing at all...
http://www.geo-progs.de


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Sep 20, 2005 19:21 
Offline
DGL Member
Benutzeravatar

Registriert: Di Dez 02, 2003 12:47
Beiträge: 300
Wohnort: Marburg
Hey :!: geht trotzdem nicht!

wenn ich zum setzen der KAmera in die Projektionsmatrix gehe, bleiben alle glanzeffekte (speculare) immer an der selben stelle! Egal, wo ich die Lichtpositionen übergebe!
Normalerweise ändern sich glanzeffekte ja, wenn mann die Kamnera bewegt!

Code:
  1.     glMatrixMode(GL_PROJECTION);
  2.       gltranslatef(0,0,-P1.D);
  3.       glrotatef(P1.AX,1,0,0);
  4.       glrotatef(P1.AY,0,1,0);
  5.       gltranslatef(-P1.X,-P1.Y,-P1.Z);
  6.     glMatrixMode(GL_MODELVIEW);
  7.  
  8.     Models.SetLightPosition(1,-1000,750, 1000,1);
  9.     Models.SetLightPosition(2,-1000,750,-1000,1);
  10.     Models.SetLightPosition(3, 1000,750, 1000,1);
  11.     Models.SetLightPosition(4, 1000,750,-1000,1);
  12.  
  13.     Models.BeginRenderModels;
  14.       glpushmatrix;
  15.         glscalef(1600/100,1600/100,1600/100);
  16.         glrotatef(90,0,1,0);
  17.         Models.RenderModel(13,0);
  18.       glpopmatrix;
  19.       for i := 1 to 8 do begin
  20.         for i2 := 1 to 8 do begin
  21.           if Chess.GetFieldFigure(i,i2)<>0 then begin
  22.             glpushmatrix;
  23.               gltranslatef(-180+i*40,0,+180-i2*40);
  24.               glscalef(97/100,97/100,97/100);
  25.               if (Chess.GetField(i,i2)=11) or (Chess.GetField(i,i2)=30) then glrotatef(-90,0,1,0);
  26.               if (Chess.GetField(i,i2)=12) or (Chess.GetField(i,i2)=29) then glrotatef( 90,0,1,0);
  27.               Models.RenderModel(Chess.GetFieldFigure(i,i2)+Chess.GetFieldColor(i,i2)*6-6,1);
  28.             glpopmatrix;
  29.           end;
  30.         end;
  31.       end;
  32.     Models.EndRenderModels;

_________________
Nothing, oh sweet nothing,
today we are doing nothing at all...
http://www.geo-progs.de


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Sep 20, 2005 21:46 
Offline
DGL Member
Benutzeravatar

Registriert: Sa Dez 28, 2002 11:13
Beiträge: 2244
Bei den Lichtern werden Projection und Modelview Matrix unterschiedlich behandelt. In die Projektion Matrix dürfen nur Transformationen, die die Kamera beeinflußen.


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


Wer ist online?

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