Zastanawiałem się, jak stworzyć lustro w grze 3D? Moją sugestią jest / było śledzenie promieni, uderzanie w obiekt „lustrzany”, a następnie rysowanie obrazu drugiej kamery na obiekcie „lustrzanym”, który znajduje się w „punkcie” lustrzanym w oryginalnej kamerze, przy użyciu uderzonej strony obiektu lustrzanego jako płaszczyzna odbicia.
Musielibyśmy użyć jednego promienia pochodzącego ze środka oryginalnej kamery, aby określić punkt, w którym środek widzenia znajduje się na płaszczyźnie lustra.
graphics-programming
daemonfire300
źródło
źródło
Odpowiedzi:
Jeśli korzystasz z OpenGL, sekcja 9 OpenGL FAQ: Transformacje opisuje dokładnie, jak to zrobić. I nie, nie wymaga śledzenia promieni, ponieważ jest to, co zrozumiałe, bardzo nieefektywny (ale wysokiej jakości) sposób na osiągnięcie tego.
9.170 Jak renderować lustro?
Oto, co mówi wpis FAQ, a przykładowy kod pokazuje:
Oczywiście jest wiele miejsca na optymalizację. Podczas renderowania sceny odbitej prawdopodobnie powinieneś możliwie dużo wygładzania, ponieważ lustra są zwykle małe, a domyślne wygaszanie poza ekranem nie uruchamia się dla geometrii, która jest na ekranie, ale nie jest widoczna przez lustro. Możesz także renderować uproszczoną wersję sceny przez lustro. W celu uzyskania efektów i aby ukryć użytkownika przed zauważeniem obniżonej jakości, możesz zastosować moduł cieniujący (np. Rozmycie lub jasny / wyprany) podczas wykonywania lustrzanego renderowania.
Wyobrażam sobie, że jeśli używasz DirectX, procedura byłaby taka sama.
źródło