PBR-параметры: albedo, metalness, roughness, emissive, opacity

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

Metalness — это параметр, который указывает, насколько поверхность является металлической. Он контролирует степень, в которой материал отражает свет и вызывает блики. В PBR металлы и неметаллические материалы обрабатываются по-разному. Для металлических материалов все отражения происходят через сам материал, в то время как для неметаллических материалов отражения происходят через подложку.

В PlayCanvas параметр metalness влияет на визуальные свойства материалов, давая возможность точно моделировать поведение различных типов материалов, таких как металл, дерево, кожа и прочее.

Значение параметра metalness находится в диапазоне от 0 до 1, где:

  • 0 — материал неметаллический (например, дерево, камень, ткань).
  • 1 — материал полностью металлический (например, золото, сталь, серебро).

Пример настройки metalness:

material.metalness = 1;  // Устанавливает материал как металлический

Для текстуры metalness можно использовать черно-белое изображение, где черный цвет указывает на неметаллические участки, а белый — на металлические.

Roughness

Roughness — это параметр, который определяет гладкость или шероховатость поверхности материала. Этот параметр влияет на распространение отраженного света. Чем выше значение roughness, тем более размытой и рассеянной будет отраженная световая информация.

В PlayCanvas roughness используется для настройки степени рассеивания света на поверхности. Материалы с низким значением roughness (гладкие) будут иметь острые и яркие отражения, а материалы с высоким значением roughness (шероховатые) — рассеянные, мягкие отражения.

Значения roughness также варьируются от 0 до 1, где:

  • 0 — идеальная гладкость, отражения четкие и яркие.
  • 1 — высокая шероховатость, отражения рассеянные и размытые.

Пример настройки roughness:

material.roughness = 0.5;  // Устанавливает среднюю шероховатость для материала

Текстура roughness может быть использована для создания вариаций в шероховатости по поверхности объекта, что добавляет дополнительную детализированность.

Emissive

Emissive — это параметр, который позволяет объекту излучать свет, создавая эффект самосветящегося материала. Этот параметр применяется для материалов, которые имеют способность светиться, такие как экраны, лампы или другие источники света.

В PlayCanvas emissive определяет цвет и интенсивность излучаемого света. Материалы с включенным эмиссивом не зависят от окружающего освещения, так как они создают собственный свет. Это полезно для создания таких эффектов, как светящиеся логотипы, экраны или неоновые элементы.

Для настройки emissive в PlayCanvas используется цвет, который будет излучать материал.

Пример настройки emissive:

material.emissive = new pc.Color(0.5, 0.8, 1);  // Устанавливает эмиссию голубого цвета

Эмиссивный параметр можно использовать для создания материалов, которые ярко светятся в темных условиях.

Opacity

Opacity — это параметр, который управляет прозрачностью материала. Он позволяет создавать объекты с различной степенью прозрачности от полностью непрозрачных до полностью прозрачных. В PlayCanvas оптические материалы могут быть использованы для создания эффектов стекла, воды или любых других полупрозрачных объектов.

Значения opacity также варьируются от 0 до 1, где:

  • 0 — полностью прозрачный материал (невидимый).
  • 1 — полностью непрозрачный материал.

PlayCanvas также поддерживает работу с альфа-каналом в текстурах для создания материалов с различной степенью прозрачности на основе изображений.

Пример настройки opacity:

material.opacity = 0.5;  // Устанавливает полупрозрачность

Для работы с текстурами, содержащими альфа-канал (например, PNG с прозрачностью), можно использовать следующий код:

material.opacityMap = texture;  // Применяет текстуру с альфа-каналом

Кроме того, для корректного отображения прозрачных материалов важно включить режим прозрачности:

material.blendType = pc.BLEND_NORMAL;  // Включает стандартное смешивание для прозрачности

Заключение

Параметры albedo, metalness, roughness, emissive и opacity являются основными компонентами системы PBR в PlayCanvas, играя ключевую роль в визуализации материалов и их взаимодействии с освещением. Правильная настройка этих параметров позволяет создавать фотореалистичные сцены с максимально точным отображением физических свойств материалов, что способствует улучшению качества визуализации в реальном времени.