Hi
Ich hab in meinen Programm eine TransformGroup(jaws) und ein Transformobject(TargetTransform).Beide sind global vorhanden.Durch folgende Methode füge ich eine Rotation ein
Das klappt soweit auch ganz gut.Allerdings habe ich von meine Vorgänger ein paar Animationen geerbt,die damit nicht harmonieren.Das heißt : Wenn eine Animation abläuft, in der die TransformGroup gedreht wird und dann die Rotation aufgerufen wird , bleibt diese im Zustand vor der Animation hängen.
Hier die beiden Animation:
Ich hab in meinen Programm eine TransformGroup(jaws) und ein Transformobject(TargetTransform).Beide sind global vorhanden.Durch folgende Methode füge ich eine Rotation ein
Java:
private void rotateJCanvas3D(int x,int y,int z)
{
xChangeTransform = x * rotXMul; // rotXMul = 0.01
YChangeTransform = y * rotYMul;// rotYMul = 0.01
ZChangeTransform = z * rotZMul;// rotZMul = 0.01
yTransform.rotY( xChangeTransform );
XTransform.rotX( YChangeTransform );
zTransform.rotZ(ZChangeTransform);
targetTransform.mul(targetTransform, XTransform);
targetTransform.mul(targetTransform, yTransform);
targetTransform.mul(targetTransform,zTransform);
jaws.getRoot().setTransform(targetTransform);
}
Das klappt soweit auch ganz gut.Allerdings habe ich von meine Vorgänger ein paar Animationen geerbt,die damit nicht harmonieren.Das heißt : Wenn eine Animation abläuft, in der die TransformGroup gedreht wird und dann die Rotation aufgerufen wird , bleibt diese im Zustand vor der Animation hängen.
Hier die beiden Animation:
Java:
private void createLineToothAnimation(Alpha a, BranchGroup bg) {
for (int n=0;n<JawsConst.TEETH_COUNT;n++) {
Quat4f[] qs=getToothRotations(n);
Point3f[] ps=getToothPositions(n);
RotPosPathInterpolatorAlpha rpp=new RotPosPathInterpolatorAlpha( a,
getToothPosTransform(n), new Transform3D(), knotsDummy, qs, ps);
rpp.setSchedulingBounds(new BoundingSphere(new Point3d(0,0,0),10000.0));
animation.addChild(rpp);
}
}
Java:
private void createRecenterAnimations(Alpha a, BranchGroup bg, int nm) {
Transform3D t3d=new Transform3D();
root.getTransform(t3d);
RotPosPathInterpolatorAlpha rppi=new RotPosPathInterpolatorAlpha(
a, root, new Transform3D(), knotsDummy, getRootRotation(nm),
getRootPosition());
rppi.setSchedulingBounds(new BoundingSphere(new Point3d(0,0,0),10000.0));
bg.addChild(rppi);
}