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

Aktuelle Zeit: Di Jul 08, 2025 21:29

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



Ein neues Thema erstellen Auf das Thema antworten  [ 13 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: Aktuelle Position auslesen
BeitragVerfasst: So Dez 24, 2006 11:17 
Offline
DGL Member

Registriert: Sa Dez 23, 2006 17:02
Beiträge: 6
Hallo,

Ich bin noch ein ziehmlicher Anfänger. Ich hab es schon hingekriegt ein paar 3D Objekte zu erstellen. Jetzt brauche ich aber eure Hilfe, um Herauszufinden an welchem Punkt ich mich gerade befinde. Ich habe mich schon etwas in der DGL Wiki umgesehen, und denke das glGet und gl_Current_Normal wohl das richtige sind um die 3 aktuellen Bildschirmkoordinaten auszulesen. Jetzt kriege ich das aber nicht hin das irgendwie umzusetzen. Da gibt es 4 Funktionen wo hinten noch Double, Flout und so weiter dransteht. Was sollte ich da nehmen? Und wie lese ich das dann am gescheitesten aus. Kann mir bitte jemand ein kleines Demo schreiben, wo die Koordinaten sich im 3D-Raum ein paar mal geändert werden, und parallel die Koordinaten dann ausgeben.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So Dez 24, 2006 12:36 
Offline
Guitar Hero
Benutzeravatar

Registriert: Do Sep 25, 2003 15:56
Beiträge: 7810
Wohnort: Sachsen - ERZ / C
Programmiersprache: Java (, Pascal)
Nein, da bist du falsch unterwegs. GL_CURRENT_NORMAL gibt dir die aktuellen Flächennormale zurück.

Wozu brauchst du denn die position. beschreib mal konkret was du vor hast. Die eigene Position ist eher bei komlexeren Sachen wirklich wichtig. Es geht sonst auch einfacher.

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


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So Dez 24, 2006 16:13 
Offline
DGL Member

Registriert: Sa Dez 23, 2006 17:02
Beiträge: 6
Das ist so, ich habe einen beweglichen Arm gemacht, bei dem Längen sowie Winkel frei variierbar sind. von diesem Arm soll dann ein Strahl ausgehen, in die Richtung in die der Arm zeigte. Da ich das aber alles Relativ zum vorherigen Teil erstellt habe, wäre es eine Riesenrechnerei den Punkt wo der Strahl beginnt zu berechnen. Deshalb würde ich das gerne so mache, das ich wenn ich am Ende des Armes mit dem Erstellen der 3D-Objekte angekommen bin dort die Position auslese, mich dann relativ mit glTranslate noch ein Stück weiter bewege und dort wieder die Position auslese. Dadurch würde ich dann die Ausrichtung kennen, und könnte das ganze relativ einfach umsetzen. Wie mache ich das?


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So Dez 24, 2006 23:33 
Offline
DGL Member
Benutzeravatar

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

du könntest an der Stelle, an der du den Arm zeichnest, mit glGetFloatv(GL_MODELVIEW_MATRIX) die Modelviewmatrix auslesen.
Wenn du diese z.B. mit den (4-Tupel) Koordinaten des Anfangs- und Endpunktes deines Armes multiplizierst, bekommst du die Koordinaten relativ zur Kamera (die Kamera bildet den Nullpunkt und schaut in negative z-Richtung).

So in etwa könntest du auch die feste Position deiner Kamera herausfinden ;)

Viele Grüße
dj3hut1


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Dez 25, 2006 09:27 
Offline
Guitar Hero
Benutzeravatar

Registriert: Do Sep 25, 2003 15:56
Beiträge: 7810
Wohnort: Sachsen - ERZ / C
Programmiersprache: Java (, Pascal)
Öhm... du möchtest nur einen Strahl der dort hin ziegt, wo sagen wirmal der Zeigefinger hinzeigt?

Da brauchst du doch nicht deine Position. Du verwendest einfach die Matrix welche du zum zeichnen deines Fingers benutzt hast, und Zeichnest da noch eine Linie ein.

Es istdoch so- Wenn du, nachdem du den Oberarm ausgerichtet hast, eine Linie zeichnen würdest, dass diese in die selbe Richtung wie dein Oberarm zeigen würde. Wenn du die nach dem Unterarm zeichnest entsprechend so wie dein Unterarm etc. Du must dann halt die Matrix nehmen die du für deinen Zeigefinger benutzt hast.

(Matrix = Summe aller transformationen zu dem Zeitpunkt)

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


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Dez 25, 2006 09:38 
Offline
DGL Member

Registriert: Do Mai 30, 2002 18:48
Beiträge: 1617
Flash hat geschrieben:
(Matrix = Summe aller transformationen zu dem Zeitpunkt)

Wenn man in der Industrie Gegenstände zu etwas neuem zusammensetzt, bekommt man ein Produkt. So ist es auch in der Linearen Algebra... Man bekommt das Produkt der Transformationen. Nur bei reinen Translationen genügt das reine addieren, aber sobald Winkel auftauchen, dann hat man es meist einem echten Produkt zu tun... Nur meine 2 cents...


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Dez 25, 2006 09:59 
Offline
Guitar Hero
Benutzeravatar

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

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


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Dez 25, 2006 11:49 
Offline
DGL Member

Registriert: Sa Dez 23, 2006 17:02
Beiträge: 6
Wenn ich nur einmal einen Strahl in die Richtung zeichnen wollte, wär das kein Problem. Ich möchte aber das sich dieser Strahl in seiner Richtung weiterbewegt. Und da der Arm in dem Moment schon wieder wo anders sein kann, muss ich mir irgendwie die ausrichtung merken. Das GL_MODELVIEW_MATRIX sieht gut aus. In der Wiki steht, das 16 Werte zurückgegeben werden. Kann mir bitte jemand ein Demo schreiben, oder mir sagen wie ich die auslesen soll, und welche die Werte sind, die ich brauche.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Dez 25, 2006 15:41 
Offline
DGL Member

Registriert: Di Jun 06, 2006 09:59
Beiträge: 474
Versuch mal am Schluss die Transformationsmatrix auszulesen und einfach ihren Translationsanteil zu verwenden. Damit erhältst du den Ursprung des aktuellen lokalen Koordinatensystems.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Dez 25, 2006 17:09 
Offline
DGL Member

Registriert: Sa Dez 23, 2006 17:02
Beiträge: 6
Und wie les ich die aus?


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Dez 27, 2006 22:05 
Offline
DGL Member

Registriert: Sa Dez 23, 2006 17:02
Beiträge: 6
Bitte helft mir :cry:


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Dez 28, 2006 21:29 
Offline
Guitar Hero
Benutzeravatar

Registriert: Do Sep 25, 2003 15:56
Beiträge: 7810
Wohnort: Sachsen - ERZ / C
Programmiersprache: Java (, Pascal)
glGetFloatv(GL_MODEL_VIEW) oder so ähnlich.

Da bekommst du ein Array mit 16 Zahlen zurück. Soweit ich mich erinnere Spaltenweise. Steht aber im Wiki. Du musst dann nur noch diese Zahlen - also 1,2,3,5,6,7,9,10,11 - auslesen und verwenden.

Bin aber nicht der Matheguru.

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


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

Registriert: Sa Dez 23, 2006 17:02
Beiträge: 6
Danke!


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 13 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.009s | 16 Queries | GZIP : On ]