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

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

Уменьшение числа полигонов на модели [Delphi, Windows]


MrAngel ©   (2003-10-31 00:16:00) 

Собственно сабж. Есть модель, любая, человека, собаки, ящика и пр.

Таких моделей предполагается разместить на сцене перед камерой около 2000 (если не больше). Причём будут такие ситуации, когда необходимо отобразить все эти модели (без клипинга и прочих вещей) одновременно!!! Однако модели будут находится на разном расстоянии от камеры, соответственно и хочется более дальние модели выводить (в зависимости от расстояния) с меньшим количеством полигонов.
Сразу оговорюсь - это должно обрабатываться в реальном времени, ситуации со слайд шоу категорически отвергаются и не подходят :-)

Есть ли какие нибудь существующие наборы алгоритмов, утилит, модулей для дельфи, которые могли бы мне в этом помоч. Принимается всё.

Заранее спасибо.


MrAngel   (2003-11-01 00:47:00) [1]

Я бы рад делать предварительные лоды, но ситуация такова, что заранее не известно какие вообще будут модели (предполагается их разработка на стороне, например пользователя/игрока). Но тем не менее спасибо за наводку.


Sapersky   (2003-11-01 00:20:00) [2]

> А как быть если работаю на OGL ?

Посмотреть на www.opengl.org (или как он называется) :)

На Delphi3D есть кое-что по теории:

http://www.delphi3d.net/articles.php

см. статью "Level Of Detail (LOD)".

Вообще же, как показывает практика, лучше заранее сгенерировать все лоды в 3DMax или ещё где и просто отображать нужный. Существует движок, в котором детализация моделей рассчитывается динамически - забыл как называется, но производства Shiny, на нём работают Messiah и Sacrifice (возможно, и Matrix - точно не в курсе). Так вот, результат на глаз - весьма посредственный (смотрел демо Sacrifice). То, что полигоны добавляются и урезаются - заметно, в нехорошем смысле, т.е. модель при этом дёргается, особенно с учётом того, что добавление и урезание часто происходят одновременно (ну или такое создаётся впечатление). Перемудрили в Shiny малость... но зато кака-а-я технология! :)
Хотя сейчас (Sacrifice когда ещё была), может, и довели до ума.


MrAngel   (2003-10-31 20:33:00) [3]

OK спасибо. А как быть если работаю на OGL ?


Sapersky   (2003-10-31 17:46:00) [4]

В D3DX (библиотеке утилит для Direct3D, имеется в комплекте с заголовками), начиная с DX8, есть средства уменьшения (и увеличения) количества полигонов в модели. Работают не всегда хорошо - модель, насколько я понял, должна быть представлена одним субмешем с усреднёнными по граням нормалями.


Ландграф Павел   (2003-10-31 12:06:00) [5]

Есть такой алгоритм, уменьшения числа полигонов на расстоянии... вот только где я этот пример видел... там под Dx8.1 было - уменьшение числа полигонов у поверхности земли.
Вспомнил! ROAM algorithm by Henri Hakl
http://www.cs.sun.ac.za/~henri/


Наверх

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