Войти
ПрограммированиеФорумГрафика

Проблема последнего уровня LOD

Страницы: 1 2 3 Следующая »
#0
17:05, 1 июня 2013

Как известно, последним уровнем LOD является биллбоард, с нарисованной на нём моделью.
Есть два вопроса по нему:
1. как его лучше создавать? Пусть дизайнер вручную возится, "фотографируя" модель в просмотровщике или движок должен создавать его самостоятельно?
2. достаточно параллельного спрайта или переключать несколько статичных изображений в зависимости от угла обзора игрока (наиболее близкий пример - монстры в первом Doom, реализация в качестве последнего уровня LOD - в сталкере).
И вдогонку - как его лучше хранить? В том же сталкере эти изображения привязываются к конкретному игровому уровню, хотя мне кажется, что логичнее было бы содержать внутри самой модели.
Ваши мнения?


#1
17:13, 1 июня 2013

Хранить в общем массиве лодов, как обычную модель (это же квад, т.е. модель обычная с материалом/шейдером биллбордным). И лучше, чтобы текстурку для этой модели сделал дизайнер. ИМХО

#2
17:22, 1 июня 2013

g-cont
> 1. как его лучше создавать? Пусть дизайнер вручную возится, "фотографируя"
> модель в просмотровщике или движок должен создавать его самостоятельно?

Движок самостоятельно производит рендер объекта в какой-то квад.

g-cont
> 2. достаточно параллельного спрайта или переключать несколько статичных
> изображений в зависимости от угла обзора игрока (наиболее близкий пример -
> монстры в первом Doom, реализация в качестве последнего уровня LOD - в
> сталкере).

В зависимости от расстояния думать. Если совсем далеко, то, думаю, просто отрисованный раз в N кадров объект с самым низким уровнем детализации сойдет.

#3
17:26, 1 июня 2013

ai-music
> Хранить в общем массиве лодов, как обычную модель (это же квад, т.е. модель
> обычная с материалом/шейдером биллбордным).
Модель размером в четыре вершины? Не жирно будет? Отрисовкой таких ЛОДов должен заниматься менеджер частиц, а не моделей.

#4
19:12, 1 июня 2013

g-cont
> Как известно, последним уровнем LOD является биллбоард, с нарисованной на нём
> моделью
Да и вовсе не обязательно.

#5
20:18, 1 июня 2013

-Eugene-
Эм, нет. Не вершины, а сама текстуру. Не  рендерить же её каждый раз при загрузке уровня.

#6
20:18, 1 июня 2013

PlayerDark
необязательно, но на больших сценах - крайне желательно.

#7
20:33, 1 июня 2013

g-cont
Я еще не видел современных игр, в которых бы так было сделано.

#8
20:58, 1 июня 2013

PlayerDark
Деревья почти Везде так.

#9
21:13, 1 июня 2013

PlayerDark
> Я еще не видел современных игр, в которых бы так было сделано.
в Сталкере валялись подозрительные спрайты разных моделек типа грузовиков, тракторов, с разных сторон.

#10
21:22, 1 июня 2013

Mr F
> > Я еще не видел современных игр, в которых бы так было сделано.
> в Сталкере валялись подозрительные спрайты разных моделек типа грузовиков,
> тракторов, с разных сторон.

Угу. Это та самая замена - не хрена рисовать трактор вдалеке когда можно спрайтик кинуть

Точно помню - началось с камаза - смотрю - хопа и моделька стала спрайтиком

#11
22:44, 1 июня 2013

>>Деревья почти Везде так.
>>в Сталкере валялись подозрительные спрайты разных моделек типа грузовиков, тракторов, с разных сторон.
ну собственно да - про них и речь

Кстати любопытен сам факт перехода в спрайт. В демке Uingine этим делом заправляет специальный шейдер, а в сталкере простая distance-based подмена.

Есть товарищи, которые в своих движках уже реализовали такое? Поделитесь опытом по вопросам в шапке темы.

#12
22:47, 1 июня 2013

g-cont
> Кстати любопытен сам факт перехода в спрайт. В демке Uingine этим делом
> заправляет специальный шейдер, а в сталкере простая distance-based подмена.

В Unigine какой-то частный случай ... В общем - никаким шейдером не сделаешь

#13
23:53, 1 июня 2013

g-cont
Я делал почти как в унжине, были недостатки, а в самом унжине весьма хороший способ мягкого перехода, такой хрен сделаешь по другому.

#14
0:20, 2 июня 2013

Речь идет об импосторах (Impostor/Imposter). У меня реализовано следующим образом. Так как одна и та же модель,  для каждой сцены может имет разный набор характеристик, то она имеет только флажок - использовать импосторы последним лодом (точнее расстояние, на котором использовать).  На старте движок пробегается по всем моделям, у кого есть дистанция импостора, проверят, созданы ли текстуры импостора для этой модели (их несколько: диффуз, нормал, емессив+спекуляр). Если нет - создается. Ставим модель в нуль, и обходим камерой вокруг с заданным шагом, используя соответствующие шейдеры. Сохраняем. Получается что-то типа этого (диффуз):
IG_6100_tower_start_02_Impostor_0_256 | Проблема последнего уровня LOD

Далее, когда загружается эта модель, создается ЛОД с билбордом и шейдером, который в зависимости от вращения объекта, положения камеры и объекта (углов "паралакса") находит смещение в текстуре импостора. Также присутствует хитрый блендинг между лодами и между снимками импостора.

Надеюсь я ответил на вопросы.

Страницы: 1 2 3 Следующая »
ПрограммированиеФорумГрафика

Тема в архиве.