誰かがこれがうまくいかない理由を見つけるのを手伝ってもらえますか:
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 を使用します。私が間違ったことを見つけるのを手伝ってください。