Как сделать темноту в юнити

Как сделать полную темноту в Unity3D?

Все руководства на эту тему говорят о том, что нужно Ambient Color в Lighting Setting выставить на черный.

Сделал, но освещение все равно осталось (это видно и по комнате без источников освещения, и по фону):

Как сделать темноту в юнити. Смотреть фото Как сделать темноту в юнити. Смотреть картинку Как сделать темноту в юнити. Картинка про Как сделать темноту в юнити. Фото Как сделать темноту в юнити

Какие еще настройки нужно подкрутить, чтобы была полная темнота в сцене?

P.S. Версия Unity 2019.1

Написано же прямо на скриншоте, Generate Lighting надо нажать.
Ещё: тебе точно нужно и Realtime GI, и Baked GI одновременно?

> Написано же прямо на скриншоте, Generate Lighting надо нажать.

Нажимал, ничего не изменилось

> Ещё: тебе точно нужно и Realtime GI, и Baked GI одновременно?

Отключи Directional Light.

> Отключи Directional Light.

В сцене отсутствуют источники освещения типа Directional Light, только Point Light

В смысле? Много всяких.

Walk
> В смысле? Много всяких.
Шейдеры какие на материалах?

BooTheJudge
> Шейдеры какие на материалах?
Везде Standart

У вас запеченый свет, нажмите снова Generate Lighting. Изменив настройки, надо запекать по новой..
Или включите автоматически. Потом перед экспортом вернёте обратно, как настроите правильный свет.

Как вариант, можно поставить туман черного цвета с высокой плотностью.
+ на камеру эффект цветокоррекции с повышенной контрастностью.

BooTheJudge
> Попробуй их выключить, и снова перегенерировать свет. Такое чувство, что
> однородный свет всё же из лайтмап берётся.

Источник

Как включить тёмную тему редактора Unity (обновлено)

Как сделать темноту в юнити. Смотреть фото Как сделать темноту в юнити. Смотреть картинку Как сделать темноту в юнити. Картинка про Как сделать темноту в юнити. Фото Как сделать темноту в юнити

Приветствую, решился написать об одной наболевшей проблеме, которая затрагивает многих начинающих юнитиводов с ограниченным бюджетом, да и не только. Больше шести лет уже люди просят тёмную тему редактора Unity сделать бесплатной, но как мы видим, воз и ныне там.

Подготовка

Предполагается, что Unity уже установлен. Иначе зачем любопытный %UserName% читает эту статью? Обычно исполняемый файл редактора 64-битной версии Unity располагается по пути:

Будем использовать этот путь для примера, поэтому скорректируйте под свою ситуацию в случае отличия. Настоятельно рекомендую сделать резервную копию! Чтобы потом не терять время на переустановку или поиск оригинального файла если пойдёт что-то не так, как задумано:

Затем скачиваем и распаковываем себе в любое удобное место x64dbg из раздела Releases. На момент написания статьи, самой новой была версия «snapshot_2017-12-26_13-39.zip». Запускаем x64dbg с помощью лаунчера x96dbg или же напрямую из его подкаталога:

Как сделать темноту в юнити. Смотреть фото Как сделать темноту в юнити. Смотреть картинку Как сделать темноту в юнити. Картинка про Как сделать темноту в юнити. Фото Как сделать темноту в юнити

Меняем одно условие

Итак, пришла пора действовать. Открываем меню File => Open (также горячая клавиша F3 или первая пиктограмка на панели инструментов) и шагаем в каталог установленного Unity, выбираем всё тот же исполняемый файл редактора «Unity.exe» о котором упоминалось выше, получим примерно следующее:

Переходим на вкладку Symbols и слева в списке модулей выбираем unity.exe:

Как сделать темноту в юнити. Смотреть фото Как сделать темноту в юнити. Смотреть картинку Как сделать темноту в юнити. Картинка про Как сделать темноту в юнити. Фото Как сделать темноту в юнити

Интерфейс может чуток притормаживать при обработке больших списков, поэтому терпеливо пишем в поле Search строку «GetSkinIdx»:

Как сделать темноту в юнити. Смотреть фото Как сделать темноту в юнити. Смотреть картинку Как сделать темноту в юнити. Картинка про Как сделать темноту в юнити. Фото Как сделать темноту в юнити

Двойным кликом по строке результата поиска переходим по его адресу на вкладку CPU:

Как сделать темноту в юнити. Смотреть фото Как сделать темноту в юнити. Смотреть картинку Как сделать темноту в юнити. Картинка про Как сделать темноту в юнити. Фото Как сделать темноту в юнити

Здесь нас интересует инструкция jne. Опять таки двойным кликом по ней открываем диалоговое окно, в котором меняем эту инструкцию на je, остальное не трогаем:

Как сделать темноту в юнити. Смотреть фото Как сделать темноту в юнити. Смотреть картинку Как сделать темноту в юнити. Картинка про Как сделать темноту в юнити. Фото Как сделать темноту в юнити

После применения правки, открываем контекстное меню и выбираем Patches (Ctrl+P):

Как сделать темноту в юнити. Смотреть фото Как сделать темноту в юнити. Смотреть картинку Как сделать темноту в юнити. Картинка про Как сделать темноту в юнити. Фото Как сделать темноту в юнити

При помощи кнопки Patch File сохраняем новый Unity.exe временно куда-нибудь, потому что текущий файл занят отладчиком:

Как сделать темноту в юнити. Смотреть фото Как сделать темноту в юнити. Смотреть картинку Как сделать темноту в юнити. Картинка про Как сделать темноту в юнити. Фото Как сделать темноту в юнити

Проверка результата

Поздравляю, всё выполнено успешно. Остаётся лишь закрыть отладчик и перезаписать оригинальный Unity.exe тем файлом, который сохранили при помощи Patch File. Убедиться в том, что не затронули случайно чего лишнего, можно сравнив по содержимому резервную копию с новым файлом, должен отличаться только один байт и больше ничего:

Как сделать темноту в юнити. Смотреть фото Как сделать темноту в юнити. Смотреть картинку Как сделать темноту в юнити. Картинка про Как сделать темноту в юнити. Фото Как сделать темноту в юнити

Запускаем и наслаждаемся тёмной темой оформления:

Как сделать темноту в юнити. Смотреть фото Как сделать темноту в юнити. Смотреть картинку Как сделать темноту в юнити. Картинка про Как сделать темноту в юнити. Фото Как сделать темноту в юнити

Вполне вероятно, что в Unity перепрячут тёмную тему и описанный тут метод перестанет работать. Но как известно, против лома нет приёма. Также может наоборот произойти чудо, наконец-то прислушаются к пользователям и таки сделают её бесплатной. Если устали ждать и хочется ещё больше кастомизации — рекомендую присмотреться к Zios Themes: описание на форуме Unity + исходники на GitHub.

Источник

Как сделать темноту в юнити?

Как создать полную темноту на сцене?
Как создать полную темноту на сцене? Чтобы все объекты были видны только при попадании на них света.

Как сделать систему рекорда с разными сценами в юнити 2д?
Я не могу делать систему рекорда с разными сценами в юнити 2д на windows вот скрипт Score: using.

Я в душе не понимаю как сделать бесконечную генерацию для 2d игры на юнити,по типу т-рекса в хроме
Дело вот какое, я хочу сделать игру для андроида по типу т-рекса, но там с моими фишками. Проблема.

кстати, что бы добиться полной темноты, нужно еще покрутить в вкладке Lighting, выставить цвет окружения на черный, и посмотреть что за hdr карта стоит.. она тоже может повлиять

xxxlio,
Вы уже создаете третий топик на тему «качества изображения», «неправильного освещения» и т.п. И при этом не приводите никакого кода, никаких примеров, ничего. Как мы можем догадаться в чем у вас проблема? У меня, например, с освещением все отлично.
Ну если включить внутреннего оракула, то подозреваю что вам нужно сделать запекание (поставить галочку auto либо нажать кнопочку generate lightening) и настроить ambient:

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

Вопрос собственно в том, как сделать так, что бы освещение было как во втором случае, только после компиляции игры, а не в юнити.

Решение

Я никогда не использовал встроенный networking Unity, поэтому подсказать не могу. Я использую Photon.

Как создать игру на Юнити?
Я хочу создать игру на Unity3d. Посоветуйте пожауйста материал для изучения и правильного написания.

Как сделать темноту в юнити. Смотреть фото Как сделать темноту в юнити. Смотреть картинку Как сделать темноту в юнити. Картинка про Как сделать темноту в юнити. Фото Как сделать темноту в юнитиКак можно покрасить объект как террейн в юнити?
Здраствуйте помогите пожалуйста с покраской обьекта в юнити 3д на подобии терейна.

Как сделать темноту в юнити. Смотреть фото Как сделать темноту в юнити. Смотреть картинку Как сделать темноту в юнити. Картинка про Как сделать темноту в юнити. Фото Как сделать темноту в юнитиКак поворачивать объекты клавиатурой (юнити 2д)?
Есть такой скрипт using System.Collections; using System.Collections.Generic; using.

Как сделать темноту в юнити. Смотреть фото Как сделать темноту в юнити. Смотреть картинку Как сделать темноту в юнити. Картинка про Как сделать темноту в юнити. Фото Как сделать темноту в юнитиКак проверить нажата ли UI кнопка в юнити?
Потом если она нажата выполнить действие

Как сделать темноту в юнити. Смотреть фото Как сделать темноту в юнити. Смотреть картинку Как сделать темноту в юнити. Картинка про Как сделать темноту в юнити. Фото Как сделать темноту в юнитиUnity знатоки юнити как блочить UI
имеется два джойстика, нужно чтобы при нажатии на один джойстик другой просто блокировался(не.

Как перенести управление под андроид в юнити?
Здравствуйте, у меня появился вопрос как перенести управление с ПК на андроид в юнити. В игре есть.

Источник

Работа с освещением в Unity — теория и практика

Как сделать темноту в юнити. Смотреть фото Как сделать темноту в юнити. Смотреть картинку Как сделать темноту в юнити. Картинка про Как сделать темноту в юнити. Фото Как сделать темноту в юнити

В течение последних пары лет мне приходилось много работать с “лайтмаппингом” как по работе, так и на своём собственном инди-проекте. Когда у вашей команды мало производственных ресурсов и вы не можете выделить много времени на создание уникальной графики для игровых локаций, освещение становится одним из ключевых факторов, помогающих оживить и разнообразить картинку.

Теория освещения

Отражённый свет

Давайте определимся с терминологией. Освещение в компьютерной графике делится, условно говоря, на две категории:

Global Illumination (GI) представляет из себя наиболее “честный” способ симуляции отражённого света. Из источника света вылетают фотоны — частички, несущие информацию о цвете и яркости света. Ударяясь о какую-либо поверхность, они освещают её, но теряют часть энергии, вследствие чего их цвет и яркость изменяются. Затем фотоны отскакивают и ударяются о следующую поверхность, повторно теряя часть энергии. Так происходит несколько раз в зависимости от настроек рендерера.

Final Gather (FG) раскидывает по сцене точки, — final gather points, — из которых в разные стороны вылетают лучи. После столкновения с какой-либо поверхностью, лучи возвращают в родительскую точку информацию о цвете и его яркости. Представьте себе такую картину: вечер, солнце почти зашло за горизонт; становится темно, но небольшая часть комнаты ещё залита оранжевым закатным светом. Находящаяся на полу final gather point отправляет в разные стороны несколько лучей, некоторые из них дотягиваются до освещённой части комнаты и с этой информацией возвращаются в исходную точку, тем самым слегка освещая пол «отражённым» оранжевым светом. Это не такой “честный” способ, как GI, но он производит хороший результат, и им часто пользуются, чтобы заполнять сцены красивым мягким освещением.

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

Как сделать темноту в юнити. Смотреть фото Как сделать темноту в юнити. Смотреть картинку Как сделать темноту в юнити. Картинка про Как сделать темноту в юнити. Фото Как сделать темноту в юнити

Ambient Occlusion

Кроме отражённого света, нам интересен так называемый Ambient Occlusion (AO). Это эффект затенения в углах, трещинах, узких проёмах. Представьте, что луч света залетает в угол комнаты, он несколько раз отражается от обеих стен, постепенно затухая. Чем дальше в угол, тем меньше света туда доходит.

Как правило, Ambient Occlusion используется, чтобы художественно подчеркнуть эффект затенения, — в реальности лучи света не теряют энергию столь быстро, чтобы в углах комнаты сгущалась такая же тьма, как показывают нам в играх. Если вы рендерите физически корректное освещение, ваш движок сам высчитывает скорость потери энергии лучом света, и вам не нужно отдельно рендерить карту (текстуру) Ambient Occlusion. Но вы можете это сделать, если потребуется для реализации художественного замысла.

Как сделать темноту в юнити. Смотреть фото Как сделать темноту в юнити. Смотреть картинку Как сделать темноту в юнити. Картинка про Как сделать темноту в юнити. Фото Как сделать темноту в юнити

Как сделать темноту в юнити. Смотреть фото Как сделать темноту в юнити. Смотреть картинку Как сделать темноту в юнити. Картинка про Как сделать темноту в юнити. Фото Как сделать темноту в юнити

Текстурные атласы

Следующим термином, который вам следует следует знать, является текстурный атлас. Грубо говоря, это одна большая текстура, в которой содержатся несколько маленьких текстурок. Чаще всего текстурные атласы создаются для экономии вычислительных ресурсов. Приведу крайне упрощённый пример, — спецы, спрячьте факелы и вилы! Пусть у вас в игре есть таверна, в которой 20 деревянных предметов (столы, стулья, ложки. ), у каждого своя текстура. В итоге CPU будет 20 раз обращаться к GPU, требуя отрендерить каждый объект по отдельности. Если мы назначим всем деревянным объектам один материал, обращающийся к одному текстурному атласу, в который зашиты все 20 текстур, то GPU сможет отрендерить 20 объектов за один вызов (он же — draw call, в конце статьи предоставлю интересные ссылки по этой теме).

В случае с “лайтмаппингом”, для каждого объекта создаётся дополнительная маленькая текстурка, в которой “запекается” информация об освещении. Затем много-много маленьких текстурок разных объектов размещаются в крупных текстурных атласах. Как и в случае с деревянной мебелью, мы также получаем прирост производительности.

Работа с Unity

Общая информация

Но вернёмся к “лайтмаппингу” в самом Unity. Прежде всего запаситесь терпением и, по возможности, мощным компьютером. Процесс рендера имеет свойство полностью занимать процессор и оперативную память, поэтому я включаю его перед тем, как ухожу на работу или иду спать. Таким образом, я возвращаюсь к компьютеру как раз в тот момент, когда рендер уже завершён.
Забегая вперёд, предупрежу, что Unity кэширует промежуточные результаты вычислений освещения. Если вы увидите, что на системном диске у вас пропало 10 гигабайт места — это оно. Чтобы настроить кэш надо зайти в: Edit — Preferences — GI Cache. Здесь вы можете указать, куда он сохраняется и его максимальный размер. Можно убрать компрессию, “весить” будет больше, но работать пошустрее. Тут же вы можете почистить кэш, но имейте ввиду, что если у вас открыта сцена с готовым “лайтмапом”, то он тоже будет удалён, будьте внимательны.

В Unity доступно 5 типов источников света:

Параметры источников света

Хочу обратить внимание на насколько ключевых настроек источников света (доступные настройки различаются в зависимости от типа источника света):

Как сделать темноту в юнити. Смотреть фото Как сделать темноту в юнити. Смотреть картинку Как сделать темноту в юнити. Картинка про Как сделать темноту в юнити. Фото Как сделать темноту в юнити

Настройка освещения сцены

Окно настроек освещения сцены вызывается через Window — Lighting, и состоит из трёх вкладок: Object, Scene, Lightmaps. Для запуска рендера освещения используется кнопка Build в самом низу окна. Там же есть галочка Auto, которая автоматически запускает рендер каждый раз, когда вы вносите изменения в сцену; используйте её, если у вас мощный компьютер. Ещё ниже находится информация о количестве и размере “лайтмапов”, появится по завершению процесса “лайтмаппинга”.

Раздел — Object

В Object отображаются настройки конкретного объекта. Если вы выделите элемент окружения на вашей сцене, то здесь увидите ряд настроек и параметров. При условии, что объект является статичным, будет стоять галочка на чекбоксе Lightmap Static. Чаще всего вы будете использовать здесь поле Scale in Lightmap. Как я говорил ранее, для каждого объекта освещение “запекается” в отдельную маленькую текстурку, которая потом размещается в крупном “лайтмап”-атласе. Параметром Scale in Lightmap вы можете регулировать, сколько места будет занимать эта текстурка. Разумеется, чем меньше места ей выделяется, тем хуже будет качество “запечённого” в неё освещения. По умолчанию здесь стоит “1”, но если вы знаете, что объект будет редко попадать в поле зрения или он расположен далеко на фоне, вы можете смело уменьшить этот параметр вплоть до 0.1 или даже меньше.

Раздел — Scene

В Scene расположены ключевые настройки рендера освещения. Я рассказываю основы работы со светом, а также делюсь опытом “лайтмаппинга” конкретно под мобильные платформы, поэтому умышленно пропускаю такие вещи, как realtime GI или использование HDR-текстуры в качестве источника света.

В Ambient Source вы настраиваете заполняющий источник света Ambient Light, который я уже упоминал. Вам предлагается выбрать между небом-текстурой, небом из единственного цвета, а также созданным на основе цветового градиента небом. Я предпочитаю выбирать Gradient. Он позволяет настроить три цвета — купол неба, экватор и землю, что создаст для вашей сцены достаточно сложный и интересный заполняющий свет. Ambient Intensity указывает яркость этого света. В зависимости от художественного замысла, вы можете иметь даже очень светлую сцену, освещённую посредством одного Ambient Light.

Во вкладке Baked GI находятся основные настройки качества освещения, как прямого, так и отражённого, включая и GI, и FG.
Прежде чем углубимся в эти настройки, хочу дать один совет. Всегда имейте ввиду, что размещая на сцене источники света, настраивая тени и Ambient Light, после рендера “лайтмапа” вы получите совершенно иную картинку, только отдалённо напоминающую то, что вы делали. Поэтому я рекомендую работать итерациями: вы выставляете минимальное качество освещения, чтобы рендер происходил быстро, смотрите на результат рендера, после чего вносите правки и запускаете повторный рендер. Когда вы более-менее довольны результатом, можно повысить качество рендера и включить Final Gather. Это займёт длительное время, поэтому есть смысл включать такой рендер перед тем, как вы отходите от компьютера на сравнительно долгий отрезок времени.

Настройки во вкладке Baked GI оперируют такой единицей, как texel. Если говорить упрощённо, тексель — это пиксель, но не на экране, а в текстурном пространстве трёхмерной модели. Но не забивайте голову, — трудно сказать, как Unity оперирует текселями и как они зависят от масштаба объектов, поэтому просто-напросто двигайтесь эксперементальным путём. Например, для своей мобильной RPG я делаю финальный рандер с Baked Resolution выставленным в 25.

Тексель (сокращение от англ. Texture element) — минимальная единица текстуры трёхмерного объекта. Пиксель текстуры.
Проще всего объяснить значение термина «тексель» на примере трёхмерных игр. Если подойти вплотную к стене в какой-нибудь старой 3D-игре — (Wolfenstein или Duke Nukem), то можно наблюдать, как текстура стены распадается на однотонные квадраты, которые увеличиваются при приближении и собираются обратно в осмысленный рисунок при отдалении. Эти квадраты и называются текселями, и чем крупнее исходный рисунок текстуры, тем меньше становятся тексели. Для идеального отображения текстуры количество текселей должно совпадать с количеством пикселей на мониторе, но практически все движки разрешают зрителю приблизиться к стене ближе чем того разрешает детальность.

Ниже я расскажу про каждый параметр отдельно, но перед этим вам нужно знать ещё кое-что. Если вы запустите в Unity рендер освещения, то справа снизу будет написано, чем именно движок занят в текущий момент. В самом конце процесса рендера там будет написано Compositing.

Дело в том, что “лайтмап” генерируется послойно. Во время рендера создаются несколько отдельных текстур. Мне неизвестно, какие именно карты делает Unity, но среди них есть либо все, либо часть из списка: Diffuse (прямой свет), GI (Global Illumination), FG (Final Gather), AO (Ambient Occlusion) и другие. После этого движок берёт эти карты и сливает друг с другом. Например, в основе может лежать слой Diffuse, над ним кладётся слой FG в режиме смешивания Lighten (прямо как в Photoshop’е), а повыше кладётся слой AO в режиме Multiply… В итоге эти слои сливаются в одну картинку и на выходе получается финальный “лайтмап”.

Вкладка — Baked GI

Вкладка — General GI

Давайте пройдёмся по интересующим нас настройкам во вкладке General GI:

Вкладка — Fog

И, наконец, туман! Fog, то бишь. К рендеру освещения он не имеет никакого отношения, может включаться и выключаться в любое время. Тут всё предельно просто, поэтому берите и экспериментируйте. Скажу лишь, что туман является крайне мощным художественным средством. Вы можете радикально изменять атмосферу сцены посредством тумана, благодаря ему солнечная сцена станет ярче, мрачная — мрачнее.

Кроме того, туман может использоваться как инструмент повышения производительности. Например, вы хотите вдалеке выключить у всех объектов текстуры и скрыть их за туманом. В более старых версиях World of Warcraft, если вы играли, вы не могли не заметить, какой густой там был туман.

Раздел — Lightmaps

Третьим разделом является Lightmaps, где будут расположены отрендеренные “лайтмапы”. Причем если атласов много, в верхней части вкладки вы не сможете увидеть все атласы, скролл в том окошке неактивен. Поэтому смотрим в нижнее и прокручиваем колесиком мышки.

Здесь нам важно увидеть насколько заполнен последний, самый нижний “лайтмап”-атлас. Если он почти пуст, то либо увеличиваем качество “лайтмапа”, чтобы заполнить весь атлас, либо уменьшаем, чтобы атлас оказался пустым и был удален. На картинке ниже изображены два хорошо заполненных атласа, а один — постольку-поскольку.

“Лайтмапы” хранятся в файлах EXR с глубиной в 32 бита.

Как сделать темноту в юнити. Смотреть фото Как сделать темноту в юнити. Смотреть картинку Как сделать темноту в юнити. Картинка про Как сделать темноту в юнити. Фото Как сделать темноту в юнити

Light Probes

Ещё я обещал рассказать про Light Probes. Они представляют из себя небольшие сферы, вбирающие в себя информацию об освещении окружающего пространства. Когда таких сфер много, они создают своебразную карту освещённости вашего уровня или локации. Затем они используются для освещения динамических объектов, в которые не “запекается” свет.

Чтобы лучше понять их смысл, дам пример. На вашей сцене находится один Point Light, у которого стоят настройки Baked, то есть он используется для “запечения” света. Вы не делаете его Real-time, потому что это дорого в плане производительности, причём многие мобильные устройства вообще не поддерживают такой источник света. Далее вы “лайтмапите” сцену и видите, что ваш Point Light освещает окружение. Но если вы возьмёте монстра и поставите рядом с источником света, он останется тёмным, потому что принадлежит к классу динамических объектов, а ваш Point Light влияет только на статические.

Теперь вы расставляете вокруг источника света сетку из Light Probes, снова запекаете освещение. И теперь ваш монстр может ходить вокруг Point Light’а и освещаться им! Это крайне эффективный и недорогой способ имитации освещения. Чтобы добавить “пробы” на сцену, заходите в Game Object — Light — Light Probe Group. На сцене появится кубик из четырёх сфер. Для выбора отдельных сфер, используйте ctrl + click. В Inspector появятся несколько кнопок, позволяющие добавлять или удалять сферы. Вы также можете использовать комбинацию ctrl + D для дублирования сфер.

Расставляйте Light Probes аккуратно, размещайте их там, где вы хотите, чтобы они вбирали в себя информацию об освещении, чтобы потом передавать её динамическим объектам. Во избежание графических артефактов и мерцающего света, следите за тем, чтобы Light Probes образовывали ровную, красивую сетку.

Ниже скриншот корректно выставленной сетки. Если приглядеться, можно заметить, что Light Probes выставлены не в случайном порядке, а окружают источники света, стремясь эффективно поймать переход от света к тени и обратно.

Как сделать темноту в юнити. Смотреть фото Как сделать темноту в юнити. Смотреть картинку Как сделать темноту в юнити. Картинка про Как сделать темноту в юнити. Фото Как сделать темноту в юнити

Заключение

Напоследок хочу дать совет по созданию моделей окружения под “лайтмаппинг”. Создавая контент для игры, я знал, с какой стороны будет смотреть игровая камера, поэтому ради сомнительной оптимизации удалял задние стенки некоторых объектов. В то время у меня был опыт рендера “лайтмапов”, но только в Maya, а не в Unity. Выяснилось, что при рендере освещения в Unity возле объектов, имеющих дыры, то есть удалённые полигоны, появляются жесткие, хорошо заметные артефакты. Имейте ввиду.

Источник

Shadows

Unity’s lights can cast Shadows from an object onto other parts of itself or onto other nearby objects. Shadows add a degree of depth and realism to a scene since they bring out the scale and position of objects that can otherwise look “flat”.

Как сделать темноту в юнити. Смотреть фото Как сделать темноту в юнити. Смотреть картинку Как сделать темноту в юнити. Картинка про Как сделать темноту в юнити. Фото Как сделать темноту в юнитиScene with objects casting shadows

How Do Shadows Work?

Consider the simplest case of a scene with a single light source. Light rays travel in straight lines from that source and may eventually hit objects in the scene. Once a ray has hit an object, it can’t travel any further to illuminate anything else (ie, it “bounces” off the first object and doesn’t pass through). The shadows cast by the object are simply the areas that are not illuminated because the light couldn’t reach them.

Как сделать темноту в юнити. Смотреть фото Как сделать темноту в юнити. Смотреть картинку Как сделать темноту в юнити. Картинка про Как сделать темноту в юнити. Фото Как сделать темноту в юнити

Another way to look at this is to imagine a camera at the same position as the light. The areas of the scene that are in shadow are precisely those areas that the camera can’t see.

Как сделать темноту в юнити. Смотреть фото Как сделать темноту в юнити. Смотреть картинку Как сделать темноту в юнити. Картинка про Как сделать темноту в юнити. Фото Как сделать темноту в юнитиA “light’s eye view” of the same scene

In fact, this is exactly how Unity determines the positions of shadows from a light. The light uses the same principle as a camera to “render” the scene internally from its point of view. A depth buffer system, as used by scene cameras, keeps track of the surfaces that are closest to the light; surfaces in a direct line of sight receive illumination but all the others are in shadow. The depth map in this case is known as a Shadow Map (you may find the Wikipedia Page on shadow mapping useful for further information).

Enabling Shadows

You can enable shadows for an individual light with the Shadow Type property in the inspector.

Как сделать темноту в юнити. Смотреть фото Как сделать темноту в юнити. Смотреть картинку Как сделать темноту в юнити. Картинка про Как сделать темноту в юнити. Фото Как сделать темноту в юнити

The Hard Shadows setting produces shadows with a sharp edge. Hard shadows seldom occur in everyday life (unless you are an astronaut) but they involve less processing overhead than the more realistic Soft Shadows and are acceptable for many purposes. Also, soft shadows tend to reduce the “blocky” aliasing effect from the shadow map. The Strength setting determines how dark the shadows are; in general, some light will be scattered by the atmosphere and reflected off other objects, so you usually don’t want shadows to be set to maximum strength. The Resolution property sets the rendering resolution for the shadow map “camera” mentioned above. If you find your shadows have very visible edges then you might want to increase this value. The near plane property allows you to choose the value for the near plane when rendering shadows. Any objects closer than this distance to the light will not cast any shadows.

Each Mesh Renderer in the scene also has properties called Cast Shadows and Receive Shadows which must be enabled as appropriate.

Как сделать темноту в юнити. Смотреть фото Как сделать темноту в юнити. Смотреть картинку Как сделать темноту в юнити. Картинка про Как сделать темноту в юнити. Фото Как сделать темноту в юнити

Cast Shadows has simple On and Off options to enable or disable shadow casting for the mesh. There is also a Two Sided option to allow shadows to be cast by either side of the surface (ie, backface culling is ignored for shadow casting purposes) while Shadows Only allows shadows to be cast by an otherwise invisible object.

Shadow Mapping and the Bias Property

The shadows for a given light are determined during the final scene rendering. When the scene is rendered to the main view camera, each pixel position in the view is transformed into the coordinate system of the light. The distance of a pixel from the light is then compared to the corresponding pixel in the shadow map. If the pixel is more distant than the shadow map pixel, then it is presumably obscured from the light by another object and it will get no illumination.

Как сделать темноту в юнити. Смотреть фото Как сделать темноту в юнити. Смотреть картинку Как сделать темноту в юнити. Картинка про Как сделать темноту в юнити. Фото Как сделать темноту в юнитиCorrect shadowing

A surface directly illuminated by a light can sometimes appear to be partly in shadow. This is because pixels that should be exactly at the distance specified in the shadow map will sometimes be deemed farther away (a consequence of using a low resolution image for the shadow map; or using shadow filtering). The result is arbitrary patterns of pixels in shadow when they should really be lit, giving a visual effect known as “shadow acne”.

Как сделать темноту в юнити. Смотреть фото Как сделать темноту в юнити. Смотреть картинку Как сделать темноту в юнити. Картинка про Как сделать темноту в юнити. Фото Как сделать темноту в юнитиShadow acne in the form of false self-shadowing artifacts

To prevent shadow acne, a bias value can be added to the distance in the shadow map to ensure that pixels on the borderline will definitely pass the comparison as they should; or while rendering into the shadow map, objects can be inset a bit along their normals. These values are set by the Bias and Normal Bias properties in the light’s inspector when it has shadows enabled.

Do not set the Bias value too high though, however, since areas of a shadow near to the object casting it can then sometimes be falsely illuminated. This effect is known as “Peter Panning” (i.e. the disconnected shadow makes the object look as if it is flying above the ground, like Peter Pan).

Как сделать темноту в юнити. Смотреть фото Как сделать темноту в юнити. Смотреть картинку Как сделать темноту в юнити. Картинка про Как сделать темноту в юнити. Фото Как сделать темноту в юнитиToo high a Bias value makes the shadow appear “disconnected” from the object

Likewise, setting the Normal Bias value too high will make the shadow appear too narrow for the object:

Как сделать темноту в юнити. Смотреть фото Как сделать темноту в юнити. Смотреть картинку Как сделать темноту в юнити. Картинка про Как сделать темноту в юнити. Фото Как сделать темноту в юнитиToo high a Normal Bias value makes the shadow shape too narrow

The bias values for a light may need a bit of tweaking to make sure that neither shadow acne nor Peter Panning occur. It is generally easier to gauge the right value by eye rather than attempt to calculate it.

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *