Физические световые и камерные блоки
Зачем использовать физическое освещение и камеры?
Godot использует произвольные единицы для многих физических свойств, которые применяются к свету, например, цвету, энергии, полю зрения камеры и экспозиции. По умолчанию эти свойства используют произвольные единицы, поскольку использование точных физических единиц сопряжено с некоторыми компромиссами, которые не стоят того для многих игр. Поскольку Godot по умолчанию отдает предпочтение простоте использования, физические единицы света по умолчанию отключены.
Преимущества физических единиц
Если вы стремитесь к фотореализму в своем проекте, использование единиц реального мира в качестве основы может помочь облегчить корректировку. Ссылки на реальные материалы, освещение и яркость сцены широко доступны на таких сайтах, как Physically Based.
Использование реальных единиц измерения в Godot также может быть полезным при портировании сцены из другого 3D-программного обеспечения, использующего физические единицы измерения света (например, Blender).
Недостатки физических единиц
Самый большой недостаток использования физических единиц света заключается в том, что вам придется уделять пристальное внимание динамическому диапазону, используемому в данный момент времени. Вы можете столкнуться с ошибками точности с плавающей точкой при смешивании очень высокой интенсивности света с очень низкой интенсивностью света.
На практике это означает, что вам придется вручную управлять настройками экспозиции, чтобы убедиться, что вы не переэкспонируете или не недоэкспонируете сцену слишком сильно. Автоматическая экспозиция может помочь вам сбалансировать свет в сцене, чтобы привести его в нормальный диапазон, но она не может восстановить потерянную точность из-за слишком высокого динамического диапазона.
Использование физических единиц света и камеры не сделает автоматически ваш проект лучше. Иногда отход от реализма может на самом деле сделать сцену лучше для человеческого глаза. Кроме того, использование физических единиц требует большей строгости по сравнению с нефизическими единицами. Большинство преимуществ физических единиц можно получить только в том случае, если единицы правильно настроены для соответствия реальному миру.
Примечание
Физические единицы освещения доступны только в 3D-рендеринге, а не в 2D.
Настройка физических единиц освещения
Физические световые блоки можно включать отдельно от физических блоков камер.
Для корректного включения физических световых единиц необходимо выполнить 4 шага:
Включите настройку проекта.
Настройте камеру.
Настройте окружение.
Настройте узлы Light3D.
Поскольку физические блоки освещения и камеры требуют только нескольких вычислений для обработки преобразования единиц, их включение не оказывает заметного влияния на производительность ЦП. Однако на стороне ГП физические блоки камеры в настоящее время обеспечивают глубину резкости. Это оказывает умеренное влияние на производительность. Чтобы смягчить это влияние на производительность, качество глубины резкости можно уменьшить в расширенных Настройках Проекта.
Включение настройки проекта
Откройте настройки проекта, включите переключатель Advanced (Дополнительно), затем включите *Rendering > Lights And Shadows > Use Physical Light Units. Перезапустите редактор.
Настройка камеры
Предупреждение
Когда физические единицы света включены и если у вас есть узел WorldEnvironment в вашей сцене (т. е. редактор Environment отключен), вы должны иметь ресурс CameraAttributes, назначенный узлу WorldEnvironment. В противном случае область просмотра 3D-редактора будет выглядеть чрезвычайно яркой, если у вас есть видимый узел DirectionalLight3D.
В узле Camera3D можно добавить ресурс CameraAttributes к его свойству Attributes. Этот ресурс используется для управления глубиной резкости и экспозицией камеры. При использовании CameraAttributesPhysical его свойство фокусного расстояния также используется для настройки поля зрения камеры.
При включении физических единиц освещения в разделе Exposure CameraAttributesPhysical становятся доступными следующие дополнительные свойства:
Aperture: Размер апертуры (щели) камеры, измеряемый в f-ступенях. F-ступень — это безразмерное отношение фокусного расстояния камеры к диаметру апертуры. Высокая настройка апертуры приведет к меньшей апертуре, что приведет к более тусклому изображению и более четкому фокусу. Низкая апертура приведет к широкой апертуре, которая пропускает больше света, что приведет к более яркому, менее сфокусированному изображению.
Shutter Speed (Выдержка затвора): Время открытия и закрытия затвора, измеряемое в обратных секундах (
1/N). Более низкое значение пропустит больше света, что приведет к более яркому изображению, в то время как более высокое значение пропустит меньше света, что приведет к более темному изображению. При получении или установке этого свойства с помощью скрипта единицей измерения являются секунды, а не обратные секунды.Sensitivity (Чувствительность): Чувствительность сенсоров камеры, измеряемая в ISO. Более высокая чувствительность приводит к более яркому изображению. Когда включена автоматическая экспозиция, это может использоваться как метод компенсации экспозиции. Удвоение значения увеличит значение экспозиции (измеряемое в EV100) на 1 ступень.
Multiplier (Множитель): Нефизический множитель экспозиции. Более высокие значения увеличат яркость сцены. Это можно использовать для постобработки или в целях анимации.
Значение Aperture по умолчанию в 16 делений диафрагмы подходит для дневного освещения на открытом воздухе (т. е. для использования с DirectionalLight3D по умолчанию). Для внутреннего освещения более подходящим является значение от 2 до 4.
Типичная скорость затвора, используемая в фотографии и кинопроизводстве, составляет 1/50 (0,02 секунды). Ночная фотография обычно использует скорость затвора около 1/10 (0,1 секунды), в то время как спортивная фотография использует скорость затвора от 1/250 (0,004 секунды) до 1/1000 (0,001 секунды) для уменьшения размытости изображения при движении.
В реальной жизни чувствительность обычно устанавливается в диапазоне от 50 ISO до 400 ISO для дневной съемки на открытом воздухе в зависимости от погодных условий. Более высокие значения используются для съемки в помещении или ночью.
Примечание
В отличие от реальных камер, в Godot не моделируются негативные эффекты увеличения чувствительности ISO или уменьшения выдержки (например, видимая зернистость или световые следы).
Описание свойств CameraAttributesPhysical, которые также доступны, когда не используются физические единицы освещения, см. в Настройка физических единиц камеры.
Настройка окружения
Предупреждение
Конфигурация по умолчанию предназначена для дневных сцен на открытом воздухе. Для ночных и внутренних сцен потребуется корректировка интенсивности фона DirectionalLight3D и WorldEnvironment, чтобы они выглядели правильно. В противном случае позиционные источники света будут едва видны при интенсивности по умолчанию.
Если вы еще не добавили узлы WorldEnvironment и Camera3D в текущую сцену, сделайте это сейчас, нажав на 3 вертикальные точки в верхней части окна просмотра 3D-редактора. Нажмите Add Sun to Scene (Добавить солнце в сцену), снова откройте диалоговое окно, затем нажмите Add Environment to Scene (Добавить среду в сцену).
После включения физических единиц освещения новое свойство становится доступным для редактирования в ресурсе Environment:
Background Intensity (Интенсивность фона): Интенсивность фонового неба в nits (канделах (candelas) на квадратный метр). Это также влияет на окружающий и отраженный свет, если их соответствующие режимы установлены на Background (Фон). Если установлена пользовательская Background Energy (Энергия фона), эта энергия умножается на интенсивность.
Настройка узлов освещения
После включения физических единиц света в узлах Light3D становятся доступны 2 новых свойства:
Intensity (Интенсивность): интенсивность света в lux (люксах) (DirectionalLight3D) или lumens (люменах) (OmniLight3D/SpotLight3D). Если задана пользовательская Energy, эта энергия умножается на интенсивность.
Temperature: Цветовая температура света, определенная в Кельвинах. Если установлен пользовательский Color, этот цвет умножается на цветовую температуру.
Интенсивность OmniLight3D/SpotLight3D
Люмен (Lumens) — это мера светового потока, представляющая собой общее количество видимого света, излучаемого источником света за единицу времени.
Для SpotLight3D-ов мы предполагаем, что область за пределами видимого конуса окружена идеальным светопоглощающим материалом. Соответственно, видимая яркость области конуса не меняется по мере увеличения и уменьшения размера конуса.
Типичная бытовая лампочка может иметь яркость от 600 до 1200 люменов. Свеча — это около 13 люменов, а уличный фонарь — около 60000 люменов.
Интенсивность DirectionalLight3D
Lux (люкс) — это мера светового потока на единицу площади, равная одному люмену на квадратный метр. Люкс — это мера того, сколько света попадает на поверхность в данный момент времени.
С DirectionalLight3D в ясный солнечный день поверхность под прямыми солнечными лучами может получить около 100000 люкс. Типичная комната в доме может получить около 50 люкс, в то время как освещенная луной земля может получить около 0,1 люкс.
Цветовая температура
6500 Кельвинов — белый. Более высокие значения дают более холодные (голубые) цвета, а более низкие значения — более теплые (оранжевые).
Температура солнца в облачный день составляет около 6500 Кельвинов (Kelvin). В ясный день температура солнца составляет от 5500 до 6000 Кельвинов. В ясный день на восходе или закате температура солнца составляет около 1850 Кельвинов.
Таблица цветовой температуры от 1000 Кельвинов (слева) до 12 500 Кельвинов (справа)
Другие свойства Light3D, такие как Energy и Color, остаются доступными для редактирования в целях анимации, а также в тех случаях, когда вам иногда требуется создавать источники света с нереалистичными свойствами.
Настройка физических единиц камеры
Физические блоки камер можно включать отдельно от физических блоков освещения.
После добавления ресурса CameraAttributesPhysical к свойству Camera Attributes узлов Camera3D некоторые свойства, такие как FOV, больше не будут доступны для редактирования. Вместо этого эти свойства теперь управляются свойствами CameraAttributesPhysical, такими как фокусное расстояние и апертура.
CameraAttributesPhysical предлагает следующие свойства в разделе Frustum:
Focus Distance (Расстояние фокусировки): Расстояние от камеры до объекта, который будет в фокусе, измеряется в метрах. Внутренне это будет ограничено как минимум на 1 миллиметр больше, чем Focal Length (Фокусное расстояние).
Focal Length (Фокусное расстояние): Расстояние между объективом камеры и апертурой камеры, измеряемое в миллиметрах. Управляет полем зрения и глубиной резкости. Большее фокусное расстояние приведет к меньшему полю зрения и меньшей глубине резкости, что означает, что меньше объектов будет в фокусе. Меньшее фокусное расстояние приведет к более широкому полю зрения и большей глубине резкости, что означает, что больше объектов будет в фокусе. Это свойство переопределяет свойства Camera3D FOV и Keep Aspect, делая их доступными только для чтения в инспекторе.
Near/Far (Близко/Далеко): Расстояние отсечения близко и далеко в метрах. Они ведут себя так же, как одноименные свойства Camera3D. Более низкие значения Near позволяют камере отображать объекты, которые находятся очень близко, за счет потенциальных проблем с точностью (Z-fighting) на расстоянии. Более высокие значения Far позволяют камере видеть дальше, также за счет потенциальных проблем с точностью (Z-fighting) на расстоянии.
Фокусное расстояние по умолчанию 35 мм соответствует широкоугольному объективу. Это все равно приводит к заметно более узкому полю зрения по сравнению с "практическим" вертикальным FOV по умолчанию в 75 градусов. Это связано с тем, что неигровые сценарии использования, такие как кинопроизводство и фотография, предпочитают использовать более узкое поле зрения для более кинематографического вида.
Обычные значения фокусного расстояния, используемые в кинопроизводстве и фотографии:
Fisheye (ultrawide angle) (Рыбий глаз (сверхширокоугольный)): Менее 15 мм. Глубина резкости практически не видна.
Wide angle (Широкий угол): Между 15 мм и 50 мм. Уменьшенная глубина резкости.
Standard (мне надо это переводить?): Между 50 мм и 100 мм. Стандартная глубина резкости.
Telephoto (Телефото): Более 100 мм. Увеличенная глубина резкости.
Как и при использовании режима соотношения сторон Keep Height (Сохранить высоту), эффективное поле зрения зависит от соотношения сторон области просмотра, причем более широкие соотношения сторон автоматически приводят к более широкому горизонтальному полю зрения.
Автоматическую настройку экспозиции на основе среднего уровня яркости камеры также можно включить в разделе Auto Exposure (Автом. экспозиция) со следующими свойствами:
Min Sensitivity (Мин. чувствительность): Минимальная яркость, которую может достичь камера, измеряется в EV100.
Max Sensitivity (Макс. чувствительность): максимальная яркость, которую может достичь камера, измеряется в EV100.
Speed: Скорость эффекта автоэкспозиции. Влияет на время, необходимое камере для выполнения автоэкспозиции. Более высокие значения позволяют выполнять более быстрые переходы, но полученные корректировки могут выглядеть отвлекающими в зависимости от сцены.
Scale (Масштаб): Масштаб эффекта автоэкспозиции. Влияет на интенсивность автоэкспозиции.
EV100 — это значение экспозиции (EV), измеренное при чувствительности ISO 100. См. эту таблицу для получения распространенных значений EV100, встречающихся в реальной жизни.