as willmotil mentioned
store forward vector and reconstruct view matrix from it
public Vector3 position = Vector3.Transform(new Vector3(0, -10f, 10f),
Matrix.CreateRotationY(MathHelper.ToRadians(45)));
public Vector3 lookAtVector = Vector3.Transform(new Vector3(0, 0, 0),
Matrix.CreateRotationY(MathHelper.ToRadians(45)));
Vector3 _forward;
public void Init()
{
_forward = Vector3.Normalize(lookAtVector - position);
}
public Matrix ViewMatrix
{
get
{
var upVector = Vector3.UnitY;
Matrix rotation = Matrix.CreateRotationY(MathHelper.ToRadians((float)angle));
Vector3 newposition = Vector3.Transform(position, rotation);
return Matrix.CreateLookAt(newposition, newposition + _forward, upVector);
}
}