我对 WPF 3D 动画真的很陌生,还有一些我仍在努力解决的问题。
我正在为从磁盘加载程序集的应用程序构建 3D UI。我可以创建一个代表当前加载的每个程序集的多维数据集。我想动画加载过程如下:
- 在 3D 空间中选择一个随机点并将其设置为立方体的起始位置。
- 动画从该随机点移动到原点 (0,0,0) 的立方体。当然,这涉及重新定位任何已经“滑入”到位的立方体。
创建随机起点没有问题。重新定位任何现有的立方体以为新的立方体腾出空间(以非动画方式)是没有问题的。但是我似乎找不到正确的程序组合来动画立方体从随机起点移动到原点。
我的(非常基本的)XAML 看起来像这样(窗口中的网格):
<Grid Background="WhiteSmoke">
<Viewport3D Name="MainViewport" Height="500" Width="975">
<Viewport3D.Camera>
<PerspectiveCamera x:Name="CubeCam" Position="0,0,35" LookDirection="-1,-1,-25 " UpDirection="0,1,0" FieldOfView="45" />
</Viewport3D.Camera>
<Viewport3D.Children>
<ModelVisual3D x:Name="Light">
<ModelVisual3D.Content>
<Model3DGroup>
<DirectionalLight Color="White" Direction="10,-60,-125" />
<AmbientLight Color="#FF333333"/>
</Model3DGroup>
</ModelVisual3D.Content>
</ModelVisual3D>
<ModelVisual3D>
<ModelVisual3D.Content>
<Model3DGroup x:Name="CubeGroup" />
</ModelVisual3D.Content>
</ModelVisual3D>
</Viewport3D.Children>
</Viewport3D>
</Grid>`
我目前正在使用 HelixToolkit,但除非我遗漏了一些东西,否则我会发现缺少文档。
我试图制作动画的立方体是 HelixToolkit 中的 CubeVisual3D 对象。我在代码中创建多维数据集并将它们添加到 CubeGroup。
我尝试了各种 XXXAnimation 对象,但我总是遇到同样的问题:当需要设置目标属性时,我试图动画的对象都没有我可以挂钩的 DependencyProperty。
重申一下,将这些立方体添加到 3D 空间中的静态(尽管是计算的)位置没有问题。我似乎无法做的是将它们设置为动画。
我很感激任何建议!