Прежде всего, нет никакой реальной разницы между " World Matrix " и " View Matrix ", они обе являются матрицами преобразования, и различие несколько произвольно. Некоторые системы даже объединяют их (в OpenGL просто есть матрица ModelView).
Традиционно «мировая матрица» используется для перемещения отдельных моделей из «модельного пространства» в «мировое пространство». Затем «матрица просмотра» используется для перемещения всех моделей из мирового пространства в их относительные положения перед камерой (что, по сути, «перемещает камеру»). И, наконец, « Projection Matrix » преобразует 3D-позиции в их 2D-позиции на экране (обычно с перспективной проекцией). Поскольку они являются матрицами, их можно умножить вместе в одну матрицу, которая может преобразовать точки за один шаг.
Прежде всего, взгляните на свойства Matrix
struct .
Вам также необходимо понять, что Matrix.Forward
возвращает Vector3
. Vector3
может представлять либо положение или a скаляр и направление . Вам нужно два из них, чтобы представить позицию и направление.
Теперь, моя математика в 3D матрице немного ржавая, но я почти уверен, что вы хотите Matrix.Translation
как положение камеры в мировом пространстве. И Matrix.Forward
как прямое направление камеры в мировом пространстве.
Если ваша камера / матрица вида не выполняет операцию масштабирования по всему миру (а на самом деле это не должно), то Vector3
, который вы получите от Matrix.Forward
, будет иметь длину единицы - другими словами, только направление ( без скаляров). Используйте это, чтобы указать направление перемещения вашего объекта.