Comments 8
— Скажите, это, стало быть, любую стенку можно так убрать? Вашему изобретению цены нет, гражданин интеллигент!
Вообще, вариант когда текстура с просветом повторяет форму стены смотрится очень даже интересно, равно как когда "нагоняет" персонажа -- интересные механики поверх этого возможны, уровня "не спеши, а то успеешь"... :)
Финальный результат смотрится как... Как везде? Просто очень хорошо, но изюму больше нет
Принимаются запросы? Был бы рад увидеть ваше виденье системы тумана войны, очень понравилось что с разных сторон посмотрели на задачу. Буду признателен!
Привет! Крутая статья, искал долго подобное решение. Подскажи ещё пожалуйста, как же при кастом ноде наложить движущуюся текстуру на маску? В случаи с методом из видика у нас была возможность это просто сделать, т.к Sphere Mask имела растушевку, а тут мы имеем жесткий трафарет круга. Спасибо за статью!
Спасибо за положительный отзыв! Касательно вопроса: на самом деле в рамках рассмотренного материала между SphereMask и кастомной нодой нет принципиальной разницы. Фактически, это просто разные реализации фильтра, определяющего какие пиксели рисовать, а какие просвечивать. Поэтому добавление дополнительных эффектов для них практически аналогично. Например, если просто скопировать часть с дополнительной текстурой в финальную версию функции с кастомной нодой, получим такой результат (еще надо не забыть подключить в материале новые входные параметры для функции)
Спасибо! Во время модерации комментария хабром допетрил до идеи с кастомной маской) Сейчас бьюсь над решением, чтобы включение/отключение маски было локально у нужных моделей, а не на всех с данной функцией в материале. Понимаю почему так, т.к используется коллекция параметров материала. Пробую сделать сейчас это через Custom Primitive Data, заменив MPC на скаляр с включенной Use Custom Primitive Data. Но дальше образовалась проблема, что он включает прозрачность у конкретных статик мешей, но не отключает её при сбрасывании трейса с предыдущей модели. Я так понимаю, по хорошему нужно записывать массив компонентов на которые действует маска, а после выписывать их из массива с дальнейшим переключением ShouldApplyCollision если персонаж не находится за объектом.
Если есть какие-то мысли по этому поводу -- буду рад обсудить!
Как я писал в статье, в игре мы разработали достаточно комплексную систему. Про нее можно отдельную статью написать. Но концептуально подход следующий: просвечиваемые объекты являются акторами определенного класса. На персонаже есть компонент, ищущий по направлению к камере все просвечиваемые объекты, которые должны быть просвечены и "помечающий" их. Под "помечанием" имеется в виду выставление дополнительного bool параметра в Dynamic Material Instance на акторе. С акторов, которые были помечены, но сейчас не должны просвечивать, метка снимается (в компоненте на персонаже на тике сверяется список акторов которые должны быть просвечены и которые действительно просвечены)
Можно подумать в этом направлении. Хотя, конечно, не претендую на то, что это единственное подходящее решение.
Occlusion masking: просвечиваем стены в Unreal Engine