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

Aktuelle Zeit: Fr Jul 18, 2025 08:58

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



Ein neues Thema erstellen Auf das Thema antworten  [ 8 Beiträge ] 
Autor Nachricht
BeitragVerfasst: Mo Mai 12, 2008 23:01 
Offline
DGL Member

Registriert: So Mär 02, 2008 18:47
Beiträge: 30
Hallo,


ich habe ein zusammengsetztes Objekt, welches um 90 Grad gekippt werden soll.

Meine Funktion:

Code:
  1.  
  2.  
  3. public void drawObject(){
  4.            
  5.    
  6.            gl.glPushMatrix();
  7.            gl.glTranslatef(-4.0f, -6.0f, -15.0f);
  8.            drawCube(2, 2, 4, 5);  //drawCube(2, 5, 4, 2);
  9.            gl.glPopMatrix();
  10.            
  11.    
  12.            gl.glPushMatrix();
  13.            gl.glTranslatef(-4.0f, -4.0f, -15.5f);
  14.            drawCube(2, 0.25f, 1, 0.25f);  
  15.            gl.glPopMatrix();
  16.            
  17.  
  18.            gl.glPushMatrix();
  19.            gl.glTranslatef(-4.0f, -4.0f, -14.5f);
  20.            drawCube(2, 0.25f, 1, 0.25f);  
  21.                                      gl.glPopMatrix();
  22.            
  23.            gl.glPushMatrix();
  24.            gl.glTranslatef(-4.0f, -3.5f, -15.0f);
  25.            drawCube(2, 0.25f, 0.25f, 1.25f);
  26.            gl.glPopMatrix();
  27.            
  28.  
  29.        }
  30.      
  31.  



Dann in der display() Methode :


gl.glRotated(w, 0.0f, 0.0f, -1.0f);
room.drawKoffer();
// Winkel reduzieren
w++;

Leider bewegt sich das Objekt beim kippen. Es ist eine zusammengesetzte Bewegung entstanden. Das liegt an meinen Translationen in
der drawObject Methode.

gl.glTranslatef(-4.0f, -6.0f, -15.0f);

Wie kann ich die Translation vermeiden und mein Objekt trotzdem zeichnen ??



Danke

Gruß
SOA


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Mai 13, 2008 00:00 
Offline
Guitar Hero
Benutzeravatar

Registriert: Do Sep 25, 2003 15:56
Beiträge: 7810
Wohnort: Sachsen - ERZ / C
Programmiersprache: Java (, Pascal)
Öhm... ohne jetzt sicher zu sein was du willst.
Kann es sein, dass sich dein Objekt auf einer Kreisbahn bewegt, und du eigentlich willst, dass das Objekt sich um seinen "Schwerpunkt" dreht?

Falls ja, dann musst du den Koordinatenursprung "in" dein Objekt hineinschieben, bevor du rotierst.

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


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Mai 13, 2008 08:57 
Offline
DGL Member

Registriert: So Mär 02, 2008 18:47
Beiträge: 30
Ja , genau so ist es. genau das möchte ich machen ...

--> Translation, dann
--> Rotation, dann
--> Translation

Und ich muss nicht mein Objekt in den Ursprung, sondern den Koordinatenursprung in mein Objekt... also genau in den Schwerpunkt setzen.


Dieses Tutorial habe ich dazu schon einmal gesichtet:
http://wiki.delphigl.com/index.php/Tutorial_Matrix2

glPushMatrix();

Ich führe ja erst eine Translation aus.
Dann zeichne ich mein Objekt.


glPopMatrix()

Wo genau muss ich denn die Translation in den Ursprung und die Rotation unterbringen ?


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Mai 13, 2008 13:42 
Offline
Guitar Hero
Benutzeravatar

Registriert: Do Sep 25, 2003 15:56
Beiträge: 7810
Wohnort: Sachsen - ERZ / C
Programmiersprache: Java (, Pascal)
Zu aller erst.

1. verschieben des Ursprungs ins Zentrum
2. rotieren ("kippen")
3. zeichnen deines Objekts.

Am Ende des Matrix_2 Tutorials sind noch 2 Tools mit denen du die Manipulationen beobachten kannst. Versuch damit mal zu verstehen was dort passiert.

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


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Mai 13, 2008 19:52 
Offline
DGL Member

Registriert: So Mär 02, 2008 18:47
Beiträge: 30
Hallo ,

vielen Dank. Es klappt nun mit der Drehung um den Schwerpunkt.
Dein Programm ist wirklich gut. Der andere Download funktioniert im Übrigen leider nicht mehr.

Es mag zwar etwas vermessen klingen, aber im nächsten Schritt möchte ich das Objekt nun um
die Z-Achse kippen, als wenn ein Gegenstand umkippt. Das will einfach nicht werden.

Wie muss ich hier vorgehen ?


Danke


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Mai 13, 2008 21:27 
Offline
Guitar Hero
Benutzeravatar

Registriert: Do Sep 25, 2003 15:56
Beiträge: 7810
Wohnort: Sachsen - ERZ / C
Programmiersprache: Java (, Pascal)
Es ist immer das selbe. Wichtig ist, wo dein Rotationszentrum ist, und wie dein lokales Koordinatensystem ausgerichtet ist.

Was ich mit dem kleinen Programm zeigen wollte ist (und das steht auch so im Text), dass die Manipulationen immer von den 3 Faktoren
1. Position des Ursprungs
2. Ausrichtung der Achsen
3. Länge der Achsen

abhängt.

Wenn du etwas um eine bestimmte Achse drehen willst, dann musst du das Koordinatensystem an die Richtige stelle, und ausrichtung bringen, bevor du zeichnest. Das Objekt wird dann "in" diesem neuen Koordinatensystem gezeichnet.

Versuch es zu verstehen. Spiel etwas mit den Parametern rum. Das hilft mehr als wenn ich versuche dir das übers Forum schritt für schritt zu erklären. Wenn du vertändnissprobleme hast, dann schreib hier hin was du glaubst verstanden zu haben, und die Nutzter hier sagen dann, wo der Haken ist. ;)

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


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Mai 14, 2008 06:54 
Offline
DGL Member

Registriert: So Mär 02, 2008 18:47
Beiträge: 30
Hallo Flash,


ich denke ich habe den Bogen raus. Es sieht so aus. Ich verschiebe die erst die Matrix durch Translation an einen beliebigien Punkt.
Dort erstelle ich dann meine Rotationsmatrix.

--> Im Anschluß muss jedoch noch eine Translation durchgeführt werden, denn

Ein bezeichneter Quader mit der Kantenlänge 2 hat einen Mittelpunkt in (1, 1, 1 ) . Dies ist das Zentrum der Rotationsmatrix .
Ich setze also die Kante des Würfels auf die Achse und dann kippt er auch um diese.
Erst jetzt zeichne ich das Objekt.

Vielen Dank für Deine Geduld. :)

Lieben Gruß
SOA


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Mai 14, 2008 09:32 
Offline
Guitar Hero
Benutzeravatar

Registriert: Do Sep 25, 2003 15:56
Beiträge: 7810
Wohnort: Sachsen - ERZ / C
Programmiersprache: Java (, Pascal)
Und noch ein Tip. Wenn du in Zukunft Objekte erstellst (per Hand oder per 3D Modelling Software), dann sorg dafür, dass der Bezugspunkt deiner Objekte immer schon bei (0,0,0) liegt. So kannst du dir eine Verschiebung sparen.

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


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


Wer ist online?

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