【问题标题】:How do I add a BeginAnimation to a WPF Viewport3D?如何将 BeginAnimation 添加到 WPF Viewport3D?
【发布时间】:2010-11-27 17:05:56
【问题描述】:

我正在尝试旋转 Viewport3D 中的图像,但看不到要将动画应用到哪个对象。

这在代码中有效

DoubleAnimation da = new DoubleAnimation();
da.From = 0;
da.To = 100;
da.Duration = new Duration(TimeSpan.FromSeconds(1));
Button1.BeginAnimation(Button.HeightProperty, da);

这也有效

RotateTransform3D myRotateTransform = new RotateTransform3D(new AxisAngleRotation3D(new Vector3D(1, 0, 0), 30));
Model.Transform = myRotateTransform;

那为什么我不能这样做呢?

Rotation3DAnimation r3D = new Rotation3DAnimation();
r3D.From = new AxisAngleRotation3D(new Vector3D(1, 0, 0), 0);
r3D.To = new AxisAngleRotation3D(new Vector3D(1, 0, 0), 45);
r3D.Duration = new Duration(TimeSpan.FromSeconds(10));
Model.BeginAnimation(ModelVisual3D.TransformProperty, r3D, HandoffBehavior.SnapshotAndReplace);

Model.BeginAnimation 行出现错误。 我尝试了许多对象而不是 ModelVisual3D,但每次都会遇到不同的错误。 我应该使用什么对象类型?

感谢您的帮助 理查德

XAML

<ModelVisual3D x:Name="ModelContainer">
    <ModelVisual3D.Content>
        <GeometryModel3D x:Name="Model" d:Bounds="-37.2388059701493,-10,0,74.4776119402985,20,0">
            <GeometryModel3D.Geometry>
                <MeshGeometry3D Normals="0,0,1 ..." />                      
            </GeometryModel3D.Geometry>

            <GeometryModel3D.Material>
                <DiffuseMaterial>
                    <DiffuseMaterial.Brush>
                        <ImageBrush ImageSource="pack://siteoforigin:,,,/Staff-4.tif" Stretch="Fill"/>
                    </DiffuseMaterial.Brush>
                </DiffuseMaterial>
            </GeometryModel3D.Material>
        </GeometryModel3D>
    </ModelVisual3D.Content>

    <ModelVisual3D.Transform>
        <Transform3DGroup>
            <RotateTransform3D>
                <RotateTransform3D.Rotation>
                    <AxisAngleRotation3D Axis="1,0,0" Angle="0"/>
                </RotateTransform3D.Rotation>
            </RotateTransform3D>
        </Transform3DGroup>
    </ModelVisual3D.Transform>

</ModelVisual3D>

<ModelVisual3D x:Name="AmbientContainer">
    <ModelVisual3D.Content>
        <AmbientLight x:Name="Ambient" Color="Gray"/>
    </ModelVisual3D.Content>
</ModelVisual3D>

<ModelVisual3D x:Name="DirectionalContainer">
    <ModelVisual3D.Content>
        <DirectionalLight x:Name="Directional" Color="#FF7F7F7F" Direction="0,0,-1">
            <DirectionalLight.Transform>
                <TranslateTransform3D OffsetZ="3" OffsetX="0" OffsetY="0"/>
            </DirectionalLight.Transform>
        </DirectionalLight>
    </ModelVisual3D.Content>
</ModelVisual3D>

【问题讨论】:

    标签: wpf xaml animation 3d


    【解决方案1】:

    答案是不能在动画中使用 AxisAngleRotation3D。 您必须分解它的向量和角度的 2 个分量并独立地为它们设置动画。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-07-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-06-22
      相关资源
      最近更新 更多