Я хочу рассчитать мировые координаты на основе внутренней и внешней информации откалиброванной камеры.
Итак, я дал следующую информацию (на основании этого: https://docs.opencv.org/2.4/modules/calib3d/doc/camera_calibration_and_3d_reconstruction.html):
f_x и f_y: фокусное расстояние в пикселях
c_x и c_y: положение главной точки (центр изображения)
Ширина и высота изображения, получаемого камерой в пикселях. (ширина: 1920px, высота: 1200px)
Я знаю, где находится моя камера в 3D-сцене, и я также знаю направление, в котором поворачивается моя камера.
Теперь у меня есть Mesh в моем мире Unity, и я хочу применить Raycast на основе, например, пикселя (x: 1000, y: 400). Затем мне нужно применить вращение, основанное на этой информации о направлении исходного / центрированного направления камеры, чтобы запустить Raycast. После этого я хочу использовать положение удара в сцене Unity, чтобы отметить положение элемента, который отображается в моем 2D-изображении, снятом камерой.
Давайте предположим следующий сценарий.
Ширина изображения: 1920, Высота изображения: 1200
Мировые координаты камер:
X: 11,32 - Y: 3,85 - Z: 9,06
Вращение камеры:
X: 12,55 - Y: -111,81 - Z: 0,66
Фокусное расстояние камеры:
f_x & f_y: 1489,89
Основная точка камеры:
c_x: 962,96 - c_y: 620,58
Чтобы рассчитать новое направление для Raycasthit, потребуется вычислить eurlerAngles между координатами изображения (1000, 400).
Расчет не должен быть сложным. Но я застрял и определенно мог бы здесь помочь.