Так что я бы использовал уравнение трехмерной проекции и работал бы с ними в обратном направлении, чтобы найти x, y, z какого-либо объекта в вашей сцене. Таким образом, учитывая размер вашего объекта, фокусное расстояние вашей камеры, вы можете вычислить x, y, z объекта в кадре.
Я бы сделал некоторые предположения относительно камеры (без вращения, без смещения камера находится в 0, 0, 0 по оси z).
image.x = model.x * camera.focalLength / model.z
image.y = model.y * camera.focalLength / model.z
Перевернув их, вы получите:
model.x = image.x * model.z / camera.focalLength;
model.y = image.y * model.z / camera.focalLength;
Предполагается, что вы знаете расстояние до точки, в которую, по вашему мнению, объект опирается от камеры (то есть модель.z). Аналогично, если вы хотите рассчитать расстояние до объекта от камеры, вы можете рассчитать модель.z следующим образом:
model.z = model.x * camera.focalLength / image.x
model.z = model.y * camera.focalLength / image.y
Хитрость, я полагаю, состоит в том, чтобы выяснить, что вы должны использовать для model.x и model.y в этом случае. Взяв либо ширину вашего объекта, либо высоту вашего объекта, вы можете установить соотношение между постоянной шириной вашего объекта и шириной вашего объекта в сцене при изменении расстояния.
model.z = model.width * camera.focalLength / image.width;
model.z = model.height * camera.focalLength / image.height;
Сидел на этом ответе несколько дней, поэтому я проверяю свои факты. Но это примерно согласуется с другим постом.