Three.js

From three.js

Материалы

В этом разделе дается описание различных материалов. Их можно представить как некие строительные материалы, вроде балок, стен, кровельного материала и т.д. Имеется базовый материал, определяющий общие свойства всех материалов и методов работы с ними. Оставшиеся материалы можно разделить на следующие виды: линии, сетки, точки, шейдеры, тень и спрайт.
LineBasicMaterial - простые линии
LineDashedMaterial - пунктирные линии
Material - базовый материал
MeshBasicMaterial - базовая сетка
MeshDepthMaterial - сетка с прорисовкой глубины
MeshLambertMaterial - матовая сетка с расчетом коэффициента отражения по Ламберту
MeshNormalMaterial - материал отображающий векторы нормалей как цвета в RGB-формате
MeshPhongMaterial - материал для блестящих поверхностей с зеркальными бликами
MeshPhysicalMaterial - расширение MeshStandardMaterial, увеличивающее регулировку способности к отражению
MeshStandardMaterial - стандартная сетка
MeshToonMaterial - сетка с тонировкой
PointsMaterial - матерал точек
RawShaderMaterial - тоже что и ShaderMaterial, но нет автоматического добавления определений встроенных атрибутов и униформов
ShaderMaterial - материал, отображаемый с помощью собственных (заказных) шейдеров.
ShadowMaterial - теневой материал, который может принимать тень, а в остальном полностью прозрачен
SpriteMaterial - материал для спрайтов
Material →

LineBasicMaterial

Материал для рисования геометрических фигур в каркасном стиле обычными линиями.

Пример

var material = new THREE.LineBasicMaterial( {
  color: 0xffffff,
  linewidth: 1,
  linecap: 'round', // ignored by WebGLRenderer (игнорируется WebGLRenderer'ом)
  linejoin:  'round' // ignored by WebGLRenderer (игнорируется WebGLRenderer'ом)
} );
Другие примеры
WebGL / buffergeometry / drawcalls
WebGL / buffergeometry / lines
WebGL / buffergeometry / lines / indexed
WebGL / decals
WebGL / geometry / nurbs
WebGL / geometry / shapes
WebGL / geometry / spline / editor
WebGL / interactive / buffergeometry
WebGL / interactive / voxelpainter
WebGL / lines / colors
WebGL / lines / cubes
WebGL / lines / dashed
WebGL / lines / sphere
WebGL / lines / splines
WebGL / materials
WebGL / physics / rope

Конструктор

LineBasicMaterial( parameters )


Свойства

Для информации об общих свойствах смотрите базовый класс Material.


color - цвет')" onmouseout="hide()">.color
Цвет материала, по умолчанию устанавливается как белый (0xffffff).


является материалом обычных линий')" onmouseout="hide()">.isLineBasicMaterial
Используется для проверки, принадлежит ли данный объект, или производные от него, к классу LineBasicMaterial (материалу обычных линий). По умолчанию значение равно true.
Не нужно его изменять, так как внутри three.js оно используется для оптимизации.

.lights
Свойство определяет, будет ли освещение влиять на материал. Значением по умолчанию является false.

.linewidth
Свойство управляет толщиной линии. Значение по умолчанию 1.
.linecap
Определяет внешний вид концов линии. Возможные значения: butt (торец), round (круглый) и square (квадратный). Значение по умолчанию round - круглый.
Данное свойство соответствует свойству linecap в 2D Canvas и игнорируется WebGL визуализатором (рендерером). Вот эта статья о linecap на русском языке.
Примечание переводчика: Вот нарисованы три линии с разными значениями linecap. Для наглядности добавлены две направляющие. Каждая линия будет начинаться и заканчиваться этими направляющими.
Левая линия будет использовать для linecap значение butt. Она не будет выходить за направляющие. Средняя линия будет нарисована со значением round. За направляющие будут выходить полукруги с диаметром равным толщине линии. Правая линия будет использовать значение square. Она будет выходить за направляющие на поля с шириной равной толщине линии и высотой равной половине толщины.
.linejoin
Определяет внешний вид соединений линии. Возможные значения: round - круглый, bevel (скос) и miter (митра - головной убор, часть богослужебного облачения
в ряде христианских церквей. В данном случае это
остроконечная католическая митра (в православии митра
округлая), что и определяет вид соединения линий.')" onmouseout="hide()">митра
). Значение по умолчанию round - круглый.
Примечание переводчика: miter соединяет линии в одной точке, расширяя для этого их границы и заполняя пространство ромбами.
round скругляет углы засчет добавления сектора с центром в точке пересечения линий и радиусом равным толщине линии.
bevel "срезает" угол, рисуя треугольник с вершинами в точке пересечения линий и крайних точках каждой линии.

Методы

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

Исходники



Material →

LineDashedMaterial

Материал для рисования геометрических фигур в каркасном стиле пунктирными линиями.

Пример

var material = new THREE.LineDashedMaterial( {
  color: 0xffffff,
  linewidth: 1,
  scale: 1,
  dashSize: 3,
  gapSize: 1,
} );
Другие примеры
WebGL / lines / dashed
Canvas / lines /dashed

Конструктор

LineDashedMaterial( parameters )


Свойства

Для информации об общих свойствах смотрите базовый класс Material.


color - цвет')" onmouseout="hide()">.color
Цвет материала, по умолчанию устанавливается как белый (0xffffff).

.dashSize
Размер штриха, по умолчанию равен 3. Это сумма размеров самого штриха и зазора между штрихами.

.gapSize
Размер зазора (расстояния) между штрихами, по умолчанию равен 1.


является материалом штриховых
линий')" onmouseout="hide()">.isLineDashedMaterial
Используется для проверки, принадлежит ли данный объект или производные от него, к классу LineDashedMaterial (материалу штриховых линий). По умолчанию значение равно true.
Не нужно его изменять, так как внутри three.js оно используется для оптимизации.

.lights
Свойство определяет, будет ли освещение влиять на материал. Значением по умолчанию является false.

.linewidth
Управляет толщиной линии. Значение по умолчанию 1.
.scale
Масштаб штриховой части линии. Значение по умолчанию 1.

Методы

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

Исходники



Material

Абстрактный, базовый класс для материалов.
Материалы описывают внешний вид объектов. Они определены (в основном) независимыми от визуализатора (рендерера), так что не придется переписывать материалы, если вы решили использовать другой визуализатор.
Перечисленные ниже свойства и методы наследуются всеми другими типами материала (хотя и могут иметь разные значения по умолчанию).

Конструктор

Material()
Конструктор создает общий (универсальный) материал.

Свойства


.alphaTest
Устанавливает значение альфа-канала (определяет прозрачность), которое будет использоваться при прохождении проверки состояния альфа-канала. Если непрозрачность (свойство opacity) будет меньше заданного здесь значения, материал не будет отображаться.
Значение по умолчанию 0.


destination - целевое смешивание')" onmouseout="hide()">.blendDst
Целевое смешивание. Значением по умолчанию является OneMinusSrcAlphaFactor. Все возможные значения смотрите в описании констант целевых факторов смешивания.
Для того, чтобы это свойство как-то повлияло на внешний вид, свойство blending должно быть установлено как CustomBlending.


alpha - альфа(канал) целевого смешивания')" onmouseout="hide()">.blendDstAlpha
Прозрачность для blendDst. Значением по умолчанию является null.


- уравнение смешивания')" onmouseout="hide()">.blendEquation
Уравнение смешивания, используемое при применении смешивания. Значением по умолчанию является AddEquation. Все возможные значения смотрите в описании констант уравнений смешивания.
Для того, чтобы это свойство как-то повлияло на внешний вид, свойство blending должно быть установлено как CustomBlending.


- уравнение смешивания альфа(канала)')" onmouseout="hide()">.blendEquationAlpha
Прозрачность для blendEquation. Значением по умолчанию является null.

.blending
Свойство определяет какое смешивание будет использоваться при отображении объектов с этим материалом. При использовании настраиваемых свойств blendSrc, blendDst или blendEquation, оно должно быть установлено как CustomBlending.
Все возможные значения смотрите в описании констант режима смешивания. Значением по умолчанию является NormalBlending.

.blendSrc
Исходное смешивание. Значением по умолчанию является
смешивания - исходные факторы')" onmouseout="hide()">SrcAlphaFactor
. Все возможные значения смотрите в описании констант
смешивания - исходные факторы')" onmouseout="hide()">режима смешивания
.
Для того, чтобы это свойство как-то повлияло на внешний вид, свойство blending должно быть установлено как CustomBlending.


- исходное смешивание альфа(канала)')" onmouseout="hide()">.blendSrcAlpha
Прозрачность для blendSrc. Значением по умолчанию является null.

.clipIntersection
Изменяет поведение плоскостей отсечения так, что обрезается только их пересечение, а не их соединение. Значение по умолчанию false.

.clippingPlanes
User-defined clipping planes specified as THREE.Plane objects in world space. These planes apply to the objects this material is attached to. Points in space whose signed distance to the plane is negative are clipped (not rendered). Смотрите пример WebGL / clipping /intersection. Значением по умолчанию является null.

.clipShadows
Свойство определяет, обрезать ли тени в соответствии с плоскостями отсечения, указанными для этого материала. Значение по умолчанию false.

.colorWrite
Будет ли отображаться цвет материала. Это свойство можно использовать в соединении со свойством сетки (mesh) renderOrder для создания невидимых объектов, закрывающих другие объекты. Значение по умолчанию true.


custom depth material -
настраиваемая глубина материала')" onmouseout="hide()">.customDepthMaterial
Custom depth material to be used by this material when rendering to the depth map. Для правильного отображения теней при направленном (DirectionalLight) или прожекторном (SpotLight) освещении, требуется указывать customDepthMaterial, если было:
  1. изменение позиций вершин в шейдере вершин,
  2. использование карты смещения,
  3. использование карты прозрачности (alpha map) с проверкой прозрачности (alphaTest), или
  4. использовалась прозрачная текстура с проверкой прозрачности (alphaTest).
Значением по умолчанию является undefined.


custom distance material -
настраиваемая отдаление материала')" onmouseout="hide()">.customDistanceMaterial
Тоже самое, что и customDepthMaterial, но используется с точечным освещением (PointLight). Значением по умолчанию является undefined.

.defines
Настраиваемые определения для введения в шейдер. Они передаются в виде объектного литерала, парами ключ/значение. { MY_CUSTOM_DEFINE: '' , PI2: Math.PI * 2 }. Пары определяются как в вершинном шейдере, так и в шейдере фрагментов. Значением по умолчанию является undefined.


depth function - функция глубины')" onmouseout="hide()">.depthFunc
Свойство определяет используемую функцию глубины, т.е. функцию, используемую материалом для сравнения значения входящего пиксела глубины (значения по оси Z) с текущим значением буфера глубины. Если результатом этого сравнения будет значение true, пиксель будет прорисован. Значением по умолчанию является LessEqualDepth. Все возможные значения смотрите в описании констант режима глубины.

.depthTest
Свойство определяет, включать ли проверку глубины при визуализации данного материала. Значение по умолчанию true.

.depthWrite
Whether rendering this material has any effect on the depth buffer. Значение по умолчанию true.
При прорисовке двумерных наложений, возможно будет полезно отключить запись глубины, чтобы сложить вместе несколько объектов без создания артефактов z-индекса. When drawing 2D overlays it can be useful to disable the depth writing in order to layer several things together without creating z-index artifacts.

.dithering
Свойство определяет, применять ли размытие цвета для устранения появления полос на изображении. Значение по умолчанию false.

.flatShading
Define whether the material is rendered with flat shading. Значение по умолчанию false.

.fog
Свойство определяет, будет ли материал подвержен влиянию тумана. Значение по умолчанию true.

.id
Уникальное число-идентификатор для данного экземпляра материала.

.isMaterial
Используется для проверки, является ли данный объект, или производные от него, материалами. По умолчанию значение равно true.
Не нужно его изменять, так как внутри three.js оно используется для оптимизации.

.lights
Свойство определяет, будет ли освещение влиять на материал. Значение по умолчанию true.

.name
Дополнительное, необязательное название объекта (необязательно быть уникальным). По умолчанию это пустая строка ("").

.needsUpdate
Указывает, что материал необходимо обновить на уровне WebGL. Установите значение true, если были внесены изменения, которые должны быть отображены в WebGL.
При создании экземпляра нового материала, данное свойство автоматически устанавливается как true.

.opacity
Число с плавающей запятой (float) в диапазоне 0.0 - 1.0, показывающее насколько прозрачен материал. Значение 0.0 указывает на полную прозрачность, а 1.0 - на полную непрозрачность. Значение по умолчанию равно 1.0.
Если свойство transparent материала не установлено как true, материал будет оставаться полностью непрозрачным и данное значение будет влиять только на его цвет.

.overdraw
Величина расширения треугольника во время рисования. Это обходное решение для случаев когда при использовании CanvasRenderer между треугольников появляются зазоры. Среди браузеров хорошие результаты получаются при значении 0.5. Значение по умолчанию 0.

.polygonOffset
Свойство устанавливает, будет ли использоваться смещение полигонов. Значение по умолчанию false. Это свойство соответствует свойству WebGL GL_POLYGON_OFFSET_FILL.
Для чего нужно свойство polygonOffset? Вот описание Z-конфликта из книги Коичи Мацуда, Роджер Ли «WebGL: программирование трехмерной графики».... читать далее
Поддержка удаления скрытых поверхностей – сложная и мощная особенность системы WebGL, которая в большинстве действует безупречно. Однако иногда, когда две фигуры или два объекта располагаются слишком близко друг к другу, результат ее работы выглядит менее естественно. Этот феномен известен как Z-конфликт (Z-fighting) и показан на рис. 7.30. Здесь мы нарисовали два треугольника, имеющих одну и ту же координату Z.


Рис. 7.30. Визуальный эффект, обусловленный Z-конфликтом (слева)
Z-конфликт возникает из-за того, что вычисления с буфером глубины имеют ограниченную точность и иногда система оказывается неспособна определить, какой объект находится спереди, а какой сзади. Технически этого конфликта можно избежать, если уделить особое внимание значениям координаты Z на этапе создания модели; однако, реализация такого решения выглядит нереалистичной в ситуациях, когда воспроизводится анимация с участием нескольких объектов.

Чтобы помочь решить эту проблему, WebGL предоставляет функцию, которая называется добавление сдвига к глубине (polygon offset). Эта функция автоматически выполняет сдвиг координаты Z, на величину, которая является функцией наклона объекта по отношению к линии взгляда.
gl.polygonOffset(factor, units)
Определяет поправку к координате Z для каждой вершины, которая будет нарисована после вызова этого метода. Поправка вычисляется по формуле m * factor + r * units, где m представляет наклон треугольника относительно линии взгляда, а r – наименьшая разница между двумя значениями координаты Z, которые могут оказаться неразличимыми для WebGL.


масштабирования смещения полигонов')" onmouseout="hide()">.polygonOffsetFactor
Устанавливает
для создания переменного смещения глубины
каждого полигона')" onmouseout="hide()">коэффициент масштабирования
смещения полигонов. Значение по умолчанию 0.

.polygonOffsetUnits
Устанавливает блоки смещения полигонов. Значение по умолчанию 0.

.precision
Свойство переопределяет точность по умолчанию визуализатора для данного материала. Может быть highp, mediump или lowp. Значение по умолчанию равно null.


умножение альфа(-канала)')" onmouseout="hide()">.premultipliedAlpha
Свойство определяет, будет ли предварительное перемножение значения альфа-канала, определяющего прозрачность. Посмотрите отличия в примере WebGL / Materials / Transparency. Значение по умолчанию false.

.shadowSide
Определяет которая из сторон граней отбрасывает тени. Может быть
front side - передняя сторона')" onmouseout="hide()">THREE.FrontSide
,
back side - задняя сторона')" onmouseout="hide()">THREE.BackSide
или
double side - две стороны')" onmouseout="hide()">THREE.DoubleSide
. Значение по умолчанию null.
Если установлено значение null, сторона отбрасывающая тень определяется следующим образом:
Material.sideСторона, отбрасывающая тени
THREE.FrontSideзадняя сторона
THREE.BackSideпередняя сторона
THREE.DoubleSideобе стороны

.side
Свойство определяет сторону грани, которая будет отображаться, - передняя, задняя или обе. Значение по умолчанию
front side - передняя сторона')" onmouseout="hide()">THREE.FrontSide
. Остальные варианты это
back side - задняя сторона')" onmouseout="hide()">THREE.BackSide
и
double side - две стороны')" onmouseout="hide()">THREE.DoubleSide
.

.transparent
Определяет будет ли данный материал прозрачным или нет. Данное свойство влияет на процесс визуализации, так как прозрачные объекты нуждаются в специальной обработке и отображаются после непрозрачных объектов.
Если данное свойство установлено как true, степень прозрачности материала определяется настройкой значения свойства opacity.
Значение по умолчанию false.

.type
Значением этого свойства является строка Material. Она не должна изменяться и может использоваться для поиска на сцене всех объектов данного типа.


identifier - универсальный уникальный
идентификатор')" onmouseout="hide()">.uuid

identifier - универсальный уникальный
идентификатор')" onmouseout="hide()">UUID
данного экземпляра материала. Он присваивается автоматически и не должен быть изменен.
Вот статья Википедии про UUID на русском языке.

.vertexColors
Свойство определяет, как окрашиваются вершины, путем задания способа заполнения атрибута цвета. Возможными значениями являются
no colors - не окрашено')" onmouseout="hide()">THREE.NoColors
,
face colors - цвета граней')" onmouseout="hide()">THREE.FaceColors
и
vertex colors - цвета вершин')" onmouseout="hide()">THREE.VertexColors
. Значение по умолчанию
no colors - не окрашено')" onmouseout="hide()">THREE.NoColors
.

.visible
Свойство определяет, будет ли данный материал видимым. Значение по умолчанию true.

.userData
Этот объект может использоваться для хранения пользовательских данных о материале. В нем нельзя хранить ссылки на функции, так как они не будут клонироваться.

Методы

В этом классе доступны методы EventDispatcher.


clone - клонировать')" onmouseout="hide()">.clone
( )
Возвращает новый материал с теми же параметрами как у данного материала.


copy- копировать')" onmouseout="hide()">.copy
(
material - материал')" onmouseout="hide()">material
)
Метод копирует параметры из переданного материала (параметр material) в данный материал.

.dispose( )
This disposes the material. Textures of a material don't get disposed. These needs to be disposed by Texture.

.setValues( values )
values -- контейнер с параметрами.
Метод устанавливает свойства на основе значений, переданных в аргументе.

.toJSON( 
метаданные, т.е. дополнительные
сведения, прилагаемые к данным')" onmouseout="hide()">meta
)
meta -- объект, содержащий метаданные для материала, вроде текстур или изображений.
Конвертирует материал в формат JSON для three.js.

.update( )
Метод вызывает для материала .dispatchEvent( { type: 'update' }).

Исходники



Material →

MeshBasicMaterial

Материал для рисования геометрических элементов в простом, затушеванном виде (плоском (flat) или каркасном (wireframe).
На этот материал не влияет освещение.
По умолчанию будет отображаться в виде плоских многоугольников. Чтобы нарисовать сетку в виде каркаса, установите свойство wireframe как true.

MeshBasicMaterial плоский (flat) и каркасный (wireframe).

Конструктор

MeshBasicMaterial( parameters )


Свойства

Для информации об общих свойствах смотрите базовый класс Material.


alpha map - карта альфа-канала,
т.е. карта прозрачности')" onmouseout="hide()">.alphaMap
Альфа-карта представляет собой текстуру в оттенках серого, которая управляет непрозрачностью по всей поверхности (черный цвет: полностью прозрачный; белый: полностью непрозрачный). Значением по умолчанию является null.
Используется только цвет текстуры, альфа-канал (если он существует) игнорируется. Для текстур RGB и RGBA визуализатор WebGL будет использовать канал зеленого цвета при дискретизации этой текстуры, из-за For RGB and RGBA textures, the WebGL renderer will use the green channel when sampling this texture due to the extra bit of precision provided for green in DXT-compressed and uncompressed RGB 565 formats. из-за дополнительного бита точности, предоставляемого зеленым каналом, в сжатом DXT и несжатом RGB 565 форматах. Текстуры только с каналом яркости и яркости/прозрачности (альфа-канал) также будут работать как и ожидалось. Luminance-only and luminance/alpha textures will also still work as expected.


aoMap это сокращ. англ. слов ambient occlusion map -
карта перекрытия (затенения) при общем (фоновом)
освещении')" onmouseout="hide()">.aoMap
Канал красного цвета используется в данной текстуре в качестве ambient occlusion map. Значением по умолчанию является null. The aoMap requires a second set of UVs, and consequently will ignore the repeat and offset Texture properties.
Статья в русской Википедии о эффекте перекрытия (модели затенения) при фоновом освещении. А вот в английской.


интенсивность затенения при общем (фоновом) освещении')" onmouseout="hide()">.aoMapIntensity
Интенсивность затенения при общем (фоновом) освещении. Значение по умолчанию равно 1. Нулевое значение означает отсутствие эффекта перекрытия (затенения).


color - цвет')" onmouseout="hide()">.color
Цвет материала, по умолчанию установлен как белый (0xffffff - white).

.combine
How to combine the result of the surface's color with the environment map, if any.
Возможными значениями являются
multiply - умножать')" onmouseout="hide()">THREE.Multiply
(значение по умолчанию),
mix operation - операция смешивания')" onmouseout="hide()">THREE.MixOperation
и
add operation - операция сложения')" onmouseout="hide()">THREE.AddOperation
. Если выбрано смешивание (THREE.MixOperation), то для смешивания двух цветов будет использовано свойство
reflectivity - коэффициент отражения,
способность к отражению')" onmouseout="hide()">reflectivity
.


является основным материалом
сетки')" onmouseout="hide()">.isMeshBasicMaterial
Используется для проверки, является ли данный объект, или производные от него, основными материалами сетки. По умолчанию значение равно true.
Не нужно его изменять, так как внутри three.js оно используется для оптимизации.

.envMap
Карта окружения (environment map). Значением по умолчанию является null.


light map - карта освещения')" onmouseout="hide()">.lightMap
Карта освещения. Значением по умолчанию является null. Свойство lightMap требует второго набора UV координат и, следовательно, будет игнорировать свойства
(repeat - повторение)')" onmouseout="hide()">repeat
и
(offset - смещение)')" onmouseout="hide()">offset
текстуры.

.lightMapIntensity
Intensity of the baked light. Значение по умолчанию равно 1.

.lights
Свойство определяет, будет ли материал зависеть от освещения. Значением по умолчанию является false.


map - карта')" onmouseout="hide()">.map
Карта цвета. Значением по умолчанию является null.

.morphTargets
Свойство определяет, будет ли данный материал использовать цели морфинга (morphTargets). Значением по умолчанию является false.

.reflectivity
How much the environment map affects the surface; also see .combine. The default value is 1 and the valid range is between 0 (no reflections) and 1 (full reflections).

.refractionRatio
The index of refraction (IOR) of air (approximately 1) divided by the index of refraction of the material. It is used with environment mapping modes THREE.CubeRefractionMapping and THREE.EquirectangularRefractionMapping. Коэффициент преломления не должен превышать 1. Значение по умолчанию равно 0.98.

.skinning
Define whether the material uses skinning. Значением по умолчанию является false.


specular map - карта отражения')" onmouseout="hide()">.specularMap
Карта отражений используемая материалом. Значением по умолчанию является null.

.wireframe
Свойство позволяет отобразить геометрическую фигуру в виде каркаса. Значением по умолчанию является false (т.е. каркас не виден и визуализация происходит при помощи плоских многоугольников).

.wireframeLinecap
Определяет внешний вид концов линии. Возможные значения: butt (торец), round (круглый) и square (квадратный). Значение по умолчанию round - круглый.
Данное свойство соответствует свойству linecap в 2D Canvas и игнорируется WebGL визуализатором (рендерером). Вот эта статья о linecap на русском языке.

.wireframeLinejoin
Определяет внешний вид соединений линии. Возможные значения: round - круглый, bevel (скос) и miter (митра - головной убор, часть богослужебного облачения
в ряде христианских церквей. В данном случае это
остроконечная католическая митра (в православии митра
округлая), что и определяет вид соединения линий.')" onmouseout="hide()">митра
). Значение по умолчанию round - круглый.
Данное свойство соответствует свойству lineJoin в 2D Canvas и игнорируется WebGL визуализатором (рендерером). Вот эта статья о lineJoin на русском языке.

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

Методы

Для информации об общих методах смотрите базовый класс Material.

Исходники



Material →

MeshDepthMaterial

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

MeshDepthMaterial плоский (flat) и каркасный (wireframe).

Конструктор

MeshDepthMaterial( parameters )

Свойства

Для информации об общих свойствах смотрите базовый класс Material.


alpha map - карта альфа-канала')" onmouseout="hide()">.alphaMap
Карта значений альфа-канала (карта прозрачности) - это текстура оттенков серого, которая управляет непрозрачностью всей поверхности (черный цвет: полная прозрачность; белый цвет: полная непрозрачность). Значением по умолчанию является null.
Используется только цвет текстуры, если существует альфа-канал, то он игнорируется. Для текстур в формате RGB и RGBA, при выборке этой текстуры визуализатор WebGL будет использовать канал зеленого цвета из-за дополнительного бита точности, предоставляемого для зеленого цвета в сжатом DXT формате и упаковке в формате RGB 565. Форматы текстур только яркости и яркости+альфа-канала также будут работать должным образом.

.depthPacking
Кодирование для упаковки значений глубины. Значением по умолчанию является
BasicDepthPacking')" onmouseout="hide()">BasicDepthPacking
.


displacement map - карта сдвига')" onmouseout="hide()">.displacementMap
Карта сдвига влияет на положение вершин сетки (mesh). В отличие от других карт, влияющих только на свет и тень материала, сдвиг вершин может отбрасывать тени, блокировать другие объекты, а то и действовать как реальные геометрические элементы. Текстура сдвига - это изображение, в котором значение каждого пиксела (белый считается самым верхним) сопоставляется The displacement map affects the position of the mesh's vertices. Unlike other maps which only affect the light and shade of the material the displaced vertices can cast shadows, block other objects, and otherwise act as real geometry. The displacement texture is an image where the value of each pixel (white being the highest) is mapped against, and repositions, the vertices of the mesh.

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

.displacementBias
Смещение значений карты сдвига на вершинах сетки (mesh). Без установки карты сдвига данное значение не применяется. Значение по умолчанию равно 0.

.fog
Свойство определяет, будет ли материал подвержен влиянию тумана. Значением по умолчанию является false.


является материалом сетки
с прорисовкой глубины')" onmouseout="hide()">.isMeshDepthMaterial
Используется для проверки, является ли данный объект, или производные от него, материалами сетки с прорисовкой глубины. По умолчанию значение равно true.
Не нужно его изменять, так как внутри three.js оно используется для оптимизации.

.lights
Свойство определяет, будет ли освещение влиять на материал. Значением по умолчанию является false.


map - карта')" onmouseout="hide()">.map
Карта цвета. Значением по умолчанию является null.

.morphTargets
Свойство определяет, будет ли материал использовать morphTargets. Значением по умолчанию является false.

.skinning
Свойство определяет, будет ли материал использовать skinning. Значением по умолчанию является false.

.wireframe
Свойство позволяет отобразить геометрическую фигуру в виде каркаса. Значением по умолчанию является false (т.е. каркас не виден и объект отображен плавно затушеванным).

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

Методы

Для информации об общих методах смотрите базовый класс Material.

Исходники



Material →

MeshLambertMaterial

Материал для матовых поверхностей, без зеркальных бликов.
Этот материал использует для расчета коэффициента отражения модель Ламберта, не соответствующую физическим принципам. (Вот статья Википедии «Закон Ламберта» на русском языке. Он может хорошо имитировать некоторые поверхности (такие как необработанная древесина или камень), но не в состоянии воспроизвести блестящие поверхности с зеркальными бликами (например, лакированная древесина).
Затенение рассчитывается с использованием модели тонирования (затенения) Гуро (Gouraud shading model). При этом вычисляется затенение для вершины (т.е. в вершинном шейдере) и результат интерполируется по граням многоугольника (полигона).
Благодаря простоте моделей освещения и отражения, при использовании данного материала производительность вычислений будет выше, чем у MeshPhongMaterial, MeshStandardMaterial или MeshPhysicalMaterial ценой некоторого снижения графической точности.

MeshLambertMaterial плоский (flat) и каркасный (wireframe).

Конструктор

MeshLambertMaterial( parameters )


Свойства

Для информации об общих свойствах смотрите базовый класс Material.


alpha map - карта альфа-канала')" onmouseout="hide()">.alphaMap
Карта значений альфа-канала (карта прозрачности) - это текстура оттенков серого, которая управляет непрозрачностью всей поверхности (черный цвет: полная прозрачность; белый цвет: полная непрозрачность). Значением по умолчанию является null.
Используется только цвет текстуры, если существует альфа-канал, то он игнорируется. Для текстур в формате RGB и RGBA, при выборке этой текстуры визуализатор WebGL будет использовать канал зеленого цвета из-за дополнительного бита точности, предоставляемого для зеленого цвета в сжатом DXT формате и упаковке в формате RGB 565. Форматы текстур только яркости и яркости+альфа-канала также будут работать должным образом.


aoMap это сокращ. англ. слов ambient occlusion map -
карта перекрытия (затенения) при общем (фоновом)
освещении')" onmouseout="hide()">.aoMap
Канал красного цвета используется в данной текстуре в качестве карты затенения при фоновом освещении (ambient occlusion map). Значением по умолчанию является null. Свойству aoMap требуется второй набор текстурных координат UV и поэтому будут игнорироваться свойства текстуры repeat и offset.
Статья в русской Википедии о эффекте перекрытия (модели затенения) при фоновом освещении. А вот в английской.


интенсивность затенения при общем (фоновом) освещении')" onmouseout="hide()">.aoMapIntensity
Интенсивность затенения при общем (фоновом) освещении. Значение по умолчанию равно 1. Нулевое значение означает отсутствие эффекта перекрытия (затенения).


color - цвет')" onmouseout="hide()">.color
Цвет материала, по умолчанию установлен как белый (0xffffff - white).

.combine
Свойство определяет, как совмещаются цвет поверхности с картой окружения, если таковая существует.
Возможными значениями являются
multiply - умножать')" onmouseout="hide()">THREE.Multiply
(значение по умолчанию),
mix operation - операция смешивания')" onmouseout="hide()">THREE.MixOperation
и
add operation - операция сложения')" onmouseout="hide()">THREE.AddOperation
. Если выбрано смешивание (THREE.MixOperation), то для смешивания двух цветов будет использовано свойство
reflectivity - коэффициент отражения,
способность к отражению')" onmouseout="hide()">reflectivity
.


emissive - излучающий, испускающий, эмиссионный')" onmouseout="hide()">.emissive
Цвет света, излучаемого материалом; фактически это однотонный цвет, не подверженный влиянию другого освещения. Значением по умолчанию является black - черный цвет (0x000000).


emissive map - карта излучения')" onmouseout="hide()">.emissiveMap
Свойство устанавливает карту излучения (свечения). Значением по умолчанию является null. Цвет карты излучения модулируется цветом и интенсивностью испускаемого цвета. Если имеется карта излучения, обязательно установите цвет испускаемого света на что-либо отличное от черного цвета.

.emissiveIntensity
Интенсивность испускаемого света. Модулирует излучаемый цвет. Значение по умолчанию равно 1.


env map - сокращ. англ. слов
environment map - карта окружения')" onmouseout="hide()">.envMap
Карта окружения. Значением по умолчанию является null.


сетки (с расчетом затенения) по Ламберту')" onmouseout="hide()">.isMeshLambertMaterial
Используется для проверки, является ли данный объект, или производные от него, материалами сетки с расчетом затенения по Ламберту. Значением по умолчанию является true. Не нужно его изменять, так как внутри three.js оно используется для оптимизации.


light map - карта освещения')" onmouseout="hide()">.lightMap
Карта освещения. Значением по умолчанию является null. Свойству lightMap требуется второй набор текстурных координат UV и поэтому будут игнорироваться свойства текстуры repeat и offset.

.lightMapIntensity
Интенсивность Intensity of the baked light. Значение по умолчанию равно 1.


map - карта')" onmouseout="hide()">.map
Карта цвета. Значением по умолчанию является null.


morphing normals - нормали морфинга')" onmouseout="hide()">.morphNormals
Свойство определяет, будет ли материал использовать нормали морфинга. Установите его как true для передачи атрибутов morphNormals из Geometry в шейдер. Значением по умолчанию является false.

.morphTargets
Свойство определяет, будет ли материал использовать цели морфинга. Значением по умолчанию является false.

.reflectivity
Свойство определяет, насколько карта окружения влияет на поверхность; также смотрите свойство combine.

.refractionRatio
Показатель преломления воздуха (примерно равный 1) разделенный на показатель преломления материала. Он используется с режимами картирования окружения THREE.CubeRefractionMapping и THREE.EquirectangularRefractionMapping. Коэффициент преломления не должен превышать 1. Значение по умолчанию равно 0.98.


3D-модели полигональной сеткой)')" onmouseout="hide()">.skinning
Свойство определяет, будет ли использоватья
skinning - процесс создания кожи
- операция обворачивания 3D-модели
полигональной сеткой.')" onmouseout="hide()">скиннинг (skinning)
. Значением по умолчанию является false.


specular map - карта отражения')" onmouseout="hide()">.specularMap
Карта отражений используемая материалом. Значением по умолчанию является null.

.wireframe
Свойство позволяет отобразить геометрическую фигуру в виде каркаса. Значением по умолчанию является false (т.е. каркас не виден и визуализация происходит при помощи плоских многоугольников).

.wireframeLinecap
Определяет внешний вид концов линии. Возможные значения: butt (торец), round (круглый) и square (квадратный). Значение по умолчанию round - круглый.
Данное свойство соответствует свойству linecap в 2D Canvas и игнорируется WebGL визуализатором (рендерером). Вот эта статья о linecap на русском языке.

.wireframeLinejoin
Определяет внешний вид соединений линии. Возможные значения: round - круглый, bevel (скос) и miter (митра - головной убор, часть богослужебного облачения
в ряде христианских церквей. В данном случае это
остроконечная католическая митра (в православии митра
округлая), что и определяет вид соединения линий.')" onmouseout="hide()">митра
). Значение по умолчанию round - круглый.
Данное свойство соответствует свойству lineJoin в 2D Canvas и игнорируется WebGL визуализатором (рендерером). Вот эта статья о lineJoin на русском языке.

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

Методы

Для информации об общих методах смотрите базовый класс Material.

Исходники



Material →

MeshNormalMaterial

Материал отображающий векторы нормалей как цвета в RGB-формате.

MeshNormalMaterial, MeshNormalMaterial с включенным flatShading и MeshNormalMaterial с включенным wireframe.

Конструктор

MeshNormalMaterial( parameters )

Свойства

Для информации об общих свойствах смотрите базовый класс Material.

.fog
Свойство устанавливает, будет или нет материал подвержен влиянию тумана. По умолчанию значение равно false.

.isMeshNormalMaterial
Используется для проверки, является ли данный объект, или производные от него, материалом нормалей сетки. По умолчанию значение равно true.
Не нужно его изменять, так как внутри three.js оно используется для оптимизации.

.lights
Свойство устанавливает, будет или нет освещение влиять на материал. По умолчанию значение равно false.

.morphTargets
Свойство определяет, будет ли материал использовать цели морфинга. По умолчанию значение равно false.

.wireframe
Свойство позволяет отобразить геометрическую фигуру в виде каркаса. Значением по умолчанию является false (т.е. каркас не виден и объект ровно закрашен).

.wireframeLinewidth
Свойство управляет толщиной линий каркаса. Значение по умолчанию равно 1.

Методы

Для информации об общих методах смотрите базовый класс Material.

Исходники



Material →

MeshPhongMaterial

Материал для блестящих поверхностей с зеркальными бликами.
Этот материал использует для расчета коэффициента отражения модель Блинна-Фонга (Blinn-Phong model), не соответствующую физическим принципам. В отличие от модели Ламберта, используемой в MeshLambertMaterial, данный материал может имитировать блестящие поверхности с зеркальными бликами (такие как лакированная древесина).
Затенение рассчитывается с помощью модели затенения по Фонгу (Phong shading model). Здесь вычисляется затенение на пиксель (то есть, в шейдере фрагментов или по другому в пиксельном шейдере), которое дает более точные результаты, чем модель Гуро (Gouraud), используемая в MeshLambertMaterial, за счет некоторого снижения производительности. MeshStandardMaterial и MeshPhysicalMaterial также используют эту модель затенения.
При использовании данного материала, производительность в целом будет больше, чем у MeshStandardMaterial и MeshPhysicalMaterial, ценой некоторого снижения графической точности.

MeshPhongMaterial, MeshPhongMaterial с включенным flatShading и MeshPhongMaterial с включенным wireframe.

Конструктор

MeshPhongMaterial( parameters )


Свойства

Для информации об общих свойствах смотрите базовый класс Material.


alpha map - карта альфа-канала')" onmouseout="hide()">.alphaMap
Карта значений альфа-канала (карта прозрачности) - это текстура оттенков серого, которая управляет непрозрачностью всей поверхности (черный цвет: полная прозрачность; белый цвет: полная непрозрачность). Значением по умолчанию является null.
Используется только цвет текстуры, если существует альфа-канал, то он игнорируется. Для текстур в формате RGB и RGBA, при выборке этой текстуры визуализатор WebGL будет использовать канал зеленого цвета из-за дополнительного бита точности, предоставляемого для зеленого цвета в сжатом DXT формате и упаковке в формате RGB 565. Форматы текстур только яркости и яркости+альфа-канала также будут работать должным образом.


aoMap это сокращ. англ. слов ambient occlusion map -
карта перекрытия (затенения) при общем (фоновом)
освещении')" onmouseout="hide()">.aoMap
Канал красного цвета используется в данной текстуре в качестве карты затенения при фоновом освещении (ambient occlusion map). Значением по умолчанию является null. Свойству aoMap требуется второй набор текстурных координат UV и поэтому будут игнорироваться свойства текстуры repeat и offset.
Статья в русской Википедии о эффекте перекрытия (модели затенения) при фоновом освещении. А вот статья «Ambient occlusion» в английской Википедии.


интенсивность затенения при общем (фоновом) освещении')" onmouseout="hide()">.aoMapIntensity
Интенсивность затенения при общем (фоновом) освещении. Значение по умолчанию равно 1. Нулевое значение означает отсутствие эффекта перекрытия (затенения).


bump map - карта рельефа')" onmouseout="hide()">.bumpMap
Текстура для создания карты рельефа. Значения черного и белого цвета сопоставляются с предполагаемой глубиной по отношению с освещением. Рельеф не оказывает влияния на геометрию объекта, только на освещение. Если определена карта нормалей, карта рельефа будет проигнорирована.

.bumpScale
Свойство определяет, как сильно карта рельефа повлияет на материал. Типичный диапазон значений от 0 до 1. Значение по умолчанию равно 1.


color - цвет')" onmouseout="hide()">.color
Цвет материала, по умолчанию установлен как белый (0xffffff - white).

.combine
Свойство определяет, как совмещаются цвет поверхности с картой окружения, если таковая существует.
Возможными значениями являются
multiply - умножать')" onmouseout="hide()">THREE.Multiply
(значение по умолчанию),
mix operation - операция смешивания')" onmouseout="hide()">THREE.MixOperation
и
add operation - операция сложения')" onmouseout="hide()">THREE.AddOperation
. Если выбрано смешивание (THREE.MixOperation), то для смешивания двух цветов будет использовано свойство
reflectivity - коэффициент отражения,
способность к отражению')" onmouseout="hide()">reflectivity
.


displacement map - карта сдвига')" onmouseout="hide()">.displacementMap
Карта сдвига влияет на положение вершин сетки (mesh). В отличие от других карт, влияющих только на свет и тень материала, сдвиг вершин может отбрасывать тени, блокировать другие объекты, а то и действовать как реальные геометрические элементы. The displacement texture is an image where the value of each pixel (white being the highest) is mapped against, and repositions, the vertices of the mesh.

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

.displacementBias
Смещение значений карты сдвига на вершинах сетки (mesh). Без установки карты сдвига данное значение не применяется. Значение по умолчанию равно 0.


emissive - излучающий, испускающий, эмиссионный')" onmouseout="hide()">.emissive
Цвет света, излучаемого материалом; фактически это однотонный цвет, не подверженный влиянию другого освещения. Значением по умолчанию является black - черный цвет (0x000000).


emissive map - карта излучения')" onmouseout="hide()">.emissiveMap
Свойство устанавливает карту излучения (свечения). Значением по умолчанию является null. Цвет карты излучения модулируется цветом и интенсивностью испускаемого цвета. Если имеется карта излучения, обязательно установите цвет испускаемого света на что-либо отличное от черного цвета.

.emissiveIntensity
Интенсивность испускаемого света. Модулирует излучаемый цвет. Значение по умолчанию равно 1.


env map - сокращ. англ. слов
environment map - карта окружения')" onmouseout="hide()">.envMap
Карта окружения. Значением по умолчанию является null.


сетки (с расчетом затенения) по Фонгу')" onmouseout="hide()">.isMeshPhongMaterial
Используется для проверки, является ли данный объект, или производные от него, материалами сетки с расчетом затенения по Фонгу. Значением по умолчанию является true. Не нужно его изменять, так как внутри three.js оно используется для оптимизации.


light map - карта освещения')" onmouseout="hide()">.lightMap
Карта освещения. Значением по умолчанию является null. Свойству lightMap требуется второй набор текстурных координат UV и поэтому будут игнорироваться свойства текстуры repeat и offset.

.lightMapIntensity
Интенсивность Intensity of the baked light. Значение по умолчанию равно 1.


map - карта')" onmouseout="hide()">.map
Карта цвета. Значением по умолчанию является null.


morphing normals - нормали морфинга')" onmouseout="hide()">.morphNormals
Свойство определяет, будет ли материал использовать нормали морфинга. Установите его как true для передачи атрибутов morphNormals из Geometry в шейдер. Значением по умолчанию является false.

.morphTargets
Свойство определяет, будет ли материал использовать цели морфинга. Значением по умолчанию является false.


normal map - карта нормалей')" onmouseout="hide()">.normalMap
Текстура для создания карты нормалей. The RGB values affect the surface normal for each pixel fragment and change the way the color is lit. Normal maps do not change the actual shape of the surface, only the lighting.

.normalMapType
Тип карты нормалей.
Можно выбирать из THREE.TangentSpaceNormalMap (значение по умолчанию) и THREE.ObjectSpaceNormalMap.


normal scale - масштаб нормалей')" onmouseout="hide()">.normalScale
Свойство определяет, насколько сильно карта нормалей влияет на материал. Типовой диапазон значений от 0 до 1. Значением по умолчанию является двумерный вектор, установленный как (1,1).

.reflectivity
Свойство определяет, насколько карта окружения влияет на поверхность; также смотрите свойство combine.

.refractionRatio
Показатель преломления воздуха (примерно равный 1) разделенный на показатель преломления материала. Он используется с режимами картирования окружения THREE.CubeRefractionMapping и THREE.EquirectangularRefractionMapping. Коэффициент преломления не должен превышать 1. Значение по умолчанию равно 0.98.

.shininess
How shiny the .specular highlight is; a higher value gives a sharper highlight. Значение по умолчанию равно 30.


3D-модели полигональной сеткой)')" onmouseout="hide()">.skinning
Свойство определяет, будет ли использоваться
skinning - процесс создания кожи
- операция обворачивания 3D-модели
полигональной сеткой.')" onmouseout="hide()">скиннинг (skinning)
. Значением по умолчанию является false.


specular - зеркальный, отражающий')" onmouseout="hide()">.specular
Цвет, отражаемый материалом. Значением по умолчанию является Color, установленный как 0x111111 (темно-темно-серый).
Свойство определяет, насколько сильно блестит материал и цвет его блеска.


specular map - карта отражения')" onmouseout="hide()">.specularMap
Значение карты отражений задает насколько сильно зеркальная поверхность может отражать свет и насколько карта окружения будет влиять на эту поверхность. Значением по умолчанию является null.

.wireframe
Свойство позволяет отобразить геометрическую фигуру в виде каркаса. Значением по умолчанию является false (т.е. каркас не виден и визуализация происходит при помощи плоских многоугольников).

.wireframeLinecap
Определяет внешний вид концов линии. Возможные значения: butt (торец), round (круглый) и square (квадратный). Значение по умолчанию round - круглый.
Данное свойство соответствует свойству linecap в 2D Canvas и игнорируется WebGL визуализатором (рендерером). Вот эта статья о linecap на русском языке.

.wireframeLinejoin
Определяет внешний вид соединений линии. Возможные значения: round - круглый, bevel (скос) и miter (митра - головной убор, часть богослужебного облачения
в ряде христианских церквей. В данном случае это
остроконечная католическая митра (в православии митра
округлая), что и определяет вид соединения линий.')" onmouseout="hide()">митра
). Значение по умолчанию round - круглый.
Данное свойство соответствует свойству lineJoin в 2D Canvas и игнорируется WebGL визуализатором (рендерером). Вот эта статья о lineJoin на русском языке.

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

Методы

Для информации об общих методах смотрите базовый класс Material.

Исходники



Material →  MeshStandardMaterial →

MeshPhysicalMaterial

Расширение MeshStandardMaterial, позволяющее увеличить регулировку способности к отражению.
Обратите внимание, что при использовании этого материала, для достижения наилучших результатов, всегда следует указывать карту окружения.

Примеры

webgl / materials / variations / physical
webgl / materials / reflectivity

Конструктор

MeshPhysicalMaterial( parameters )
parameters - объект с одним или несколькими свойствами, определяющими внешний вид материала (дополнительный, необязательный параметр). Здесь можно передать любое свойство материала (включая любое свойство унаследованное от Material и MeshStandardMaterial).


Свойства

Для информации об общих свойствах смотрите базовые классы Material и MeshStandardMaterial.

.clearCoat
Уровень прозрачной оболочки, диапазон значений от 0.0 до 1.0. Значение по умолчанию равно 0.0.

.clearCoatRoughness
Свойство определяет, насколько велика шероховатость прозрачной оболочки, диапазон значений от 0.0 до 1.0. Значение по умолчанию равно 0.0.


является физическим материалом сетки')" onmouseout="hide()">.isMeshPhysicalMaterial
Используется для проверки, является ли данный объект, или производные от него, физическим материалом сетки. По умолчанию значение равно true.
Не нужно его изменять, так как внутри three.js оно используется для оптимизации.

.defines
Объект в виде: { 'PHYSICAL': '' };. Он используется WebGLRenderer'ом для выбора шейдеров.

.reflectivity
Степень отражения, возможны значения от 0.0 до 1.0. Значение по умолчанию равно 0.5.
Свойство моделирует способность к отражению света неметаллических материалов. Оно не работает, если свойство metalness равно 1.0.

Методы

Для информации об общих методах смотрите базовые классы Material и MeshStandardMaterial.

Исходники



Material →

MeshStandardMaterial

Стандартный, физически обоснованный материал, using Metallic-Roughness workflow.
Визуализация на физических принципах (physically based rendering - PBR) в последнее время стала стандартом во многих приложениях по 3D графике, таких как Unity, Unreal и 3D Studio Max.
Такой подход отличается от более старых попыток тем, что вместо использования приближений метода, которым свет взаимодействует с поверхностью, используется физически правильная модель. Идея заключается в том, что вместо того, чтобы подбирать материалы для хорошего вида при конкретном освещении, можно создать материал, который будет «правильно» реагировать при любых вариантах освещения.
На практике это дает более точный и реалистичный результат, чем у MeshLambertMaterial или MeshPhongMaterial, за счет более высоких затрат на вычисления.
Затенение рассчитывается тем же самым способом, что и для MeshPhongMaterial, с использованием модели затенения по Фонгу (Phong shading model). Здесь вычисляется затенение на пиксель (то есть, в шейдере фрагментов или по другому в пиксельном шейдере), которое дает более точные результаты, чем модель Гуро (Gouraud), используемая в MeshLambertMaterial, за счет некоторого снижения производительности.
Обратите внимание, при использовании данного материала, для достижения наилучших результатов, всегда следует указывать карту окружения.
Для начального ознакомления с идеей PBR и настройкой PBR-материала, обратитесь к следующим статьям, написанным народом сайта marmoset: Технические подробности подхода, используемого в three.js (и большинстве других систем PBR), можно найти в этой статье (pdf) от диснеевской студии анимации, написанную Брентом Барли (Brent Burley).

MeshStandardMaterial, MeshStandardMaterial с включенным flatShading и MeshStandardMaterial с включенным wireframe.

Конструктор

MeshStandardMaterial( parameters )


Свойства

Для информации об общих свойствах смотрите базовый класс Material.


alpha map - карта альфа-канала')" onmouseout="hide()">.alphaMap
Карта значений альфа-канала (карта прозрачности) - это текстура оттенков серого, которая управляет непрозрачностью всей поверхности (черный цвет: полная прозрачность; белый цвет: полная непрозрачность). Значением по умолчанию является null.
Используется только цвет текстуры, если существует альфа-канал, то он игнорируется. Для текстур в формате RGB и RGBA, при выборке этой текстуры визуализатор WebGL будет использовать канал зеленого цвета из-за дополнительного бита точности, предоставляемого для зеленого цвета в сжатом DXT формате и упаковке в формате RGB 565. Форматы текстур только яркости и яркости+альфа-канала также будут работать должным образом.


aoMap это сокращ. англ. слов ambient occlusion map -
карта перекрытия (затенения) при общем (фоновом)
освещении')" onmouseout="hide()">.aoMap
Канал красного цвета используется в данной текстуре в качестве карты затенения при фоновом освещении (ambient occlusion map). Значением по умолчанию является null. Свойству aoMap требуется второй набор текстурных координат UV и поэтому будут игнорироваться свойства текстуры repeat и offset.
Статья в русской Википедии о эффекте перекрытия (модели затенения) при фоновом освещении. А вот статья «Ambient occlusion» в английской Википедии.


интенсивность затенения при общем (фоновом) освещении')" onmouseout="hide()">.aoMapIntensity
Интенсивность затенения при общем (фоновом) освещении. Значение по умолчанию равно 1. Нулевое значение означает отсутствие эффекта перекрытия (затенения).


bump map - карта рельефа')" onmouseout="hide()">.bumpMap
Текстура для создания карты рельефа. Значения черного и белого цвета сопоставляются с предполагаемой глубиной по отношению с освещением. Рельеф не оказывает влияния на геометрию объекта, только на освещение. Если определена карта нормалей, карта рельефа будет проигнорирована.

.bumpScale
Свойство определяет, как сильно карта рельефа повлияет на материал. Типичный диапазон значений от 0 до 1. Значение по умолчанию равно 1.


color - цвет')" onmouseout="hide()">.color
Цвет материала, по умолчанию установлен как белый (0xffffff - white).

.defines
Объект в виде: { 'STANDARD': '' };. Он используется WebGLRenderer'ом для выбора шейдеров.


displacement map - карта сдвига')" onmouseout="hide()">.displacementMap
Карта сдвига влияет на положение вершин сетки (mesh). В отличие от других карт, влияющих только на свет и тень материала, сдвиг вершин может отбрасывать тени, блокировать другие объекты, а то и действовать как реальные геометрические элементы. The displacement texture is an image where the value of each pixel (white being the highest) is mapped against, and repositions, the vertices of the mesh.

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

.displacementBias
Смещение значений карты сдвига на вершинах сетки (mesh). Без установки карты сдвига (свойство displacementMap) данное значение не применяется. Значение по умолчанию равно 0.


emissive - излучающий, испускающий, эмиссионный')" onmouseout="hide()">.emissive
Цвет света, излучаемого материалом; фактически это однотонный цвет, не подверженный влиянию другого освещения. Значением по умолчанию является black - черный цвет (0x000000).


emissive map - карта излучения')" onmouseout="hide()">.emissiveMap
Свойство устанавливает карту излучения (свечения). Значением по умолчанию является null. Цвет карты излучения модулируется цветом и интенсивностью испускаемого цвета. Если имеется карта излучения, обязательно установите цвет испускаемого света на что-либо отличное от черного цвета.

.emissiveIntensity
Интенсивность испускаемого света. Модулирует излучаемый цвет. Значение по умолчанию равно 1.


env map - сокращ. англ. слов
environment map - карта окружения')" onmouseout="hide()">.envMap
Карта окружения. Значением по умолчанию является null. Note that in order for the material roughness property to correctly blur out the environment map, the shader must have access to mipmaps of the env texture. TextureCubes created with default settings are correctly configured; if adjusting texture parameters manually, ensure minFilter is set to one of the MipMap options, and that mip maps have not been otherwise forcibly disabled.


- интенсивность карты окружения')" onmouseout="hide()">.envMapIntensity
Свойство масштабирует влияние карты окружения умножением своего цвета.


является стандартным материалом сетки')" onmouseout="hide()">.isMeshStandardMaterial
Используется для проверки, является ли данный объект, или производные от него, стандартным материалом сетки. По умолчанию значение равно true.
Не нужно его изменять, так как внутри three.js оно используется для оптимизации.


light map - карта освещения')" onmouseout="hide()">.lightMap
Карта освещения. Значением по умолчанию является null. Свойству lightMap требуется второй набор текстурных координат UV и поэтому будут игнорироваться свойства текстуры repeat и offset.

.lightMapIntensity
Интенсивность Intensity of the baked light. Значение по умолчанию равно 1.


map - карта')" onmouseout="hide()">.map
Карта цвета. Значением по умолчанию является null. Цвет текстурной карты модулируется рассеянным цветом.

.metalness
Свойство определяет, насколько материал похож на металл. Для неметаллических материалов, вроде дерева или камня, используется значение 0.0, для металлических - используется 1.0, остальные материалы (обычно) в промежутке между этими значениями. Значение по умолчанию равно 0.5. Значение между 0.0 и 1.0 может использоваться для передачи вида ржавого металла. Если также представлено свойство metalnessMap, оба значения перемножаются.


metalness map - карта металличности,
т.е. "похожести" на металл')" onmouseout="hide()">.metalnessMap
Канал синего цвета данной текстуры используется для передачи изменения металличности (свойство metalness) этого материала.


morphing normals - нормали морфинга')" onmouseout="hide()">.morphNormals
Свойство определяет, будет ли материал использовать нормали морфинга. Установите его как true для передачи атрибутов morphNormals из Geometry в шейдер. Значением по умолчанию является false.

.morphTargets
Свойство определяет, будет ли материал использовать цели морфинга. Значением по умолчанию является false.


normal map - карта нормалей')" onmouseout="hide()">.normalMap
Текстура для создания карты нормалей. Значения RGB влияют на нормаль поверхности каждого пиксельного фрагмента и изменяют способ and change the way the color is lit. Карты нормалей не изменяют действующую форму поверхности и влияют только на освещение.

.normalMapType
Тип карты нормалей.
Можно выбирать из THREE.TangentSpaceNormalMap (значение по умолчанию) и THREE.ObjectSpaceNormalMap.


normal scale - масштаб нормалей')" onmouseout="hide()">.normalScale
Свойство определяет, насколько сильно карта нормалей влияет на материал. Типовой диапазон значений от 0 до 1. Значением по умолчанию является двумерный вектор, установленный как (1,1).

.refractionRatio

или сокращенно - IOR')" onmouseout="hide()">Показатель преломления
воздуха (примерно равный 1) разделенный на показатель преломления материала. Он используется с режимами картирования окружения THREE.CubeRefractionMapping и THREE.EquirectangularRefractionMapping. Коэффициент преломления не должен превышать 1. Значение по умолчанию равно 0.98.

.roughness
Свойство определяет, насколько шероховатым (неровным) выглядит материал. Значение 0.0 означает ровное зеркальное отражение, 1.0  - полное рассеяние. Значение по умолчанию равно 0.5. Если также представлено свойство roughnessMap, оба значения перемножаются.


roughness map - карта шероховатости')" onmouseout="hide()">.roughnessMap
Канал зеленого цвета данной текстуры используется для изменения шероховатости материала.


3D-модели полигональной сеткой)')" onmouseout="hide()">.skinning
Свойство определяет, будет ли использоватья
skinning - процесс создания кожи
- операция обворачивания 3D-модели
полигональной сеткой.')" onmouseout="hide()">скиннинг (skinning)
. Значением по умолчанию является false.

.wireframe
Свойство позволяет отобразить геометрическую фигуру в виде каркаса. Значением по умолчанию является false (т.е. каркас не виден и визуализация происходит при помощи плоских многоугольников).

.wireframeLinecap
Определяет внешний вид концов линии. Возможные значения: butt (торец), round (круглый) и square (квадратный). Значение по умолчанию round - круглый.
Данное свойство соответствует свойству linecap в 2D Canvas и игнорируется WebGL визуализатором (рендерером). Вот эта статья о linecap на русском языке.

.wireframeLinejoin
Определяет внешний вид соединений линии. Возможные значения: round - круглый, bevel (скос) и miter (митра - головной убор, часть богослужебного облачения
в ряде христианских церквей. В данном случае это
остроконечная католическая митра (в православии митра
округлая), что и определяет вид соединения линий.')" onmouseout="hide()">митра
). Значение по умолчанию round - круглый.
Данное свойство соответствует свойству lineJoin в 2D Canvas и игнорируется WebGL визуализатором (рендерером). Вот эта статья о lineJoin на русском языке.

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

Методы

Для информации об общих методах смотрите базовый класс Material.

Исходники



Material →  MeshPhongMaterial →

MeshToonMaterial

Расширение MeshPhongMaterial с тоновой штриховкой. with toon shading.

Пример

webgl / materials / variations / toon

Конструктор

MeshToonMaterial( parameters )
parameters - объект с одним или несколькими свойствами, определяющими внешний вид материала (дополнительный, необязательный параметр). Здесь можно передать любое свойство материала (включая любое свойство унаследованное от Material и MeshStandardMaterial).


Свойства

Для информации об общих свойствах смотрите базовые классы Material и MeshPhongMaterial.


gradient map - карта градиента')" onmouseout="hide()">.gradientMap
Карта градиента для тоновой штриховки. Gradient map for the toon shading. По умолчанию значение равно null.

.isMeshToonMaterial
Используется для проверки, является ли данный объект, или производные от него, тонированным материалом сетки. По умолчанию значение равно true.
Не нужно его изменять, так как внутри three.js оно используется для оптимизации.

.defines
Объект в виде:
{ 'TOON': '' };
Он используется WebGLRenderer'ом для выбора шейдеров.

Методы

Для информации об общих методах смотрите базовые классы Material и MeshPhongMaterial.

Исходники



Material →

PointsMaterial

Материал, по умолчанию используемый классом Points.

Пример

// This will add a starfield to the background of a scene
// Этот код добавит звездное поле на задний план сцены
var starsGeometry = new THREE.Geometry();
for ( var i = 0; i < 10000; i ++ ) { var star = new THREE.Vector3(); star.x = THREE.Math.randFloatSpread( 2000 ); star.y = THREE.Math.randFloatSpread( 2000 ); star.z = THREE.Math.randFloatSpread( 2000 );
starsGeometry.vertices.push( star ); }
var starsMaterial = new THREE.PointsMaterial( { color: 0x888888 } ); var starField = new THREE.Points( starsGeometry, starsMaterial );
scene.add( starField );
Другие примеры
misc / controls / fly
webgl / buffergeometry / drawcalls
webgl / BufferGeometry / points
webgl / BufferGeometry / points / interleaved
webgl / camera
webgl / geometry / convex
webgl / geometry / shapes
webgl / interactive / raycasting / points
webgl / multiple / elements / text
webgl / points / billboards
webgl / points / billboards / colors
webgl / points / dynamic
webgl / points / random
webgl / points / sprites
webgl / trails

Конструктор

PointsMaterial( parameters )


Свойства

Для информации об общих свойствах смотрите базовый класс Material.


color - цвет')" onmouseout="hide()">.color
Цвет материала, по умолчанию устанавливается как белый (0xffffff).

.isPointsMaterial
Используется для проверки, является ли данный объект, или производные от него, материалом точек. По умолчанию значение равно true.
Не нужно его изменять, так как внутри three.js оно используется для оптимизации.

.lights
Свойство определяет, будет ли освещение влиять на материал. Значением по умолчанию является false.


map - карта')" onmouseout="hide()">.map
Свойство устанавливает цвет точек используя данные из Texture.

.size
Свойство устанавливает размер точек. Значение по умолчанию равно 1.0.

.sizeAttenuation
Свойство определяет, будет ли размер точек уменьшаться с расстоянием. Значением по умолчанию является true.

Методы

Для информации об общих методах смотрите базовый класс Material.

Исходники



ShaderMaterial →

RawShaderMaterial

Данный класс работает также как класс ShaderMaterial, за исключением того, что определения встроенных атрибутов и униформ не добавляются автоматически к коду шейдера GLSL.

Пример

var material = new THREE.RawShaderMaterial( {
uniforms: { time: { value: 1.0 } }, vertexShader: document.getElementById( 'vertexShader' ).textContent, fragmentShader: document.getElementById( 'fragmentShader' ).textContent,
} );
Другие примеры
WebGL / buffergeometry / rawshader
WebGL / buffergeometry / instancing / billboards
WebGL / buffergeometry / instancing / dynamic
WebGL / buffergeometry / instancing / interleaved / dynamic
WebGL / buffergeometry / instancing
WebGL / interactive / instances / gpu
WebGL / raymarching / reflect

Конструктор

RawShaderMaterial( parameters )
parameters - объект с одним или несколькими свойствами, определяющими внешний вид материала (дополнительный, необязательный параметр). Здесь можно передать любое свойство материала (включая любое свойство унаследованное от Material и ShaderMaterial).

Свойства

Для информации об общих свойствах смотрите базовые классы Material и ShaderMaterial.

.isRawShaderMaterial
Используется для проверки, является ли данный объект, или производные от него, материалами необработанных шейдеров. По умолчанию значение равно true.
Не нужно его изменять, так как внутри three.js оно используется для оптимизации.

Методы

Для информации об общих методах смотрите базовые классы Material и ShaderMaterial.

Исходники



Material →

ShaderMaterial

Материал отображаемый с помощью собственных (заказных) шейдеров. Шейдер - это небольшая программа, написанная на языке GLSL для запуска на
блок графической обработки, т.е. видеокарта')" onmouseout="hide()">GPU
. Можно использовать заказной шейдер, если требуется:
  • реализовать эффект не включенный ни в один из встроенных материалов
  • для повышения производительности объединить несколько объектов в одной Geometry или BufferGeometry
При использовании ShaderMaterial нужно учитывать следующие замечания:
  • ShaderMaterial будет отображаться только с помощью WebGLRenderer, поскольку GLSL-код в свойствах vertexShader и fragmentShader должен быть скомпилирован и запущен на графическом процессоре, использующим WebGL.
  • Начиная с версии THREE r72, в ShaderMaterial больше не поддерживается прямое назначение атрибутов. Взамен следует использовать экземпляр BufferGeometry (вместо экземпляра Geometry), воспользовавшися экземплярами BufferAttribute для определения настраиваемых атрибутов.
  • Начиная с версии THREE r77, экземпляры WebGLRenderTarget или WebGLRenderTargetCube не должны больше использоваться как униформы. Вместо этого нужно воспользоваться свойством их текстуры.
  • Встроенные атрибуты и униформы передаются шейдерам вместе с кодом. Если не требуется, чтобы WebGLProgram добавляла что-либо к коду шейдера, вместо данного класса можно использовать RawShaderMaterial.
  • Для того, чтобы развернуть цикл for в GLSL с помощью препроцессора шейдера можно использовать директиву #pragma unroll_loop. Директива должна располагаться непосредственно над циклом. Форматирование цикла должно соответствовать определенному стандарту:
    ○  цикл должен быть нормализован
    ○  переменной цикла должна быть i
    ○  цикл должен использовать определенное форматирование пробелов.
    #pragma unroll_loop
    for ( int i = 0; i < 10; i ++ ) {
    // ...
    }

Пример

var material = new THREE.ShaderMaterial( {
uniforms: {
time: { value: 1.0 }, resolution: { value: new THREE.Vector2() }
},
vertexShader: document.getElementById( 'vertexShader' ).textContent, fragmentShader: document.getElementById( 'fragmentShader' ).textContent } );
Другие примеры

Шейдеры вершин и фрагментов

Для любого материала можно задать два разных вида шейдеров:
  • Вначале запускается вершинный шейдер (vertex shader); он принимает атрибуты, вычисляет/управляет положение каждой отдельной вершиной и передает дополнительные данные шейдеру фрагмента.
  • Вторым номером запускается шейдер фрагмента (fragment shader); он устанавливает цвет каждого отдельного фрагмента (пикселя) отображаемого на экране.
В шейдерах существует три типа переменных: униформы (uniforms), атрибуты (attributes) и вариации (varyings):
  • Униформы (uniforms) - это переменные, что имеют единообразное значение для всех вершин; освещение, туман и карты тени - вот примеры данных, которые будут храниться в униформах. Обращаться к униформам можно как с помощью вершинного шейдера, так и с помощью шейдера фрагментов.
  • Атрибуты (attributes) - это переменные, связанные с каждой вершиной - например, положение вершины, нормаль к грани и цвет вершины - это все примеры данных, которые будут хранится в атрибутах. Атрибуты могут быть доступны только внутри вершинного шейдера.
  • Вариации (varyings) - это переменные, которые передаются из вершинного шейдера в шейдер фрагмента. Для каждого фрагмента значение каждой вариации будет плавно интерполироваться из значений смежных вершин.
Обратите внимание, что внутри собственно самого шейдера, униформы и атрибуты действуют как константы; изменять их значения можно только передачей различных значений в буферы из JavaScript кода.

Встроенные атрибуты и униформы

По умолчанию WebGLRenderer предоставляет шейдерам множество атрибутов и униформов; определения этих переменных добавляются в код fragmentShader и vertexShader с помощью WebGLProgram при компиляции шейдера; отдельно объявлять их самих не требуется. Подробнее об этих переменных смотрите в описании WebGLProgram.
Некоторые из этих униформ или атрибутов (например связанные с освещением, туманом и т.д.) требуют установки свойств материала, чтобы WebGLRenderer мог скопировать соответствующие значения для
- блок графической обработки - видеокарта')" onmouseout="hide()">GPU
- не забудьте установить эти флаги, если хотите в своем собственном шейдере использовать данные функции.
Если не требуется, чтобы WebGLProgram добавляла что-либо к коду шейдера, вместо данного класса можно использовать RawShaderMaterial.

Настраиваемые атрибуты и униформы

Оба типа переменных (и настраиваемые атрибуты, и униформы), должны быть объявлены в GLSL коде шейдера (внутри vertexShader и/или fragmentShader). Настраиваемые униформы должны быть определены также как в свойстве uniforms вашего ShaderMaterial, тогда как любые настраиваемые атрибуты должны быть определены через экземпляры BufferAttribute. Обратите внимание, что вариации должны объявляться только внутри кода шейдера (не в материале).
Для объявления настраиваемого атрибута за общими сведениями обратитесь к описанию BufferGeometry, а подробности API BufferAttribute можно увидеть в описании BufferAttribute.
При создании собственных атрибутов имейте ввиду, что каждый типизированный массив для хранения данных вашего атрибута, должен быть кратным размеру вашего типа данных. Например, если типом атрибута будет THREE.Vector3 и в вашей BufferGeometry имеется 3000 вершин, то величина создаваемого типизированного массива должна иметь длину 3000 * 3 или 9000 (т.е. одно значение на каждый элемент). Для справки ниже приведена таблица размеров для каждого типа данных:
Размеры атрибутов
Тип GLSL
GLSL type
Тип JavaScript
JavaScript type
Размер
Size
floatNumber1
vec2THREE.Vector22
vec3THREE.Vector33
vec3THREE.Color3
vec4THREE.Vector44
Обратите внимание, что буферы атрибутов, при изменении их значений, не обновляются автоматически. Для обновления настраиваемых атрибутов, установите флаг needsUpdate как true в BufferAttribute геометрического элемента (для получения дополнительных сведений смотрите описание BufferGeometry).

Для объявления настраиваемой униформы воспользуйтесь свойством uniforms:
uniforms: {
	time: { value: 1.0 },
	resolution: { value: new THREE.Vector2() }
}

Конструктор

ShaderMaterial( parameters )


Свойства

Для информации об общих свойствах смотрите базовый класс Material.

.clipping
Свойство определяет, будет ли данный материал поддерживать обрезку; чтобы разрешить визуализатору передать униформы clippingPlanes установите true. Значением по умолчанию является false.

.defaultAttributeValues
Эти значения по умолчанию будут переданы шейдерам в случае, когда материал создан, а визуализируемый геометрический элемент не содержит этих атрибутов. Это позволяет избежать ошибок при отсутствии данных в буфере.
this.defaultAttributeValues = {
  'color': [ 1, 1, 1 ],
  'uv': [ 0, 0 ],
  'uv2': [ 0, 0 ]
};

.defines
Свойство определяет настраиваемые константы при помощи директив #define внутри GLSL-кода как в шейдере вершин, так и в шейдере фрагментов; каждая пара ключ/значение выведет новую директиву:
defines: {
  FOO: 15,
  BAR: true
}
выдаст в коде GLSL строки
#define FOO 15
#define BAR true

.extensions
Объект со следующими свойствами:
this.extensions = {
  derivatives: false, // set to use derivatives (установить при использовании производных)
  fragDepth: false, // set to use fragment depth values (установить при использовании значений глубины фрагмента)
  drawBuffers: false, // set to use draw buffers (установить при использовании буферов рисования)
  shaderTextureLOD: false // set to use shader texture LOD (установить при использовании
                          // шейдера текстуры с уровнями детализации)
};

.fog
Свойство определяет, будет ли цвет материала зависеть от параметров глобального тумана; установите как true для передачи униформов тумана в шейдер. По умолчанию значение равно false.

.fragmentShader
Fragment shader GLSL code. This is the actual code for the shader. In the example above, the vertexShader and fragmentShader code is extracted from the DOM; it could be passed as a string directly or loaded via AJAX instead.

.index0AttributeName
If set, this calls gl.bindAttribLocation to bind a generic vertex index to an attribute variable. По умолчанию значение равно undefined.

.isShaderMaterial
Используется для проверки, является ли данный объект, или производные от него, материалами шейдера. По умолчанию значение равно true.
Не нужно его изменять, так как внутри three.js оно используется для оптимизации.

.lights
Defines whether this material uses lighting; true to pass uniform data related to lighting to this shader. Значением по умолчанию является false.

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

morphing normals - нормали морфинга')" onmouseout="hide()">.morphNormals
Свойство определяет, будет ли материал использовать нормали морфинга. Установите его как true для передачи атрибутов morphNormals из Geometry в шейдер. Значением по умолчанию является false.

.morphTargets
Свойство определяет, будет ли материал использовать цели морфинга. Установите его как true для передачи атрибутов morphTargets в шейдер. Значением по умолчанию является false.


program - программа')" onmouseout="hide()">.program
Скомпилированная шейдерная программа, связанная с данным материалом; созданная с помощью WebGLRenderer. Доступ к этому свойству не требуется.

.flatShading
Define whether the material is rendered with flat shading. Значением по умолчанию является false.


3D-модели полигональной сеткой)')" onmouseout="hide()">.skinning
Свойство определяет, будет ли материал использовать
skinning - процесс создания кожи
- операция обворачивания 3D-модели
полигональной сеткой.')" onmouseout="hide()">скиннинг (skinning)
; установите его как true для передачи атрибутов скиннинга в шейдер. Значением по умолчанию является false.

.uniforms
Объект в виде: { "uniform1": { value: 1.0 }, "uniform2": { value: 2 } } определяет униформы, передаваемые в код шейдера; ключами являются названия униформов, значениями - определения в виде: { value: 1.0 }, где value является значением униформа. Названия должны совпадать с названием униформа, установленного в коде GLSL. Обратите внимание, что униформы обновляются на каждом кадре, так что обновление значения униформа будет происходить сразу, как только обновление значения станет доступным GLSL-коду.

.vertexColors
Свойство определяет, как окрашиваются вершины, путем задания способа заполнения атрибута цвета. Возможными значениями являются
no colors - не окрашено')" onmouseout="hide()">THREE.NoColors
,
face colors - цвета граней')" onmouseout="hide()">THREE.FaceColors
и
vertex colors - цвета вершин')" onmouseout="hide()">THREE.VertexColors
. Значение по умолчанию THREE.NoColors.

.vertexShader
Код GLSL вершинного шейдера. Для шейдера он является действующим кодом. В примере выше, код вершинного шейдера (vertexShader) и шейдера фрагмента (fragmentShader) извлекается из DOM; вместо этого, он мог быть передан напрямую, в виде строки или загружен через AJAX.

.wireframe
Свойство определяет, отображать ли геометрический элемент как каркас (применяется GL_LINES вместо GL_TRIANGLES). Значением по умолчанию является false (т.е. каркас не виден и визуализация происходит при помощи плоских многоугольников).

.wireframeLinewidth
Свойство управляет толщиной линий каркаса. Значение по умолчанию равно 1.

Методы

Для информации об общих методах смотрите базовый класс Material.


clone - клонировать')" onmouseout="hide()">.clone
( )
this - этот')" onmouseout="hide()">this
Метод генерирует мелкие копии данного материала. Обратите внимание на то, что vertexShader и fragmentShader копируются по ссылке, так как являются определениями атрибутов; это означает что клоны данного материала будут совместно использовать одну и ту же скомпилированную WebGLProgram. А вот униформы копируются по значению, что позволяет иметь различные наборы униформ для разных копий материала.

Исходники



Material →  ShaderMaterial →

ShadowMaterial

Данный материал может принимать тени, но в остальном он полностью прозрачен (На русский язык shadow material можно перевести как теневой материал, или материал для тени).

Пример

var planeGeometry = new THREE.PlaneGeometry( 2000, 2000 );
planeGeometry.rotateX( - Math.PI / 2 );
var planeMaterial = new THREE.ShadowMaterial(); planeMaterial.opacity = 0.2;
var plane = new THREE.Mesh( planeGeometry, planeMaterial ); plane.position.y = -200; plane.receiveShadow = true; scene.add( plane );
Другие примеры
geometry / spline / editor

Конструктор

ShadowMaterial( parameters )
parameters - объект с одним или несколькими свойствами, определяющими внешний вид материала (дополнительный, необязательный параметр). Здесь можно передать любое свойство материала (включая любое свойство унаследованное от Material и ShaderMaterial).

Свойства

Для информации об общих свойствах смотрите базовые классы Material и ShaderMaterial.

.isShadowMaterial
Используется для проверки, является ли данный объект, или производные от него, теневыми материалами. По умолчанию значение равно true.
Не нужно его изменять, так как внутри three.js оно используется для оптимизации.

.lights
Свойство устанавливает, будет или нет освещение влиять на материал. Значением по умолчанию является true.

.transparent
Определяет будет ли данный материал прозрачным или нет. Значением по умолчанию является true.

Методы

Для информации об общих методах смотрите базовые классы Material и ShaderMaterial.

Исходники



Material →

SpriteMaterial

Материал для использования со Sprite.

Пример

var spriteMap = new THREE.TextureLoader().load( 'textures/sprite.png' );
var spriteMaterial = new THREE.SpriteMaterial( { map: spriteMap, color: 0xffffff } );
var sprite = new THREE.Sprite( spriteMaterial ); sprite.scale.set(200, 200, 1)
scene.add( sprite );
Другие примеры
WebGL / sprites
misc / ubiquity / test
misc / ubiquity / test2
software / sandbox
svg / sandbox
webgl / materials / cubemap / dynamic

Конструктор

SpriteMaterial( parameters )


Свойства

Для информации об общих свойствах смотрите базовый класс Material.

.color
Цвет материала, по умолчанию устанавливается как белый цвет (0xffffff). Карта текстуры (map) перемножается с этим цветом.

.fog
Свойство устанавливает, будет или нет туман на сцене влиять на материал. Значением по умолчанию является false.

.lights
Свойство устанавливает, будет или нет освещение влиять на материал. Значением по умолчанию является false.

.map
Карта текстуры. Значением по умолчанию является null.

.rotation
Угол поворота спрайта, в радианах. Значением по умолчанию является 0.

Методы

Для информации об общих методах смотрите базовый класс Material.

Исходники