Как стать автором
Обновить

Комментарии 8

— Скажите, это, стало быть, любую стенку можно так убрать? Вашему изобретению цены нет, гражданин интеллигент!

Вообще, вариант когда текстура с просветом повторяет форму стены смотрится очень даже интересно, равно как когда "нагоняет" персонажа -- интересные механики поверх этого возможны, уровня "не спеши, а то успеешь"... :)

Финальный результат смотрится как... Как везде? Просто очень хорошо, но изюму больше нет

Да, соглашусь, что у всех вариантов есть свои изюминки. Как раз постарался в статье не просто сделать один "правильный" вариант, а описать и показать разные подходы, чтобы каждый мог сделать ту версию, которая подходит его игре лучше всего

Принимаются запросы? Был бы рад увидеть ваше виденье системы тумана войны, очень понравилось что с разных сторон посмотрели на задачу. Буду признателен!

Благодарю за интерес! Насчет тумана войны как раз есть интересный кейс с созданием системы ограничения обзора. Постараюсь его тоже описать когда будет возможность

Привет! Крутая статья, искал долго подобное решение. Подскажи ещё пожалуйста, как же при кастом ноде наложить движущуюся текстуру на маску? В случаи с методом из видика у нас была возможность это просто сделать, т.к Sphere Mask имела растушевку, а тут мы имеем жесткий трафарет круга. Спасибо за статью!

Спасибо за положительный отзыв! Касательно вопроса: на самом деле в рамках рассмотренного материала между SphereMask и кастомной нодой нет принципиальной разницы. Фактически, это просто разные реализации фильтра, определяющего какие пиксели рисовать, а какие просвечивать. Поэтому добавление дополнительных эффектов для них практически аналогично. Например, если просто скопировать часть с дополнительной текстурой в финальную версию функции с кастомной нодой, получим такой результат (еще надо не забыть подключить в материале новые входные параметры для функции)

Из-за градиента шум не очень бросается в глаза, но рассмотреть можно
Из-за градиента шум не очень бросается в глаза, но рассмотреть можно

Спасибо! Во время модерации комментария хабром допетрил до идеи с кастомной маской) Сейчас бьюсь над решением, чтобы включение/отключение маски было локально у нужных моделей, а не на всех с данной функцией в материале. Понимаю почему так, т.к используется коллекция параметров материала. Пробую сделать сейчас это через Custom Primitive Data, заменив MPC на скаляр с включенной Use Custom Primitive Data. Но дальше образовалась проблема, что он включает прозрачность у конкретных статик мешей, но не отключает её при сбрасывании трейса с предыдущей модели. Я так понимаю, по хорошему нужно записывать массив компонентов на которые действует маска, а после выписывать их из массива с дальнейшим переключением ShouldApplyCollision если персонаж не находится за объектом.

Если есть какие-то мысли по этому поводу -- буду рад обсудить!

Как я писал в статье, в игре мы разработали достаточно комплексную систему. Про нее можно отдельную статью написать. Но концептуально подход следующий: просвечиваемые объекты являются акторами определенного класса. На персонаже есть компонент, ищущий по направлению к камере все просвечиваемые объекты, которые должны быть просвечены и "помечающий" их. Под "помечанием" имеется в виду выставление дополнительного bool параметра в Dynamic Material Instance на акторе. С акторов, которые были помечены, но сейчас не должны просвечивать, метка снимается (в компоненте на персонаже на тике сверяется список акторов которые должны быть просвечены и которые действительно просвечены)
Можно подумать в этом направлении. Хотя, конечно, не претендую на то, что это единственное подходящее решение.

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории