Какова основная предпосылка технологии, такая как в Oblivion (я уверен, что в других играх недостаточно, чтобы знать), где объекты издали видны, когда вы просматриваете их на расстоянии? Например, большая башня находится в миле от вас, и вы видите расплывчатый прямоугольник, торчащий из-за горизонта ... Очевидно, что гигантская трехмерная сцена не может быть воспроизведена полностью, и я знаю, что в случае карт высот есть только алгоритмы приближения которые используются для снижения качества карты высот еще дальше от камеры, но для конкретных объектов, как лучше всего это показать?
Возможно, я думал о технике предварительного рендеринга, когда вы выбираете определенные места вокруг ландшафта, а затем создаете программу, которая рисует все карты высот и трехмерные модели вокруг этого места и делает снимок. Для этого потребуется несколько снимков, а затем, когда плеер окажется рядом с этим местом, снимки будут использоваться в качестве скайбокса.
Еще один более очевидный метод - хранить действительно грубые 3D-модели, но как именно система 3D-рендеринга специально выбирает для рендеринга грубую модель здания, а не грубые модели других менее значимых (и, вероятно, не видимых из объекты на расстоянии? Как бы вы сохранили что-то подобное вместе с картой высот? Может быть, по замыслу, иметь только несколько таких значимых ориентиров, а затем просто сохранить их список в небольшом файле, и на каждом кадре отобразить те, которые на самом деле меньше x на очень большом расстоянии?
Мне известно, что серия Halo решает разделить игру на уровни, и тогда на каждом уровне будет свой ручной скайбокс. Это то, к чему я стремился в первом предложении, но я не уверен в этом. Я полагаю, что на самом деле я просто пытаюсь собрать другие идеи, усовершенствования или проблемы в своих идеях, чтобы я мог выбрать, какие из них создать прототип, используя мои ограниченные время и знания.
Еще одна связанная с этим тема - как отображать горы на расстоянии, так как они будут частью карты высот, а не трехмерными моделями поверх нее, поэтому они не смогут получить черновую версию и приближение карты высот. Алгоритм может испортить гору с очень большого расстояния, как это (предполагая, что вы даже попытаетесь приблизить и визуализировать такую отдаленную геометрию, которую вы, вероятно, не сделаете). Бонусные баллы, если вы также включите это в свой ответ. :)
Спасибо!
P.S. Я использую OpenGL. Я просто ищу основные понятия, но если вы решили опубликовать пример кода, пожалуйста, используйте функции и термины OpenGL! :)
РЕДАКТИРОВАТЬ: Спасибо за ответы! Для документации здесь есть еще один ресурс, который я нашел:
Глава 4.9 в программировании игр Gems 2 охватывает концепцию рендеринга отдаленных пейзажей в скайбокс:
http://books.google.com/books?id=1-NfBElV97IC&lpg=PA416&ots=SOpnfijZly&dq=render%20distant%20to%20skybox&pg=PA416
(к сожалению, предварительный просмотр - это только первая страница главы ... Мне придется забрать эту книгу из библиотеки моего университета, как только я вернусь в августе)
Кроме того, после прочтения этих вещей я по-прежнему придерживаюсь мнения, что LOD предназначен для объектов, которые все еще находятся на достаточно близком расстоянии. Если объекты имеют размер не более одного пикселя, но вы по-прежнему подаете их на видеокарту, вы просто теряете энергию, независимо от того, используете ли вы LOD или нет. И это относится ко всему, кроме самых больших отдаленных объектов; несколько высоких зданий и горы, в большинстве случаев, но маленькие модели деталей (кусты, даже деревья, камни, любые другие пейзажи ...) не были бы видны с такого расстояния. Поэтому мне нравится техника рендеринга в скайбокс, и когда я доберусь до этого моста, вот как я перейду его; и я обязательно использую LOD для всех моделей, я просто не буду отображать такое расстояние.
Кстати, я больше думаю о том, что происходит в игре Обливион, поэтому ответ может зависеть от жанра игры.