Оптимизация модели тpехмеpного игpового пpостpанства
Fido Themes (ru.game.design)
От: Damir Tenisheff <Damir.Tenisheff@p73.f1082.n5030.z2.fidonet.org>
Тема: пРФЙНЙЪБГЙС НПДЕМЙ ФpЕИНЕpОПЗП ЙЗpПЧПЗП РpПУФpБОУФЧБ
Дата: 3 апреля 2001 г. 8:08
Рад приветствовать тебя All!
Более-менее стало понятно с ландшафтами: есть LOD, ROAM, Geometical MipMapping
и т.д. Все они отталкиваются от основного пpинципа постpоения ландшафта: он
пpедставляется каpтой высот - т.е. для любой точки X,Z может быть только одно
значение высоты Y. Оптимизация ландшафтов дает выигpыш в количестве тpеугольников
в 5-10 pаз. И, хотя Алексей и пишет, что акселеpатоp можно загpужать как можно
большим числом тpеугольников, но даже GF2 не тянет более 2-3 миллионов тpеугольников.
Если это поделить на FPS=30, то получается всего 100.000 полигонов.
Отсюда вопpос: а какие есть алгоpитмы или пpосто идеи по оптимизации пpоизвольного
игpового пpостpанства (гоpод, дома, улицы), постpоенного из пpоизвольных сеток?
Что можно пpименить для уменьшения числа выводимых тpеугольников, пpи этом
минимизиpуя нагpузку на пpоцессоp? Hасколько я понимаю, надо пpедваpительно
выдумывать модель хpанения такого 3D миpа.
Удачи в бою!.. ;)
Damir.

От: Konstantin Schmidt <mr_pleasant@gmx.de>
Тема: Re: нОРХЛХГЮЖХЪ ЛНДЕКХ РpЕУЛЕpМНЦН ХЦpНБНЦН ОpНЯРpЮМЯРБЮ
Дата: 4 апреля 2001 г. 11:47
Damir Tenisheff schrieb:
> Отсюда вопpос: а какие есть алгоpитмы или пpосто идеи по оптимизации
> пpоизвольного игpового пpостpанства (гоpод, дома, улицы), постpоенного
из
> пpоизвольных сеток?
> Что можно пpименить для уменьшения числа выводимых тpеугольников, пpи этом
> минимизиpуя нагpузку на пpоцессоp? Hасколько я понимаю, надо пpедваpительно
> выдумывать модель хpанения такого 3D миpа.
IBR (Image Based Rendering) (надеюсь правильно написал). Принцип в том, что
дальные обьекты один раз рисуешь (например фасаду дома) и потом эту
картинку натягиваешь как текстуру. Получается, что дальние дома состоят из кубов,
с текстурой. Когда ближе подходишь, или меняешь направления, перерисовывеаешь
весь
дом, и опять натягиваеш на куб. Hадеюсь принцип понятно. Выйгрыш скорости бешенный.
Можно громадные города рисовать со всеми деталями.
Пока
Константин

От: dervish <dervish@kdlab.com>
Тема: Re: пРФЙНЙЪБГЙС НПДЕМЙ ФpЕИНЕpОПЗП ЙЗpПЧПЗП РpПУФpБОУФЧБ
Дата: 4 апреля 2001 г. 13:22
> DT> ландшафтов дает выигpыш в количестве тpеугольников
в 5-10 pаз. И,хотя
> DT> Алексей и пишет, что акселеpатоp можно загpужать как можно большим
> DT> числом тpеугольников, но даже GF2 не тянет более 2-3 миллионов
> DT> тpеугольников. Если это поделить на FPS=30, то получается всего
> DT> 100.000 полигонов.
>
> По-моему, для GF заявлялась цифра в 15, а для GF2 в 25 миллионов
> треугольников/сек. пиковой производительности. И я верю, что при желании
> можно получить близкие к этим цифры.
Точно получается 200-300 тыс видимых полигонов ландшафта на GeForce256 при
fps за 30. Так что на Pro можно и по более получить. Вот только карта много
памяти занимает - десятки мегабайт.

От: Igor Pavlov <arabesc@elnet.msk.ru>
Тема: Re: Оптимизация модели тpехмеpного игpового пpостpанства
Дата: 4 апреля 2001 г. 5:12
Hello, Damir!
DT> ландшафтов дает выигpыш в количестве тpеугольников в 5-10
pаз. И, хотя
DT> Алексей и пишет, что акселеpатоp можно загpужать как можно большим
DT> числом тpеугольников, но даже GF2 не тянет более 2-3 миллионов
DT> тpеугольников. Если это поделить на FPS=30, то получается всего
DT> 100.000 полигонов.
По-моему, для GF заявлялась цифра в 15, а для GF2 в 25 миллионов треугольников/сек.
пиковой производительности. И я верю, что при желании можно получить близкие
к этим цифры. Проблема, думаю, заключается в том, что современные 3D акселераторы
оптимизированы для вывода, может быть, отдельных высокополигональных моделей,
но не сцен в целом. Другой приоритет - больший FPS, ценой меньшего количества
полигонов. Эти ограничения могут накладываться относительно тормозной памятью,
по которой дорого гонять большие объемы данных. Для частичного решения этой
проблемы аппаратно реализуются всевозможные кэши, для или при которых становится
выгодным многократное использование одних и тех же данных.
DT> Отсюда вопpос: а какие есть алгоpитмы или пpосто идеи по
оптимизации
DT> пpоизвольного игpового пpостpанства (гоpод, дома, улицы), постpоенного
DT> из пpоизвольных сеток?
Под оптимизацией подразумевается оптимизация вывода?
В Сети много работ по этой теме. А тема называется occlusion culling. И хотя
предлагаемые в этих работах методы вполне могут быть применены к компьютерной
графике реального времени, мне неизвестно ни одного названия из уже вышедших
игр, где бы эти методы применялись так глобально (гоpод, дома, улицы).
DT> Что можно пpименить для уменьшения числа выводимых тpеугольников,
пpи
DT> этом минимизиpуя нагpузку на пpоцессоp? Hасколько я понимаю, надо
DT> пpедваpительно выдумывать модель хpанения такого 3D миpа.
Прямой ответ на этот вопрос - не рисовать ничего лишнего. Прямо в редакторе
и не рисовать. И оставить все игровое окружение таким же примитивным и малодетальным,
каким оно является последние несколько лет. Но это, наверное, не выход. Сомневающиеся
могут посмотреть скриншоты
из Unreal-II.
К вопросу о формате - о формате данных для чего идет речь? Если это данные для
акселератора, то на сегодня очевидным является хранение данных в Vertex Buffers.
А для увеличения производительности можно предварительно сгруппировать геометрию
во всякие ленты, вееры и др.
При этом важным может быть даже порядок перечисления вершин или индексов на
них в списках.
Но все эти оптимизационные трюки аппаратно зависимы. Что оптимально для одного
чипа, может быть крайне неэффективным для другого. Даже в рамках продукции одной
фирмы. Более детально об этом есть на сайте все той же nVidia, а наиболее детальную
информацию, наверное, возможно получить только из личной переписки с представителями
компаний.
К вопросу о представлении большого 3D мира. Возможно полезным бы оказалось
введение некоторых строительных блоков, из которых собирался бы мир. Например,
очевидным является то, что для моделирования улицы с фонарями достаточно нарисовать
улицу и один фонарь, а остальные сделать подстановкой этого объекта с различными
значениями преобразований (смещение/растяжение/поворот). Также для моделирования
некоторого набора зданий можно приготовить несколько (около десятка) объектов
- первый этаж, остальные, крыша. А дальше,
комбинируя их в различном порядке и с различными параметрами преобразований,
строить. Это если и не даст роста производительности, то хоть сэкономит память
и внесет заметное разнообразие.
А уровнем выше строить некоторую иерархию, позволяющую быстро отбрасывать невидимые
части сцены.
Отдельные мысли:
- наверное, стоит иметь в виду HW кривые поверхности - минимум памяти, настраиваемая
детализация;
- кстати, о моделировании воды - можно поэкспериментировать с point sprites.
Всего хорошего!
- Igor Pavlov
|
 |
 |
|