Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

GLScene: техника массовых сцен [D6]


miek ©   (2004-08-24 22:39:00) 

Если мне в сцене нужно показать 10000 одинаковых, скажем, орков (в кадре не более 100), то было бы нерационально создавать и держать в памяти 10000 экземпляров FreeForm. Хотелось бы создать 10000 ссылок на один объект, хранящий mesh. Это делается с помощью Proxy? MultiProxy? Или как?


DeadMeat   (2004-08-25 20:27:00) [1]

Вроде так и есть... Попробуй демку замутить.
Создай один FreeForm с грибом, из ..\media\. Потом насоздавай 1000 FreeForm-ов, и сделай их одинаково похожим на первый... Замерь время создания и фпс.
Затем сделай тоже самое, но с ProxyObject... Увидишь разницу...

---
...Death Is Only The Begining...


miek   (2004-08-25 19:09:00) [2]

То есть, если я создаю объекты через прокси, то это гарантирует, что они ссылаются на мастера, а не копируют его?


DeadMeat   (2004-08-24 23:34:00) [3]

Можно ещё так (правда не проверял). Насоздавать кучу проксей, а перед рендерингом каждой менять кадр на нужный для этой прокси... Хз, может сработает...

---
...Death Is Only The Begining...


DeadMeat   (2004-08-24 23:33:00) [4]

Proxy для этого и создан...
MultiProxy сделан для использования LOD в сцене... Там надо задавать расстояние (вот только не помню от чего), при котором он выбирает какой из мешей показывать... Есть демка на эту тему... Там куча шаров рисуется и с расстоянием меняется их "плотность" (количество полигонов в каждом).
Но у этого есть один серьезный недостаток - кадры анимации у всех будут одинаковыми. Т.е. если один орк пошевелил рукой, то и другие тоже будут...
Как вариант можно создать 10000 FreeFrom, но выводить только нужные (IsVolumeClipped)... Хотя конечно работать будет не очень... Я как то делал около 3 тыс. спрайтов, и на разных машинах (мощных) результат был разный - либо вся винда уходила в перезагрузку (видимо BSOD выскакивал) либо запускалась прога минут 5-пять...

---
...Death Is Only The Begining...


Наверх

Титульная страница Поиск, карта сайта Написать письмо