Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   forum.boolean.name > Программирование игр для компьютеров > Blitz3D > 3D-программирование

3D-программирование Вопросы, касающиеся программирования 3D мира

Ответ
 
Опции темы
Старый 28.08.2011, 18:32   #1
Gector
Легенда
 
Аватар для Gector
 
Регистрация: 14.10.2007
Сообщений: 3,878
Написано 2,012 полезных сообщений
(для 5,072 пользователей)
Хорошо Baked Probe Light

После недавнего примера с вершинным освещением я заморочался на эту тему и вот что мне удалось написать.
Это не повертексное освещение. Это так называемый "Probe Light". Тоесть освещение заранее просчитанное для определенных точек на карте.
К достоинствам этого метода можно отнести его относительную простоту и более менее приемлемый результат ввиду того, что можно динамический объект может принимать освещение (как бы) отраженное от стен(По большей части это не освещение а трюк). Иными словами он использует некоторые достоинства материалов макса(например отражение света от стен).
К недостаткам метода стоит отнести лишний лайтмэп и чайлды). Но ведь без затрат ничего не делается?
Здесь можно посмотреть как это работает в идеале.
А здесь немного теории.
В примере представлена очень грубая но тем не менее рабочая вариация этого метода). Основной принцип сохранен.
В архиве так же моя небольшая статья объясняющая принцип создания Probe Light для Blitz3d.

З.Ы. Ваше мнение)?
UPD. Знаю знаю блиц старый. DX9 рулит). Но к теме это не имеет никакого отношения).
Миниатюры
Нажмите на изображение для увеличения
Название: Screen.png
Просмотров: 972
Размер:	204.9 Кб
ID:	14696  Нажмите на изображение для увеличения
Название: Screen2.png
Просмотров: 936
Размер:	162.7 Кб
ID:	14697  
Вложения
Тип файла: rar Baked Lights.rar (1.86 Мб, 499 просмотров)
__________________
Ибо как сказал Бгдн:
(Offline)
 
Ответить с цитированием
Эти 8 пользователя(ей) сказали Спасибо Gector за это полезное сообщение:
Coks (02.09.2011), dsd (28.08.2011), impersonalis (28.08.2011), moka (28.08.2011), Nuprahtor (28.08.2011), Randomize (29.08.2011), St_AnGer (28.08.2011), tormoz (28.08.2011)
Старый 28.08.2011, 19:11   #2
dsd
Мастер
 
Аватар для dsd
 
Регистрация: 13.06.2011
Сообщений: 1,103
Написано 481 полезных сообщений
(для 1,836 пользователей)
Ответ: Baked Probe Light

А чо, прикольно. А с учетом наличия и других флагов в Текстуребленде можно и затенение замутить, токо шесть рендеров это дохрена по моему
Кстати не запустилось хочет функцию ReadSub(EntityName$(child),2,"%").

И можно наверно разрешение маленькое для камеры выставить там ведь важен цвет, а не детализация и сделать массив из шести камер, тогда можно будет за один рендер управиться.
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Gector (28.08.2011)
Старый 28.08.2011, 19:21   #3
Gector
Легенда
 
Аватар для Gector
 
Регистрация: 14.10.2007
Сообщений: 3,878
Написано 2,012 полезных сообщений
(для 5,072 пользователей)
Ответ: Baked Probe Light

Сообщение от dsd Посмотреть сообщение
А чо, прикольно. А с учетом наличия и других флагов в Текстуребленде можно и затенение замутить, токо шесть рендеров это дохрена по моему
Кстати не запустилось хочет функцию ReadSub(EntityName$(child),2,"%").

И можно наверно разрешение маленькое для камеры выставить там ведь важен цвет, а не детализация и сделать массив из шести камер, тогда можно будет за один рендер управиться.
Фак!!! Опять забыл!Емана!!!)))
Создай текстовый файл "parser.decls" и вставь туда это:
.lib "Parser.dll"
ReadSub$(String$,Index%,Delimiter$):"ReadSub"
CountDelimiter%(String$,Delimiter$):"CountDelimiter"
Что до рендера то он и так делается перед основным циклом). Это как бы пререндереный лайтмэп для активных объектов.
__________________
Ибо как сказал Бгдн:
(Offline)
 
Ответить с цитированием
Старый 28.08.2011, 19:23   #4
Mr_F_
Терабайт исходников
 
Аватар для Mr_F_
 
Регистрация: 13.09.2008
Сообщений: 3,947
Написано 2,189 полезных сообщений
(для 6,051 пользователей)
Ответ: Baked Probe Light

помню делал их на ксорсе.
т.к. освещение запекал в максе в лайтмапы, там же ставил скриптом все probe'ы в виде кубиков с запретом отбрасывания теней и влияния на ГИ. но они все равно могли принимать освещение на себя. на кубиках была развертка в виде 6 их сторон по очереди. затем я запекал на них свет (создавался свой лайтмап на каждый) и экспортил сцену в б3д - затем препроцессящая прога брала мин/макс коорды кубов из сцены и цвета каждой стороны из минилайтмапов. полученное сохранялось уже в использующийся в реалтайме небольшой файл.
в игре был перебор этих кубов и проверка попадания дин объекта в мин/макс коорды каждого. можно было оптимизировать через sparse octree, но я этого не сделал, было как ни странно и без того шустро с парой тысяч кубов. в случае попадания, я плавно линейно интерполировал текущий кубоцвет объекта на цвет куба, в котором он находится. т.е. каждый дин объект нёс в себе 6 RGB цветов. они передавались в шейдер и юзались как ambient cube по коду, описанному в доке про освещение в source engine.
по сабжу - тут кубмапой сделано или как? лень смотреть
(Offline)
 
Ответить с цитированием
Эти 2 пользователя(ей) сказали Спасибо Mr_F_ за это полезное сообщение:
Coks (02.09.2011), Gector (28.08.2011)
Старый 28.08.2011, 19:27   #5
Gector
Легенда
 
Аватар для Gector
 
Регистрация: 14.10.2007
Сообщений: 3,878
Написано 2,012 полезных сообщений
(для 5,072 пользователей)
Ответ: Baked Probe Light

Сообщение от Mr_F_ Посмотреть сообщение
по сабжу - тут кубмапой сделано или как? лень смотреть
Да. Это кубмап. Очередной эффект из серии "На чистом блице").
UPD: Хотя от того что делал ты отличается лишь нюансами.
__________________
Ибо как сказал Бгдн:
(Offline)
 
Ответить с цитированием
Старый 28.08.2011, 21:44   #6
Gector
Легенда
 
Аватар для Gector
 
Регистрация: 14.10.2007
Сообщений: 3,878
Написано 2,012 полезных сообщений
(для 5,072 пользователей)
Ответ: Baked Probe Light

Сообщение от dsd Посмотреть сообщение
сделать массив из шести камер, тогда можно будет за один рендер управиться.
То есть, как я понял, рендер с шести камер сразу делается в один проход, и в шесть раз меньше будет задержка? Если так то это было бы очень круто).
__________________
Ибо как сказал Бгдн:
(Offline)
 
Ответить с цитированием
Старый 28.08.2011, 21:58   #7
dsd
Мастер
 
Аватар для dsd
 
Регистрация: 13.06.2011
Сообщений: 1,103
Написано 481 полезных сообщений
(для 1,836 пользователей)
Ответ: Baked Probe Light

Ну да, просто вырезаешь для каждой грани разный кусок бакбуфера, да и 32х32 должно хватить с головой для каждого куска. Плюс можно подкрашивать объекты(не фон) в черный цвет во время рендера, дадут некую тень они
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Gector (28.08.2011)
Старый 28.08.2011, 22:53   #8
.Squid
Дэвелопер
 
Аватар для .Squid
 
Регистрация: 06.04.2009
Адрес: Запорожье
Сообщений: 1,500
Написано 1,011 полезных сообщений
(для 4,642 пользователей)
Ответ: Baked Probe Light

Или я чего-то не понял, или вы не то говорите. Блитц не умеет рендерить в один проход из нескольких камер.
__________________

(Offline)
 
Ответить с цитированием
Эти 2 пользователя(ей) сказали Спасибо .Squid за это полезное сообщение:
moka (28.08.2011), Mr_F_ (28.08.2011)
Старый 28.08.2011, 23:56   #9
Gector
Легенда
 
Аватар для Gector
 
Регистрация: 14.10.2007
Сообщений: 3,878
Написано 2,012 полезных сообщений
(для 5,072 пользователей)
Ответ: Baked Probe Light

Сообщение от .Squid Посмотреть сообщение
Или я чего-то не понял, или вы не то говорите. Блитц не умеет рендерить в один проход из нескольких камер.
Имеется ввиду рендер с нескольких камер в несколько вьюпортов. Вызов RenderWorld в данном случае действительно один. А вот велика ли выгода с этого - вопрос...
Я сейчас ищу способ смягчить переходы между текстурами. Тоесть сделать хотябы фейд по расстоянию. Но через гамму - глючно т.к. работает она только в оконном режиме. Лишний рендер тоже не к чему.
__________________
Ибо как сказал Бгдн:

Последний раз редактировалось Gector, 29.08.2011 в 00:04. Причина: Проверил гамму в оконном режиме.
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Leowey (13.01.2012)
Старый 29.08.2011, 00:14   #10
.Squid
Дэвелопер
 
Аватар для .Squid
 
Регистрация: 06.04.2009
Адрес: Запорожье
Сообщений: 1,500
Написано 1,011 полезных сообщений
(для 4,642 пользователей)
Ответ: Baked Probe Light

Вызов RenderWorld - это не проход. Проход - это когда геометрия отбрабатывается один раз. А на самом деле в недрах рендерера, она обрабатывается всё те же 6 раз.
__________________

(Offline)
 
Ответить с цитированием
Эти 3 пользователя(ей) сказали Спасибо .Squid за это полезное сообщение:
Colossus (07.09.2011), Gector (29.08.2011), moka (31.08.2011)
Старый 29.08.2011, 00:23   #11
Gector
Легенда
 
Аватар для Gector
 
Регистрация: 14.10.2007
Сообщений: 3,878
Написано 2,012 полезных сообщений
(для 5,072 пользователей)
Ответ: Baked Probe Light

Сообщение от .Squid Посмотреть сообщение
Вызов RenderWorld - это не проход. Проход - это когда геометрия отбрабатывается один раз. А на самом деле в недрах рендерера, она обрабатывается всё те же 6 раз.
Okay... Но тут видимо без дополнительного рендера смягчения переходов все равно не сделать.
__________________
Ибо как сказал Бгдн:
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Colossus (29.08.2011)
Старый 02.09.2011, 17:05   #12
Coks
Знающий
 
Регистрация: 29.05.2007
Сообщений: 227
Написано 126 полезных сообщений
(для 312 пользователей)
Ответ: Baked Probe Light

Помню хотели для нашей игрухи такое сделать, но руки не дошли.
Мне так и не удалось запустить! Откуда взять Parser.dll (и зачем он нужен)? Залей хоть заново со всеми нужными причендалами.
(Offline)
 
Ответить с цитированием
Старый 02.09.2011, 18:31   #13
moka
.
 
Регистрация: 05.08.2006
Сообщений: 10,429
Написано 3,454 полезных сообщений
(для 6,863 пользователей)
Ответ: Baked Probe Light

Exe'шку лучше всего прикрепить..
(Offline)
 
Ответить с цитированием
Старый 02.09.2011, 18:41   #14
Gector
Легенда
 
Аватар для Gector
 
Регистрация: 14.10.2007
Сообщений: 3,878
Написано 2,012 полезных сообщений
(для 5,072 пользователей)
Ответ: Baked Probe Light

Сообщение от Coks Посмотреть сообщение
Помню хотели для нашей игрухи такое сделать, но руки не дошли.
Мне так и не удалось запустить! Откуда взять Parser.dll (и зачем он нужен)? Залей хоть заново со всеми нужными причендалами.
Я над этим еще чуток поработаю а потом выложу без парсёра).
Exe'шку лучше всего прикрепить..
Сделаю. Только позже.
__________________
Ибо как сказал Бгдн:
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Часовой пояс GMT +4, время: 11:49.


vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com