Po pierwsze, mam Unity Pro.
Od jakiegoś czasu staram się zasłaniać światła, gdy nie są one oglądane, aby poprawić wydajność. Głównymi metodami, na które natknąłem się, było użycie BecameVisible () i testowanie fragmentu kamery.
Moim głównym problemem było to, że jeśli odtwarzacz ogląda obszar oświetlony światłem, nadal chcę, aby światło było włączone.
Obecnie używam metody, która sprawdza, czy oświetlony obszar znajduje się w frustum kamery, ale problem polega na tym, że czasami światła znajdują się w frustum, a tak naprawdę nie są widoczne dla gracza (np. Ściana między nimi a graczem). Próbowałem z nimi wykonać raycasting, ale nigdy nie można uzyskać wystarczająco szczegółowych informacji dla rzeczywistego oświetlonego obszaru (najlepsze, co mogłem wymyślić, to użycie renderer.bounds.extent i renderer.bounds.center do obliczenia maksymalnej liczby oświetlonych punktów na świetle).
Czy ktoś wie, jak w Unity Pro można łatwo zasłonić światło? A może mógłbyś mi powiedzieć, w jaki sposób użyć tej metody podparcia kamery, o której mówiłem?
źródło
Odpowiedzi:
Możesz napisać własny skrypt, aby zasłonić światła. Coś takiego przymocowane do głównego aparatu:
Możesz również sprawdzić, czy punkt znajduje się w kącie na osi Y kamery (inne osie po prostu sprawią ci ból). Bądź trochę hojny przy kącie, może 2-krotnym frustracji aparatu, aby światła nie wyłączały się, gdy oświetlają obszary w polu widzenia kamery. Jeśli zdecydujesz się dodać tę dodatkową optymalizację (która prawdopodobnie nie będzie konieczna), upewnij się, że używasz odległości jako fazy szerokopasmowej, ponieważ jest ona o wiele tańsza.
źródło