Skalowanie obrazów AR na podstawie odległości od kamery

Się rozwijamrzeczywistość rozszerzona aplikacja na iPhone'a

W zasadzie powinien wyświetlać obrazy przypisane do lokalizacji geograficznych, gdy patrzysz na nie za pomocą kamery. Każdy taki obraz może być rozumiany jako billboard, który ma swoje położenie geograficzne i nagłówek (rozumiany jako kąt między jego płaszczyzną a osią kierunku północnego).

Celem jest sprawienie, aby te billboardy wyglądały mniej więcej tak, jakby były obiektami fizycznymi. Powinny być większe, jeśli jesteś blisko nich i mniejsze, gdy dalej. Powinny także pojawiać się w odpowiedniej perspektywie, gdy nie stoisz bezpośrednio przed nimi.

Myślę, że osiągnąłem ten cel mniej więcej.Mierząc początkowy kierunek od iPhone'a do obrazu, mogę zdecydować o kącie obrotu zdjęć oglądanych przez kamerę (aby zobaczyć je w odpowiedniej perspektywie).

Jednak jeśli chodzi o skalowanie ich w oparciu o odległość od telefonu, myślę, że spieprzyłem moje podejście. Przyjąłem założenie, że maksymalna odległość widzenia jest, powiedzmy, 200 m. Następnie billboardy znajdujące się 100 m od telefonu są wyświetlane w 50% ich oryginalnego rozmiaru. To jest to. Skalowanie liniowe oparte na maksymalnej odległości.

To, czego mi brakowało, to rozmiar billboardów (rozumianych jako obiekty fizyczne). Sposób ich wyświetlania na ekranie zależy od ich rozmiaru tylko w pikselach. Oznacza to, że rozdzielczość ekranu jest czynnikiem decydującym o tym, jak je postrzegasz. Zakładam więc, że jeśli dostaniesz dwa telefony o takich samych wymiarach ekranu, ale różnych rozdzielczościach, te same zdjęcia będą miały różne rozmiary na obu. Czy mam rację?

W końcu moje pytanie brzmi jak podejść do skalowania zdjęć, aby wyglądały dobrze w widoku AR?

Myślę, że powinienem wziąć pod uwagę niektóre parametry aparatu. Gdy obiekt 10x10 cm znajduje się tuż przed kamerą, może on pokryć cały ekran. Ale gdy umieścisz go kilka metrów dalej, stanie się drobnym szczegółem. Więc jak podejść do skalowania? Jeśli zdecyduję się przypisać wymiary fizyczne do moich wirtualnych billboardów, to jak je skalować na podstawie odległości od kamery?

Czy mam rację, że powinienem przypisać wymiary fizyczne w metrach do każdego obrazu (bez względu na ich rozmiar w pikselach) i wyświetlić je na podstawie wymiarów i pewnego zależnego od kamery współczynnika skalowania?

Czy mógłbyś mi w tym pomóc? Wszelkie wskazówki będą pomocne. Dziękuję Ci!

questionAnswers(1)

yourAnswerToTheQuestion