private void CreateMouseRay3DButton_OnClick(object sender, RoutedEventArgs e) { Point3D rayOrigin; Vector3D rayDirection; bool isRayPossible = _selectedCamera.CreateMouseRay3D(new Point(100, 100), out rayOrigin, out rayDirection); MessageBox.Show(string.Format(System.Globalization.CultureInfo.InvariantCulture, "Calling:\r\nCreateMouseRay3D(new Point(100, 100), out rayOrigin, out rayDirection):\r\n\r\nResults:\r\nrayOrigin: {0:0.0}\r\nrayDirection: {1:0.0}", rayOrigin, rayDirection)); // You can also use static CreateMouseRay3D that can calculate the ray with camera's viewportSize, viewMatrix and projectionMatrix: // BaseCamera.CreateMouseRay3D(Point mousePosition, Size viewportSize, ref Matrix3D viewMatrix, ref Matrix3D projectionMatrix, out Point3D rayOrigin, out Vector3D rayDirection) }