A
Andre Schaaf
Gast
So nagut, ich habe jetzt ewigkeiten gegoogelt und das forum nach irgendwelchen anhaltspunkten durchforstet aber leider bleibe ich irgendwie hängen.
Problem:
Wieder meine "Kamera"
Und zwar verschiebe ich die Kamera auf eine Position per PositionPathInterpolator da steht sie dann auch
Korrekt und ich bekomme wenn ich die Kamerkoordinaten abrufe ein korektes ergebniss. Füge ich dann nachdem die Bewegung fertig ist noch einen Rotationsinterpolator hinzu, versetzt mir das ding meine Kamera wieder in den Usprung und Rotiert dort, was ich aber ganz klar nicht möchte. Ich will das die Kamera sich an dem Punkt wo sie hintransliert worden ist um einen gewissen winkel auf den 3 achsen um sich selbst dreht.
Jetzt mal der Source dazu
Wie gesagt Translation funzt ohne Probleme.
Für jegliche Hilfe wäre ich sehr dankbar.
MFG Andre
Problem:
Wieder meine "Kamera"
Und zwar verschiebe ich die Kamera auf eine Position per PositionPathInterpolator da steht sie dann auch
Korrekt und ich bekomme wenn ich die Kamerkoordinaten abrufe ein korektes ergebniss. Füge ich dann nachdem die Bewegung fertig ist noch einen Rotationsinterpolator hinzu, versetzt mir das ding meine Kamera wieder in den Usprung und Rotiert dort, was ich aber ganz klar nicht möchte. Ich will das die Kamera sich an dem Punkt wo sie hintransliert worden ist um einen gewissen winkel auf den 3 achsen um sich selbst dreht.
Jetzt mal der Source dazu
Code:
private void AnimateTranslate(long duration) {
this.camPos=this.camera.getCameraPosition();
Alpha transAlpha=new Alpha(1,duration);
transAlpha.setStartTime(System.currentTimeMillis()+1);
PositionPathInterpolator pathPositionInterpolator = new PositionPathInterpolator (transAlpha, this.camera.getTransformGroup(), new Transform3D(), new float[]{0, 1}, new Point3f[]{
new Point3f (this.camPos.x, this.camPos.y, this.camPos.z),
new Point3f (this.targetPoint.x+(float)(this.objDimension.x/2), this.targetPoint.y+(float)(this.objDimension.y/2), this.targetPoint.z+(float)(2*this.objDimension.z)) //Endpunkt
});
pathPositionInterpolator.setSchedulingBounds(new BoundingSphere());
BranchGroup branchGroup = new BranchGroup();
branchGroup.setCapability(BranchGroup.ALLOW_DETACH);
branchGroup.addChild(pathPositionInterpolator);
this.camera.getTransformGroup().addChild(branchGroup);
try {
Thread.sleep(duration);
}
catch (Exception ex) {}
branchGroup.detach();
}
private void AnimateRotate(long duration) {
this.camPos=this.camera.getCameraPosition();
System.out.println(this.camPos);
Alpha rotAlpha=new Alpha(1, duration);
rotAlpha.setStartTime(System.currentTimeMillis()+1);
Transform3D trans=new Transform3D();
trans.setTranslation(new Vector3d(this.camPos.x, this.camPos.y, this.camPos.z));
RotationInterpolator rotInter=new RotationInterpolator(rotAlpha,this.camera.getTransformGroup(), trans, 0,6.28f);
rotInter.setSchedulingBounds(new BoundingSphere());
BranchGroup branchGroup = new BranchGroup();
branchGroup.setCapability(BranchGroup.ALLOW_DETACH);
branchGroup.addChild(rotInter);
this.camera.getTransformGroup().addChild(branchGroup);
try {
Thread.sleep(duration);
}
catch (Exception ex) {}
branchGroup.detach();
}
Wie gesagt Translation funzt ohne Probleme.
Für jegliche Hilfe wäre ich sehr dankbar.
MFG Andre