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

Aktuelle Zeit: Di Jul 08, 2025 11:10

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: Verständnisfrage zu glNormal
BeitragVerfasst: Fr Mai 11, 2007 12:07 
Offline
DGL Member

Registriert: Mi Mär 28, 2007 17:45
Beiträge: 131
Ich bin dabei, ein OpenGL-Programm zu untersuchen (und zu verstehen). Dabei stieß ich auf eine Stelle, die ich mir nicht erklären kann. Es geht darum, Bäume in eine Landschaft zu setzen, indem kreuzweise die Textur positioniert wird:

Code:
  1. // eye_pt ist die Kameraposition
  2. // pt ist die Stelle, wo der Baum gepflanzt werden soll
  3. // diam, height: selbsterklärend
  4.  
  5. procedure DrawTree (eye_pt, pt: t_point;  diam, height: double);
  6. var normal: t_vector;
  7. begin        
  8.     glPushMatrix;
  9.     glTranslatef (pt.x, pt.y, pt.z);
  10.    
  11.     normal := SubtractPoints (eye_pt, pt);     // ??
  12.     NormalizeVector (normal);                   // ??
  13.     glNormal3f (normal.x, normal.y, normal.z);  // ??
  14.        
  15.     glBegin (GL_QUADS );
  16.         glTexCoord2f (0.0, 0.0);
  17.         glVertex3f (-diam, 0.0, 0.0 );
  18.         glTexCoord2f (1.0, 0.0 );
  19.         glVertex3f (diam, 0.0, 0.0 );
  20.         glTexCoord2f (1.0, 1.0 );
  21.         glVertex3f (diam, height, 0.0 );
  22.         glTexCoord2f (0.0, 1.0 );
  23.         glVertex3f (-diam, height, 0.0 );
  24.        
  25.         // das Ganze noch einmal mit anderer Vertex-Reihenfolge, um
  26.         // die Textur ein zweites Mal, um 90° gedreht, draufzusetzen
  27.        
  28.     glEnd;
  29.     glPopMatrix;
  30. end;
  31.  


Unklar sind die mit ?? gekennzeichneten Zeilen. Welchen Zweck soll es erfüllen, wenn ich den normalisierten Vektor an OpenGL übergebe? Wenn ich die Zeilen lösche, scheint sich das Programm genau so zu verhalten.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Mai 11, 2007 12:24 
Offline
Ernährungsberater
Benutzeravatar

Registriert: Sa Jan 01, 2005 17:11
Beiträge: 2068
Programmiersprache: C++
Die Normalen einer Fläche sind unter anderem für Licht wichtig.

Die Normalisierung der Normalen per OpenGL und glNormal geht zwar auch, denoch ist es schneller selber zu normieren.
Bei der Normierung wird die Länge des Vektors auf 1 gebracht.

_________________
Steppity,steppity,step,step,step! :twisted:
❆ ❄ ❄ ❄ ❅ ❄ ❆ ❄ ❅ ❄ ❅ ❄ ❅ ❄ ❄
❄ ❄ ❄ ❅ ❄ ❄ ❄ ❅ ❄ ❄ ❆ ❄ ❄


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Mai 11, 2007 19:31 
Offline
DGL Member

Registriert: Mi Mär 28, 2007 17:45
Beiträge: 131
Aber handelt es sich hier um eine Flächennormale? Es werden doch zwei Punkte subtrahiert (eye_pt und pt), und dabei kommt ein Vektor heraus, der die Richtung von eye_pt nach pt beschreibt. Dieser Vektor wird normalisiert und dann OpenGL übergeben. Ich kann darin keinen Sinn erkennen, was soll OpenGL damit anfangen?


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Mai 11, 2007 20:08 
Offline
Ernährungsberater
Benutzeravatar

Registriert: Sa Jan 01, 2005 17:11
Beiträge: 2068
Programmiersprache: C++
Das ist dann vermutlich der Vektor der auf die Kamera zeigt. Der Sinn ist mir gerade auch etwas suspekt, kann aber wirklich nur Licht sein.

_________________
Steppity,steppity,step,step,step! :twisted:
❆ ❄ ❄ ❄ ❅ ❄ ❆ ❄ ❅ ❄ ❅ ❄ ❅ ❄ ❄
❄ ❄ ❄ ❅ ❄ ❄ ❄ ❅ ❄ ❄ ❆ ❄ ❄


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Mai 15, 2007 17:24 
Offline
DGL Member

Registriert: Mi Mär 28, 2007 17:45
Beiträge: 131
Inzwischen bin ich fast sicher, dass die Zeilen überflüssig sind. An ganz anderer Stelle fand ich eine Routine, in der Objekte gezeichnet werden, die über einen normierten Vektor gedreht werden können. Die Routine ist fast genauso aufgebaut wie die oben aufgelistete. Ich vermute, dass der Autor den Code einfach kopiert, aber nicht völlig auf die andere Situation umgestellt hat. Sowas kommt ja vor. Danke.


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 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.007s | 16 Queries | GZIP : On ]