BSP деревья

Я не слишком хорошо разбираюсь в эволюции этих хитрых деревьев и наброски пока что смехотворные. Но на что-нибудь применимое в реальных условиях - сил у меня хватит. Правда будет это не сразу. Пока что я только начинаю резвиться. И лежать здесь буду как всегда только исходники. В теорию и математику я как всегда вдаваться не хочу. Теории чтобы всё это написать времени надо совсем немного, но очередная тупая работа отнимает всё время. Со временем всё допишу.

27.11.2007

Сегодня решил немного прошерстить данный минираздел. Удалил большую часть похожих друг на друга исходников. И вдарился в эксперименты (результаты которых будут позже).

Общий недостаток всех исходников, заключается в том, что выбор оптимального сплиттера не производится. Пара слов о выборе сплиттера. Процесс незамысловатый. В тот момент когда мы выбираем каким из полигонов разделить весь список полигонов пополам, для каждого из них составляется оценочное значение e=k1*s+k2*diff, где


Проверку достаточно выполнять в пределах текущего списка полигонов (не проверяя вложенных вариантов разбиения). И самое приятное, это то что не надо высчитывать эту оценку каждый раз заново. Достаточно составить эту оценку для полного списка полигонов, и в дальнейшем корректировать оценку каждого полигона, после разделения списка. Пересчёт оценок будет довольно простым (для ещё большей простоты, можно пожертвовать качеством). Возможно что используя это, можно создать и глубинный перебор вариантов, с примелемой скоростью.

Варианты исходников

2D

BSP2D.rar
Дерево в двухмерном варианте. Отрезками обозначены плоскости. Мышкой можно установить позицию наблюдателя. Номерами показывается порядок отрисовки преград, для того чтобы наблюдатель мог правильно видеть окружающий мир.

пикассо

BSP# (New!)

bsp_cs.rar
Минимальная версия на C#. Портировал сегодня, ради интереса. Надо сказать что производительность данного языка лежит далеко в заднице. Он конешно может быть эффективнее чем простой Си, но у подобного явления есть очень хитрые причины, которые я обсуждать не буду. Вобщем скрипты они и есть скрипты, как над ними не извращайся. Для сборки необходима Visual Studio 2005(2008).

пикассо

3D_Q

BSP3D_Q.rar
Простейший вариант на Си. Выбор оптимального сплиттера не производится. Повороты выполняются с помощью кватернионов. Геометрический процессор оперирует только треугольниками.

пикассо

3D_L2

BSP3D_l2.rar Рабочий вариант BPS Leaf.

Нежизнеспособные версии

3D_L3

BSP3D_l3.rar
Тоже самое, только добавлен загрузчик для 3ds файлов, который работает довольно криво. В большинстве случаев модель рисуется с заметными ошибками (я выяснил в чём тут проблема, но исправить пока руки не дошли). Высоко полигональную модель лучше и вовсе не открывать, её обрабока будет идти неопределённо долго. Так же чуть чуть изменена отрисовка листьев дерева, в некоторых случаях она рисуется без рекурсии. Производится упрощённый выбор оптимальных сплиттеров (без быстрого пересчёта, о котором я говорил в начале).

пикассо пикассо

Полезный софт

3.DS info (просмотр структуры .3ds файлов)

3ds_info.rar
Служебная программа, которая открывает *.3ds файл и показывает его схематичную структуру. Очень полезно когда изчучаешь формат 3ds файлов или отлаживаешь загрузку. На дереве изображается дерево фрагментов: тип, название типа, размер без учёта заголовка. В статусной строке показан размер и положение фрагмента внутри файла (положение указывает на начало заголовка, чтобы получить содержимое фрагмента нужно прибавить 6 байт).

пикассо

Hosted by uCoz