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

Aktuelle Zeit: Fr Jul 18, 2025 15:44

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



Ein neues Thema erstellen Auf das Thema antworten  [ 7 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: Matrix1 to Matrix2 Animation
BeitragVerfasst: So Feb 12, 2006 13:08 
Offline
DGL Member

Registriert: Fr Okt 24, 2003 22:26
Beiträge: 120
Wohnort: Mannheim
Programmiersprache: Delphi
Hallo,

ich hatte vor kurzem schon mal ein Thema der Überblendung von zwischen 2 Matrizen als Animation.

Die Rotation kann mit Quaternions und Slerp (Interpolation) ganz gut interpoleirt werden.
Leider berücksichtig dies aber nur die reine Drehung.

Mein Problem ist nun noch die evtl. Translation in den Matrizen zu berücksichtigen.
Wenn ich zusätzlich zu der Rotation diese Tansformation linear interpoliere sieht die Animation recht komisch aus.
Ich denke ich muß noch den Drehpunkt berücksichtigen, um den gedreht werden muß, um von Matrix1 auf Martix2 zu drehen. Dann kann ja auch die Translation entfallen.

Im angehängten Bild habe ich das ganze mal als 2D Skizziert. Es muß am Ende aber als 3D funktionieren.
Ausgangspunkt sind 2 Matrizen (Start-Ziel) mit Rotation und Translation. Gesucht ist dieAche (in 2D - der Punkt) um den die Rotation erfolgen muß, damit m1 in m2 in einer Rotation gedreht werden kann.

Hat von euch jemand Ideen, wie das gelöst werden kann oder schon mal mit Animationen gespielt, wo sowas zu lösen war?

Grüße
User69


Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So Feb 12, 2006 14:35 
Offline
Guitar Hero
Benutzeravatar

Registriert: Do Sep 25, 2003 15:56
Beiträge: 7810
Wohnort: Sachsen - ERZ / C
Programmiersprache: Java (, Pascal)
Wenn du 2 Vectoren hast, die einen Punkt gemeinsam haben, und du willst den einen in den anderen "reinrotieren" dann ist die Drehachse gleich der Normale die bei Vectoren haben (Das ergebnis des Kreuzprodukts).

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


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So Feb 12, 2006 15:48 
Offline
DGL Member

Registriert: Fr Okt 24, 2003 22:26
Beiträge: 120
Wohnort: Mannheim
Programmiersprache: Delphi
Leider habe ich aber nur genau die 2 Matrizen.
Wie sieht es denn dann aus?

Das Bild vereinfacht einiges - es sollte nur ein Prinzip dastellen. Vielleicht war es schlecht gewählt.

Grüße
User69


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So Feb 12, 2006 16:21 
Offline
DGL Member

Registriert: So Sep 26, 2004 05:57
Beiträge: 190
Wohnort: Linz
Also wenn du über einen gemeinsamen Drehpunkt interpolierst, dann wird das Ergebnis aussehen wie die Bewegung auf einer Kugel wenn ich das jetzt richtig verstanden habe wie du das meinst. Wäre hilfreich zu wissen um was für eine Art von Animation es sich handelt. Üblicherweise verwendet man bei Animationen nämlich weniger Positionsinterpolationen auf einer Kugel, sondern mehr als 2 Punkte (zB den Punkt vor dem Startpunkt und den Punkt nach dem Zielpunkt) oder man gibt zusätzlich Tangenten zu den beiden Punkten an, wenn keine lineare Bewegung (Interpolation) erwünscht ist.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So Feb 12, 2006 17:03 
Offline
DGL Member

Registriert: Fr Okt 24, 2003 22:26
Beiträge: 120
Wohnort: Mannheim
Programmiersprache: Delphi
Mehr als die 2 Matrizen habe ich leider nicht.

Ich stelle mir z.B eine Deckel vor, der auf ein Unterteil gelegt werden soll indem er am rechten Rand aufgesetzt wird und dann per Rotation um diesen Punkt gedreht wird. (diesen Drehpunkt habe ich aber nicht. Der muß aus den 2 Matizen berechnert werden).
Wenn ich aber annehme, daß ich den Deckel von Matrix1 nach Matrix 2 bewegen will denke ich daß es das beste wäre um einen Punkt zu drehen - oder liege ich hier falsch? Diese Punkt ist doch eindeutig - oder etwa nicht?

Ich habe nur die 2 Matrizen des Deckels (Ende: Matrix für den aufgelegen Decke = Identity - für diesen Fall; Start: Irgendeinen Matrix)

User69


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Feb 13, 2006 07:58 
Offline
DGL Member

Registriert: So Sep 26, 2004 05:57
Beiträge: 190
Wohnort: Linz
Also in dem ganz konkreten Spezialfall, dess der Deckel genau richtig auf den Topf aufgesetzt wird (also durch das Kippen der Deckels die Unterseite des Deckels oben landen würde dann wohl eher nicht), dann hast du eine eindeutige Drehachse wo du von Matrix 1 auf Matrix 2 kommst. Wenn dieser Spezialfall nicht vorhanden ist, dann kannst du nicht sowohl Rotation als auch Translation durch eine gemeinsame Drehachse anpassen. Ich würde jedoch meinen das es sich hierbei um ein physikalischeres Problem handelt. Der Drehpunkt ist logischerweise dort wo der Deckel auf dem Topf aufliegt, die Drehrichtung dort wo der Schwerpunkt von der Gravitation hinunter gezogen wird.

Wenn das Deckel auf Topf legen jedoch eine (zB vom einem Menschen) kontrollierte Handlung ist, dann würde ich hier eher mehr Animationsschritte einbauen, die du in irgend einem Zeichenprogramm machst, oder dir speziell für diese eine Animation prozedual berechnest.

Es handelt sich halt um keine lineare Bewegung im Sinne von Schwerpunkt linear bewegt + Drehmoment. Dadurch musst du irgendwie angeben wie sich diese Bewegung verhalten soll. Dies kann entweder über physikalische Vorgaben geschehen (inkl. Kollisionen), über von Grafikern definierte Vorgaben oder du programmierst die eine Animation "Deckel auf Topf legen" aus, dies müsstest du dann jedoch bei jeder noch so trivialen (nicht linearen) Animation aufs neue machen.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Feb 15, 2006 23:16 
Offline
DGL Member

Registriert: Fr Okt 24, 2003 22:26
Beiträge: 120
Wohnort: Mannheim
Programmiersprache: Delphi
Danke für die Antwort.

Was ich also entnehmen kann ist, daß meine Annahme die Drehachse zu suchen nicht immer (oder eher selten) zum Erfolg führt und ich es somit dem Benutzer überlassen muß Zwischenschritte einzufügen um ggf. das Ergebnis zu bekommem.

Mein Sinn war Animationen zu erzeugen (dehshalb auch die 2 Matrizen) als Keyframes. Eine phisikalische Berachtung im Sinne von Schwerpunkt oder Kontaktpunkt kommt also nicht in Frage. Auch die Spezifikation per Drehachse und Winkel durch den Benutzer wäre mir zu schwierig. Es sollte halt so gut wie möglich ein Ergebnis rauskommen, was ein "unbedarfter" erwarten würde - was das auch immer wäre.

Als Frage: Was würden Animatiosprogramme machen, wenn sie diese 2 Zustände darstellen sollen (von auf der Kante aufgsetzten Deckel zu auflegen)?

Grüße
User69


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


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder 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.011s | 14 Queries | GZIP : On ]