Jak zastosować odpowiednią perspektywę do tej tekstury OpenGL ES?

Chciałbym opisać mój cel i uzyskać informacje zwrotne na temat proponowanego rozwiązania. Jestem całkiem nowy w OpenGL ES (lub w ogóle w OpenGL), więc bądź łagodny. Chciałbym również wspomnieć, że platforma to iPad (iOS) z ograniczeniami należącymi do niej.

Cel: Aby umożliwić użytkownikowi umieszczenie wierzchołków, w których tekstura powinna być prawidłowo narysowana w odpowiedniej perspektywie (lub co najmniej z regulowaną perspektywą). Aby wyjaśnić, co mam na myśli, rozważ poniższy przykład.

Powiedzmy, że mamy zdjęcie domu z odpowiednim trawnikiem przed nim. Teraz chcę utorować ścieżkę (użytkownika) z kafelkami (teksturą) w taki sposób, aby perspektywa wyglądała prawidłowo. Jeśli widok jest po prostu ortogonalny, kafelki będą całkowicie kwadratowe, co nie jest realistyczne, gdy ma się jakąś głębię w obrazie.

Teraz jednym z podejść byłoby ustawienie widoku perspektywicznego z obniżoną wartością w OpenGL ES. Następnie ustaw płaszczyznę (jak poniżej) i umieść na niej teksturę obrazu na początek.

Teraz, jak oczekujesz od wyglądu powyższego obrazu, obraz będzie zniekształcony. Ale jest dobrze, ponieważ jeśli przechylimy płaszczyznę do tyłu (tak, aby idealnie pasowała do granic ekranu), obraz pojawi się kwadratowy.

Jeśli użytkownik definiuje teraz obszar do wybrukowania, możemy umieścić te punkty pod tym samym kątem, co nachylona płaszczyzna, a następnie po prostu umieścić w nim teksturę z kwadratowymi płytkami, a pojawią się one z perspektywą. Jeśli nasz kąt nachylenia jest nieprawidłowy, użytkownik może dostosować go ręcznie, co się wtedy dzieje, że kąty narożne płaszczyzny na powyższym rysunku zostaną dostosowane, a płaszczyzna będzie przechylać się inaczej, aby pasowała do wyświetlacza. Tekstura płytek pojawi się wtedy pod innym kątem.

Czy jest to możliwe podejście, czy też jest jakiś inny, lepszy sposób, aby to zrobić? Myślę, że to brzydki hack, który może mieć związek z moimi ograniczonymi umiejętnościami w programowaniu 3D.

questionAnswers(2)

yourAnswerToTheQuestion