如何以编程方式在3D空间中移动对象?

时间:2013-03-24 22:50:43

标签: c# wpf 3d

我是WPF 3D动画的新手,我还在努力解决这个问题。

我正在为从磁盘加载程序集的应用程序构建3D UI。我可以创建一个代表当前加载的每个程序集的多维数据集。我想按如下方式设置加载过程的动画:

  1. 在3D空间中选择一个随机点,并将其设置为立方体的起始位置。
  2. 将立方体从该随机点移动到原点(0,0,0)的动画。当然,这涉及重新定位已经“滑动”到位的任何立方体。
  3. 创建随机起点没问题。重新定位任何现有的多维数据集以为新的多维数据集腾出空间(以非动画方式)是没有问题的。但我似乎找不到合适的程序组合来动画从随机起点到原点的立方体动画。

    我的(非常基本的)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。

    我已经尝试了varios XXXAnimation对象,但我总是遇到同样的问题:当设置目标属性时,我试图设置动画的对象都没有我可以挂钩的DependencyProperty。

    重申一下,将这些立方体添加到3D空间中的静态(尽管是计算的)位置没有问题。我似乎无法做的是将它们置于适当的位置。

    我感谢任何建议!

0 个答案:

没有答案