Разработка
Разработка
Выберите платформу

Установка определенного цветового пространства в Unity

Обновлено: 6 дек 2024 г.
Цвет — один из основных компонентов, без которого невозможно воплотить в жизнь приложение для гарнитуры Meta Quest. При работе с цветами одна из проблем заключается в том, что даже цвета с одинаковыми значениями могут различаться при смене дисплеев и технологий, например на ЖК-мониторе и на OLED-мониторе гарнитуры Meta Quest. Различия могут проявляться в виде низкоуровневых полос, смещения оттенков, недостаточной или избыточной насыщенности цветов. Цвета, которые вы видите на мониторе во время разработки приложения, не обязательно будут совпадать с цветами, которые вы увидите на целевой гарнитуре. Это связано с тем, что разные дисплеи могут использовать разные цветовые пространства и по-разному интерпретировать значения цветов.
На следующем изображении показана разница в цветопередаче между Rec 2020 и Rec 709.

Что такое цветовое пространство?

Цветовое пространство — это определенный диапазон цветов, с помощью которого можно легко управлять цветами. Оно определяет возможности отображающего устройства для воспроизведения цветов на основании конкретной информации о цветах. Для удобства восприятия они обычно представляются в виде диаграммы цветности, которая отображает все цветовые значения, воспринимаемые человеческим глазом, в координатах X и Y. На диаграмме треугольник обозначает конкретное цветовое пространство. В его углах находятся основные цвета: красный, зеленый и синий. На диаграмме точка белого цвета обозначена как D65. Подробнее об управлении цветом см. в разделе Руководство по настройке цвета и яркости.

Параметры цветового пространства

Чтобы устранить различия в цветах, которые могут возникнуть из-за использования разных цветовых пространств, вы можете обновить установив во время выполнения приложения особое цветовое пространство для своей гарнитуры. По умолчанию используются следующие цветовые пространства:
  • Oculus Rift — между Adobe RGB и DCI-P3;
  • Oculus Rift S, Meta Quest 2 — Rec 709;
  • Meta Quest — Rec 2020.
Помимо стандартных цветовых пространств вы можете выбрать специальные цветовые пространства Meta, чтобы адаптировать свои приложения к объектам с различными технологиями отображения, такими как ЖК- и OLED-дисплеи.
В следующих таблицах перечислены возможные цветовые пространства и их основные цвета.
Стандартные цветовые пространства:
Цветовое пространство
Красный
Зеленый
Синий
Белый
Rec_2020
(0,708; 0,292)
(0,17; 0,797)
(0,131; 0,046)
D65 (0,313; 0,329)
Rec_709
(0,640; 0,330)
(0,292; 0,586)
(0,156; 0,058)
D65 (0,313; 0,329)
P3
(0,680; 0,320)
(0,265; 0,690)
(0,150; 0,060)
D65 (0,313; 0,329)
Adobe_RGB
(0,640; 0,330)
(0,210; 0,710)
(0,150; 0,060)
D65 (0,313; 0,329)
Пользовательские цветовые пространства:
Цветовое пространство
Красный
Зеленый
Синий
Белый
Rift_CV1
(0,666; 0,334)
(0,238; 0,714)
(0,139; 0,053)
D75 (0,298; 0,318)
Rift_S (и Quest 2)
(0,640; 0,330)
(0,300; 0,600)
(0,150; 0,060)
D75 (0,298; 0,318)
Quest (1)
(0.6610, 0.3382)
(0,2281; 0,7178)
(0,1416; 0,0419)
D75 (0,2956; 0,3168)

Установка цветового пространства

Meta XR Core SDK позволяет переопределять цветовое пространство гарнитуры во время выполнения программы. Если вы включите функцию цветовой гаммы, это позволит точно настроить и заново отрисовать цвета на целевой гарнитуре для всего приложения. Если вы хотите использовать цветовое пространство только для определенной сцены, задайте его программным путем.
Примечание. Это необязательная настройка. Если с выводом цветового пространства по умолчанию нет никаких проблем, не используйте ее. Оставьте ее отключенной, чтобы использовать цветовое пространство гарнитуры по умолчанию.
  1. В дереве выберите OVRCameraRig.
  2. В представлении Inspector (Инспектор) выберите OVRManager > Display (Дисплей) > Color Gamut (Цветовая гамма), а затем выберите цветовое пространство, которое должна использовать гарнитура во время выполнения. Возможные варианты:
    • Unknown (Неизвестно) — возвращает значение по умолчанию из GetHmdolorSpace() до вызова SetClientColorDesc().
    • Unmanaged (Без управления) — при выборе этого варианта цветокоррекция при выполнении приложения не применяется. Этот вариант может быть полезен для исследований и экспериментов, но его следует избегать при распространении программного обеспечения.
    • Rec_2020 — более широкий цветовой охват по сравнению с цветовым пространством Rec_709.
    • Rec_709 — цветовое пространство по умолчанию для Oculus Rift S. Это узкий охват цветов, который обычно используется в ЖК-панелях. Оно имеет те же основные цвета, что и цветовое пространство sRGB.
    • Rift_CV1 — пользовательское цветовое пространство. Основные цвета находятся между цветовыми пространствами P3 и Adobe RGB.
    • Rift_S — пользовательское цветовое пространство. Те же исходные значения, что и в цветовом пространстве Rec_709, но используется точка белого D75.
    • Quest 1 — пользовательское цветовое пространство. Основные цвета находятся между цветовыми пространствами P3 и Adobe RGB.
    • P3 — стандартное цветовое пространство DCI-P3.
    • Adobe_RGB — более широкая цветовая гамма. Используется точка белого D65.
Примечание. Эта функция только обрабатывает переназначение цветового пространства. Если она не задана, все цветовые пространства используют точку белого D65. Она не влияет на яркость, контрастность или кривые гаммы. Некоторые из этих аспектов, например гамма, определяются используемым форматом текстуры. С точки зрения инструментов отбора ГП, каждая текстура рассматривается как линейная яркость, включая sRGB, которая преобразуется в линейную инструментом отбора текстур.

Программное переопределение цветового пространства

Чтобы задать цветовое пространство для конкретной сцены, вызовите API цветового пространства в своем скрипте. Не используйте настройки из OVRManager. Это связано с тем, что при установке цветового пространства из OVRManager Meta устанавливает его для всего приложения.
Получение цветового пространства по умолчанию или текущего цветового пространства:
OVRManager содержит переменные nativeColorGamut, которая хранит цветовое пространство гарнитуры, и colorGamut, хранящую текущее цветовое пространство. Используйте любую из них, чтобы получить цветовое пространство гарнитуры.
// Retrieves the current color space
OVRManager.ColorSpace CurrentColorSpace = OVRManager.colorGamut;
// Retrieves the default color space
OVRManager.ColorSpace HmdColorSpace = OVRManager.nativeColorGamut;
Установка цветового пространства
Чтобы установить необходимое вам цветовое пространство, назначьте переменной OVRPlugin.colorGamut новое значение.
OVRPlugin.colorGamut = OVRManager.ColorSpace.Rec_2020;
Доступные значения цветового пространства:
  • OVRManager.ColorSpace.Unknown
  • OVRManager.ColorSpace.Unmanaged
  • OVRManager.ColorSpace.Rec_2020
  • OVRManager.ColorSpace.Rec_709
  • OVRManager.ColorSpace.Rift_CV1
  • OVRManager.ColorSpace.Rift_S
  • OVRManager.ColorSpace.Quest
  • OVRManager.ColorSpace.P3
  • OVRManager.ColorSpace.Adobe_RGB
Логотип навигации
Русский
© 2026 Meta