pc.BasicMaterial — это один из базовых типов материалов,
предоставляемых в библиотеке PlayCanvas. Этот материал используется для
простых объектов, которые не требуют сложных текстурных эффектов или
освещения. Он позволяет легко и быстро создавать визуальные эффекты,
работая с цветами, прозрачностью, отражением и другими параметрами.
Для создания экземпляра материала используется конструктор
pc.BasicMaterial. Он является стандартным типом материала,
который не требует предварительного создания или настройки шейдеров.
Например, создание материала и его назначение на объект в PlayCanvas
выглядит следующим образом:
var material = new pc.BasicMaterial();
object.model.model.meshInstances[0].material = material;
Здесь создается новый экземпляр pc.BasicMaterial, и этот
материал применяется к первому экземпляру сетки объекта. Материал может
быть настроен с помощью различных свойств, которые управляют его внешним
видом.
color: Цвет материала Свойство
color задает базовый цвет материала. Оно представляет собой
объект pc.Color, который принимает значения для компонентов
красного, зеленого, синего и альфа-канала (прозрачности). Например:
material.color = new pc.Color(1, 0, 0); // Красный
Цвет используется для покраски объекта, если на него не накладываются текстуры.
opacity: Прозрачность Параметр
opacity управляет уровнем прозрачности материала. Значение
от 0 (полностью прозрачный) до 1 (полностью непрозрачный). При значении
меньшем 1 объект становится полупрозрачным.
material.opacity = 0.5; // Полупрозрачный материалmetalness: Металличность Свойство
metalness определяет, насколько материал похож на металл.
Оно управляет отражающими свойствами материала. Значение от 0 до 1, где
0 означает неметаллический материал, а 1 — полностью металлический.
material.metalness = 1; // Металлический материалroughness: Шероховатость Параметр
roughness контролирует, насколько матовой или гладкой будет
поверхность. Чем ниже значение, тем более зеркальным и гладким будет
отражение.
material.roughness = 0.2; // Гладкая поверхностьambient: Окружающее освещение Свойство
ambient задает коэффициент, который влияет на то, насколько
объект будет освещен в условиях низкой освещенности или без источников
света. Этот параметр обычно используется в сочетании с другими
источниками освещения.
material.ambient = new pc.Color(0.5, 0.5, 0.5); // Полуосвещенный материалemissive: Эмиссия (светящийся материал) Свойство
emissive задает цвет, который объект испускает как
собственное свечение. Это полезно для создания объектов, которые
выглядят как источники света, например, лампы или экраны.
material.emissive = new pc.Color(1, 1, 0); // Желтое свечениеshadingModel: Модель освещения Параметр
shadingModel определяет, как материал будет
взаимодействовать с источниками света в сцене. Для
pc.BasicMaterial поддерживается два режима:
pc.SHADING_FLAT (плоское освещение) и
pc.SHADING_GOURAUD (интерполяция по вершинным
нормалям).
material.shadingModel = pc.SHADING_GOURAUD; // Интерактивное освещениеХотя pc.BasicMaterial является довольно простым
материалом, он поддерживает текстуры. Текстуры можно назначать для
различных карт, таких как цветная карта (diffuse), карта нормалей
(normal map) и другие.
diffuseMap: Текстура цвета Свойство
diffuseMap позволяет задать текстуру, которая будет
использоваться для окраски объекта.
material.diffuseMap = someTexture;normalMap: Нормальная карта Свойство
normalMap позволяет использовать карту нормалей для
добавления мелких деталей на поверхность объекта без увеличения
количества полигонов.
material.normalMap = someNormalMap;specularMap: Текстура зеркальных отражений
Свойство specularMap управляет интенсивностью отражений и
блеска материала.
material.specularMap = someSpecularMap;Материалы, основанные на pc.BasicMaterial, поддерживают
альфа-канал, который позволяет контролировать прозрачность объектов. Для
правильной работы с прозрачностью важно также задать свойство
blending:
blending: Тип смешивания Определяет, как прозрачные объекты будут смешиваться с фоном или другими объектами. Возможные значения:
pc.BLEND_NORMAL: обычное смешивание.pc.BLEND_ADDITIVE: аддитивное смешивание.pc.BLEND_MULTIPLICATIVE: умножающее смешивание.Пример:
material.blending = pc.BLEND_NORMAL;Хотя pc.BasicMaterial не поддерживает сложных расчетов
освещения, он все же учитывает базовые источники света, такие как
точечные, направленные и точечные источники света, для нормального
отображения материалов в сценах с различными условиями освещенности.
Для сложных сцен и материалов с более выраженными эффектами
освещения, например, с поддержкой глобального освещения или тени, лучше
использовать более сложные материалы, такие как
pc.PbrMaterial.
Простой пример использования материала pc.BasicMaterial
на объекте:
var material = new pc.BasicMaterial();
material.color = new pc.Color(0.2, 0.4, 0.6); // Устанавливаем синий цвет
material.roughness = 0.5; // Средняя шероховатость
material.metalness = 0.1; // Немного металличности
// Применяем материал к объекту
var entity = new pc.Entity();
entity.addComponent('model', {
type: 'box'
});
entity.model.model.meshInstances[0].material = material;
app.root.addChild(entity);
Этот код создает синий полупрозрачный объект с небольшой шероховатостью и металличностью.
pc.BasicMaterial является базовым, но мощным
инструментом для создания простых материалов в PlayCanvas. Он
предоставляет широкий спектр параметров для настройки внешнего вида
объектов, включая цвет, прозрачность, шероховатость, металличность и
использование текстур. Несмотря на свою простоту, этот материал идеально
подходит для создания большинства объектов в игровом движке, не
требующих сложных расчетов освещения или физических свойств.