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

Aktuelle Zeit: Do Jul 10, 2025 08:31

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



Ein neues Thema erstellen Auf das Thema antworten  [ 11 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: Licht
BeitragVerfasst: Do Dez 28, 2006 10:01 
Offline
DGL Member

Registriert: Mi Nov 08, 2006 17:35
Beiträge: 31
Hiho,

ich habe mir das Tutorial über das Licht durchgelesen aber ich bekomme es trotzdem nicht hin. :wink: Und zwar habe ich folgendes Problem ich habe einen Bahnsteig mit einer Textur drauf. Der Bahnsteig wurde mit GL_QUADS erstellt. Auf mein Bahnsteig mache ich ein glTranslated(-6.0,0.52,-13.0). Mein Anliegen ist, das auf den Bahnsteig ein Licht fällt was zu sehen ist. Sprich er wird beleuchtet. Jetzt habe ich probiert einen Spotlight an die Position -6.0,1.52,-13.0 zu befördern.
Das würde doch bedeuten das die Lichtquelle über mein Bahnsteig ist oder? Wenn ich jetzt die Zielposition-Positionderquelle machen würde müsste ich doch mein SpotDirec bekommen?

(-6.0) - (-6.0) = 0.0
(1.52) - (0.52) = -1.0 <-- SpotDirec?
(-13.0) - (-13.0) = 0.0


Wieso sehe ich trotzdem nichts?

mfg mistirios


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Dez 28, 2006 11:04 
Offline
DGL Member
Benutzeravatar

Registriert: Di Dez 27, 2005 12:44
Beiträge: 393
Wohnort: Berlin
Programmiersprache: Java, C++, Groovy
Hallo mistirios,

den Richtungsvektor deines Spotlights hast du richtig ausgerechnet.
Das Problem müsste woanders liegen...

Viele Grüße
dj3hut1


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Dez 28, 2006 19:14 
Offline
DGL Member

Registriert: Mi Nov 08, 2006 17:35
Beiträge: 31
Ja die Frage ist woran.. ??? :lol:


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Dez 29, 2006 12:47 
Offline
DGL Member
Benutzeravatar

Registriert: Di Dez 27, 2005 12:44
Beiträge: 393
Wohnort: Berlin
Programmiersprache: Java, C++, Groovy
Spotlights werden übrigens pro Vertex berechnet.
Falls dein Bahnhof nur aus einem einzigen grossen Quad besteht wirst du wahrscheinlich nicht viel sehen.
Versuch es mal in mehrere feine Rechtecke aufzuteilen ;) (oder benutze einen Pixelshader)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Dez 29, 2006 22:34 
Offline
DGL Member

Registriert: Mi Nov 08, 2006 17:35
Beiträge: 31
Hi,

mein Quad besteht aus mehreren Vertex ;-)


mfg


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Sa Dez 30, 2006 11:14 
Offline
DGL Member
Benutzeravatar

Registriert: Do Aug 25, 2005 16:00
Beiträge: 189
Programmiersprache: Java, C#
Dann wäre es jetzt vielleicht Zeit für ein bisschen mehr Code, da wir ansonsten fröhlich drauf los raten müssten :D


cya,
Deathball


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Sa Dez 30, 2006 19:32 
Offline
DGL Member

Registriert: Mi Nov 08, 2006 17:35
Beiträge: 31
Okay dann hier ein bisle code :D

Code:
  1.  
  2. void display (void)
  3. {
  4.    glClearColor (0.0,0.0,0.0,1.0); //clear the screen to black
  5.     glClear (GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); //clear the color buffer and the depth buffer
  6.     glLoadIdentity();  
  7.        
  8.        enable();
  9.     camera();
  10.     //glEnable(GL_LIGHT1);
  11.     GLfloat LPosition[4]={1.0,1.0,0.0};
  12.     GLfloat LSpotDirec[3]={-1.0,-1.0,0.0};
  13.     GLfloat LSpotCutOff=30.0;
  14.     GLfloat LSpotExponent=0.0;
  15.     GLfloat LDiffuse1[4]={1.0,1.0,1.0,1.0};
  16.    
  17.     glLightfv(GL_LIGHT1,GL_POSITION,&LPosition[0]);
  18.     glLightfv(GL_LIGHT1,GL_SPOT_DIRECTION,&LSpotDirec[0]);
  19.     glLightf(GL_LIGHT1,GL_SPOT_CUTOFF,LSpotCutOff);
  20.     glLightf(GL_LIGHT1,GL_SPOT_EXPONENT,LSpotExponent);
  21.     glLightfv(GL_LIGHT1,GL_DIFFUSE,&LDiffuse1[0]);
  22.    
  23.  glNewList(BAHNSTEIG,GL_COMPILE);//BAHNSTEIG
  24.       glEnable(GL_TEXTURE_2D);
  25.       glBindTexture(GL_TEXTURE_2D,bahnsteigtexture);
  26.       glBegin(GL_QUADS);
  27.       glPushMatrix();
  28.        glVertex3f (0.0, 0.0, 0.0);   //unten
  29.        glVertex3f (12.0, 0.0, 0.0);
  30.        glVertex3f (12.0, 0.0, 3.0);
  31.        glVertex3f (0.0, 0.0, 3.0);
  32.                
  33.        glTexCoord2d(0.0,1.0);  
  34.        glVertex3f (0.0,0.2,0.0);   //oben
  35.        glTexCoord2d(0.0,0.0);
  36.        glVertex3f (0.0, 0.2, 3.0);
  37.        glTexCoord2d(1.0,0.0);
  38.        glVertex3f (12.0,0.2,3.0);
  39.        glTexCoord2d(1.0,1.0);
  40.        glVertex3f (12.0,0.2, 0.0);
  41.              
  42.        glNormal3d(1.0,0.0,0.0);//hintere Seite
  43.        glTexCoord2d(0.0,1.0);  
  44.        glVertex3f(0.0, 0.0, 0.0);
  45.        glTexCoord2d(0.0,0.0);
  46.        glVertex3f(0.0,0.2,0.0);
  47.        glTexCoord2d(1.0,0.0);
  48.        glVertex3f(12.0,0.2, 0.0);
  49.        glTexCoord2d(1.0,1.0);
  50.        glVertex3f(12.0,0.0,0.0);
  51.                
  52.        glNormal3d(0.0,-1.0,0.0);//linke Seite
  53.        glTexCoord2d(0.0,1.0);  
  54.        glVertex3f(12.0,0.2,3.0);
  55.        glTexCoord2d(0.0,0.0);
  56.        glVertex3f(12.0,0.0,3.0);
  57.        glTexCoord2d(1.0,0.0);
  58.        glVertex3f(12.0,0.0,0.0);
  59.        glTexCoord2d(1.0,1.0);
  60.        glVertex3f (12.0,0.2,0.0);
  61.                
  62.        glNormal3d(0.0,1.0,0.0);//rechte Seite
  63.        glTexCoord2d(0.0,1.0);  
  64.        glVertex3f(0.0,0.2,0.0);
  65.        glTexCoord2d(0.0,0.0);
  66.        glVertex3f(0.0,0.0,0.0);
  67.        glTexCoord2d(1.0,0.0);
  68.        glVertex3f(0.0,0.0,3.0);
  69.        glTexCoord2d(1.0,1.0);
  70.        glVertex3f (0.0,0.2,3.0);
  71.        
  72.        glNormal3d(1.0,0.0,0.0);//vordere Seite
  73.        glTexCoord2d(0.0,1.0);
  74.        glVertex3f(0.0, 0.0, 3.0);
  75.        glTexCoord2d(0.0,0.0);
  76.        glVertex3f(0.0, 0.2, 3.0);
  77.        glTexCoord2d(1.0,0.0);
  78.        glVertex3f(12.0,0.2, 3.0);
  79.        glTexCoord2d(1.0,1.0);
  80.        glVertex3f (12.0,0.0,3.0);
  81.       glEnd();
  82.      glDisable(GL_TEXTURE_2D);
  83.      glPopMatrix();
  84.     glEndList();
  85.         glCallList(BAHNSTEIG);
  86.         glFlush();
  87.     glutSwapBuffers(); //swap the buffers
  88.     angle++; //i
  89.  
  90. }
  91.  
  92.  
  93.  


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Jan 01, 2007 11:48 
Offline
DGL Member
Benutzeravatar

Registriert: Do Aug 25, 2005 16:00
Beiträge: 189
Programmiersprache: Java, C#
2 Dinge fallen mir bei deinem Code auf...
zuerst einmal:

Code:
  1.  
  2. //glEnable(GL_LIGHT1);
  3.  


Das glEnable ist auskommentiert - das darf natürlich nicht sein wenn du Licht nutzen willst (wird im richtigen Code nicht auskommentiert sein, denk ich mal). Außerdem fängt man bei den Lichtern bei 0 an zu zählen (glEnable(GL_LIGHT0))



So, das zweite was ich nicht gefunden habe ist:
Code:
  1.  
  2. glEnable(GL_LIGHTNING);
  3.  


Ohne das wird die Lichtberechnung gar nicht erst aktiviert - kann es sein das du das vegessen hast, oder ist es in einem anderen Code Stück?


cya,
Deathball


edit: ups - sorry! :oops:


Zuletzt geändert von Deathball am Di Jan 02, 2007 11:38, insgesamt 1-mal geändert.

Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Jan 01, 2007 12:26 
Offline
DGL Member

Registriert: Mi Nov 08, 2006 17:35
Beiträge: 31
Hi erstmal ein frohes neues an alle,

glLight1 ist im wirklichen Text nicht auskommentiert und glEnable(GL_LIGHTING) ist in der enable funktion.
Das Spotlight ist nicht mein erstes Licht, deswegen fange ich ab 1 an. In der enable() hab ich noch ein Licht definiert. Sprich ich benutze mehrere Lichtquellen.Ausserdem liegt das Problem ja nicht, dass ich das Licht gar nicht sehe, sondern es halt nicht zu sehen in dem Punkt wo mein Bahnsteig ist. Ich hab das ganze mal im Koordinatenursprung probiert da lief es halt. Nur in meiner Szene liegt der Bahnsteig ja nicht im Koordinatenursprung. Wenn ich also die Lichtquelle, dann zum Bahnsteig in der Position xy verschiebe, dann sehe ich nicht die Lichtquelle, sprich der Bahnsteig ist nicht beleuchtet.

mfg
mistirios


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Jan 02, 2007 10:22 
Offline
DGL Member
Benutzeravatar

Registriert: Di Dez 27, 2005 12:44
Beiträge: 393
Wohnort: Berlin
Programmiersprache: Java, C++, Groovy
Hallo mistirios,

wenn ich das richtig sehe hast du für oben und unten keine Normale festgelegt.

Wenn du dein Spotlight auf dem Bahnsteig sehen willst, solltest du ausserdem die obere Fläche in kleinere unterteilen.
Du könnstest z.B. 1x1 grosse Quads nehmen.

Zu empfehlen wäre allerdings eine noch feinere Unterteilung.
Je kleiner die Quad-Grösse, um so besser ist dein Spotlicht zu sehen.

Viele Grüße
dj3hut1


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Jan 02, 2007 15:58 
Offline
DGL Member

Registriert: Mi Nov 08, 2006 17:35
Beiträge: 31
Dank dir. Es lag an der Normalen für die Fläche oben.;-)


mfg
mistirios


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


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 5 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.014s | 14 Queries | GZIP : On ]