|
|||||||
![]() |
Для удобству быстрогу созиданию...
Возьмем жучиную лампочку L\Light_buglamp_01.nif, у нее удлиненная форма, что позволит точнее ориентировать луч.
А еще позаимствуем плоскость, для спрайта, хотя бы все из того же баннера Храма \f\Furn_banner_temple_01.nif.
Удалям с баннера скининг, оставляем текстурные свойства, альфу и материал.
Вставляем его в файл лампы!
| ||||||||||||||
![]() ![]() |
Где пакуем баннер в Билборд ноду флаг 72.
Ее пакуем с колиженСвитч ноду флаг 8.
Примечание. Упаковка в колижен свитч, не так чтобы сильно нужна, если луч будет скрыт когда лампада лежит в мире.
Но лучше это сделать, во избежание так сказать.
Либо, если планируется делать луч видимым постоянно!
В этом случае, упаковка в колиженсвитч, является обязательной!
Примечание.
Размеры баннера можно менять, через transform->scale vertices.
| ||||||||||||||
![]() ![]() ![]() ![]() ![]() ![]() |
Переходим к настройкам баннера, ака пятна от фонарика!
Флаг альфы 4809 тресхолд 5
Текстурные свойства - Apply Mode->APPLY_REPLACE (это избавит от влияния внешнего освещения)
И указываем текстуру которая будет служить маской.
(белый фон, в альфа канале белое пятно в центре на черном фоне).
Т.е. меняем исходную текстуру баннера, на нашу.
И не забываем изменить цвета материала.
Все цвета выставляем в радикально белый!
Для Гештальту ихнешнегу, или Фени нашего Шуя, добавим свойства тумана!
Флаг 4, плотность 0.8, цвет по вкусу. Т.е. и без этих свойств, альфа будет работать.
Но, чтобы не возникали проблемы в туманную погоду, добавляем свойства тумана!
Если не отключить базовую текстуру результат будет хуже.
Примечание.
Сортинг Офф и No Sorter в фонарике от 1го лица похоже не отрабатываются.
Вероятно дело уже в сортировке объектов в самом графике сцены.
Т.е. установка No Sorter в свойствах альфы и смена режима сортировки при использовании SortAdjustNode никак себя не показали... что такэ странно.
Точнее, показали, но только в виде глюков, которые вряд ли стоит воспроизводить...
Примечание.
См. альфа-трип заметку о влияние Инверсии цвета и кол-ве слоев.
Т.е. для освещения совсем ЧОРНОГО помещения потребуется изменение флагов на инверсию цвета.
Либо отдельным ниф файлом, либо через ЛУА в динамике...
Но в большинстве случаев, будет достаточно использовать 4297, 4809, 5833, или 201 флаги.
Примечание.
Текстурные свойства в режиме APPLY_REPLACE будут предпочтительнее, чем APPLY_MODULATE.
| ||||||||||||||
![]() |
Первый этап готов!
В игре уже будет видно пятно перед лампадой... но, оно слишком низко.
И не внушает вот прям так чтоб совсем!
| ||||||||||||||
![]() ![]() |
Возвращаемся в файл!
И... пакуем, ранее созданную колиженСвитч ноду, в еще одну Билборд ноду флаг 8!
Ее же пакуем в обычную ноду.
Обычная нода нужна для более удобного контроля положения вложенных в нее объектов.
А билборд с флагом 8, фиксирует значение поворота как, Always Face Camera.
Делаем этой ноде смещение X -64.0, Y -20.0 Z 12.0
И поставим поворт, P 12
![]() Меняем scale на 0.5 (поскольку баннер был довольно большой)
Добавляем z-буфер флаг 1.
Возможно флаг 0, или 2, но особой разницы не будет. Хотя для ОпМВ это может оказаться значимым.
Упаковка в еще одну Билборд ноду, нужна для отслеживания смещения камеры игрока, дабы луч реагировал и несколько смещался вслед за ней.
Конечно, можно оставить статичное положение, но в игре, это будет вызывать дискомфорт.
Значение же смещение и поворота, позволяет точнее сместить луч к краю экрана.
| ||||||||||||||
![]() ![]() Да, видна некоторая неоднородность, в размере спрайтов, но за счет правильных альфа свойств, этого будет не заметно.
А луч, будет выглядеть естественнее.
|
Возвращаемся к той самой первой колиженСвитч ноде, внутри которой находится первая Билборд нода.
Копируем ее и... вставляем прямо в состав этой же самой первой колиженСвитч Ноды!
Делаем смещение Х 64.0 и scale 2.
Копируем уже эту ноду и вставляем ее... снова в состав копируемой ноды!
Снова копируем и снова вставляем.
Трех, четырех "спрайтов" будет достаточно.
Да, получается лесенка.
Копируемая нода вставляется в предыдущую ноду наследуя от нее влияние размера и смещение.
Т.е. не придется менять значения смещение Х, т.к. оно просто добавится к уже имеющемуся.
Да, здесь полезно несколько уменьшить масштаб, установив не 2, но 1.2, иначе получим сразу 4х.
Т.е. масштаб этой ноды ставим один. Впрочем, не так чтобы это было обязательно.
Таким образом, создаем "луч".
Узкий у основания (для нод ближайших к лампаде) и расширяющийся в удалении.
Примечание.
Некоторым из вставленных билборд нод, меняем флаг на 40.
Это придаст некоторое дополнительное движение пятну света при движения оного по поверхностям.
Конечно, можно оставить все билборды, как 72, но добавления парочки 40ых флагов, дает более интересный результат. Но если применить 8ой флаг, результат получается, неоднозначным.
Впрочем, это не отменяет возможности использовать и его.
| ||||||||||||||
![]() |
Но, возвращаемся к самой первой колиженСвитч Ноде!
Где меняем поворот на Р90.
Это изменит положения луча собрав его в единое пятно.
Которое, однако, в игре, будет являть свой "конус"!
Который был создан посредством изменения масштаба от меньшего к большему.
Т.е. поворот этой ноды, весьма важен, для правильной работы эффекта относительно обзора игрока!
*в случае создания обычных конусов света от прожекторов, видимых со стороны, этого не потребуется.
И жмем Combine properties!
А если еще и не лениво, то прописать всем шейпам "фильтров" общую шейпдату.
| ||||||||||||||
![]() ![]() ![]() ![]() ![]() ![]() |
Прекрасно, остался один маленький штрих!
А именно, скрыть наш луч! Когда: фонарик лежит на улице, светит от 3его лица и отображается на фоне персонажа в menumode!
Если луч оставить как есть, он будет болтаться вокруг лампады как хомяк на яблоке (при виде со стороны), а если не делать "билборд" ноды, то в игре, луч не будет реагировать на смещение камеры, что вызовет стойкое ощущение дискомфорта. Поэтому луч и следует скрыть!
Делается это все просто!
Читаем здесь. Т.е. вешаем на корневую ноду луча контроллер невидимости с тремя ключами.
Флаг 12, стоп тайм 355.3333
В визДате:
Время 0.0 объект невидим, значения ключа нуль.
Время 0.0667 луч видим, значения ключа 1.
Время 355.3333, снова 0, луч невидим.
В конце анимации находятся группы для инвентаря, поэтому скроем луч. На саму ноду, поставим флаг 3, т.е. она должна быть невидима по умолчанию.
Примечание.
Возможно использование других значений.
Только 2 ключа.
Время 0.0 = 0
Время 0.0667 = 1
Но если с этим возникли не предвиденные проблемы, то использовать полную шкалу времени.
А чтобы луч, совсем точно, не изображал голодающего хомяка, упакуем его основную ноду в еще одну!
Но теперь это будет ЛОД нода!
Дистанция 0-64 и один уровень будет достаточно. Это скроет луч, когда игрок возьмет лампаду в руки от 3его лица (а также и под меню)!
Примечание.
В принципе, за счет ЛодНоды можно сделать смену отображаемой модели луча.
Т.е. 0-64 для вида от 1-го лица.
А 64-512 для вида от третьего.
В этой, второй ноде, создать луч без использования спрайтов.
Например, с использованием текстурной проекции в массиве частиц.
Но в этом случае, использование контроллера невидимости, будет явно необходимо, для предотвращения артефактов под меню на фоне персонажа!
Итого.
- ЛодНода позволяет устранить артефакт под меню и скрыть эффект от 3его лица.
- Контроллер невидимости, скрывает луч, когда фонарик выложен в мир, а также устраняет артефакт под меню.
Собственно все!
Идем в игру, смотреть что вышло! | ||||||||||||||
|
| ||||||||||||||
|
Примечания!
Примеры моделей можно найти здесь:
\@_Notes_for_Modmaking\@_Notes_for_Modmaking_ver.Х.Х(video_only)\
Additional_Files\Tours\@How_To\NiAlphaProperty\nif
Лампы в ассортименте.
- выглядит так, что APPLY_REPLACE в текстурных свойствах позволяет использовать только смешивание без включения тестирования в свойствах альфы.
- включение тестирования необходимо, если используется APPLY_MODULATE.
Значение тестирования ограничить 10 ед. или меньше, 5-6.
- здесь стоит обратить внимание, что контроль цвета "фонарика", следует производить по средством смены цвета пятна в текстуре, а не через настройки материала.
Т.е. цвет материала играет крайне малую роль и не влияет на оттенки, особенно для режима APPLY_REPLACE!
Для APPLY_MODULATE влияет только цвет Emissive Color.
- также, стоит помнить, что для дарк текстуры, фон, должен быть всегда белым!
Лишь цвет самого пятна следует менять, но не цвет фона! Альфа канал остается без изменений.
![]() - белое пятно фонарика.
- золотистое пятно фонарика.
- контроллер невидимости, не является обязательным.
Достаточно применить Лод Ноду.
Т.е. использование контроллера невидимости, нужно в основном, для выключения лампады в выложенном состоянии, а не для избавления от артефактов под меню.
Да-да! Если луч не скрыть в режиме инвентаря, то будет виден артефакт.
Белые квадраты перекрывающие аватар персонажа!
Это проблема связанная с рендерингом текстуры, через которое сделано это отображение. Т.е. этот метод имеет некоторые проблемы с рендерингом прозрачности.
- Использование сортАджустНоды с флагом 64 не определено.
т.е. упаковать в нее "луч" можно, но особой пользы от этого не наблюдается. Т.е. фонарик может прекрасно обходиться и без использования этой ноды.
*Достаточно свойств альфы и текстуры в дарк слоте.
- яркостью пятна можно дополнительно управлять через трафареты.
Отмечено несколько настроек позволяющие делать пятно более "призрачным", так и наоборот усиливать насыщенность пятна в разы. См. далее.
- если добавить Глоу карту, яркость можно задрать еще выше и страшнее!
- изменения режима текстурных свойств на APPLY_MODULATE, или APPLY_DECAL, не показали заметного изменения яркости пятна света.
Но это влияет на общее отображение "эффекта" см. выше!
- было высказано наблюдение, что изменения мощности света самой лампады, в игре (256 вместо 128), способно повышать заметность (яркость) пятна фонарика в особо темных локациях.
- здесь надо помнить, что само по себе, альфа свойство, не является освещением, но лишь усилителем для доступного в игре уровня яркости, который регулируется, в т.ч. уровнями освещенности локации.
- также, яркость засветки напрямую зависит от текстур на которые попадает "луч".
Светлые текстуры будет засвечены в разы сильнее, чем темные.
![]() - серебряный меч с детайл картой аж весь сияет.
- равно как и энверомент карта на руке скелетного чампиона.
- но стена и мантия, не разделяют их "восторга" лишь слегка повышая яркость.
- если требуется создать дополнительные анимации (например смена цвета материала, или движения текстуре) следует добавлять бсАнимНоду в состав билборд нод.
Либо, прямо в состав ЛодНоды. Т.е. первая и единственная нода в составе ЛодНоды, будет бсАнимНода.
- основная нерешенная проблема, это дальность луча.
Т.е. простыми способами не получается это исправить.
Т.е. луч прекрасно выглядит в помещениях, но стоит выйти на улицу, как он превращается во второе солнце Нирна, засвечивая сами небеса!
Также, не вполне логично выглядит поведение в длинных коридорах, луч, не уменьшается с расстоянием, но наоборот набирает яркость и увеличивает площадь.
- Решить это посредством трафаретов не выходит, т.к. график сцены от 1го лица имеет свои z-буфера и рисуется поверх сцены, чем не позволяет нормально считать условия для просчета глубины и прочего.
Впрочем, простейший ЛУА скрипт, отключающий луч на улице, мог бы быть самым легким решением этой "проблемы".
Либо можно думать, что Неревар настолько крут, что его фонарик способен пронзить самые небеса Нирна. ^-^
- Также, от 1-го лица, не срабатывают и noSorter флаг альфы.
С использованием этого флага, можно было бы добиться исчезновения луча, по крайней мере, на поверхности земли, или других объектах с альфа свойствами... но нет, не срабатывает.
Был проверен 13001 флаг.
Однако, если это использовать в обычных светильниках, это будет работать!
Чем можно добиться определенных интересных эффектов. Примечание.
Возможно в ОпенМВ 0.49 версии этих проблем не существует, в силу иной организации графиков сцен.
Т.е. не возникает засветки неба и трафареты могут работать от первого лица "из коробки". Без шаманств с ЛУА т.е.
Выглядит так, что этот эффект, засветки объектов посредством правильного флага альфы, хорошо использовать при создании статических объектов, размещаемых вокруг источника света и создающих ощущение большей яркости оного.
Также, при наложении (через ЛУА) плоскости с такими настройками на камеру игрока, можно получать дешевый ПНВ (цвет можно менять как было показано раньше).
| ||||||||||||||
И еще..
Кроме ореолов в светильниках ничто не мешает применить эффект в фаерболах и магических стрелах, правда?
Т.е. простой спрайт с подобными настройками, будет выполнять роль замечательной "лампочки" подсвечивая зону пролета магической стрелы (из лука)! Без всяких шаманств с ЛУА, или иных танцев с бубнами.
А еще...
Еще, если как-то преодолеть проблему трафаретов от 1го лица, можно сделать еще более интересный "квестовый" фонарик!
Т.е. если задать настройки объектам в некоторой локации, отображаться только на фоне луча фонарика!
При этом, только на каком-то одном из его спрайтов. Таким образом можно получить совершенно чОрную комнату, в которой ничего не будет видно, если не подсвечено фонариком.
Но сами коллизии объектов, будут отрабатываться корректно.
А если добавить существ, с такими настройками...
Конечно, кроме фонарика, можно использовать и другие предметы для создания подобной уникальной локаци...
| |||||||||||||||
Примеры настройки трафаретов для изменения яркости луча.
| |||||||||||||||
Примечание.
Для решения проблемы отображения луча при использовании трафаретов и включенных (оригинальных) пиксельных шейдеров, следует добавить в модель еще одну плоскость с дополнительными настройками трафаретов!
При этом, сама плоскость может быть немного в стороне от основных (фильтров).
т.е. ей не обязательно с ним взаимодействовать на всей площади. Но, конечно, будет более правильным, разместить ее перед фильтрами на всю их площадь.
Если трафареты (на основных фильтрах) не используются, нужды в этой плоскости нет.
| |||||||||||||||
![]() TEST_GREATER_EQUAL
ACTION_INCREMENT во всех слотах.
EQUAL - используется в т.ч. дабы решить проблему отображения трафаретов на фоне воды с ванильными шейдерами. А также получить более интересные результаты.
|
![]() получается мягкое "призрачное" освещение.
В потьмах не очень ярко, но на более светлых участках эффект хорошо заметен.
| ||||||||||||||
DRAW_CCW_OR_BOTH иACTION_REPLACE во всех слотах.
|
![]() эффект более четкий и яркий. Классический фонарик с повышенной яркостью.
| ||||||||||||||
DRAW_BOTH при ACTION_REPLACE
Т.е. отрисовка на обе стороны сразу ЗНАЧИТЕЛЬНО повышает яркость.
|
![]() Самый яркий вариант.
| ||||||||||||||
Фонарик без трафаретов.
Получается где-то на уровне ACTION_REPLACE без DRAW_BOTH.
|
![]() | ||||||||||||||
А это сами плоскости спрайтов.
Серая с трафаретом NEVER, используется для решения проблемы с водой при включенных пиксленых шейдерках.
А белые, плоскости, это спрайты луча "фонарика"
|
![]() |