BufferGeometryUtils - Руководство по Вердж3Д - Софт Эйт Софт
Description: Узнайте как использовать BufferGeometryUtils в интерактивных 3Д-веб-приложениях сделанных на Вердж3Д

# BufferGeometryUtils

Класс с утилитами для работы с экземплярами BufferGeometry.

## Методы

### # .batchMeshes(meshObjs : Array, batchParent : Object3D)

- meshObjs — массив объединяемых мешей.
- batchParent — контейнер (родительский объект) для сохранения сгруппированного меша.

Объединяет меши вместе. Эта техника используется для сокращения количества вызовов отрисовки WebGL, что способствует увеличению производительности.

Группировка производится среди мешей, для которых совпадают значения свойств:

- `material.name`
- `visible`
- `disableChildRendering`
- `castShadow`
- `receiveShadow`
- `renderOrder`
- `groupNames`
- `geometry.attributes` (keys only)
- `geometry.morphAttributes` (keys only)

### # .computeMorphedAttributes(object : Mesh | Line | Points) → Object

object — экземпляр Mesh, Line, Points.

Возвращает атрибуты (позицию и нормаль) с применённым морфингом/скиннингом и исходные. Возвращаемый объект содержит 4 свойства: `positionAttribute`, `normalAttribute`, `morphedPositionAttribute` и `morphedNormalAttribute`. Метод используется для трассировки лучей и рендеринга декалей.

### # .deepCloneAttribute(attribute : BufferAttribute) → BufferAttribute

attribute — экземпляр BufferAttribute для копирования в глубину.

Возвращает клон атрибута, полученного с использованием глубокого копирования.

### # .estimateBytesUsed(geometry : BufferGeometry) → Float

geometry — экземпляр BufferGeometry для анализа потребления памяти.

Возвращает количество байт, используемых всеми атрибутами в указанной геометрии.

### # .mergeBufferAttributes(attributes : Array) → BufferAttribute

attributes — массив экземпляров BufferAttribute.

Объединяет массив атрибутов в один атрибут. Все подданные атрибуты должны иметь одинаковые свойства и типы. Если объединение невозможно, метод возвращает `null`.

### # .mergeBufferGeometries(geometries : Array, useGroups : Boolean) → BufferGeometry

- geometries — массив экземпляров BufferGeometry.
- useGroups — нужно ли создавать группы в объединённой геометрии или нет.

Объединяет массив геометрий в одну геометрию. Все подданные геометрии должны иметь одинаковые свойства и типы. Если объединение невозможно, метод возвращает `null`.

### # .mergeGroups(geometry : BufferGeometry) → BufferGeometry

geometry — экземпляр BufferGeometry для объединения групп.

Объединяет группы внутри данной геометрии.

### # .mergeVertices(geometry : BufferGeometry, tolerance : Float) → BufferGeometry

- geometry — экземпляр BufferGeometry для объединения вертексов.
- tolerance — максимально возможная разница между вертексными атрибутами. По умолчанию `1e-4`.

Возвращает новый BufferGeometry с объединёнными вертексами. Объединение вертексов происходит, если значения их атрибутов примерно одинаковы (в пределах указанной разницы).

### # .toCreasedNormals(geometry : BufferGeometry, creaseAngle : Float) → BufferGeometry

- geometry — входная геометрия.
- creaseAngle — угол сгиба.

Создаёт новую неиндексированную геометрию со сглаженными нормалями. Сглаживание производится для всех граней, угол между которыми меньше указанного угла сгиба.

### # .toTrianglesDrawMode(geometry : BufferGeometry, drawMode : TrianglesDrawMode) → BufferGeometry

- geometry — экземпляр BufferGeometry.
- drawMode — режим отрисовки геометрии. Допустимые значения: `v3d.TriangleStripDrawMode` и `v3d.TriangleFanDrawMode`.

Возвращает новую индексированную геометрию с режимом отрисовки `v3d.TrianglesDrawMode`. Этот режим отрисовки соответствует WeBGL-примитивам типа `gl.TRIANGLES`.

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

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