/// <summary> /// Configura la posicion de la cámara /// </summary> private void setCamera(Vector3 eye, Vector3 target, Vector3 up) { this.eye = eye; zAxis = target - eye; zAxis.Normalize(); viewDir = zAxis; lookAt = eye + viewDir; xAxis = Vector3.Cross(up, zAxis); xAxis.Normalize(); yAxis = Vector3.Cross(zAxis, xAxis); yAxis.Normalize(); //xAxis.Normalize(); viewMatrix = Matrix.Identity; viewMatrix.M11 = xAxis.X; viewMatrix.M21 = xAxis.Y; viewMatrix.M31 = xAxis.Z; viewMatrix.M41 = -Vector3.Dot(xAxis, eye); viewMatrix.M12 = yAxis.X; viewMatrix.M22 = yAxis.Y; viewMatrix.M32 = yAxis.Z; viewMatrix.M42 = -Vector3.Dot(yAxis, eye); viewMatrix.M13 = zAxis.X; viewMatrix.M23 = zAxis.Y; viewMatrix.M33 = zAxis.Z; viewMatrix.M43 = -Vector3.Dot(zAxis, eye); // Extract the pitch angle from the view matrix. accumPitchDegrees = Geometry.RadianToDegree((float)-Math.Asin((double)viewMatrix.M23)); Matrix worldMatrix = viewMatrix; worldMatrix.Invert(); Matrix trans = Matrix.Translation(new Vector3(0f, -HeadPosition, 0f)); boundingBox.transform(worldMatrix * trans); }