我是新来的WPF中的3D和动画。我一直在试图创建一个非常简单的场景,由一个地板和2个立方体(很好,3D矩形,直角棱镜,无论称为什么)组成。这个场景有一个透视摄像机,我正在尝试动画(我基本上希望它可以在场景中飞行)。简单的相机动画有很多闪烁效果
该代码非常简单,我相信大多数情况下都是很好的方法。请在下面找到相关摘录和sample project can be downloaded here。
XAML:
<Viewport3D ClipToBounds="false" IsHitTestVisible="false">
<!-- Camera -->
<Viewport3D.Camera>
<PerspectiveCamera x:Name="ViewportCamera"
Position="0 0 20"
LookDirection="40 40 0"
FarPlaneDistance="600"
UpDirection="0 0 1"
NearPlaneDistance="0.01"
FieldOfView="75" />
</Viewport3D.Camera>
<!-- Light -->
<ModelVisual3D>
<ModelVisual3D.Content>
<DirectionalLight Direction="1 0.5 1" />
</ModelVisual3D.Content>
</ModelVisual3D>
<ModelVisual3D>
<!-- Floor -->
<local:CubeControl Color="Black" Size="300,300,1" Center="0,0,0" />
<local:CubeControl Color="LightGray" Size="15,25,40" Center="40,40,20" />
<local:CubeControl Color="LightGray" Size="25,20,60" Center="40,-40,30" />
</ModelVisual3D>
</Viewport3D>
VB:
Dim tAnimation As New Vector3DAnimation(ViewportCamera.LookDirection, New Vector3D(40, -40, -20), New Duration(TimeSpan.FromMilliseconds(1000)))
ViewportCamera.BeginAnimation(PerspectiveCamera.LookDirectionProperty, tAnimation)
Dim tAnimation2 As New Point3DAnimation(ViewportCamera.Position, New Point3D(-10, -10, 30), TimeSpan.FromMilliseconds(1000))
ViewportCamera.BeginAnimation(PerspectiveCamera.PositionProperty, tAnimation2)
动画运行时的窗口非常小,预计(约320×240)。随着窗口大小的增加,动画闪烁和整个帧似乎被跳过,导致白屏。在一个大窗口(1920x1080)中,动画几乎不可见(在摄像机设置到新位置之前,这一切都是空白的)。
不知何故,它似乎非常类似于this problem但这并没有帮助我。
这是一个非常基本的动画,我不能相信WPF有这样做的任何问题,所以我认为我做错了什么。
任何人都可以帮我弄清楚为什么?我花了足够多的时间在此。
在此先感谢!
任何人都可以至少尝试我的示例项目,并让我知道他们的机器上是否出现同样的问题? – Nicolas 2011-05-26 11:51:01