×
Меню
Индекс

Создание порталов

 
Небольшая заметка о создании "порталов" и скрытых областей посредством настроек альфы в объекте.
Также, можно использовать для создания "дыр" в лендскейпе, через которые можно будет видеть некоторые локации.
Разумеется, помещения придется создавать отдельно.
 
Можно, в принципе, создавать и зеркала в стиле DuesEX1.
*Хотя перемещение объектов и игрока придется создавать сложными скриптами.
Впрочем это возможно. Как создание зеркал, так и создания телепортов показывающих участок некоторой локации
в которую будет "переходить" игрок.
Впрочем, для этого, будет лучше воспользоваться свойствами трафарета, которые позволят более точно размещать объекты без опасности, что в них упрется игрок, если войдет во внутрь маскирующей капсулы.
Однако, при всех плюсах метода с трафаретом, использование метода по альфе более стабильно.
Оно не чувствительно к порядку иерархии объектов в файле и в сцене, а также работает с любыми объектами содержащими альфа свойства. Без необходимости создания оным взаимных связей.
 
Практические примеры использования "портальных" и "маскирующих" капсул можно посмотреть в плагинах:
- Hide Your Treasures.
https://www.nexusmods.com/morrowind/mods/46270
Это плагин пример, использующий множество скрытых зон в одной локации, для демонстрации этой техники.
 
- Expedition to Mzelthuand
https://www.nexusmods.com/morrowind/mods/45229
Здесь портал в прямом смысле.
Это серьезный игровой плагин с квестом и множеством моделей.

Собственно все довольно просто, создается своего рода капсула из шейпа, внутрь которого помещаются некоторые другие объекты, также имеющие альфа канал, но с иными свойствами альфы.
В результате происходит "вычитание" одной альфы из другой, что делает вложенные объекты невидимыми.
 
Простейший тестовый стенд.
 
 
- фильтрующая капсула с "отверстием".
- вложенные объекты, которые блокируются фильтром и видны только в "отверстии".
- "отверстие" (в данном случае) закрыто "стеклом" - плоскостью с обычными свойствами альфы, которые никак не взаимодействуют ни с "капсулой" ни с "объектами".
Дополнительно был добавлен текстурный эффект в режиме EFFECT_FOG_MAP.
Который умеет работать по полностью прозрачному объекту.
В результате получился простейший портал.
 
Примечание по флагам.
- 8705 наиболее подходящий для "прячущих" объектов.
- 11777 хорошо подходит для "капсул".
- 12813 довольно универсальный флаг.
В ряде случаев обязательно наличие высокого уровня фильтрации текстуры.
Threshold не ниже 20! 100, или 200.
Наличие альфа канала в текстуре, как правило, обязательно.
Впрочем, можно создавать модели и с текстурами без альфа-канала, просто закручивая уровень Threshold на 255.
 
Увы, есть и побочный эффект.
А именно скрытие некоторых игровых объектов.
Как с альфа-каналом, так и без оного.
Причина отсечения дверей не вполне понятна.
Они не имеют альфа свойств, ни z-буфера.
Игрок стоит на границе помещения, но (пока) видит перед собой только пустоту и половинку фонарика, который  отсекается "фильтровальной" плоскость.

Что, однако, позволяет использовать этот побочный эффект, как средство для создания маскирующих объектов!
Или собственно порталов в полном значении этого слова!
Добавив анимацию текстурам и какие нибудь эффекты частиц, для солидности!
*обратите внимание, что модели мантий видны через портал!
Для их скрытия нужно применить другой флаг альфы. Так что, существует возможность скрывать практически все.
 
Двери не исчезли.
Возможно дело во флагах альфы портала, либо в организации оного. Плоскость не дает отсечения сама в себе.
Но куб, имеющий пересечение своих плоскостей сам в себе - оказывает эффект отсечения на прочие игровые объекты.
Например вот-так. Изменения флага альфы позволила создать весьма забавный эффект скрытия!
 
Текстура передвигается по объекту посредством UV контроллера.
 
По видимости существа и НПС скрываются всегда, вне зависимости от альфа свойств в своих оболочках.
К сожалению побочный эффект фильтрации всего прочего с альфой делает затруднительным использование этих объектов вне помещения. Т.е. лендскейп содержит альфу и отсекается при взгляде не него через "маскирующие" объекты.
 
Впрочем при правильной установки таких объектов, этого можно легко избежать.
Есть и другой нюанс - АИ существ и НПС не будет видеть Игрока за такими объектами!
Это связано с работой АИ по определения препятствий.
Поэтому сделать выпрыгивающего на игрока из воздуха вражеского врага, без доп скриптов, не получится.
Однако можно сделать неплохой эффект телепортации!
Существо, или объект будет появляется постепенно, т.е. сверху вниз, или наоборот.
В зависимости откуда будет двигаться маскирующий объект.
Это легко сделать с помощью морфинга в 3д МАХ.
Опять же, к сожалению, работает не идеально и производит наложение на прочие объекты с альфой, но все равно, дает возможность по созданию очень интересных и "технологичных" эффектов.
 
Пример такого использования можно видеть в Симфонии.
Призываемое существо появляется не вдруг, но постепенно.
 
Все это позволяет создавать занятные эффекты!
Как можно видеть на этих скриншотах.
По идее, можно создать камуфляж Хищника, или существа видимые только на фоне объектов содержащих альфу и совершенно не различимые на фоне стен.
 

Флаги фильтрации альфы.
Т.е. методы  тестирования альфа-канала.
В данном случае был создан тестовый меш для наглядного сравнения разных методов тестирования альфы.
Как результат, была определена четкая зависимость номера флага от метода тестирования.
 
4х - Greater без флага No sorter.
8-9х - метод Тестирования альфы Always с флагом No Sorter 1
11-12х - тестирование Less or Equal с флагом No Sorter 1
12-13 - Greater с флагом  No Sorter 1
Как можно видеть на скринах, только одним изменением метода тестирования Альфы можно получать совершенно различные результаты работы одной и той же текстуры!
Флаги до 1000 идут для Альфы без тестирования.

ИДЕ шейпа = флагу альфы.
Флаги создавались последовательным комбинированием Source Blend Mode и Destination Blend Mode.
При постоянном Alpha Testing и т.п.
Source Blend Mode и Destination Blend Mode - выбирались значения касающиеся только альфы!
Смешивание по Color не использовалось.