Co jest podstawowym założeniem technologii, jaką można znaleźć w Oblivionie (i innych grach, jestem pewien, nie grałem wystarczająco dużo, aby wiedzieć), gdzie obiekty z daleka są niejasno pokazywane, gdy widzisz je z daleka? Na przykład duża wieża oddalona jest o milę, a zobaczysz niejasny prostokąt, który wystaje z horyzontu ... Oczywiście nie wszystkie gigantyczne sceny 3D można renderować, i wiem, że w przypadku map wysokościowych są tylko algorytmy aproksymacyjne które są używane do obniżenia jakości mapy wysokości z dala od kamery, ale w przypadku konkretnych obiektów, jaki jest najlepszy sposób na ich wyświetlanie?Odległe renderowanie obiektów 3D [gry]
Myślałem, że być może technika wstępnego renderowania, w której wybieramy określone miejsca wokół krajobrazu, a następnie tworzymy program, który rysuje wszystkie mapy wysokości i modele 3D wokół tego miejsca i robi zdjęcie. Zajmie to kilka zdjęć, a kiedy gracz znajdzie się w pobliżu tego miejsca, zdjęcia będą używane jako skybox.
Inną bardziej oczywistą techniką jest przechowywanie naprawdę zgrubnych modeli 3D, ale w takim razie, w jaki sposób system renderowania 3D wyraźnie decyduje się na renderowanie szorstkiego modelu budynku, a nie na przybliżonych modelach innych mniej znaczących (i prawdopodobnie niewidocznych) z tej odległości) obiektów? Jak zachowałbyś coś takiego wraz z mapą wysokości? Być może z założenia ma tylko kilka takich znaczących punktów, a następnie przechowuje ich listę w małym pliku, a na każdej ramce renderuje te, które są oddalone o mniej niż x daleko.
Jestem świadomy, że seria Halo postanawia podzielić grę na poziomy, a następnie każdy poziom ma inny ręcznie wykonany skybox. To jest to, o co chciałem w pierwszej sugestii, ale nie jestem tego pewien. Sądzę, że tak naprawdę staram się zebrać inne pomysły, udoskonalenia lub problemy w moich pomysłach, abym mógł wybrać prototypy z moim ograniczonym czasem i wiedzą.
Innym pokrewnym tematem jest wyświetlanie gór na odległość, ponieważ byłyby one częścią mapy wysokości, a nie modeli 3D na wierzchu, więc nie byłyby w stanie uzyskać wersji przybliżonej i wysokościowej. Algorytm aproksymacji może zepsuć górę z naprawdę odległego dystansu (zakładając, że spróbowałbyś nawet przybliżać i oddawać tak daleką geometrię, której prawdopodobnie nie zrobiłbyś). Dodatkowe punkty, jeśli pokryjesz to również w swojej odpowiedzi. :)
Dzięki!
P.S. Używam OpenGL. Po prostu szukam podstawowych pojęć, ale jeśli zdecydujesz się na przykładowy kod, użyj funkcji OpenGL i warunków! :)
EDYCJA: Dziękuję za odpowiedzi! Dla celów dokumentacyjnych tutaj znajduje się kolejny zasób, który znalazłem: Rozdział 4.9 w grze Program Gems 2 obejmuje koncepcję renderowania odległej scenerii do skybox: http://books.google.com/books?id=1-NfBElV97IC&lpg=PA416&ots=SOpnfijZly&dq=render%20distant%20to%20skybox&pg=PA416 (niestety ten podgląd to tylko pierwsza strona rozdziału ... Będę muszę pobrać tę książkę z biblioteki uniwersyteckiej, jak tylko wrócę w sierpniu)
Również po przeczytaniu tych rzeczy, nadal uważam, że LOD jest dla obiektów, które znajdują się w stosunkowo rozsądnej odległości. Jeśli obiekty nie mają nawet wielkości jednego piksela, ale nadal podajesz je karcie graficznej, marnujesz energię, korzystając z LOD lub nie. I tak by było w przypadku wszystkiego oprócz absolutnie największych odległych obiektów; kilka wysokich budynków i niektóre góry, w większości przypadków, ale małe modele szczegółów (krzewy, nawet drzewa, skały, cokolwiek innego sceneria ...) nie byłyby widoczne z takiej odległości. Więc podoba mi się technika renderowania do skybox, a kiedy dojdę do tego mostu, tak to przekroczę; i upewnię się, że użyję LOD we wszystkich modelach, po prostu nie oddam takiej odległości.
Nawiasem mówiąc, myślę bardziej na wzór gry w Obliviona, więc odpowiedź może zależeć od gatunku gry.
Myślę, że twój punkt widzenia jest nieco niewystarczający. FOV zwykle odnosi się do kąta "kamery", którą przeglądasz.Punkt, w którym odciąłeś odległe obiekty, nazywany jest "dalekim obcinaniem" –
@NeilN, masz rację; Zmodyfikuję odpowiedź. –