FoliMesh

Babylon.js向け樹木

14種類の樹木 — オーク、ヨーロッパアカマツ、トウヒ、シラカバ、シダレヤナギ、ヤマナラシ、カエデ、ポプラ、オリーブ、イトスギ、カサマツ、アカシア、バオバブ、枯れ木 — を GLB で用意しました。Babylon.js では @babylonjs/loaders の ImportMeshAsync で読み込み、同じ樹冠を大量に並べるなら LoadAssetContainerAsync と instantiateModelsToScene が軽量です。

各モデルは LOD0–LOD3 と根元のピボットを持ち、lod0.addLODLevel(30, lod1) と addLODLevel(80, lod2) が距離の予算にそのまま対応し、null を渡せば最後のしきい値以降は非表示になります。葉は glTF の MASK マップで、アルファテスト付き PBRMaterial として読み込まれるため透明パスのソート負荷がありません。リアルな森は thin instances でメッシュごとに 1 draw call、ローポリの村は木ごとのピッキングが必要なら createInstance を使えます。非表示のコリジョンメッシュは checkCollisions や Havok に渡せます。

モデル
14
LODレベル
LOD0 – LOD3
フォーマット
GLB · FBX · OBJ

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)はメッシュごとに 1 ドローコールで描画できます。木ごとにピッキングやロジックが必要なら通常の createInstance を使います。
  • 葉:glTF の MASK はアルファテストの PBRMaterial(MATERIAL_ALPHATEST)になります。
  • コリジョンメッシュ:isVisible = false にして、checkCollisions か Havok 物理(MESH 形状の PhysicsAggregate)で使います。

パック

その他のカテゴリー

他のスタイルで見る

他のエンジン向け