Material

MeshStandardMaterial

Стандартный материал на основе физических законов освещения, использующий конвенцию Metallic-Roughness.

Рендеринг на основе физики (PBR) является стандартом во многих 3Д-приложениях. Этот подход отличается от старых тем, что вместо использования приближенных данных о том, как свет взаимодействует с поверхностью, используется физически корректная модель. Идея заключается в том, что вместо того, чтобы настраивать материалы так, чтобы они хорошо выглядели при определенном освещении, можно создать материал, который будет "правильно" реагировать на все сценарии освещения.

Для достижения наилучших результатов при использовании этого материала всегда следует указывать карту окружения.

Конструктор

MeshStandardMaterial(parameters : Object)

parameters — (необ.) объект с одним или несколькими свойствами, определяющими внешний вид материала. Сюда можно передать любое свойство материала (включая любое свойство, унаследованное от Material).

Исключением является свойство color, которое может быть передано в виде шестнадцатеричной строки и по умолчанию имеет значение 0xffffff (белый). Для него производится вызов метода Color.set(color).

Вместо создания данного материала с использованием «Ява Скрипта», более эффективным методом будет сделать аналогичный материал в «Блендере», «3дс Максе» или «Майе».

Свойства

Общие свойства смотрите в базовом классе Material.

.aoMap : Texture

Красный канал этой текстуры используется в качестве карты эмбиент окклюжн. По умолчанию — null. Для карты aoMap требуется вторая текстурная развёртка.

.aoMapIntensity : Float

Интенсивность эффекта эмбиент окклюжн. По умолчанию - 1. Нулевое значение отключает эффект.

.bumpMap : Texture

Текстура для создания карты неровностей. Черные и белые значения отображают воспринимаемую глубину относительно освещения. Фактически не влияет на геометрию объекта, только на освещение. Если определена карта нормалей, то она будет проигнорирована.

.bumpScale : Float

Насколько сильно карта неровностей влияет на материал. Типичные диапазоны 0-1. По умолчанию — 1.

.color : Color

Цвет материала, по умолчанию используется белый цвет (0xffffff).

.defines : Object

Объект вида:

{ 'STANDARD': '' };

Используется в WebGLRenderer для выбора шейдеров.

.emissive : Color

Излучающий (световой) цвет материала, по сути, сплошной цвет, на который не влияет другое освещение. По умолчанию — черный.

.emissiveMap : Texture

Устанавливает карту излучения (свечения). По умолчанию — null. Цвет эмиссионной карты модулируется цветом эмиссии и интенсивностью эмиссии. Если у вас есть эмиссионная карта, обязательно установите цвет излучения на какой-либо другой, но не черный.

.emissiveIntensity : Float

Интенсивность излучаемого света. Модулирует цвет излучения. По умолчанию - 1.

.envMap : Texture

Карта окружения. Для обеспечения физически корректного рендеринга следует добавлять только те карты окружения, которые были предварительно обработаны PMREMGenerator. Назначается автоматически из соответствующего объекта CubeReflectionProbe, если Material.envMapAutoAssign имеет значение true. По умолчанию — null.

.envMapIntensity : Float

Масштабирует эффект карты окружения путем умножения ее цвета. По умолчанию 1.

.envMapParallaxMatrix : Matrix4

Matrix4 используется для применения эффекта параллакса к .envMap материала. Эта матрица переносит преобразование из мирового пространства в пространство конкретного reflection probe, карту окружения которого этот материал использует для рендеринга. Вычисляется автоматически, если Material.envMapAutoAssigntrue. По умолчанию используется единичная матрица.

.envMapParallaxMatrixInv : Matrix4

Matrix4, обратная к .envMapParallaxMatrix. Используется для применения эффекта параллакса к .envMap материала. Вычисляется автоматически, если Material.envMapAutoAssigntrue. По умолчанию используется единичная матрица.

.envMapParallaxType : Constant

Определяет тип объема параллакса. Такое же, как CubeReflectionProbe.parallaxType. Назначается автоматически из соответствующего CubeReflectionProbe, если Material.envMapAutoAssigntrue. По умолчанию ReflectionProbeTypeInfinite.

.flatShading : Boolean

Использовать ли плоскостной шейдинг для геометрии модели. По умолчанию false.

.fog : Boolean

Будет ли туман влиять на данный материал. По умолчанию true.

.isMeshStandardMaterial : Boolean

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

.map : Texture

Карта цветов. Может иметь дополнительный альфа-канал, используемый в сочетании со свойствами .transparent и .alphaTest. По умолчанию null. Цвет данной текстуры модулируется диффузным цветом.

.metalness : Float

Насколько материал похож на металл. Неметаллические материалы, такие как дерево или камень, используют 0.0, металлические - 1.0, и ничего (обычно) между ними нет. По умолчанию — 0. Значения между 0.0 и 1.0 могут использоваться для получения эффекта ржавчины. Если указана карта metalnessMap, оба значения перемножаются.

.metalnessMap : Texture

Синий канал этой текстуры используется для изменения "металличности" материала.

.normalMap : Texture

Текстура для создания карты нормалей. Значения RGB влияют на нормаль поверхности для каждого фрагмента пикселя и изменяют способ освещения. Карты нормалей не изменяют фактическую форму поверхности, только освещение. В случае, если материал имеет карту нормалей, созданную с использованием левосторонней конвенции, компонент y .normalScale должен быть отрицательным, чтобы компенсировать разную ориентацию.

.normalScale : Vector2

Насколько сильно карта нормалей влияет на материал. Типичные диапазон - 0-1. По умолчанию используется вектор (1, 1).

.roughness : Float

Насколько шероховатым кажется материал. 0.0 означает гладкое зеркальное отражение, 1.0 - полностью рассеянное. По умолчанию 1.0. Если указан параметр roughnessMap, оба значения умножаются.

.roughnessMap : Texture

Зеленый канал этой текстуры используется для изменения шероховатости материала.

.wireframe : Boolean

Рендерит геометрию в виде каркаса («вайрфрейма»). По умолчанию false (т.е. используется полное заполнение полигонов).

.wireframeLinewidth : Float

Управляет толщиной каркаса. По умолчанию - 1.

В связи с ограничениями WebGL, на большинстве платформ ширина линии всегда будет равна 1, независимо от установленного значения.

Методы

Общие методы смотрите в базовом классе Material.

Исходный файл

О том как получить исходный код этого модуля читайте тут.