FoliMesh

Babylon.js向けサボテン・多肉植物

Babylon.js で砂漠のシーンが重くなる原因は、たいていテクスチャではなく同時に読み込む植物の数です。ここには5つのモデル — ベンケイチュウ、樽型サボテン、ウチワサボテン、アガベ、アロエ — が GLB で用意され、@babylonjs/loaders から読み込みます。単体なら ImportMeshAsync、同じ種類をマップ全体に複製するなら instantiateModelsToScene を伴う LoadAssetContainerAsync が向いています。

各モデルは LOD0–LOD3、コリジョンメッシュ、根元のピボットを備え、lod0.addLODLevel(30, lod1) と addLODLevel(80, lod2) でカメラが引くほどポリゴンを落とせます。null を渡せば遠方の株を完全に消せます。葉や棘のカードは glTF MASK を使い、Babylon.js ではアルファテスト付き PBRMaterial として扱われます。数千株のアガベは thinInstanceAdd でメッシュごとに1ドローコール、個別にピッキングしたい株は createInstance に切り替えます。非表示のコリジョンメッシュは checkCollisions や Havok の PhysicsAggregate に接続できます。

モデル
5
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)で使います。

パック

その他のカテゴリー

他のスタイルで見る

他のエンジン向け