BufferAttribute

Этот класс хранит данные для атрибутов (таких как позиции вершин, индексы граней, нормали, цвета, UVs и любые пользовательские атрибуты), связанных с BufferGeometry, что позволяет более эффективно передавать данные на GPU. Подробности и пример использования см. на этой странице.

Данные хранятся в виде векторов любой длины (определяется itemSize), и в общем случае в описанных ниже методах при передаче индекса он автоматически умножается на длину вектора.

Конструктор

BufferAttribute(array : TypedArray, itemSize : Integer, normalized : Boolean)

array — Должен быть TypedArray. Используется для инстанцирования буфера.
Этот массив должен иметь itemSize * numVertices элементов, где numVertices - количество вершин в ассоциированной BufferGeometry.

itemSize — количество значений массива, которые должны быть связаны с конкретной вершиной. Например, если этот атрибут хранит трехкомпонентный вектор (такой как позиция, нормаль или цвет), то itemSize должен быть равен 3.

normalized — (необязательно) Применяется только к целочисленным данным. Указывает, как базовые данные в буфере отображаются на значения в коде GLSL. Например, если array является экземпляром UInt16Array, и normalized равно true, значения 0 - +65535 в данных массива будут отображены на 0.0f - +1.0f в атрибуте GLSL. Массив Int16Array (подписанный) будет отображать значения -32767 - +32767 на -1.0f - +1.0f. Если normalized равно false, значения будут преобразованы в плавающие без изменений, т.е. 32767 станет 32767.0f.

Свойства

.array : TypedArray

Массив array, содержащий данные, хранящиеся в буфере.

.count : Integer

Сохраняет длину массива array, разделенную на itemSize.

Если в буфере хранится трехкомпонентный вектор (такой как позиция, нормаль или цвет), то подсчитывается количество таких векторов.

.itemSize : Integer

Длина векторов, которые хранятся в массиве array.

.name : String

Необязательное имя для данного экземпляра атрибута. По умолчанию это пустая строка.

.needsUpdate : Boolean

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

Установка этого значения в true также увеличивает версию BufferAttribute.version.

.normalized : Boolean

Указывает, как базовые данные в буфере отображаются на значения в коде шейдера GLSL. Подробности см. в конструкторе выше.

.onUploadCallback : Function

Функция обратного вызова, которая выполняется после того, как рендерер передал данные массива атрибутов на GPU.

.updateRange : Object

Объект, содержащий:
offset: По умолчанию 0. Позиция, с которой следует начать обновление.
count: По умолчанию -1, что означает не использовать диапазоны обновления.

Это можно использовать для обновления только некоторых компонентов хранимых векторов (например, только компонента, связанного с цветом).

.usage : Usage

Определяет предполагаемую схему использования хранилища данных в целях оптимизации. Соответствует параметру usage в WebGLRenderingContext.bufferData(). По умолчанию v3d.StaticDrawUsage.

.version : Integer

Номер версии, увеличивающийся каждый раз, когда свойство needsUpdate установлено в true.

Методы

.applyMatrix3(m : Matrix3) → this

Применяет матрицу m к каждому элементу Vector3 данного BufferAttribute.

.applyMatrix4(m : Matrix4) → this

Применяет матрицу m к каждому элементу Vector3 данного BufferAttribute.

.applyNormalMatrix(m : Matrix3) → this

Применяет нормальную матрицу m к каждому элементу Vector3 данного BufferAttribute.

.transformDirection(m : Matrix4) → this

Применяет матрицу m к каждому элементу Vector3 этого BufferAttribute, интерпретируя элементы как векторы направления.

.clone() → BufferAttribute

Возвращает копию этого bufferAttribute.

.copy(bufferAttribute : BufferAttribute) → BufferAttribute

Копирует другой BufferAttribute в этот BufferAttribute.

.copyArray(array) → BufferAttribute

Скопируйте заданный здесь массив (который может быть обычным массивом или TypedArray) в array.

Смотрите TypedArray.set для заметок о требованиях при копировании TypedArray.

.copyAt(index1 : Integer, bufferAttribute : BufferAttribute, index2 : Integer) → null

Скопируйте вектор из bufferAttribute[index2] в array[index1]..

.copyColorsArray(colors : Array) → BufferAttribute

Скопируйте массив, представляющий значения цветов RGB, в array.

.copyVector2sArray(vectors : Array) → BufferAttribute

Скопируйте массив, представляющий Vector2s, в массив array.

.copyVector3sArray(vectors : Array) → BufferAttribute

Скопируйте массив, представляющий Vector3s, в массив array.

.copyVector4sArray(vectors : Array) → BufferAttribute

Скопируйте массив, представляющий Vector4s, в массив array.

.getX(index : Integer) → Number

Возвращает x-компоненту вектора по заданному индексу.

.getY(index : Integer) → Number

Возвращает компонент y вектора по заданному индексу.

.getZ(index : Integer) → Number

Возвращает z-компоненту вектора по заданному индексу.

.getW(index : Integer) → Number

Возвращает w-компоненту вектора по заданному индексу.

.onUpload(callback : Function) → this

Устанавливает значение свойства onUploadCallback.

В WebGL / Buffergeometry это используется для освобождения памяти после передачи буфера на GPU.

.set(value : Array, offset : Integer) → BufferAttribute

value — Array или TypedArray, из которого копируются значения.
offset — (необязательно) индекс массива array, с которого следует начать копирование.

Вызывает TypedArray.set(value, offset) на массиве array.

В частности, смотрите на этой странице требования к тому, чтобы value был TypedArray.

.setUsage(value : Usage) → BufferAttribute

Установите usage usage в значение.

.setX(index : Integer, x : Float) → BufferAttribute

Устанавливает x-компонент вектора по заданному индексу.

.setY(index : Integer, y : Float) → BufferAttribute

Устанавливает компонент y вектора по заданному индексу.

.setZ(index : Integer, z : Float) → BufferAttribute

Устанавливает компонент z вектора по заданному индексу.

.setW(index : Integer, w : Float) → BufferAttribute

Устанавливает w-компоненту вектора по заданному индексу.

.setXY(index : Integer, x : Float, y : Float) → BufferAttribute

Устанавливает x и y компоненты вектора по заданному индексу.

.setXYZ(index : Integer, x : Float, y : Float, z : Float) → BufferAttribute

Устанавливает x, y и z компоненты вектора по заданному индексу.

.setXYZW(index : Integer, x : Float, y : Float, z : Float, w : Float) → BufferAttribute

Устанавливает x, y, z и w компоненты вектора по заданному индексу.

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

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