Как применить правильную перспективу к этой текстуре OpenGL ES?

Я хотел бы описать мою цель и получить некоторые отзывы о предлагаемом решении. Я совершенно новичок в OpenGL ES (или вообще в OpenGL), поэтому, пожалуйста, будьте осторожны. Я также хотел бы упомянуть, что платформа представляет собой iPad (iOS) с ограничениями на ее принадлежность.

Objective: Позволить пользователю размещать вершины, в которых текстура должна быть нарисована правильно в правильной перспективе (или, по крайней мере, настраиваемой перспективе). Чтобы объяснить, что я имею в виду, рассмотрим следующий пример.

Допустим, у нас есть фотография дома с соответствующей лужайкой перед ним. Теперь я хочу выложить (пользовательский) указанный путь плитками (текстурой) так, чтобы перспектива выглядела правильно. Если вид только ортогональный, плитки будут полностью квадратными, что нереально при наличии некоторой глубины изображения.

Теперь одним из подходов будет создание перспективного вида с упором на OpenGL ES. Затем поместите плоскость (как показано ниже) и нанесите на нее текстуру изображения для начала.

Plane to put image texture on

Теперь, как вы ожидаете от взгляда на изображение выше, изображение будет искажено. Но это хорошо, потому что если мы наклоним плоскость назад (чтобы она идеально подходила к границам дисплея), изображение было бы квадратным.

Если пользователь теперь определяет область, которая будет вымощена, мы можем поместить эти точки под тем же углом, что и наклонная плоскость, а затем просто наложить текстуру с квадратными плитками в ней, и они появятся в перспективе. Если наш угол наклона неправильный, пользователь может отрегулировать его вручную, что в этом случае будет означать, что угловые углы плоскости на рисунке выше будут отрегулированы, и плоскость будет наклоняться по-разному, чтобы соответствовать дисплею. Текстура плитки будет отображаться под другим углом.

Это работоспособный подход или есть какой-то другой, лучший способ сделать это? Я думаю, что это отвратительный взлом, который может иметь отношение к моим ограниченным навыкам в 3D-программировании.

Ответы на вопрос(2)

Ваш ответ на вопрос