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.
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
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?
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
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
(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...
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.
Versuch mal am Schluss die Transformationsmatrix auszulesen und einfach ihren Translationsanteil zu verwenden. Damit erhältst du den Ursprung des aktuellen lokalen Koordinatensystems.
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
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.