0

誰かがこれがうまくいかない理由を見つけるのを手伝ってもらえますか:

var story = new Storyboard {Duration = TimeSpan.FromSeconds(10)};

var meshBuilder = new MeshBuilder();
meshBuilder.AddCone(new Point3D(0, 0, 0), new Vector3D(0, 0, 1), 15, 10, 50, false, false, 20);

var mesh = meshBuilder.ToMesh();
var geometryModel = new GeometryModel3D
{
    Geometry = mesh,
    Material = new DiffuseMaterial(new SolidColorBrush(Colors.DeepSkyBlue)),
    BackMaterial = new DiffuseMaterial(new SolidColorBrush(Colors.LightBlue)),
};
var modelVisual = new ModelVisual3D { Content = geometryModel };
helixViewport.Children.Add(modelVisual);

var scaleAnimation = new DoubleAnimation
{
    BeginTime = TimeSpan.FromSeconds(1),
    From = 1,
    To = 2,
    Duration = new Duration(TimeSpan.FromSeconds(10))
};
var scaleTransform3D = new ScaleTransform3D(1, 1, 2);

var transform3DGroup = new Transform3DGroup();
transform3DGroup.Children.Add(scaleTransform3D);

modelVisual.Transform = transform3DGroup;

story.Children.Add(scaleAnimation);
Storyboard.SetTargetProperty(scaleAnimation, new PropertyPath(ScaleTransform3D.ScaleZProperty));
Storyboard.SetTarget(scaleAnimation, modelVisual);

story.Begin();

まず、HelixToolkit を使用して円錐を作成し、その後、それをスケーリングします。アニメーションは 10 秒間続き、1 秒目から 10 秒間続きます。ただし、アニメーションは実行されず、ビューポートにはスケーリング後の最終結果のみが表示されました。 : これはコード全体の簡略化部分です。実際のコードには、複数のモデルに複数のアニメーションが適用され、それぞれが異なる時間に開始されます。そのため、ここではストーリーボードと BeginTime を使用します。私が間違ったことを見つけるのを手伝ってください。

4

1 に答える 1

1

そのプロパティを持たないScaleTransform3D.ScaleZPropertyタイプのオブジェクトでをアニメーション化しようとしています。ModelVisual3D変更する必要があります

var path = "Transform.Children[0].ScaleZ";
Storyboard.SetTargetProperty(scaleAnimation, new PropertyPath(path));
Storyboard.SetTarget(scaleAnimation, modelVisual);

ストーリーボードを省略することで、コードを単純化することもできます。電話するだけ

scaleTransform3D.BeginAnimation(ScaleTransform3D.ScaleZProperty, scaleAnimation)

また、1から2までアニメートするため、値1でscaleTransform3D初期化する必要があります。ScaleZScaleZ

var scaleTransform3D = new ScaleTransform3D(1, 1, 1);

または、すべてのスケール値がデフォルトで1になるため、デフォルトのコンストラクターによって。

var scaleTransform3D = new ScaleTransform3D();
于 2013-01-12T19:51:14.510 に答える