Albedo — это основной цвет или текстура объекта, который используется в рендеринге для определения его внешнего вида в зависимости от освещения. Это один из ключевых параметров в PBR (Physically Based Rendering), который влияет на восприятие материала. В PlayCanvas параметр albedo определяет, как объект будет реагировать на свет. Важно, что это не просто цвет, а именно текстура, которая будет наложена на объект для более реалистичного отображения.
Albedo текстура, как правило, содержит информацию о цвете поверхности объекта в условиях равномерного освещения. Это значит, что Albedo не учитывает освещенность или тени, а просто задает цветовую палитру, которая будет применяться в рендеринге. Использование albedo позволяет точно воспроизводить внешность объекта, создавая более правдоподобное изображение.
Пример использования albedo в PlayCanvas:
var material = new pc.Material();
material.albedo = new pc.Color(1, 0, 0); // Устанавливает красный цвет для материала
При применении текстуры albedo:
var texture = new pc.Texture(app.graphicsDevice, {
width: 256,
height: 256,
format: pc.PIXELFORMAT_R8_G8_B8_A8
});
texture.setSource(srcImage); // Замените srcImage на путь к изображению
material.albedoMap = texture;
Metalness — это параметр, который указывает, насколько поверхность является металлической. Он контролирует степень, в которой материал отражает свет и вызывает блики. В PBR металлы и неметаллические материалы обрабатываются по-разному. Для металлических материалов все отражения происходят через сам материал, в то время как для неметаллических материалов отражения происходят через подложку.
В PlayCanvas параметр metalness влияет на визуальные свойства материалов, давая возможность точно моделировать поведение различных типов материалов, таких как металл, дерево, кожа и прочее.
Значение параметра metalness находится в диапазоне от 0 до 1, где:
Пример настройки metalness:
material.metalness = 1; // Устанавливает материал как металлический
Для текстуры metalness можно использовать черно-белое изображение, где черный цвет указывает на неметаллические участки, а белый — на металлические.
Roughness — это параметр, который определяет гладкость или шероховатость поверхности материала. Этот параметр влияет на распространение отраженного света. Чем выше значение roughness, тем более размытой и рассеянной будет отраженная световая информация.
В PlayCanvas roughness используется для настройки степени рассеивания света на поверхности. Материалы с низким значением roughness (гладкие) будут иметь острые и яркие отражения, а материалы с высоким значением roughness (шероховатые) — рассеянные, мягкие отражения.
Значения roughness также варьируются от 0 до 1, где:
Пример настройки roughness:
material.roughness = 0.5; // Устанавливает среднюю шероховатость для материала
Текстура roughness может быть использована для создания вариаций в шероховатости по поверхности объекта, что добавляет дополнительную детализированность.
Emissive — это параметр, который позволяет объекту излучать свет, создавая эффект самосветящегося материала. Этот параметр применяется для материалов, которые имеют способность светиться, такие как экраны, лампы или другие источники света.
В PlayCanvas emissive определяет цвет и интенсивность излучаемого света. Материалы с включенным эмиссивом не зависят от окружающего освещения, так как они создают собственный свет. Это полезно для создания таких эффектов, как светящиеся логотипы, экраны или неоновые элементы.
Для настройки emissive в PlayCanvas используется цвет, который будет излучать материал.
Пример настройки emissive:
material.emissive = new pc.Color(0.5, 0.8, 1); // Устанавливает эмиссию голубого цвета
Эмиссивный параметр можно использовать для создания материалов, которые ярко светятся в темных условиях.
Opacity — это параметр, который управляет прозрачностью материала. Он позволяет создавать объекты с различной степенью прозрачности от полностью непрозрачных до полностью прозрачных. В PlayCanvas оптические материалы могут быть использованы для создания эффектов стекла, воды или любых других полупрозрачных объектов.
Значения opacity также варьируются от 0 до 1, где:
PlayCanvas также поддерживает работу с альфа-каналом в текстурах для создания материалов с различной степенью прозрачности на основе изображений.
Пример настройки opacity:
material.opacity = 0.5; // Устанавливает полупрозрачность
Для работы с текстурами, содержащими альфа-канал (например, PNG с прозрачностью), можно использовать следующий код:
material.opacityMap = texture; // Применяет текстуру с альфа-каналом
Кроме того, для корректного отображения прозрачных материалов важно включить режим прозрачности:
material.blendType = pc.BLEND_NORMAL; // Включает стандартное смешивание для прозрачности
Параметры albedo, metalness, roughness, emissive и opacity являются основными компонентами системы PBR в PlayCanvas, играя ключевую роль в визуализации материалов и их взаимодействии с освещением. Правильная настройка этих параметров позволяет создавать фотореалистичные сцены с максимально точным отображением физических свойств материалов, что способствует улучшению качества визуализации в реальном времени.