DMatrix CalculateBasisOnSurface()
{
DVector3 cameraUp = CameraPosition / CameraPosition.Length();
var xAxis = DVector3.TransformNormal(DVector3.UnitX, DMatrix.RotationAxis(DVector3.UnitY, Yaw));
xAxis.Normalize();
var mat = DMatrix.Identity;
mat.Up = cameraUp;
mat.Right = xAxis;
mat.Forward = DVector3.Cross(xAxis, cameraUp);
mat.Forward.Normalize();
return mat;
}