Wpf 简单的相机动画有很多闪烁
我不熟悉WPF中的3D和动画。我一直在尝试创建一个非常简单的场景,由一个地板和两个立方体组成(3D矩形、矩形棱柱,不管它叫什么)。这个场景有一个透视摄影机,我正在尝试设置它的动画(我基本上希望它在场景中飞行) 代码非常简单,我相信在大多数情况下都采用了很好的方法。请在下面找到相关的摘录,以及 XAML: 当窗口非常小(约320x240)时,动画将按预期运行。随着窗口大小的增加,动画闪烁,整个帧似乎被跳过,从而产生白色屏幕。在大窗口(1920x1080)中,动画几乎完全不可见(在相机设置到新位置之前,动画都是空白的) 不知何故,它似乎非常相似,但这并没有帮助我 这是一个非常基本的动画,我不相信WPF在这方面有任何问题,所以我认为我做错了什么 有人能帮我找出原因吗?我在这方面花的时间已经够多了Wpf 简单的相机动画有很多闪烁,wpf,animation,3d,flicker,Wpf,Animation,3d,Flicker,我不熟悉WPF中的3D和动画。我一直在尝试创建一个非常简单的场景,由一个地板和两个立方体组成(3D矩形、矩形棱柱,不管它叫什么)。这个场景有一个透视摄影机,我正在尝试设置它的动画(我基本上希望它在场景中飞行) 代码非常简单,我相信在大多数情况下都采用了很好的方法。请在下面找到相关的摘录,以及 XAML: 当窗口非常小(约320x240)时,动画将按预期运行。随着窗口大小的增加,动画闪烁,整个帧似乎被跳过,从而产生白色屏幕。在大窗口(1920x1080)中,动画几乎完全不可见(在相机设置到新位置之
提前谢谢 您是否有单独的图形卡,或者正在使用主板的视频输出?听起来你的显卡上没有硬件加速 如果你不这样做,你就会得到你所看到的效果。在较小的窗口大小下,软件渲染可以保持并以合理的帧速率显示场景。但是,随着窗口大小的增加,显示每一帧所需的时间越来越长,直到显示时间大于在场景中移动摄影机所需的时间。只有当你停止移动相机时,它才会捕捉到
解决方案是坚持使用小窗口或使用硬件加速3D图形的图形卡。至少有人能试试我的示例项目,告诉我他们的机器上是否出现了相同的问题吗?
<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>
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)