FoliMesh

Кусты в стиле Low-poly для Babylon.js

Кусты Low-poly подключаются к Babylon.js как обычный GLB: загружайте их через ImportMeshAsync из @babylonjs/loaders или через LoadAssetContainerAsync с instantiateModelsToScene, когда одна и та же живая изгородь повторяется десятки раз. Листья здесь — цельная гранёная геометрия с flat shading, а цвет хранится в вершинных цветах (COLOR_0): ни alpha-тестирования, ни прозрачного overdraw, что важно для мобильных GPU. Один материал обслуживает весь набор, поэтому Бамбук, Живая изгородь, Можжевельник и Малина легко батчатся, а thin instances выводят тысячи копий за один draw call на mesh.

У каждого куста есть LOD0–LOD3, коллизия и пивот у основания. Уровни связываются так: lod0.addLODLevel(30, lod1), addLODLevel(80, lod2), а null полностью скрывает объект за указанной дистанцией; LOD0 укладывается в несколько сотен — пару тысяч треугольников. Невидимая коллизионная сетка работает с checkCollisions или Havok PhysicsAggregate. Такая гранёная поросль подходит для WebGL/WebGPU, VR, стратегий и city-builder'ов.

Модели
8
Уровни детализации
LOD0 – LOD3
Форматы
GLB · FBX · OBJ

О стиле Low-poly

Low-poly — самый дешёвый стиль и в рендере, и в размере билда.

  • Плоское затенение: одна нормаль на грань даёт чёткие грани, карты нормалей не нужны.
  • Цвет хранится в вершинах (glTF COLOR_0): нет текстур, нет работы с UV, почти не тратится видеопамять.
  • Листва — сплошная геометрия, а не карточки с альфой: нет alpha-test и прозрачного overdraw, что важно для мобильных GPU.
  • Один материал можно использовать для всех моделей сцены, поэтому деревья легко батчатся и инстансятся.
  • Типичный бюджет LOD0 — от нескольких сотен до пары тысяч треугольников.

Подходит для мобильных игр, WebGL/WebGPU, VR, стратегий, градостроительных и стилизованных инди-игр. В движке используйте материал, который учитывает цвет вершин.

Как использовать в Babylon.js

Babylon.js загружает GLB через glTF-загрузчик из @babylonjs/loaders: ImportMeshAsync (или SceneLoader.ImportMeshAsync в старом коде) либо LoadAssetContainerAsync, когда нужно много копий через instantiateModelsToScene.

  • LOD: lod0.addLODLevel(30, lod1), addLODLevel(80, lod2) и так далее; null вместо меша скрывает объект дальше этой дистанции.
  • Тысячи деревьев: thin instances (thinInstanceAdd с матрицами) рисуются одним draw call на меш; обычные createInstance берите, когда каждому дереву нужны свой пикинг или логика.
  • Листва: MASK из glTF превращается в PBRMaterial с alpha-test (MATERIAL_ALPHATEST).
  • Меш коллизии: isVisible = false и использование с checkCollisions или физикой Havok (PhysicsAggregate с формой MESH).

Наборы

Другие категории

То же в других стилях

То же для других движков