Преобразование 2D экрана в трехмерную пространственную проекцию, как расширить (x, y) до (x, y, z, w) для многократной инверсии матрицы проекции вида?

#swift #matrix #arkit #projection #projection-matrix

#swift #матрица #arkit #проекция #проекция-матрица

Вопрос:

Я хочу спроецировать точку CGPoint 2D экрана (x, y) в 3D точку (x, y, z), где z не является фиксированным. Я учусь на этом веб-сайте http://webglfactory.blogspot.com/2011/05/how-to-convert-world-to-screen.html, но матрица проекции вида равна 3 * 4. В arkit матрица проекции вида равна 4 * 4. Итак, когда обратная матрица ViewProjection умножает точку (x, y), как расширить точку (x, y) до вектора 1 * 4? Большое спасибо!!

Ответ №1:

SCNView.unprojectPoint([x, y, depthInFrustum]) выполняет то, что вы хотите. Есть много примеров со всей математикой для OpenGL, если вы посмотрите на это название метода.