Ich benutze in meinem Programm folgende Methode(n):
Trotz den im Alpha eingestellten 3500ms macht die Kamera einen "Sprung" an den Zielpunkt. Ich dachte aber der PositionPathInterpolator würde das Objekt "langsam" zum Zielort bringen. Liege ich da falsch? Oder habe ich irgendeinen Fehler drin?
Code:
public void moveCameraToStandard ()
{
moveCameraToPoint (new Point3f (0, 0, 40));
}
private void moveCameraToPoint (Point3f p)
{
Transform3D act = new Transform3D(); //Früherer Transform der "Kamera"
simpleU.getViewingPlatform().getViewPlatformTransform().getTransform(act);
Vector3f p2 = new Vector3f(); //Vector mit den Koordinaten des früheren Transforms
act.get (p2);
PositionPathInterpolator ppi = new PositionPathInterpolator (new Alpha (1, 3500), //3500ms?
simpleU.getViewingPlatform().getViewPlatformTransform(),
new Transform3D(),
new float[]{0, 1},
new Point3f[]{
new Point3f (p2.x, p2.y, p2.z), //Ausgangspunkt
new Point3f (p.x, p.y, p.z) //Endpunkt
});
ppi.setSchedulingBounds(new BoundingSphere()); //Bounds
BranchGroup bg = new BranchGroup();
bg.setCapability(bg.ALLOW_DETACH);
bg.addChild(ppi);
simpleU.getViewingPlatform().getViewPlatformTransform().addChild(bg); //live machen
System.out.println (ppi.getAlpha().finished()); //Ausgabe: true
try {
Thread.sleep(4000); //Auf Alpha warten
}
catch (Exception ex) {}
bg.detach(); //Behavior aus SceneGraph entfernen
}