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

Aktuelle Zeit: So Jun 16, 2024 20:30

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



Ein neues Thema erstellen Auf das Thema antworten  [ 5 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: Absolute Position berechnen
BeitragVerfasst: Di Apr 26, 2011 06:07 
Offline
DGL Member
Benutzeravatar

Registriert: So Jan 07, 2007 21:26
Beiträge: 130
Wohnort: mal hier mal da mal irgendwo
Hi Leute,

ich stehe momentan vor folgendem Problem: Meine Szene besteht aus einem Knotensystem, so dass gewisse Objekte immer nur in einem Offset zu dem Elternknoten gerendert werden, dabei arbeite ich mit glTranslated, glRotated und glScaled. Hier mal die Render-Methode:

Code:
  1. procedure TSceneNode.Render;
  2. var i: Integer;
  3. begin
  4.   glPushMatrix();
  5.     glTranslated(Position[0], Position[1], Position[2]);
  6.     glRotated(Rotation[0], 1,0,0);
  7.     glRotated(Rotation[1], 0,1,0);
  8.     glRotated(Rotation[2], 0,0,1);
  9.     glScaled(Scale[0], Scale[1], Scale[2]);
  10.  
  11.     if Visible then
  12.       if FrustumCheck then
  13.         RenderSelf;
  14.  
  15.     for i := 0 to High(Child) do
  16.       Child[i].Render;
  17.  
  18.   glPopMatrix();
  19. end;


Dürfte soweit selbst erklärend sein, wenn nich einfach nachfragen.
Nun ist es so, dass ich eine Funktion AbsolutePosition():TVec3 haben möchte, die mir dann genau das zurück gibt was sie vom Namen her verspricht. Nur weiß ich nicht, wie ich dabei vorgehen soll :S

MfG bubble

_________________
Wenn Worte nichts als Worte sind,
dann müssen's Steine sein!
Solange - bis sie pleite sind - schmeißt Fensterscheiben ein!

- Fidl Kunterbunt -


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Absolute Position berechnen
BeitragVerfasst: Di Apr 26, 2011 08:08 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 29, 2005 12:28
Beiträge: 2249
Wohnort: Düsseldorf
Programmiersprache: C++, C#, Java
Zu was soll die Position den absolut sein? Zur Kamera oder zur Welt? Oder zu dem was auf dem Matrix-Stack liegt wenn man die Methode aufruft?

Relativ zur Kamera ist relativ leicht, einfach die ModelView-Matrix auslesen und da die Position aus der 4. Spalte rausholen. Vermutlich meinst du aber die Welt.

Die meiner Meinung nach sinnvollste Möglichkeit:
Eigene Mathebibliothek benutzen und die ganzen Matrizen selbst berechnen. Dann kannst du einfach die gewünschten Matrizen multiplizieren und im Ergebnis die Position auslesen. Ich selbst benutze meine eigenes "CoolMath". Ist natürlich für C++, aber es hindert dich niemand die benötigten Teile nach Delphi zu übersetzen.

_________________
Yeah! :mrgreen:


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Absolute Position berechnen
BeitragVerfasst: Di Apr 26, 2011 08:57 
Offline
DGL Member
Benutzeravatar

Registriert: Di Sep 06, 2005 18:34
Beiträge: 362
Wohnort: Hamburg
Um Coolcat noch etwas zu ergänzen:
Wenn du die Position relativ zur Kamera auslesen willst musst du die Transformationen genau wie beim Rendern ausführen. Beim Objekt dessen Position du abfragen willst kannst du dabei auf die Rotationen und Skalierung verzichten, da diese die Position nicht mehr verändern.
Dann erhälst du die absolute Position in dem du die Modelview Matrix ausliest (z.B. mit glGetFloatv(GL_MODELVIEW_MATRIX)). Die Position steht in dieser Matrix in der 3. Spalte.

Wenn du die Position zur Welt haben willst, musst du die Transformationen der Kamera weg lassen.

Coolcat hat zwar schon recht, dass eine eigene Mathebibliothek da besser geeignet ist, weil das einfach flexibler ist. Kommt aber auf dein Programm an, ob sich der Aufwand lohnt. Zur Not gehts halt auch irgendwie rein mit den OpenGL Matrix Manipulationen.

_________________
Der Mensch hat neben dem Trieb der Fortpflanzung und dem zu essen und zu trinken zwei Leidenschaften: Krach zu machen und nicht zuzuhören. (Kurt Tucholsky)
Schwabbeldiwapp, hier kommt die Grütze. (Der Quästor)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Absolute Position berechnen
BeitragVerfasst: Di Apr 26, 2011 15:10 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Nov 08, 2010 18:41
Beiträge: 769
Programmiersprache: Gestern
Ich vermute mal stark du benutzt einen Baum um deine Szene räumlich einzuteilen. Für so etwas rate ich immer von
solchen kram wie glTranslated, glRotated(Rotation und glScaled ab. Das macht nähmlich alles nur unnötig kompliziert
und bietet auch sonst keine Vorteile.

_________________
Meine Homepage


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Absolute Position berechnen
BeitragVerfasst: Sa Apr 30, 2011 07:16 
Offline
DGL Member
Benutzeravatar

Registriert: So Jan 07, 2007 21:26
Beiträge: 130
Wohnort: mal hier mal da mal irgendwo
Sorry,
dass ich mich jetzt erst melde =/

Ich guck jetzt einfach mal was in den Matrizen alles so drinne steht, und vor allem sollte ich mich generell mit dem Thema Matrix erstmal auseinander setzen :S

_________________
Wenn Worte nichts als Worte sind,
dann müssen's Steine sein!
Solange - bis sie pleite sind - schmeißt Fensterscheiben ein!

- Fidl Kunterbunt -


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 » OpenGL


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 63 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.042s | 17 Queries | GZIP : On ]