FoliMesh

Наборы 3D-ассетов для PlayCanvas

PlayCanvas загружает GLB как контейнерный ассет: в редакторе вы получаете шаблон с иерархией модели, а в коде без редактора нужны app.assets.loadFromUrl(url, 'container') и asset.resource.instantiateRenderEntity(). Во всех восьми наборах — «Бесплатный сэмплер», «Лиственный лес», «Хвойный лес», «Тропический пляж», «Пустынный набор», «Камни и скалы» — у каждой модели есть LOD0–LOD3, коллизия и пивот у основания.

Компонента LOD в PlayCanvas нет, поэтому короткий скрипт сравнивает расстояние до камеры и переключает render-компоненты LOD0–LOD3. Статичные деревья объединяются в batch group, а для больших лесов подходит аппаратный инстансинг meshInstance.setInstancing(). Листва: glTF MASK задаёт alphaTest, для двусторонних листьев — cull mode none. Экспорт в GLB, FBX или OBJ, новый seed — новая вариация.

Как использовать в PlayCanvas

PlayCanvas работает с GLB как с container-ассетом. В редакторе загрузите GLB (FBX при импорте конвертируется в GLB) и получите шаблон с иерархией модели; в коде без редактора используйте app.assets.loadFromUrl(url, 'container') и asset.resource.instantiateRenderEntity().

  • LOD: встроенного LOD-компонента нет, поэтому небольшой скрипт сравнивает расстояние до камеры и переключает render-компоненты сущностей LOD0–LOD3.
  • Статичные деревья можно объединить в batch group, чтобы сократить draw calls; для больших лесов — аппаратный инстансинг через meshInstance.setInstancing() и вершинный буфер с трансформами.
  • Листва: MASK из glTF задаёт alphaTest у StandardMaterial; для двусторонних листьев отключите отсечение граней (cull none).
  • Меш коллизии: компонент collision типа mesh плюс статический rigidbody, render-компонент отключён.

Наборы

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

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