Mesh

InstancedMesh

Специальная версия Mesh с поддержкой экземплярного рендеринга. Используйте InstancedMesh если вам необходимо отрендерить большое количество объектов с одинаковой геометрией и материалом, но с разными мировыми преобразованиями. Использование InstancedMesh поможет вам уменьшить количество вызовов отрисовки и тем самым улучшить общую производительность рендеринга в вашем приложении.

Текущая реализация требует, чтобы у InstancedMesh и других 3D-объектов были разные материалы.

Примеры

WebGL / instancing / dynamic
WebGL / instancing / modified
WebGL / instancing / performance
WebGL / instancing / scatter
WebGL / instancing / raycast

Конструктор

InstancedMesh(geometry : BufferGeometry, material : Material, count : Integer)

geometry — экземпляр BufferGeometry.
material — экземпляр Material. По умолчанию это новый MeshBasicMaterial.
count — количество экземпляров.

Свойства

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

.count : Integer

Количество экземпляров. Значение count, переданное в конструктор, представляет собой максимальное количество экземпляров этого меша. Вы можете изменить количество экземпляров во время выполнения на целочисленное значение в диапазоне [0, count].

Если вам нужно больше экземпляров, чем первоначальное значение подсчета, вы должны создать новый InstancedMesh.

.instanceColor : BufferAttribute

Представляет цвета всех экземпляров. По умолчанию null. Вы должны установить параметр needsUpdate на true, если вы изменяете данные экземпляра через .setColorAt()..

.instanceMatrix : BufferAttribute

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

Методы

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

.dispose() → null

Высвобождает внутренние ресурсы данного экземпляра.

.getColorAt(index : Integer, color : Color) → null

index: Индекс экземпляра. Значения должны находиться в диапазоне [0, count].

color: Этот цвет объекта будет установлен как цвет определяемого экземпляра.

Получить цвет определенного экземпляра.

.getMatrixAt(index : Integer, matrix : Matrix4) → null

index: Индекс экземпляра. Значения должны находиться в диапазоне [0, count].

matrix: Эта матрица 4x4 будет установлена в локальную матрицу преобразования определенного экземпляра.

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

.setColorAt(index : Integer, color : Color) → null

index: Индекс экземпляра. Значения должны находиться в диапазоне [0, count].

color: Цвет отдельного экземпляра.

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

.setMatrixAt(index : Integer, matrix : Matrix4) → null

index: Индекс экземпляра. Значения должны находиться в диапазоне [0, count].

matrix: Матрица 4x4, представляющая локальную трансформацию одного экземпляра.

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

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

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