Material

MeshPhongMaterial

Материал для блестящих поверхностей со спекулярными бликами.

Материал использует нефизически основанную модель Blinn-Phong для расчета отражательной способности. В отличие от модели Lambertian используемой в MeshLambertMaterial она может имитировать блестящие поверхности со спекулярными бликами (например, лакированное дерево).

Затенение рассчитывается с помощью модели Phong. При этом вычисляется затенение на пиксель (т.е. в fragment shader, он же пиксельный шейдер) которая дает более точные результаты, чем модель Gouraud используемая MeshLambertMaterial, ценой некоторого снижения производительности. MeshStandardMaterial и MeshPhysicalMaterial также используют эту модель затенения.

Производительность, как правило, выше при использовании этого материала по сравнению с MeshStandardMaterial или MeshPhysicalMaterial, при потере графической точности.

Конструктор

MeshPhongMaterial(parameters : Object)

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

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

Свойства

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

.alphaMap : Texture

Альфа-карта - это черно-белая текстура, которая контролирует непрозрачность поверхности. (черный: полностью прозрачный; белый: полностью непрозрачный). По умолчанию - null.

Используется только цвет текстуры, игнорируя альфа-канал, если он существует. Для текстур RGB и RGBA рендерер WebGL будет использовать зеленый канал при выборке этой текстуры из-за дополнительного бита точности, предоставляемого для зеленого цвета в DXT-сжатом и несжатом форматах RGB 565. Только яркость и яркость/альфа-текстуры также будут работать, как и положено.

.aoMap : Texture

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

.aoMapIntensity : Float

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

.bumpMap : Texture

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

.bumpScale : Float

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

.color : Color

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

.combine : Integer

Как объединить результат цвета поверхности с картой окружения, если таковая имеется.

Варианты v3d.Multiply (по умолчанию), v3d.MixOperation, v3d.AddOperation. Если выбрано смешивание, то .reflectivity используется для смешивания двух цветов.

.displacementMap : Texture

Карта смещения влияет на положение вершин меша. В отличие от других карт которые влияют только на свет и тень материала, смещенные вершины могут отбрасывать тени, блокировать другие объекты и действовать как настоящая геометрия. Текстура смещения представляет собой изображение, на которое наносится значение каждого пикселя (белый - самый высокий), и перемещает вершины меша.

.displacementScale : Float

Насколько сильно карта смещения влияет на меш (где черный цвет - нет смещения, а белый - максимальное смещение). Без установленной карты смещения это значение не применяется. По умолчанию - 1.

.displacementBias : Float

Смещение значений карты смещения на вершинах меша. Без установленной карты смещения это значение не применяется. По умолчанию равно 0.

.emissive : Color

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

.emissiveMap : Texture

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

.emissiveIntensity : Float

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

.envMap : Texture

Карта окружения. По умолчанию равно null.

.lightMap : Texture

Карта света. По умолчанию равно null. Для карты света требуется второй набор UVs.

.lightMapIntensity : Float

Интенсивность запеченного света. По умолчанию - 1.

.map : Texture

Карта цветов. По умолчанию равно null. Цвет карты текстуры модулируется диффузным .color.

.morphNormals : Boolean

Определяет, использует ли материал morphNormals. Установите значение true, чтобы передавать атрибуты morphNormals атрибуты из Geometry в шейдер. По умолчанию false.

.morphTargets : Boolean

Определяет, использует ли материал morphTargets. По умолчанию - false.

.normalMap : Texture

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

.normalMapType : Integer

Тип карты нормалей.

Варианты v3d.TangentSpaceNormalMap (по умолчанию) и v3d.ObjectSpaceNormalMap.

.normalScale : Vector2

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

.reflectivity : Float

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

.refractionRatio : Float

Показатель преломления (IOR) воздуха (приблизительно 1), деленный на показатель преломления материала. Используется с режимами отображения окружения v3d.CubeRefractionMapping и v3d.EquirectangularRefractionMapping. Коэффициент преломления не должен превышать 1. По умолчанию 0,98.

.shininess : Float

Насколько блестящим является блик .specular; большее значение дает более четкий блик. По умолчанию 30.

.skinning : Boolean

Определяет, использует ли материал скиннинг. По умолчанию - false.

.specular : Color

Спекулярный цвет материала. По умолчанию Color имеет значение 0x111111 (сильно темно-серый).

Это определяет, насколько блестящим является материал и цвет его блеска.

.specularMap : Texture

Значение карты спекуляра влияет как на то, насколько сильно выделяется спекулярная поверхность и на то, как сильно карта окружения влияет на поверхность. По умолчанию равно null.

.wireframe : Boolean

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

.wireframeLinecap : String

Определяет внешний вид концов линий. Возможные значения "butt", "round" и "square". По умолчанию 'round'.

Это соответствует свойству 2D Canvas lineCap и игнорируется WebGL рендерером.

.wireframeLinejoin : String

Определяет внешний вид стыков линий. Возможные значения "round", "bevel" и "miter". По умолчанию 'round'.

Это соответствует свойству 2D Canvas lineJoin и игнорируется WebGL рендерером.

.wireframeLinewidth : Float

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

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

Методы

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

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

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