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

Aktuelle Zeit: So Jul 20, 2025 00:32

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



Ein neues Thema erstellen Auf das Thema antworten  [ 2 Beiträge ] 
Autor Nachricht
BeitragVerfasst: Fr Okt 26, 2007 00:06 
Offline
DGL Member
Benutzeravatar

Registriert: Di Jul 29, 2003 00:11
Beiträge: 436
Hi,
folgendes Problem mit gluUnproject:
Es klappt meistens. Er kriegt einen richtigen Wert für z von 0.990890f. Aber manchmal wird für z ein Wert von 1.00000 ermittelt, was in einem schicken Sprung der ermittelten Koordinaten in Richtung Sonstwo endet.
Warum?
Sry für das C...
Code:
  1.  
  2.             GLdouble modelview[16], projection[16];
  3.             GLint viewport[4];
  4.             GLdouble ox, oy, oz;
  5.             GLfloat z;
  6.             glGetDoublev(GL_MODELVIEW_MATRIX, modelview);
  7.             glGetDoublev(GL_PROJECTION_MATRIX, projection);
  8.             glGetIntegerv(GL_VIEWPORT, viewport);
  9.  
  10.             glReadPixels(x, viewport[3] - y, 1, 1, GL_DEPTH_COMPONENT, GL_FLOAT, &z);
  11.             printf("%f\n", z);
  12.             gluUnProject(x, viewport[3] - y, z, modelview, projection, viewport, &ox, &oy, &oz);
  13.             printf("%lf, %lf, %lf\n", ox, oy, oz);
  14.  


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Okt 26, 2007 11:36 
Offline
DGL Member
Benutzeravatar

Registriert: Di Jul 29, 2003 00:11
Beiträge: 436
Ich weiß wenigstens jetzt, woran das liegt...
Ziel des ganzen ist es, dass eine gluSphere an der Maus kleben bleibt. Bewege ich die Maus zu schnell, so befindet sich der Mauszeiger beim Auslesen der Tiefenkomponente im leeren Raum und z ist logischerweise 1.00000.
Tjoa, Lösung: Den Z-Wert nicht abhängig von der Mausposition berechnen. Mal schauen, wie ich das anstelle. Vielleicht mit einem gluProject auf eine Kugel. Damit hätte ich die Bildschirmkoordinaten des Mittelpunktes. Damit kann ich wiederrum die gesuchte z-Koordinate mit glReadPixels ausrechnen.
Oder so... Mal schauen, was sich hier ergibt.

Edit:
Habs! :)
Ich hole mir nun den Z-Wert des Objectes, welches an der Maus kleben soll mit gluProject:
Code:
  1.  
  2.         GLdouble modelview[16], projection[16];
  3.         GLint viewport[4];
  4.         GLdouble ox, oy, oz;
  5.         int newY;
  6.         GLdouble winx, winy, winz;
  7.        
  8.         glGetDoublev(GL_MODELVIEW_MATRIX, modelview);
  9.         glGetDoublev(GL_PROJECTION_MATRIX, projection);
  10.         glGetIntegerv(GL_VIEWPORT, viewport);
  11.        
  12.         gluProject(movingPoint->point.x, movingPoint->point.y, 0.0f,
  13.             modelview, projection, viewport, &winx, &winy, &winz);
  14.  
  15.         newY  = viewport[3] - y + viewport[1]*2;
  16.         gluUnProject(x, newY, winz, modelview, projection, viewport, &ox, &oy, &oz);
  17.         movingPoint->point.x = ox;
  18.         movingPoint->point.y = oy;
  19.  


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


Wer ist online?

Mitglieder in diesem Forum: Bing [Bot] und 7 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 | 17 Queries | GZIP : On ]