Wir öffnen das Testprogram und erzeugen einen
´TransformAnimator und legen auf "GetTrfMatix" das Event
TransformAnimator_GetTrfMatix
´...
TransformAnimator TransformAnimator = new TransformAnimator();
...
protected override void OnCreated()
{
base.OnCreated();
Cone.Material = Materials.Gold;
TransformAnimator.Device = this;
TransformAnimator.GetTrfMatix += TransformAnimator_GetTrfMatix;
TransformAnimator.Start(); // und starten den Animator
}
private Matrix TransformAnimator_GetTrfMatix(object sender, double t)
{
return Matrix.Scale(1+0.5 * t, 1 + 0.5 * t, 1 + 0.5 * t);
}
Die ganze Scene wird scaliert. Fügen wir im Createdteil
...
TransformAnimator.Entities.Add(Sphere1);
TransformAnimator.Entities.Add(Sphere2);
...
ein, so werden nur die Kugeln scaliert.
Ein anderes Beispiel einer Transformation wäre eine Translation. Dazu müssen wir TransformAnimator_GetTrfMatix ändern:
private Matrix TransformAnimator_GetTrfMatix(object sender, double t)
{
// return Matrix.Scale(1+0.5 * t, 1 + 0.5 * t, 1 + 0.5 * t);
return Matrix.Translation(new xyz(t * 10, 0, 0));
}
Jetzt bewegeen sich die beiden Kugeln von links nach rechts.
Entfernen wir die TransformAnimator.Entities-Einträge, so bewegt sich die ganze Scene von links nach rechts.
Hier der Code;