Показать сообщение отдельно
Старый 11.11.2009, 20:35   #1
Ky3R_94
Нуждающийся
 
Аватар для Ky3R_94
 
Регистрация: 29.08.2009
Адрес: Україна, Донецьк
Сообщений: 71
Написано 13 полезных сообщений
(для 45 пользователей)
Генерация вёртексных lightmap'ов стандартными функциями блитз3Д

Вот за пару дней сего холодного ноября сделал двиг для создания лайтмапов в блитзе на основе стандартных функций. Принцип я взял простой как репа - если источник света "видит" вёртекс, то делает его светлым. По сравнению с обычными (тексельными) лайтмепами генерация проходит гораздо быстрее. Но увы - трабла вся в том, что качественные лайтмапы только на качественных объектах, поэтому с увеличением количества вёртексов время генерации также возрастает.

Работа с ними (как всегда в моём жанре) черезвычайно проста - Инклудим(или засовываем) исходник "shadows.bb", а затем юзаем функции там, где надо =)

NewShadingModel(mesh,x,y,z) - добавляет мэш(mesh) в число объектов которые будут "обрабатываться"

ShadeModels(light_source,maincam,r,g,b) - собственно, совершает все злодеяния, связанные с созданием лайтмепа. Указываем источник света, главную камеру (чтоб знать к чему возвращаться =)) и цвет света. Если хотите, то функция возвратит количество "засвеченных" вертексов.

ClearShadingModels() - ну тут и так всё понятно.

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

В придачу ко всему функция подсчёта вертексов в мэше и моделька кабалистической звезды made by me =^)

з.ы. извините если баян)

вот скрины:


Вложения
Тип файла: zip vertex_lightmap.zip (171.4 Кб, 636 просмотров)
(Offline)
 
Ответить с цитированием
Эти 8 пользователя(ей) сказали Спасибо Ky3R_94 за это полезное сообщение:
Harter (01.12.2009), L.D.M.T. (22.12.2009), Mr_F_ (11.11.2009), Nex (12.11.2009), Randomize (15.12.2009), Reizel (21.12.2009), Tormaz (11.11.2009), ІГРОГРАЙКО (15.12.2009)