Материал pc.BasicMaterial

pc.BasicMaterial — это один из базовых типов материалов, предоставляемых в библиотеке PlayCanvas. Этот материал используется для простых объектов, которые не требуют сложных текстурных эффектов или освещения. Он позволяет легко и быстро создавать визуальные эффекты, работая с цветами, прозрачностью, отражением и другими параметрами.

Создание и назначение материала

Для создания экземпляра материала используется конструктор pc.BasicMaterial. Он является стандартным типом материала, который не требует предварительного создания или настройки шейдеров. Например, создание материала и его назначение на объект в PlayCanvas выглядит следующим образом:

var material = new pc.BasicMaterial();
object.model.model.meshInstances[0].material = material;

Здесь создается новый экземпляр pc.BasicMaterial, и этот материал применяется к первому экземпляру сетки объекта. Материал может быть настроен с помощью различных свойств, которые управляют его внешним видом.

Основные свойства материала

  1. color: Цвет материала Свойство color задает базовый цвет материала. Оно представляет собой объект pc.Color, который принимает значения для компонентов красного, зеленого, синего и альфа-канала (прозрачности). Например:

    material.color = new pc.Color(1, 0, 0); // Красный

    Цвет используется для покраски объекта, если на него не накладываются текстуры.

  2. opacity: Прозрачность Параметр opacity управляет уровнем прозрачности материала. Значение от 0 (полностью прозрачный) до 1 (полностью непрозрачный). При значении меньшем 1 объект становится полупрозрачным.

    material.opacity = 0.5; // Полупрозрачный материал
  3. metalness: Металличность Свойство metalness определяет, насколько материал похож на металл. Оно управляет отражающими свойствами материала. Значение от 0 до 1, где 0 означает неметаллический материал, а 1 — полностью металлический.

    material.metalness = 1; // Металлический материал
  4. roughness: Шероховатость Параметр roughness контролирует, насколько матовой или гладкой будет поверхность. Чем ниже значение, тем более зеркальным и гладким будет отражение.

    material.roughness = 0.2; // Гладкая поверхность
  5. ambient: Окружающее освещение Свойство ambient задает коэффициент, который влияет на то, насколько объект будет освещен в условиях низкой освещенности или без источников света. Этот параметр обычно используется в сочетании с другими источниками освещения.

    material.ambient = new pc.Color(0.5, 0.5, 0.5); // Полуосвещенный материал
  6. emissive: Эмиссия (светящийся материал) Свойство emissive задает цвет, который объект испускает как собственное свечение. Это полезно для создания объектов, которые выглядят как источники света, например, лампы или экраны.

    material.emissive = new pc.Color(1, 1, 0); // Желтое свечение
  7. shadingModel: Модель освещения Параметр shadingModel определяет, как материал будет взаимодействовать с источниками света в сцене. Для pc.BasicMaterial поддерживается два режима: pc.SHADING_FLAT (плоское освещение) и pc.SHADING_GOURAUD (интерполяция по вершинным нормалям).

    material.shadingModel = pc.SHADING_GOURAUD; // Интерактивное освещение

Текстуры

Хотя pc.BasicMaterial является довольно простым материалом, он поддерживает текстуры. Текстуры можно назначать для различных карт, таких как цветная карта (diffuse), карта нормалей (normal map) и другие.

  1. diffuseMap: Текстура цвета Свойство diffuseMap позволяет задать текстуру, которая будет использоваться для окраски объекта.

    material.diffuseMap = someTexture;
  2. normalMap: Нормальная карта Свойство normalMap позволяет использовать карту нормалей для добавления мелких деталей на поверхность объекта без увеличения количества полигонов.

    material.normalMap = someNormalMap;
  3. 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. Он предоставляет широкий спектр параметров для настройки внешнего вида объектов, включая цвет, прозрачность, шероховатость, металличность и использование текстур. Несмотря на свою простоту, этот материал идеально подходит для создания большинства объектов в игровом движке, не требующих сложных расчетов освещения или физических свойств.