×
Меню
Индекс

Heads with billboard eyes via stencils using

 
Метод в целом аналогичен описанному здесь. Или здесь.
Т.е. создаем "экран" и то что на нем будет отображаться.
 
В данном случае это будут:
- сетка головы (серая).
- отдельные сетки для "экрана" (желтые), на которые будут проецироваться модели глаз.
"экраны" можно detach от основной головы в качестве нового объекта, т.е. дырку в сетке головы делать не обязательно.
"Экраны" т.е. полигоны между веками могут использовать общую с базовой головой текстуру.
Что позволяет полностью маскировать щели, между глазным яблоком и веком.
Либо использовать свою уникальную текстуру, это по вкусу.
- экраны немного сдвигаем вперед относительно базовой сетки.
- и две сферы (красные), которые получают текстуру глаза, они будут проецироваться на "экраны".
- сферы помещаются внутрь сетки головы. Важно разместить их как можно ближе к экранам!
Иначе в игре, глаза будут слишком сильно реагировать на смещение камеры.
Т.е. реакция поворота глаза прямо зависит от его положения (точки опоры).
 
Полученную модель загружаем в нифскоп и добавляем необходимые свойства.
- свойства трафарета, на "экраны", сетку головы (это важно) и сферы глаз.
- глазные яблоки помещаем в билборд ноду.
Опционально можно наложить текстурные эффекты по вкусу.
- zbuffer флаг 2 только на сферы глаз.
 
Собственно и все.
Проверяем в игре, если глаза реагируют слишком сильно, слегка двигаем глазные яблоки (вперед или назад).
 
Глазные яблоки.
 
+ z-buffer flag 2.
 
*примерные свойства трафарета, т.е. флаг stencil ref может быть любым.
"Экраны".
 
Флаг ref должен совпадать!
Сетка головы.
 
Флаг ref должен совпадать для всех объектов в сцене.
 
+ z-buffer flag 3.
 
Эти свойства будут блокировать "пробитие"
 
Примечание.
Свойства трафарета на сетке головы, обязательны.
Это позволяет обходить проблемы с "пробитием" через z-buffer.
см. скрины внизу страницы.
 
Примечание.
Описанный здесь метод, возможно, подходит для ограниченного использования.
Т.е. трафареты могут взаимодействовать между собой.
Отчего, другие объекты также имеющие сложно настроенные свойства трафарета, могут нарушать работу друг друга.
Особенно это касается глобального уровня воды.
И если в помещении такие головы будут работать исправно, то в экстерьерах могут начинаться проблемы.
 
Примечание.
Также, одинаковый флаг Stencil ref для разных моделей голов, будет приводить к наложению.
Т.е. когда глаза одной головы, могут быть видны через всю стену, в глазах другой головы!
Впрочем, учитывая, что глаза довольно маленькие объекты, это не должно быть сильно заметным.
 

Общие настройки модели.
 
И так оно выглядит в нифскопе, это правильно, т.к. z-буфер флаг2.
В редакторе, на НПС.
В редакторе отдельно в качестве бодипарта.
 
В игре, в интерьере.
Заметно, что глаза смещаются несколько сильнее чем следует.
Можно подвигать biBilboardNode в которые были помещены глазные яблоки.
Сами сферы, двигать нельзя!
 
 
И в игре, в экстерьере...
С этого ракурса все нормально... ну почти.
Но стоило немного сместить камеру, как:
И вот оно пробитие!
Глобальный уровень воды сделал свое мрачное дело, написал еще всякого разного в стенсильный буфер!
Здесь, сетка головы не содержит настроек трафарета.
 
Стоило их добавить, как проблема (в целом) была решена.
Пробитие перестало происходить.
 
При любом ракурсе относительно поверхности воды, глаза работают нормально.
 
Увы, это не значит, что не могут возникнуть какие-то иные условия при которых они снова вылезут.
Т.е. взаимодействие стенсильных свойств между собой зависят от многих факторов, в т.ч. порядка рисования объектов в сцене.
Который может быть нарушен по тем, или иным причинам.