WPF 3D摄像头位置

时间:2012-02-17 14:07:58

标签: c# wpf 3d trackball

我需要在WPF 3D视口中重置我的3D相机位置。我正在使用3Dtools的轨迹球装饰器。黑客攻击我发现我可以使用以下方法清除相机的转换:

Transform3DGroup group = camera.Transform as Transform3DGroup;
group.Children.Clear();

然而,当我猜测相机不再有变换矩阵时,这打破了轨迹球。有没有办法让相机回到我创建它的位置,即:我可以手动重新定位相机并使轨迹球仍然有效吗?

编辑:

我创建了一个透视相机,并使用以下代码将其添加到3D视口中:

perspectiveCamera.Position = new Point3D(sceneSize.X * 4 , 
                                         sceneSize.Y , 
                                         sceneSize.Z * (-4));

CameraLookAt = new Point3D(0, (sceneSize.Y / 2), 0);

perspectiveCamera.LookDirection = new Vector3D (
                                  CameraLookAt.X - perspectiveCamera.Position.X, 
                                  CameraLookAt.Y - perspectiveCamera.Position.Y, 
                                  CameraLookAt.Z - perspectiveCamera.Position.Z);
perspectiveCamera.FieldOfView = 24;

Viewport_3D.Camera = perspectiveCamera;

视口有一个轨迹球装饰器,允许用户围绕场景旋转相机。但是我想要一个功能将相机重置回原来的位置,但是一旦创建,我找不到直接设置它的位置的方法。

1 个答案:

答案 0 :(得分:0)

首先你应该删除相机上使用的动画,你可以通过这个方法来完成 camera.ApplyAnimationClock(ProjectCamera.PositionProperty,null)然后将原始值分配给相机