Objektachsenproblem

Matthias_I

Erfahrenes Mitglied
Ich möchte einen Würfel rollen lassen. Damit meine ich, der Würfel soll 90 Grad über eine seiner Kanten gedreht werden. Danach noch einmal 90 Grad über eine andere Kante gedreht werden.

Ich erzeuge einen Würfel. Konvertiere den Würfel in den Polygonmodus um die Objektachsen bearbeiten / verschieben zu können. Verschiebe den Würfel (samt Achsen) in seine Ausgangsposition. Verschiebe die Objektachsen.
Nehme bei frame 0 Position Winkel etc auf.

Gehe zu frame 100.
Drehe den Würfel um eine Achse 90°.
Nehme bei frame 100 Position Winkel etc auf.

Gehe zu frame 101.
Verschiebe die Objektachsen.
Nehme bei frame 101 Position Winkel etc auf.

Gehe zu frame 200.
Drehe den Würfel (um die verschobene Achse).
Nehme bei frame 200 Position Winkel etc auf.

Soweit sieht das alles im Editor auch ganz gut aus.

Lasse ich die Animation laufen, ist der Würfel bei frame 0 aus seiner ursprünglichen Position um das negative Maß der Objektachsenverschiebung verrückt. Die Animation ist dann nicht richtig, der Würfel startet am falschen Ort (verdreht und verschoben), Dreht sich, springt zwischen 100 und 101 und dreht sich. nicht völlig falsch, aber auch nicht richtig.

Das hatte ich mir ein kleines bischen anders vorgestellt :(

Ich habe an Welt und Objektkoordinaten gefummelt, in der F Kurve gefummelt, den Würfel in einem Nullobjekt und und und probiert.

Das olle Handbuch erläutert eine Animation, nicht aber zwei auf einander folgende mit verschobener Objektachse.... Die Suche hier bringt mir keine Lösung.

Am besten wäre es, wenn ich ein Koordinatenkreuz benutzen könnte, das ich frei vom Würfel bewegen drehen könnte (auch in der Animation), aber das ich als Drehachse benutzen kann.

Meine Frage, gibt es eine Antwort auf das Problem ? Oder eine alternative Lösung ? Das solche Basics funktionieren ist mal sicher, nur wie ?

Wie kann man ein Objekt um eine beliebige Achse drehen, die Achse verschieben und dann erneut das Objekt um die verschobene Achset drehen ?
Irgendwie hängt mir mein Würfel zu sehr an seinem Objektkoordinaten, und die zu sehr an ihm.

Danke

Matthias

:rolleyes:
 
Hi!

Nur auf den ersten Blick:
Kannst Du nicht einfach für jede Drehung ein Null-Objekt erstellen und diese ineinander verschachteln?
- kante.1 (Null-Objekt)
- - kante.2 (Null-Objekt)
- - - ...
- - - - Würfel.
-> Animation: 0-100 (z.B.) Drehung kante.1, dann 101-200 Drehung kante.2 etc.
 
Hi!

Eine elegantere Methode ist eine Lösung über XPresso: die Y-Verschiebung in Abhängigkeit der Drehung des Würfels:
(eine schnelle, nicht ausgereifte Variante)

1. Würfel erzeugen.
2. Diesem Würfel eine Neue Expression / XPresso Expression zuweisen.
3. XPresso bearbeiten:
a) Würfel in das XPresso-Fenster ziehen.
b) Beim Würfel-Node den Ausgang Globaler Winkel.B anlegen.
c) Formel-Node mit einem Eingang erzeugen: Formel= sin($1*2)*40, Winkel-Typ= Radians.
d) Ausgang Globaler Winkel.B mit Eingang Wert1 der Formel-Node verbinden.
e) Absolut-Node erstellen. Ausgang der Formel-Node mit Absolut-Node Eingang verbinden.
f) Würfel ein zweites mal ins Xpresso-Fenster ziehen. Eingang Position.Y erzeugen.
g) Ausgang Absolut-Node mit Eingang Position.Y verbinden.

...wenn Du nun den Würfel um seine Z-Achse drehst, verschiebt sich dieser dementsprechend auf der Y-Achse -> X-Position und Z-Rotation animieren...
(Z-Rotation in Abhängigkeit der Position X wäre natürlich noch feiner, aber dafür fehlt mir momentan die Zeit)
 
Hi!

Sorry, aber wenn sich eine Lösung per XPresso anbietet, kann ich nicht "schweigen" ;) Musste mich nocheinmal 'ne halbe Stunde dransetzen und vielleicht überreden solche XPresso's ja doch so manchen "XPresso-Muffel" zum spielen!

XPresso 1: Rotation in Abhängigkeit der Position

1) Würfel erstellen.
2) Grundobjekt konvertieren (Shortcut C) - wir benötigen später die "Punkte".
3) Ebene erstellen: Breite, Tiefe= 1000.
4) Dem Würfel eine Neue Expression / XPresso Expression zufügen.
5) Diese XPresso bearbeiten:
5.a) Würfel ins XPresso-Fenster ziehen.
5.b) Die Ausgänge: Globale Position.X und Globale Position.Z dem Würfel-Node hinzufügen.
5.c) Würfel ein zweites Mal in das XPresso-Fenster ziehen.
5.d) Die Eingänge: Globaler Winkel.B und Globaler Winkel.P dem zweiten Würfel-Node hinzufügen.
5.e) Die Umrechnung der X-Position zu einem Winkel erfolgt per: Formel-Node hinzufügen.
5.f) Der Formel-Node einen Eingang ("Wert1") hinzufügen. Attribute / Formel= $1/200*.5*pi, Winkel-Typ= Radians. ($1/200= Anzahl der 90° Drehungen bei einer Kantenlänge von 200, 90°= 0.5*pi => Winkel bei Position $1)
5.g) Zweite Formel-Node für die Z-Position erzeugen, mit der Formel= -$1/200*.5*pi.
5.h) Den Ausgang: Globale Position.X der Würfel-Node mit dem Eingang: Wert1 der ersten Formel-Node verbinden. Den Ausgang: Globale Position.Z des Würfel-Nodes mit dem Eingang: Wert1 der zweiten Formel-Node verbinden.
5.i) Den Ausgang: Ergebnis der ersten Formel-Node mit dem Eingang: Globaler Winkel.B der Würfel-Node verbinden. Den Ausgang: Ergebnis der zweiten Formel-Node mit dem Eingang: Globaler Winkel.P der Würfel-Node verbinden.

Der Würfel wird nun aufgrund seiner X- und Z-Koordinate gedreht, am besten mal ausprobieren ;)

XPresso 2: Höhe bzw. Position-Y in Abhängigkeit der Rotation
Über das Kollision-Node wird nun berechnet, wie weit sich der Würfel (das Objekt) in Y verschiebt, um "auf" der Ebene zu "liegen". Die Berechnung geschieht über einen Clone:

1) Den Würfel Dublizieren und umbenennen nach "Würfel_calc". Position-Y= 500 setzen.
2) Dem ersten Würfel eine zweite XPresso-Expression hinzufügen.
3) Diese XPresso bearbeiten:
3.a) "Würfel" und "Würfel_calc" ins XPresso-Fenster ziehen.
3.b) Dem "Würfel" folgende Ausgänge und dem "Würfel_calc" dasselbe als Eingänge hinzufügen: Globaler Winkel, Globale Position.X und Globale Position.Z.
3.c) Die Ausgänge von "Würfel" "eins zu eins" mit den Eingängen von "Würfel_calc" verbinden. "Würfel_calc" dreht und positioniert sich in X und Z gleich dem "Würfel" - Y von "Würfel_calc" bleibt bei Y=500.
3.d) "Würfel_calc" ein weiteres mal und die "Ebene" ins XPresso-Fenster ziehen.
3.e) Beiden den Ausgang: Objekt hinzufügen.
3.f) Kollision-Node erzeugen: Kollisionstyp= Abstand.
3.g) Ausgang: Objekt von "Würfel_calc" mit Eingang: Objekt 1 und Ausgang: Objekt der "Ebene" mit Eingang: Objekt 2 des Kollision-Node verbinden.
3.h) Ausgang: Abstand am Kollision-Node erzeugen. Hier liegt also nun der geringste Abstand des Würfel-Clones zur Ebene an (deshalb der Clone: zur Berechnung des "Abstands", dürfen sich Würfel und Ebene nicht schneiden - Y=500 - und der Abstand wird auf "Würfel" angewendet).
3.i) Formel-Node zur "Umrechnung des Abstands" erzeugen: Formel= 500-$1
3.j) Der Formel-Node den Eingang: Wert1 hinzufügen und mit dem Ausgang: Abstand des Kollision-Node verbinden.
3.k) "Würfel" in das Xpresso-Fenster ziehen und den Eingang: Globale Position.Y hinzufügen.
3.l) Ausgang: Ergebnis der Formel-Node mit Eingang: Globale Position.Y von "Würfel" verbinden.

Der Würfel kann nun frei in X und Z verschoben werden...
Have fun! :-)

Kleine Frage: macht soetwas eigentlich als Tutorial Sinn? Meist soll ja was "richtiges" bei rauskommen und obiges ist nur eine Spielerei...
 
Pinky_M

vielen Dank für Deine ausführliche Hilfestellung.
Ich werde das Montag gleich probieren und das Ergebnis hier posten.

Matthias
 
Ich bin mit 6 geschachtelten Nullobjekten klargekommen. Mein ersten Schritte mit XPresso förderten unverwartete aber ganz interessante Ergebnisse zu Tage. Werde mich da mal ransetzen. scheint wesentlich komplexer in der Bedienung zu sein, aber auch unerwartete Freiheiten zu geben.

Nochmal vielen Dank.

Matthias
 
Zurück