如何更改CompositionTarget.Rendering中的LookDirection、UpDirection?

问题描述 投票:0回答:1

该项目使用 WPF 的 CompositionTarget.Rendering 执行基于帧的动画。在渲染过程中,当它想要更改 PerspectiveCamera 的位置或向量时,它会执行与此等效的操作:

CompositionTarget.Rendering += Loop;   

private void Loop(object sender, EventArgs e)

{    

       // Change properties on the Camera

      Camera.Position = new(1D, 2D, 3D);  // Point3D  

      Camera.LookDirection = new(0D, 0D, 0D); // Vector3D   

       Camera.UpDirection = new(0D, 1D, 0D);   // Vector3D

}

其中每一个都是相机上的依赖属性。该位置立即具有新值。但 LookDirection 和 UpDirection 都不会获得新值。当类似的语句在 CompositionTarget.Rendering 之外运行时,LookDirection 和 UpDirection 都将获得新值。关于如何从 CompositionTarget.Rendering 内部设置 LookDirection 和 UpDirection 有什么想法吗?

从 CompositionTarget 改变位置。渲染效果很好,相机的位置发生了变化。但 LookDirection 和 UpDirection 并未采用新值。我已经查看了 .Net 参考源,但没有发现任何问题。事实上,设置所有三个属性的代码路径几乎相同。

wpf perspectivecamera
1个回答
0
投票

通过以这种方式设置属性解决了这个问题:

而不是

Camera.UpDirection = someVector;

将其编码为

Camera.SetCurrentValue(ProjectionCamera.UpDirectionProperty, someVector);
© www.soinside.com 2019 - 2024. All rights reserved.