Code: Select all
static void AdjustProjection(Vector3 eye, Vector3 target, Vector3 up)
{
SlimMath.Matrix pers = SlimMath.Matrix.PerspectiveFovLH(45, CameraViewport.ActualWidth / CameraViewport.ActualHeight, 1, 3000);
SlimMath.Matrix view = SlimMath.Matrix.LookAtLH(new SlimMath.Vector3(eye.x, eye.y, eye.z),
new SlimMath.Vector3(target.x, target.y, target.z),
new SlimMath.Vector3(up.x, up.y, up.z));
PlayerCamera.SetCustomProjectionMatrix(true, new Matrix4(pers.M11, pers.M12, pers.M13, pers.M14, pers.M21, pers.M22,
pers.M23, pers.M24, pers.M31, pers.M32, pers.M33, pers.M34, pers.M41, pers.M42, pers.M43, pers.M44));
PlayerCamera.SetCustomViewMatrix(true, new Matrix4(view.M11, view.M12, view.M13, view.M14, view.M21, view.M22,
view.M23, view.M24, view.M31, view.M32, view.M33, view.M34, view.M41, view.M42, view.M43, view.M44));
// Pure-OGRE code equiv:
/*
PlayerCamera.FOVy = 45;
PlayerCamera.AspectRatio = CameraViewport.ActualWidth / CameraViewport.ActualHeight;
PlayerCamera.NearClipDistance = 1;
PlayerCamera.FarClipDistance = 3000;
//PlayerCamera.Position = eye;
PlayerCamera.LookAt(target);
// No equiv for 'up'
*/
}