Как сделать светящийся объект в unity
Добавил пользователь Евгений Кузнецов Обновлено: 04.10.2024
Приветствую всех друзья! В прошлой статье мы познакомились с тем, как в Unity представлены вращения и ориентация в пространстве игровых объектов. Сегодня мы обзорно поговорим о камерах и типах источников света в Unity. В будущих статьях мы еще вернемся и более детально рассмотрим каждую тему отдельно.
Свет.
Свет является неотъемлемой частью каждой сцены. В то время как модели и их текстуры определяют форму и внешний вид сцены, свет определяет цвет и настроение вашей среды. Скорее всего, вы будете работать с более чем одним источником света в каждой сцене. Чтобы заставить их работать вместе, требуется немного практики, но результаты могут быть удивительными!
Свет можно добавить к вашей сцене из контекстного меню в верхней части редактора по пути GameObject\Light . В появившемся подменю можно выбрать необходимый формат источника освещения. В Unity существует четыре источника освещения, которые мы можем расставить по сцене и пятое, которое работает на всю сцену в целом. В этой статье я вкратце расскажу, что они собой представляют. Позже я также напишу отдельную статью, которая более углубленно расскажет о каждом из них. Итак, начнем:
1. Point Light – это точечный свет который мы можем настроить по радиусу действия. Например, с помощью такого источника освещения мы можем сделать свет для лампочки или факела.
2. Spot Light – представляет из себя направленный конус света, с помощью него можно сделать свет от фонарика или прожектора.
3. Directional Light – представляет из себя направленный источник освещения и имитирует свет от солнца.
4. Area Light – представляет из себя прямоугольник, который светит впереди себя. С его помощью можно сделать, например, свет от телевизора/монитора.
5. Ambient Light – это рассеянный свет который в отличие от остальных видов освещения – присутствует во всей сцене и не исходит от какого то конкретного объекта. Он предназначен чтобы задавать яркость сцене, или же, например, создать настроение светом для нее. Для его настройки перейдите по пути в контекстном меню Window\Rendering\Lighting Settings . Секция Environment Lighting это и есть рассеянный свет. Поиграйте с её настройками, и поймете, как он воздействует на сцену.
Помимо создания готовых игровых объектов со светом, вы также можете добавить источник освещения (он же компонент Light ), к любому игровому объекту, находящемуся на сцене. Для этого нужно выбрать интересующий вас игровой объект и в контекстном меню выбрать Component\Rendering\Light после чего он добавится к компонентам игрового объекта.
Данный компонент имеет множество настроек, которые вы можете увидеть в окне инспектора.
Я создаю приложение iOS в игровом движке Unity.
Я пытаюсь переписать свой шейдер, чтобы материал, использующий его, дал эффект Bloom (Glow) (как компонент Halo).
Пример того, как он должен выглядеть:
Я действительно искал ответ в Интернете, но ничего не нашел для рабочего или подходящего решения моей проблемы.
Мой шейдерный код:
Шейдерная программа - это просто код, используемый для рисования треугольников на экране. Эффекты Bloom - совершенно другой зверь, и это расчеты пространства экрана, которые выполняются после рисования геометрии. Вы не получите эффект цветения, просто изменив шейдер объекта.
Проще говоря, с помощью шейдера вы никогда не сможете рисовать "вне линий", и здесь вам нужно изменить пиксели, находящиеся за пределами объекта. Извините, но это просто не в возможностях шейдера.
Тем не менее, вы можете заставить его работать, внедряя скрипты Image Effect, такие как встроенный эффект цветения. После добавления сценария в камеру и активации HDR-настройки камеры вы можете использовать специальный шейдер, который приведет к сиянию, но не раньше всего.
Как только вы правильно настроили эффект (и включите опцию HDR на камере), теперь вы можете использовать любой шейдер, который возвращает значения, превышающие 1 в пиксельном шейдере, для создания эффекта свечения вокруг объекта. Шейдер, который вы разместили, является старой программой шейдеров. Здесь обновленный код с мультипликатором Glow включал:
Недавно я играл с неоновыми эффектами для игры, которую я делаю, и хотел поделиться с вами своими результатами.
Если у вас есть другие способы достижения этого результата, обязательно поделитесь.
1 ответ
Чтобы добиться этого эффекта, мой друг создал собственный спрайт, мы играли со всякими спрайтами, и вы можете настроить эту часть по своему вкусу. Шейдер, который я написал для этого эффекта, берет спрайт, делает спрайт в оттенках серого, использует цвет, чтобы сделать цветную версию, и использует версию оттенков серого вместе с цветной версией для окраски серых частей.
Прежде всего, ваш спрайт не обязательно должен быть в оттенках серого, но, вероятно, будет лучше для спрайтов в градациях серого. Эффект следа, который я использовал, растягивает спрайт по горизонтали, поэтому создание спрайта по горизонтали вполне необходимо.
Это спрайт, который мы использовали в игре (он встроен в альфа, который необходим для эффекта свечения):
Это шейдер, который я сделал для эффекта:
Вам нужно будет сделать отдельные материалы для каждого цвета по причине того, как Unity работает с шейдерами (если есть способ преодолеть это, пожалуйста, сообщите).
Итак, вы создаете новый материал, выбираете шейдер для этого материала, меняете цвет и ввод спрайта, и у вас есть неоновый эффект.
Несколько советов по улучшению освещения в Unity
Linear Color Space
Для реалистичного рендеринга вашей сцены важно выбрать цветовое пространство. Существенным преимуществом использования линейного пространства является то, что цвета, используемые в шейдерах вашей сцены, будут светиться линейно по мере увеличения интенсивности света.
При использовании цветового пространства Гамма (которое установлено по умолчанию в Unity) цвета начинают превращаться в белый, при интенсивном использовании света, что явно ухудшает качество изображения.
Gamma Color Space
Liner Color Space
Для того чтобы использовать линейное пространственное освещение перейдите в Edit > Project Settings > Player и во вкладке Other Settings вы увидите Color Space, замените на Linear .
Важно! Перед использование линейного пространственного освещения важно знать, поддерживает ли целевая платформа данное цветовое пространство.
Global Illumination (GI)
Глобальное освещение – моделирует отталкивание света от одних поверхностей на поверхности других. Например, при свечении солнца на диван красного цвета, красный цвет будет отскакивать на стену.
Чтобы включить Realtime Global Illumination, перейдите в Window > Lighting > Settings, появится окно Lighting. Откройте вкладку Scene и включите Realtime GI. Вы можете увеличить разрешение, изменив параметр Indirect Resolution.
Важно! Только у статических объектов может быть inderect освещение, поэтому свет не будет отскакивать от движущихся объектов на статичные и наоборот. Тем не менее, они всё ещё могут отражать свет через Light Probes.
Color Harmony
Грамотно подобранные цвета залог атмосферности сцены и качественного освещения. Правильно подбирайте цвета т.к. различные цвета могут резко менять настроение вашей сцены.
Старайтесь использовать более светлые тона т.к. они намного приятнее для глаз и сцена , в целом, будет выглядеть более реалистичной.
Вот несколько цветовых схем для правильного подбора цветов:
- цвета, противоположные друг другу на цветовом круге, считаются комплементарными цветами (например, красный и зеленый).
- аналогичные цветовые схемы используют цвета, расположенные рядом друг с другом на цветном колесе. Они обычно хорошо сочетаются и создают безмятежные и удобные конструкции.
- В трехдиапазонной цветовой схеме используются цвета, которые равномерно распределены вокруг цветового круга.
- Расщепляемая комплементарная цветовая схема является разновидностью дополнительной цветовой схемы. В дополнение к базовому цвету, он использует два цвета, смежные с его дополнением.
- В прямоугольной или тетрадической цветовой схеме используются четыре цвета, разделенные на две дополнительные пары.
- квадратная цветовая схема похожа на прямоугольник, но со всеми четырьмя цветами равномерно распределены вокруг цветового круга.
Post-Processing
Пост-обработка — это процесс применения полноэкранных фильтров и эффектов к изображению камеры, прежде чем изображение будет отображаться на экране.
Пост – обработка значительно улучшить визуализацию вашего продукта с небольшим затратами времени на настройки
Для использования Пост – обработки в своем проекте можно использовать бесплатный пак из AssetStore Post Processing Stack
Помощь в настройке Пост-обработки в своем проекте можно найти здесь.
Ambient Color
Неплохой результат можно получить и при изменении цвета теней
Вы можете сделать это, перейдя в Window > Lighting > Settings, появится окно Lighting. В этом окне откройте вкладку Scene и поставьте Environment Lighting Source на Color. Теперь вы можете изменить Ambient Color на любой другой цвет.
Используйте эти советы и вы придадите своему проекту, при помощи настройки освещения и подбора цветов, реалистичность и атмосферность. Удачных проектов!
Читайте также: