Класс pc.Color является основным способом работы с
цветами в PlayCanvas, предоставляя удобные средства для представления и
манипулирования цветами в различных пространствах цвета. В PlayCanvas
цвета представлены с использованием RGBA (Red, Green, Blue, Alpha), где
альфа-канал отвечает за прозрачность, а красный, зелёный и синий каналы
определяют основные компоненты цвета.
Конструктор класса pc.Color позволяет создать объект
цвета с различными параметрами. Он может быть инициализирован различными
способами:
var color1 = new pc.Color(); // Цвет по умолчанию (чёрный)
var color2 = new pc.Color(1, 0, 0); // Красный цвет
var color3 = new pc.Color(0, 1, 0, 0.5); // Полупрозрачный зелёный цвет
Каждому цвету в классе pc.Color соответствует четыре
значения: r (красный), g (зелёный),
b (синий) и a (альфа-канал). Эти
значения могут быть заданы в диапазоне от 0 до 1. Если значения выходят
за этот диапазон, они автоматически обрезаются.
В PlayCanvas используется пространство цвета RGB для представления цвета. Компоненты цвета (r, g, b) задаются в пределах от 0 до 1. Например:
Чтобы получить цвет в другом пространстве, например в HSL (оттенок, насыщенность, светимость), можно использовать преобразования. Однако, в PlayCanvas основной фокус остаётся на RGB.
Альфа-канал (компонент a) управляет прозрачностью цвета, где значение 0 означает полную прозрачность, а 1 — полную непрозрачность. Это важно при работе с текстурами и материалами, а также при создании визуальных эффектов.
Пример:
var color = new pc.Color(1, 0, 0, 0.5); // Полупрозрачный красный
В данном примере создан цвет, который представляет собой красный, но с полупрозрачным эффектом.
pc.Color поддерживает стандартные математические
операции с цветами, такие как сложение, вычитание и умножение. Это
позволяет легко создавать различные эффекты, такие как изменение яркости
или контраста, а также комбинирование цветов.
var color1 = new pc.Color(0.5, 0.5, 0.5);
var color2 = new pc.Color(0.2, 0.2, 0.2);
var resultColor = color1.add(color2); // Складывание цветов
В результате складывания цветов, каждый компонент цвета будет складываться по отдельности. Например, для компонентов красного, зелёного и синего каналов:
r = 0.5 + 0.2 = 0.7
g = 0.5 + 0.2 = 0.7
b = 0.5 + 0.2 = 0.7
Этот подход позволяет модифицировать цвета на лету и использовать их в различных вычислениях, таких как освещение и эффекты.
Существует несколько методов для преобразования цвета в строки,
числовые значения и другие форматы. Например, метод
toString() возвращает строковое представление цвета в
формате rgb(r, g, b, a):
var color = new pc.Color(1, 0, 0, 0.5);
console.log(color.toString()); // "rgb(255, 0, 0, 128)"
Метод toArray() преобразует цвет в массив, который можно
использовать, например, для передачи в шейдеры:
var colorArray = color.toArray();
console.log(colorArray); // [1, 0, 0, 0.5]
Метод toHex() возвращает строковое представление цвета в
шестнадцатеричном формате:
var hexColor = color.toHex();
console.log(hexColor); // "#ff000080"
pc.Colorcolor.set(0, 1, 0, 0.7); // Устанавливает цвет как полупрозрачный зелёный
pc.Color, который является копией текущего. Это полезно,
когда нужно создать новый объект на основе существующего, не изменяя
исходный.var colorClone = color.clone();
t указывает, насколько сильно
должен быть “смешан” второй цвет с первым (0 возвращает первый цвет, 1 —
второй).var resultColor = color1.lerp(color2, 0.5); // Половина пути между color1 и color2
true, если все компоненты цветов одинаковы.var isEqual = color1.equals(color2); // true, если color1 и color2 идентичны
В PlayCanvas цвета активно используются при работе с материалами и освещением. Для материалов в PlayCanvas цвет задаётся через различные параметры, такие как diffuse (диффузный цвет), specular (цвет зеркального отражения) и emissive (эмиссический цвет).
var material = new pc.Material();
material.diffuse = new pc.Color(1, 0, 0); // Красный диффузный цвет
material.update();
Цвета также играют ключевую роль в настройках освещения, где используются для имитации различных световых эффектов. Например, для точечного источника света можно задать цвет:
var light = new pc.Light();
light.color = new pc.Color(1, 1, 1); // Белый свет
Класс pc.Color предоставляет мощный и гибкий инструмент
для работы с цветами в PlayCanvas. Возможность манипулировать
компонентами цвета, включая альфа-канал, а также использовать различные
методы для преобразования и операций с цветами, делает его незаменимым
инструментом при разработке 2D и 3D приложений.