Мои Уведомления
Привет, !
Мой Аккаунт Мои Финансы Мои Подписки Мои Настройки Выход
Руководство API скрипты

Использование датчиков отражения

Вы можете добавить компонент Reflection Probe к любому объекту в Scene. Сцена содержит окружение и меню вашей игры. Думайте о каждом уникальном файле сцены как об уникальном уровне. В каждой сцене вы размещаете свое окружение, препятствия и декорации, по сути проектируя и создавая свою игру по частям. Подробнее
См. в Словарь
, но стандартно добавлять каждый зонд в отдельный пустой GameObject. Обычный рабочий процесс:

  • Создайте новый пустой GameObject (меню: GameObjectосновной объект в сценах Unity, который может представлять персонажей, реквизит, декорации , камеры, путевые точки и т. д. Функциональность GameObject определяется прикрепленными к нему компонентами. Подробнее
    См. в Словарь
    > Создать пустой), а затем добавьте к нему компонент Reflection Probe (меню: ComponentФункциональная часть GameObject. GameObject может содержать любое количество компонентов. В Unity есть много встроенных компонентов, и вы можете создавать свои собственные, написав сценарии, которые наследуются от MonoBehaviour. Подробнее
    См. в Словарь
    > ВизуализацияПроцесс вывода графики на экран (или текстуры рендеринга). По умолчанию основная камера в Unity отображает изображение на экране. Подробнее
    См. в Словарь
    > Reflection ProbeКомпонент рендеринга, который захватывает сферическое изображение своего окружения во всех направлениях, подобно камере. Захваченное изображение затем сохраняется как кубическая карта, которую можно использовать для объектов с отражающими материалами. Подробнее
    См. в Словарь
    ). В качестве альтернативы, если у вас уже есть зонд в сцене, вам, вероятно, будет проще дублировать его (меню: Правка > Дублировать).
  • Поместите новый датчик в нужное место и установите его точку Смещения и размер зоны действия.
  • При необходимости задайте другие свойства зонда, чтобы настроить его поведение.
  • Продолжайте добавлять датчики, пока не будут назначены все необходимые местоположения.

Чтобы увидеть отражения, вам также понадобится хотя бы один отражающий объект в сцене. Простой тестовый объект можно создать следующим образом:

  • Добавьте в сцену примитивный объект, например сферу (меню: GameObject > 3D-объектТрехмерный игровой объект, такой как куб, ландшафт или тряпичная кукла. Подробнее
    См. в Словарь
    > Сфера). ли>
  • Создайте новый материал (меню: РесурсыЛюбой носитель или данные, которые можно использовать в вашей игре или проекте. Ресурс может исходить из файла, созданного вне Unity, например, из 3D-модели, аудиофайла или изображения. Вы также можете создавать некоторые типы ресурсов в Unity, например контроллер аниматора, аудиомикшер или текстуру рендеринга. Подробнее
    См. в Словарь
    > Создать > МатериалАктив, определяющий способ визуализации поверхности. Подробнее
    См. в Словарь
    ) и оставьте Стандартный по умолчанию. шейдер на месте.
  • Сделайте материал отражающим, установив для свойств Metallic и Smoothness значение 1,0.
  • Перетащите только что созданный материал на объект-сферу, чтобы назначить его.

Сфера теперь может отображать отражения, полученные от зондов. Простой схемы с одним датчиком достаточно, чтобы увидеть основной эффект отражений.

Наконец, датчики необходимо запечь до того, как станут видны отражения. Если у вас включен параметр Автоматическое создание в окне освещения (настройка по умолчанию), то отражения будут обновляться. когда вы размещаете или меняете объекты на сцене, хотя реакция не мгновенная. Если вы отключите автоматическое запекание, вы должны нажать кнопку Bake в инспектореA Unity в Reflection Probe. который отображает информацию о текущем выбранном игровом объекте, активе или настройках проекта, позволяя вам проверять и редактировать значения. Подробнее
См. Словарь
, чтобы обновить тесты. Основная причина отключения автозапекания заключается в том, что процесс запекания может занять довольно много времени для сложной сцены с большим количеством тестов.

Позиционирование зондов

Положение зонда в первую очередь определяется положением его игрового объекта, поэтому вы можете просто перетащить объект в нужное место. Сделав это, следует установить зону действия зонда; это прямоугольник с выравниванием по оси, размеры которого задаются свойством Box Size. Вы можете установить значения размера напрямую или включить режим редактирования размера в инспекторе и перетащить стороны окна в вид сцены Интерактивный взгляд на мир, который вы создаете. Вы используете Scene View для выбора и размещения пейзажей, персонажей, камер, источников света и всех других типов игровых объектов. Дополнительная информация
См. в Словарь
(см. Подробности на странице компонента Reflection Probe). Зоны полного набора датчиков должны в совокупности охватывать все области сцены, где может пройти отражающий объект.

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

Когда у вас есть зонды во всех соответствующих местах, вам нужно определить зону действия для каждого зонда, что вы можете сделать с помощью свойства Box Size, как указано выше. Стене может потребоваться только одна зона зондирования на большей части ее длины (по крайней мере, если она имеет достаточно однородный вид), но зона может быть относительно узкой в ​​направлении, перпендикулярном стене; это означало бы, что стена отражается только объектами, которые находятся достаточно близко к ней. Открытое пространство, внешний вид которого мало меняется от места к месту, часто можно охватить одним зондом. Обратите внимание, что зона зонда выровнена по основным мировым осям (X, Y и Z) и не может вращаться. Это означает, что иногда может потребоваться группа датчиков вдоль однородной стены, если она не выровнена по оси.

По умолчанию зона действия зонда сосредоточена в его точке обзора, но это может быть не идеальное положение для захвата отражения cubemapНабор из шести квадратных текстур, которые могут представлять отражения в окружающей среде или скайбокс, нарисованный позади вашей геометрии. Шесть квадратов образуют грани воображаемого куба, окружающего объект; каждая грань представляет вид по направлениям мировых осей (вверх, вниз, влево, вправо, вперед и назад). Подробнее
См. в Словарь
. Например, зона зондирования для очень высокой стены может располагаться на некотором расстоянии от стены, но вы можете захотеть, чтобы отражение было захвачено из точки, близкой к ней, а не из центра зоны. При желании вы можете добавить смещение к точке обзора, используя свойство Box Offset (т. е. смещение — это позиция в локальном пространстве игрового объекта, из которой генерируется представление кубической карты зонда). Используя это, вы можете легко разместить точку обзора в любом месте в зоне действия или вообще за пределами зоны.

Перекрывающиеся пробные зоны

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

Зонд А выбран, так как его пересечение с объектом больше
Зонд А выбран, так как его пересечение с объектом больше

Вы можете изменить расчет, используя свойства Importance тестов. Зонды с более высоким значением важности имеют приоритет над зондами с более низкой важностью в пределах зон перекрытия. Это полезно, скажем, если у вас есть небольшая тестовая зона, которая полностью содержится внутри большей зоны (т. е. пересечение ограничивающей рамки персонажа с окружающей зоной всегда может быть больше, и поэтому малая зона никогда не будет использоваться).

Смешивание

Чтобы включить смешивание Reflection Probe, перейдите в раздел Настройки графики > Настройки уровня. Настройки уровня доступны только в встроенном конвейере рендеринга Unity. Когда смешивание включено, Unity постепенно затухает кубическую карту одного зонда, одновременно затухая в другом, когда отражающий объект переходит из одной зоны в другую. Этот постепенный переход позволяет избежать ситуации, когда характерный объект внезапно «всплывает» в отражении, когда объект пересекает границу зоны.

Смешивание управляется с помощью свойства Reflection Probes в Mesh RendererКомпонент сетки, который берет геометрию из фильтра сетки и визуализирует ее в позиции, определенной компонентом Transform объекта. Подробнее
См. в компоненте Словарь
. Доступны четыре варианта наложения:

  • Выкл.: смешивание с датчиком отражения отключено. Только небобоксОсобый тип материала, используемый для изображения неба. Обычно шестигранник. Подробнее
    См. Словарь
    будет использоваться для размышлений
  • Смешать зонды: смешивает только соседние зонды и игнорирует скайбокс. Вы должны использовать это для объектов, которые находятся «в помещении» или в закрытых частях сцены (например, пещеры и туннели), поскольку небо из этих мест не видно и поэтому никогда не должно появляться в отражениях.
  • Blend Probes и Skybox. Работает аналогично Blend Probes, но также позволяет использовать скайбокс при смешивании. Этот вариант следует использовать для объектов на открытом воздухе, где всегда будет видно небо.
  • Простой — отключает смешивание между датчиками при наличии двух перекрывающихся объемов датчиков отражения.

Если тесты имеют одинаковые значения Importance, вес смешивания для данной тестовой зоны рассчитывается путем деления ее пересечения (объема) с ограничивающей рамкой объекта на сумму пересечений всех тестов с прямоугольником. . Например, если прямоугольник пересекает зону зонда А на 1,0 кубических единицы и пересекает зону зонда В на 2,0 кубических единицы, то значения смешивания будут:

  • Тест A: 1,0 / (1,0 + 2,0) = 0,33
  • Тест B: 2,0 / (1,0 + 2,0) = 0,67

Другими словами, смесь будет включать 33 % отражения датчика A и 67 % отражения датчика B.

Вычисления должны выполняться немного по-другому в случае, когда один датчик полностью содержится внутри другого, поскольку внутренняя зона полностью перекрывается с внешней. Если ограничивающая рамка объекта полностью находится во внутренней зоне, то вес смешивания этой зоны равен 1,0 (т. е. внешняя зона вообще не используется). Когда объект частично находится за пределами внутренней зоны, объем пересечения его ограничивающей рамки с внутренней зоной делится на общий объем рамки. Например, если объем пересечения составляет 1,0 кубических единиц, а объем ограничивающей рамки составляет 4,0 кубических единицы, то вес смешивания внутреннего зонда будет 1,0 / 4,0 = 0,25. Затем это значение вычитается из 1,0, чтобы получить вес внешнего датчика, который в данном случае будет равен 0,75.

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


  • Обновлено в 5.6

Вы можете отблагодарить автора, за перевод документации на русский язык. ₽ Спасибо
Руководство Unity 2021.3