如何在WPF viewport3D中围绕自己的轴旋转相机?

时间:2016-02-29 10:05:08

标签: c# wpf camera viewport3d

我正在使用WPF中的3D应用程序并且无法使用相机。应该可以使用鼠标围绕自己的轴旋转相机(换句话说,环顾四周),但我无法让它正常工作。我使用以下代码创建相机:

public class student {

    // attributes
    private String studentName;
    private int studentID;
    private int studentPhoneNumber;
    // constructor with one argument
    public student (String studentNameIn) {
        studentName = studentNameIn;
    }

    // constructor with 2 arguments
    public student (String studentNameIn,  int studentIdIn) {
        studentName = studentNameIn;
        studentID = studentIdIn;
    }

    // constructor with 3 arguments
    public student (String studentNameIn,  int studentIdIn, int studentPhoneNumberIn) {
        studentName = studentNameIn;
        studentID = studentIdIn;
        studentPhoneNumber = studentPhoneNumberIn;
    }

    // default constructor REINSERTED no argument
    public student () {}

    // methods
}

然后我尝试使用以下代码旋转它:

PerspectiveCamera perspectiveCamera = new PerspectiveCamera(new Point3D(0, 30, 0), new Vector3D(0, -1, 0), new Vector3D(0, 0, 1), 90);
perspectiveCamera.NearPlaneDistance = 0.001;
perspectiveCamera.FarPlaneDistance = 1000;

center = new TranslateTransform3D(0, 30, 0);
rot_x = new AxisAngleRotation3D(new Vector3D(1, 0, 0), 0);
rot_y = new AxisAngleRotation3D(new Vector3D(0, 1, 0), 0);
rot_z = new AxisAngleRotation3D(new Vector3D(0, 0, 1), 0);
zoom = new ScaleTransform3D(1, 1, 1);

Transform3DGroup t = new Transform3DGroup();
t.Children.Add(zoom);
t.Children.Add(new RotateTransform3D(rot_x));            
t.Children.Add(new RotateTransform3D(rot_y));
t.Children.Add(new RotateTransform3D(rot_z));
t.Children.Add(center);
perspectiveCamera.Transform = t;
myViewport3D.Camera = perspectiveCamera;

但是,它会发现旋转不会发生在相机周围,而是发生在其他地方。我在位置(0,0,0)加载的模型在围绕z轴旋转180度后变得可见,这不应该是这种情况。

我错过了什么?

0 个答案:

没有答案