Wie Transform3D für PosPathInterpolator bestimmen

aze

Bekanntes Mitglied
Hi Ich hab ein paar Probleme mit den PosPathInterpolator. Ich möchte mithilfe dieses Interpolators verschiedene Flächen in Y-Richtung verschieben.

Erstmal die Frage:Ist RotPosPathInterpolator dafür richtig?Ich verstehe nämlich nicht wo der Unterschied zwischen PosInterpolator,PathInterpolator und RotPathInterpolator ist.Welcher Interpolator ist für was gedacht ?

Zum anderen weiss ich nicht was man als Transform3d im Konstruktor einbauen muss.Ich möchte nämlich folgende Transformation einbauen:

Java:
 Transform3D newT3D = new Transform3D();
            if (n < JawsConst.TEETH_COUNT / 2) {
                newT3D.set(new Vector3d(0, YChange, 0));

            } else {
                newT3D.set(new Vector3d(0, (YChange * -1.0f), 0));

            }

            Transform3D oldT3D = new Transform3D();
            getToothTransformGroup(n).getTransform(oldT3D);


            oldT3D.mul(newT3D);
            getToothTransformGroup(n).setTransform(oldT3D);
 

truesoul

Top Contributor
Mit PosInterpolator ist es nur mögliche auf der X-Achse Objekte zu "verschieben" .

Mit PathInterpolator kann man ein ganzes Array hinterlegen , das er dann "ab arbeitet" sprich :
Schrittweise die Transfromationendurchführt.
-> Das ist eher das was du suchst.

Mit RotPathInterpolator hier kann man Positionen und Rotationswinkel definieren.
Die er dann ebenfall "ab arbeitet".
Der Konstruktor enthält zwei Arrays aus Quat4f und Point3f.

Es gibt aber auch genug beispiele für Interpolatoren im Netz. Oder auch java3d API

Und dein zweites anliegen ist mir ein wenig unklar ?
Im welchen Konstruktor willst du was machen?
 

aze

Bekanntes Mitglied
Und dein zweites anliegen ist mir ein wenig unklar ?
Im welchen Konstruktor willst du was machen?

In dem vom RotPosPathInterpolator.Der Konstruktor lautet doch:

Java:
public RotPosPathInterpolator(Alpha alpha,
                              TransformGroup target,
                              Transform3D axisOfTransform,
                              float[] knots,
                              Quat4f[] quats,
                              Point3f[] positions)

Ich habe die nötigen Punkte(Parameter positions) berechent und man sieht auch eine Animation ,die korrekt abläuft.Wenn man dann aber später weitere Animationen durchführt merkt man das nichts dauerhaft tarnsformiert wurde.Deswegen denke ich man müsste die Transformation(Translation an der Y Ychse) im Parameter axisofTransform wiedergeben oder sehe ich das falsch ?
 

truesoul

Top Contributor
Ja so lautet der Konstruktor.

Relevante Methoden von RotPosPathInterpolator
Deswegen denke ich man müsste die Transformation(Translation an der Y Ychse) im Parameter axisofTransform wiedergeben oder sehe ich das falsch ?

Java:
setTransformAxis( Transform3D );
setTarget( TransformGroup );
setPathArrays( ... , ... , ....);
usw...

Willst du eine Animation zeigen oder nur Transformieren?
 
Zuletzt bearbeitet:

aze

Bekanntes Mitglied
Willst du eine Animation zeigen oder nur Transformieren?

Ich will beides.Die Animation soll gezeigt werden(also das Verschieben entlang der Y Achse) und die Transformation soll stattfinden(bei mir ist es so dass die Animation sichtbar ist,aber wenn ich anschließend weitere Tarnsformationen vornehme sieht man das nichts transformiert wurde.Das Model befindet sich noch im alten Zustand)
 

truesoul

Top Contributor
Hallo aze,

also eigentlich hast du alle wichtigen Daten um dann auch nach der Animation die Transformation zu speichern.

Hier mal ein Beispiel:

Java:
public BranchGroup createAnimation()
    {
        BranchGroup branchGroup = new BranchGroup();
        TransformGroup transformGroup = new TransformGroup();
        TransformGroup transformGroupRotation = new TransformGroup();
        Transform3D d3 = new Transform3D();
        BoundingSphere bigBounds = new BoundingSphere(new Point3d(), 1000);
        float [] knots = {0 , 1};
        Quat4f quats[] = {new Quat4f(1f, 0f, 1f, (float)Math.toRadians(20)) , new Quat4f(1f, 0f, 1f, (float)Math.toRadians(-40))};
        Point3f points[] = {new Point3f(0.9f, 0.0f, 0.0f) , new Point3f(0.2f, 0.3f, 0.0f)};

        transformGroup.addChild(transformGroupRotation);
        transformGroupRotation.addChild(new ColorCube(0.4));
        transformGroupRotation.setCapability(TransformGroup.ALLOW_TRANSFORM_WRITE);

        RotPosPathInterpolator rot = new RotPosPathInterpolator(new Alpha(1, 1000), transformGroupRotation, d3, knots, quats, points);
        rot.setSchedulingBounds(bigBounds);

        branchGroup.addChild(rot);
        branchGroup.addChild(transformGroup);
        branchGroup.compile();
        return branchGroup;
    }

und hier der Endpunkt von der Animation:

Java:
public BranchGroup createTransformation()
    {
        BranchGroup branchGroup = new BranchGroup();
        TransformGroup transformGroup = new TransformGroup();
        TransformGroup transformGroupRotation = new TransformGroup();
        Transform3D d3 = new Transform3D();
        BoundingSphere bigBounds = new BoundingSphere(new Point3d(), 1000);
        Point3f p = new Point3f(0.2f, 0.3f, 0.0f);
        Quat4f quats = new Quat4f(1f, 0f, 1f, (float)Math.toRadians(-40));
        
        d3.setTranslation(new Vector3f(p.getX(), p.getY(), p.getZ()));
        d3.setRotation(quats);
        transformGroup.setTransform(d3);
        
        
        transformGroup.addChild(transformGroupRotation);
        transformGroupRotation.addChild(new ColorCube(0.4));

        branchGroup.addChild(transformGroup);
        branchGroup.compile();
        return branchGroup;
    }

Also nachdem die Animation abgelaufen ist und der am Endpunkt angekommen ist , führe doch die Transformation vom Endpunkt auf das Objekt aus.

1. Animation Startet
2. Animation ist am Endpunkt angelangt
3. Transformation auf das Objekt (vom Endpunkt der Animation) anwenden
4. Fertig ! :)

Das ist aber auch nur eine Art an die ich ran gehn würde.
Es gibt sicherlich andere und bessere Wege ;)

P.S
Ich habe auch eine Anwendung geschrieben wo komplexe Animationen ausgeführt werden, und habe mir eine eigene Interpolatorklasse geschrieben mit funktionen die ich benötigte. Dazu gehörte auch das er die Transformation sich merkt.
 

aze

Bekanntes Mitglied
Hey Danke für die ausführliche Antwort.Ich werde es mal mit deinen "Kochrezept" ausprobieren.

Die selbstgeschriebene Interpolatorklasse , die du erwähnt hast, würde mich interessieren.Falls du noch den Code hast würde ich den gerne sehen.

Schöne Grüße

Aze
 

truesoul

Top Contributor
Ich zeige dir gerne wie in ganz GROB angestellt habe.

Java:
import javax.vecmath.Vector3d;
public class MyInterpolator extends Thread{

    public MyInterpolator( double startPosition[] ,double endPosition[] , TransformGroup transformObjekt , double speed )
    {
        // Arraystelle 0 == X Koordinaten
        // Arraystelle 1 == Y Koordinaten
        // Arraystelle 2 == Z Koordinaten
        this.counter = startPosition;
        this.endPosition = endPosition;
        this.transformObjekt = transformObjekt;
        this.speed = speed;
    }

    @Override
    public void run()
    {
        while(!stop)
        {
            startInterpolaration();
            try
            {
                Thread.sleep(10); 
            }catch(InterruptedException e){}
        }
    }

    public void stopProcess()
    {
        stop = true;
    }

    private void startInterpolaration()
    {
        t.setScale(0.0003);
        
        if(counter[0] < endPosition [0])
        {
            counter[0] += speed;
            t.setTranslation(new Vector3d( counter[0]/100, counter[1]/100,counter[2]/100 ));
        }
        
        if(counter[1] < endPosition [1])
        {
            counter[1] += speed;
            t.setTranslation(new Vector3d( counter[0]/100, counter[1]/100,counter[2]/100 ));
        }
        
        if(counter[2] < endPosition [2])
        {
            counter[2] += speed;
            t.setTranslation(new Vector3d( counter[0]/100, counter[1]/100,counter[2]/100 ));
        }
        
        transformObjekt.setTransform(t);

        if(counter[0] >= endPosition[0] && counter[1] >= endPosition[1] && counter[2] >= endPosition[2] )
            stop = true;

    }

    // Variablen deklaration
    private boolean stop = false;
    private double counter [];
    private double endPosition [];
    private TransformGroup transformObjekt;
    private double speed;
    private Transform3D t = new Transform3D();
}

Dazu muss gesagt werden , das dieser Code nur als Beispiel dient.

Man hat ein Anfangspunkte X,Y und Z und natürlich die Endpunkte, dann zählt man für jeden Durchlauf den zähler hoch ( zaehler += speed ) und setzt setTranslation( x , y , z ) und letztendlich setTransform( ... ) ;

Natürlich muss man den Code so ändern das man da eine Rotation mit einbaut , die Transformation auch in den Negativen Bereich funktioniert sprich new Vector3f( -2 , 2 , 10 ) .
Aber somit hat man eine Transformation und Animation zugleich.

Wie man dann von der neuen Position wieder die Animation startet und die neue Position berücksichtigt kannst du dir ja überlegen.

Ich hoffe ich konnte dir helfen ;)
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
aze Transform3D - dauerhafte Rotation Spiele- und Multimedia-Programmierung 3
Developer_X Transform3D[] und TransformGroup[] Spiele- und Multimedia-Programmierung 13
J Frage zu Transform3D.mul() Spiele- und Multimedia-Programmierung 2
N Minecraft Frage für einen Minecraft Server Spiele- und Multimedia-Programmierung 2
Drachenbauer Speicher-Tool für ein Spiel schreiben Spiele- und Multimedia-Programmierung 13
B Deepmind Poker Bot für PokerStars konfigurieren? Spiele- und Multimedia-Programmierung 2
G Minecraft PlayerBot (Listener Thread für jeden Spieler?) Spiele- und Multimedia-Programmierung 3
K Wie bekomme ich eine Transition für alle Objekte zum stoppen? Spiele- und Multimedia-Programmierung 1
E Organisation für Game Spiele- und Multimedia-Programmierung 1
Excess Ballerfisch für Android Spiele- und Multimedia-Programmierung 3
coolian ich brauche irgendeine gui lib für lwjgl2 Spiele- und Multimedia-Programmierung 51
krgewb Anderer Algorithmus für Bounding Box Spiele- und Multimedia-Programmierung 9
MiMa MP3 Dateien für Metadaten abgleichen Spiele- und Multimedia-Programmierung 0
Freshy Bot für Discord Spiele- und Multimedia-Programmierung 61
R Ideen für die Backend-Entwicklung eines Games gesucht Spiele- und Multimedia-Programmierung 8
G Mikrophon-/Audiosteuerung für einen Character Spiele- und Multimedia-Programmierung 1
P Tennis- Spielstand- Zähler für Schule programmieren Spiele- und Multimedia-Programmierung 6
M Logik für ein Quiz Spiele- und Multimedia-Programmierung 7
P Hilfe für Seminar Arbeit Spiele- und Multimedia-Programmierung 9
MiMa Metadaten für Multimedia Daten ermitteln Spiele- und Multimedia-Programmierung 4
G Übungsprogramm für Matheaufgaben Spiele- und Multimedia-Programmierung 1
F Algorithmus für bessere Kollisionsabfragen Spiele- und Multimedia-Programmierung 10
S Bilder Für Schachfiguren Spiele- und Multimedia-Programmierung 14
Timo_neu_in_java Suche etwas einfaches für Anfänger Spiele- und Multimedia-Programmierung 6
I Minecraft Suche Plugin Developer für Minecraft Netzwerk! Spiele- und Multimedia-Programmierung 2
S GUI erstellen für Text Adventure Spiele- und Multimedia-Programmierung 4
S Eigene Klasse vec_t - 3 oder 4 Einheiten für x, y, z und w Spiele- und Multimedia-Programmierung 11
R Vererbbarer GameLoop für Engine Spiele- und Multimedia-Programmierung 14
J Vektor für Gravitation erzeugen Spiele- und Multimedia-Programmierung 34
I Minecraft: Craftingrecipe für Braustand ändern Spiele- und Multimedia-Programmierung 9
Z Minimax-Algorithmus für TicTacToe Spiele- und Multimedia-Programmierung 5
H KI für Spiele Spiele- und Multimedia-Programmierung 1
S Pssende Datenstruktur für ein Netz Spiele- und Multimedia-Programmierung 5
S MouseEvents für Sprites Spiele- und Multimedia-Programmierung 3
I Spectator Modus für Spiel ähnlich zu Terraria Spiele- und Multimedia-Programmierung 8
K Bestes Bildformat für Spielegrafiken und deren Einbindung in Java Spiele- und Multimedia-Programmierung 2
J mehrere Listener für einen Button / Label Spiele- und Multimedia-Programmierung 1
C Port umleiten: lesen und schreiben für MCServer-Client über Skype Spiele- und Multimedia-Programmierung 0
J Musik Bibliothek für GUI Spiele- und Multimedia-Programmierung 7
B Hauptmenü für Spiel Spiele- und Multimedia-Programmierung 1
R Ratschlag für 2D-3D Engine für die Spieleentwicklung gesucht Spiele- und Multimedia-Programmierung 4
Androbin KI für Verfolgung im Raster Spiele- und Multimedia-Programmierung 2
A Bot für Browsergame Spiele- und Multimedia-Programmierung 2
H Tutorials für Fortgeschrittene 3D-Anwedungen Spiele- und Multimedia-Programmierung 2
lord239123 suche Graphiker für ein Pokemon-Spiel Spiele- und Multimedia-Programmierung 6
Furtano Vektoren für Bewegung für eine 2D-Simulation Spiele- und Multimedia-Programmierung 3
T Sinusgenerator für eine Hp Spiele- und Multimedia-Programmierung 8
J Menü für Snakespiel in einzelnem JFrame Spiele- und Multimedia-Programmierung 5
M Minecraft weitere Java Entwickler für minecraft projekt gesucht Spiele- und Multimedia-Programmierung 0
Guybrush Threepwood Ketzerische Frage: Opus-Codec für Java Spiele- und Multimedia-Programmierung 14
L Hilfe bei Klassendesign für Spiel Spiele- und Multimedia-Programmierung 2
N Animationen für ein 2D game Spiele- und Multimedia-Programmierung 6
S Aufbau für 2D Spiele Spiele- und Multimedia-Programmierung 7
L Client für ein Browsergame Spiele- und Multimedia-Programmierung 21
Devil0s Swing Elemente für Inventar? Spiele- und Multimedia-Programmierung 9
Kenan89 Ansatzfrage: Kartenspiel für 2 Spieler Online Spiele- und Multimedia-Programmierung 3
F Ideen für spiel Spiele- und Multimedia-Programmierung 4
P Spielfeld für RPG Spiele- und Multimedia-Programmierung 15
Hoppelmann Alphamap (Bild) für 3D-Terrain generieren Spiele- und Multimedia-Programmierung 2
S Algorithmus zur Ressourcesuche für die KI Spiele- und Multimedia-Programmierung 5
M Farbwerte für Flächen aus einem Bild erkennen Spiele- und Multimedia-Programmierung 3
K Einfache Engine für einfaches 3D gesucht Spiele- und Multimedia-Programmierung 10
C KI für Skatspiel - Wie können die Computerspieler eigenständig handeln? Spiele- und Multimedia-Programmierung 10
S Aufbau von Klassen für Spiel Spiele- und Multimedia-Programmierung 13
Kenan89 Kleines Projekt für Java Spiele- und Multimedia-Programmierung 5
M Empfehlungen für ein 2D-Jump'n'run Spiele- und Multimedia-Programmierung 4
A Grundlagensuche für Spiel Spiele- und Multimedia-Programmierung 8
C Wo ist der MP3 Plugin für JMF? Spiele- und Multimedia-Programmierung 3
qwerqer Design Pattern gesucht für Spielregeln Spiele- und Multimedia-Programmierung 2
M Java als Programmiersprache für kommerzielle Spieleentwicklung? Spiele- und Multimedia-Programmierung 3
K Game Engine für selbstprogrammiertes Spiel Spiele- und Multimedia-Programmierung 27
Y Warum Thread für Spieleprogrammierung? Spiele- und Multimedia-Programmierung 27
A Music für Android game Spiele- und Multimedia-Programmierung 3
Gossi Probleme beim Laden der Images aus dem "Tutorial für Java-Spiele" Spiele- und Multimedia-Programmierung 4
M Minecraft Suche Java Programmierer (für Minecraft) Spiele- und Multimedia-Programmierung 2
Luk10 Tipps für bessere Animationen / Grafik Engine Spiele- und Multimedia-Programmierung 2
T 2D Menü für 3D Spiel Spiele- und Multimedia-Programmierung 5
T Grundlagenwissen für den 3D Raum Spiele- und Multimedia-Programmierung 6
I getSubImage sorgt für starken Performanceeinbruch Spiele- und Multimedia-Programmierung 6
M technologie für video, webcam & co Spiele- und Multimedia-Programmierung 25
C Java für große Spiele geeignet ? Spiele- und Multimedia-Programmierung 101
D Libraryempfehlung für Effekte Spiele- und Multimedia-Programmierung 3
B Spiele programmieren für ein Fenster? Spiele- und Multimedia-Programmierung 14
D Tabelle für Spiel Spiele- und Multimedia-Programmierung 3
N Grundlagen für ein Jump&Run Spiele- und Multimedia-Programmierung 3
S Datenbank gesucht für Bilder(gif-dateien) Spiele- und Multimedia-Programmierung 5
J Suche 3D Programm für jMonkeyEngine Spiele- und Multimedia-Programmierung 5
W 3D-APIs für Java - Eine Übersicht Spiele- und Multimedia-Programmierung 8
D Problem beim Öffnen einer PHP für eine Highscore Spiele- und Multimedia-Programmierung 5
S Game Client für kleine Competition Spiele- und Multimedia-Programmierung 3
F Programm für Bildbearbeitung gesucht: Skalieren und Speichern Spiele- und Multimedia-Programmierung 6
K Lösungsansätze für ein Spiel Spiele- und Multimedia-Programmierung 2
Plastagen Frameworls für Animationen und co Spiele- und Multimedia-Programmierung 3
M Musik für Spiel wo downloaden? Spiele- und Multimedia-Programmierung 7
R Netzwerkstruktur für ein kleines Spiel Spiele- und Multimedia-Programmierung 8
O KI (künstliche Intelligenz) für Schachlogik Spiele- und Multimedia-Programmierung 4
J Brauche denkanstoß für kleines grafikframework Spiele- und Multimedia-Programmierung 3
A Countdown-Timer für Spiel Spiele- und Multimedia-Programmierung 4
J Tips für ein kleines Pong-Applet Spiele- und Multimedia-Programmierung 4
S Ein Thread für alle Animationen oder mehrere? Spiele- und Multimedia-Programmierung 2

Ähnliche Java Themen

Neue Themen


Oben