все графические движки используют матрицы для преобразования между различными системами координат. Действительно, OpenGL и DirectX используют их, потому что они являются стандартным способом.
Камеры обычно строят матрицы, используя параметры, которые у вас есть:
матрица вида (преобразует мир в положение так, как вы смотрите на него из положения камеры), в нем используются положение взгляда и положение камеры (также вектор повышения, который обычно равен 0,1,0)
матрица проекции (преобразуется из 3D-координат в 2D-координаты), она использует fov, near, far и aspect.
Вы можете найти информацию о том, как построить матрицы в Интернете, в поисках функций opengl, которые их создают:
Но я не могу представить двигатель, который не позволяет вам получить эти матрицы, потому что я могу убедиться, что они где-то есть, двигатель использует его.
Когда у вас есть эти матрицы, вы умножаете их, чтобы получить матрицу viewprojeciton. Эта матрица преобразуется из мировых координат в экранные координаты. Так что просто умножьте матрицу на позицию, которую вы хотите знать (в формате вектора 4, являясь компонентом 4º 1.0).
Но подождите, результат будет в однородных координатах, вам нужно разделить X, Y, Z результирующего вектора на W, и тогда у вас будет позиция в нормализованных экранных координатах (0 означает центр, 0,5 означает право, и т.д.).
Отсюда легко преобразовать умножение на ширину и высоту.
Удачи:)
P.S .: когда вы работаете с 3D, очень важно понимать три матрицы (модель, вид и проекция), иначе вы будете каждый раз спотыкаться.