FoliMesh

适用于Babylon.js的3D资源包

Babylon.js 通过 @babylonjs/loaders 中的 glTF 加载器读取 GLB 植被:单场景用 ImportMeshAsync,需要大量副本时用 LoadAssetContainerAsync 配合 instantiateModelsToScene。每个模型自带 LOD0–LOD3,依次接上 lod0.addLODLevel(30, lod1) 和 addLODLevel(80, lod2),浏览器里的森林就能维持稳定帧率,手机端同样如此。

叶片使用 MASK 贴图,对应带 alpha test 的 PBRMaterial(MATERIAL_ALPHATEST);碰撞网格设 isVisible = false 隐藏起来,交给 checkCollisions 或 Havok 的 PhysicsAggregate 使用。上千棵树用 thinInstanceAdd 传矩阵,每个网格只占一个 draw call;需要单独拾取时再换成 createInstance。8 个资源包——温带森林、针叶林、热带海滩、稀树草原与干旱地带、沙漠套件、低多边形入门包、岩石与悬崖,以及免费采样包——覆盖探索、生存和建造类场景。

在Babylon.js中使用

Babylon.js 通过 @babylonjs/loaders 中的 glTF 加载器加载 GLB:使用 ImportMeshAsync(旧代码中为 SceneLoader.ImportMeshAsync),需要大量副本时用 LoadAssetContainerAsync 配合 instantiateModelsToScene。

  • LOD:lod0.addLODLevel(30, lod1)、addLODLevel(80, lod2) 依次添加;网格参数传 null 时,超过该距离物体会被隐藏。
  • 成千上万棵树:Thin Instances(用矩阵调用 thinInstanceAdd)每个网格只需一次 Draw Call;若每棵树需要独立拾取或逻辑,则使用普通的 createInstance。
  • 树叶:glTF 的 MASK 会映射为 Alpha 测试的 PBRMaterial(MATERIAL_ALPHATEST)。
  • 碰撞网格:设置 isVisible = false,配合 checkCollisions 或 Havok 物理(使用 MESH 形状的 PhysicsAggregate)。

资源包

其他风格的同款

其他引擎的同款