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

Aktuelle Zeit: Di Jul 15, 2025 22:51

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



Ein neues Thema erstellen Auf das Thema antworten  [ 12 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: Transformation zurückrechnen
BeitragVerfasst: Mo Jul 18, 2011 18:27 
Offline
DGL Member

Registriert: Do Apr 22, 2010 17:17
Beiträge: 543
Malzeit,

habe gerade ein kleines Problemchen.. Ich habe da eine ModelViewMatrix die ein Objekt repräsentiert (Position & Lage).. Nun brauch ich die genaue Position in Weldkoordinaten.. Aber das Problem ist, das in dieser Matrix auch die Kameratransformation&Rotation drin steckt.. Wie bekomm ich die da raus?

Vielleicht irgendwie mit ner Inversen Matrix?

Grüße
Thomas


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Transformation zurückrechnen
BeitragVerfasst: Di Jul 19, 2011 14:51 
Offline
DGL Member
Benutzeravatar

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

kannst du dein Problem nochmal genauer erläutern? Suchst du jetzt die Koordinaten nach oder vor der Transformation. Normalerweise besteht die ModelViewMatrix aus Kameratransformation&Rotation, da es in OpenGL keinen Unterschied macht, ob man z.B. ein Objekt eine Einheit nach rechts, oder die Kamera eine Einheit nach links verschiebt (alles ist relativ ;) ). Und was ist die Position deines Objektes? Eigentlich können nur einzelne Punkte eine Position haben, oder meinst du den Mittelpunkt des Objektes? Falls dein Objekt vor der Transformation einen Nullpunkt hatte, dann kannst du diese Position nach der Transformation direkt an der Matrix ablesen (letzte Spalte, wegen MV * (0, 0, 0, 1)).

Viele Grüße
dj3hut1

_________________
Wenn Gauß heute lebte, wäre er ein Hacker.
Peter Sarnak, Professor an der Princeton University


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Transformation zurückrechnen
BeitragVerfasst: Di Jul 19, 2011 15:05 
Offline
DGL Member

Registriert: Do Apr 22, 2010 17:17
Beiträge: 543
für meine Beleuchtung brauch ich von diesem Objekt die 3D Position X/Y/Z. Jedes objekt kann mehrfach verschachtelt werden ("MotorObjekte") d.h. pro Verschachtelung wird eine neue Matrix aufm Stack geschoben und rotiert oder transformiert... soo nun zieh ich mir beim Rendern der Lampe, wo die Modelviewmatrix alle Transformationen inkl. auch der camera :!: enthält. Nun wollte ich über [3][0], [3][1], [3][2] die Position auslesen, aber pustekuchen diese ist Kamera abhängig...


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Transformation zurückrechnen
BeitragVerfasst: Di Jul 19, 2011 15:08 
Offline
Ernährungsberater
Benutzeravatar

Registriert: Sa Jan 01, 2005 17:11
Beiträge: 2068
Programmiersprache: C++
Du hast doch die Position des Objektes in Relation zur Kamera. Der Rest ist eine Matrixmultiplikation.

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


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Transformation zurückrechnen
BeitragVerfasst: Di Jul 19, 2011 15:16 
Offline
DGL Member

Registriert: Do Apr 22, 2010 17:17
Beiträge: 543
i0n0s hat geschrieben:
Du hast doch die Position des Objektes in Relation zur Kamera. Der Rest ist eine Matrixmultiplikation.


verstehe nicht was du meinst?


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Transformation zurückrechnen
BeitragVerfasst: Di Jul 19, 2011 15:30 
Offline
Ernährungsberater
Benutzeravatar

Registriert: Sa Jan 01, 2005 17:11
Beiträge: 2068
Programmiersprache: C++
Du hast deine Matrix welche die Kamera beschreibt sowie die Position deines Objektes in den Koordinaten aus der Sicht der Kamera.
An der Stelle kannst du durch Multiplikation der Matrix mit den Koordinaten sowie der Einbeziehung der Translation die Weltkoordinaten errechnen.

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


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Transformation zurückrechnen
BeitragVerfasst: Di Jul 19, 2011 15:44 
Offline
DGL Member

Registriert: Do Apr 22, 2010 17:17
Beiträge: 543
also meine rausgefilterte Position * der CameraMatrix? Wie soll ich die Translation einbeziehen?


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Transformation zurückrechnen
BeitragVerfasst: Di Jul 19, 2011 16:31 
Offline
DGL Member

Registriert: Do Apr 22, 2010 17:17
Beiträge: 543
alles klar, habs schon 8) Mercie für die hilfe


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Transformation zurückrechnen
BeitragVerfasst: Fr Jul 22, 2011 09:22 
Offline
DGL Member

Registriert: Do Apr 22, 2010 17:17
Beiträge: 543
Problem war doch noch nicht gelöst...

Also nochmal:
1. IdentityMatrix
2. Camera Rotationen und Translationen
3. Viele unbekannte Rotationen und Translationen die ich später NICHT kenne

Nun bin ich an der Stelle wo ich die aktuelle Position in Weltkoordinaten, also ohne die Camera (2.) brauche. Ich habe lediglich die aktuelle ModelViewMatrix (wo auch die Camera drin steckt) und die CameraMatrix.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Transformation zurückrechnen
BeitragVerfasst: Fr Jul 22, 2011 11:27 
Offline
DGL Member

Registriert: Mo Nov 09, 2009 12:01
Beiträge: 200
Vielleicht gibt es auch noch eine mathematische Lösung, aber, wenn ich Dein Problem richtig verstanden habe, dann mußt Du bei jeder Berechnung (Translation, Rotation) den gewünschten Punkt ausrechnen und merken.
Die CamerAH könnte das.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Transformation zurückrechnen
BeitragVerfasst: Fr Jul 22, 2011 13:37 
Offline
DGL Member

Registriert: Di Okt 13, 2009 17:25
Beiträge: 365
Programmiersprache: C++
Ich bin mir nicht ganz sicher, ob das bei Matrizen auch funktioniert (denn dort ist die Reihenfolge der Multiplikation ja nicht egal). Aber wenn deine EndMatrix = CameraMatrix * ObjektMatrix ist, dann müsste doch die ObjektMatrix = EndMatrix / CameraMatrix sein.

:arrow: Multipliziere die EndMatrix mit der invertierten CameraMatrix.

Wenn das nicht funktioniert, würde ich mir halt die Camera-Einstellungen in einer Klasse merken.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Transformation zurückrechnen
BeitragVerfasst: Sa Jul 23, 2011 14:48 
Offline
DGL Member
Benutzeravatar

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

ich hätte noch eine andere theoretische Möglichkeit an die Objektmatrix ranzukommen, weiß aber nicht ob es wirklich funktioniert :

Kameraoperationen
...
glPushMatrix(); //Kameramatrix auf den Stack
glLoadIdentity();
Objektoperationen...
glGet(GL_MODELVIEW_MATRIX...), //ObjektMatrix holen und in Variable speichern
glPopMatrix(); //Kameramatrix vom Stack holen
glMultMatrix(...); //Objektmatrix mit Kameramatrix multiplizieren
drawObject();

Wenn du mehrere Objekte hast, müsstest du die Kameramatrix zweimal auf den Stack packen.

Viele Grüße
dj3hut1

_________________
Wenn Gauß heute lebte, wäre er ein Hacker.
Peter Sarnak, Professor an der Princeton University


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


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 6 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:  
cron
  Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de
[ Time : 0.008s | 14 Queries | GZIP : On ]