FoliMesh

Bevy向け樹木

Bevy は AssetServer 経由で GLB を直接読み込みます。asset_server.load(GltfAssetLabel::Scene(0).from_asset("oak.glb")) で取得したシーンを SceneRoot でスポーンし、メッシュとマテリアルはラベル単位で参照できます。このカテゴリの 14 種の樹木——オーク、ヨーロッパアカマツ、トウヒ、シラカバ、シダレヤナギ、カエデ、バオバブなど——はすべてこの形式です。FBX と OBJ は Rust ではサードパーティ crate が必要なので、実用的なのは GLB です。

各モデルは LOD0–LOD3 を備えています。LOD のエンティティに VisibilityRange を付ければ、距離に応じた切り替えをディザ付きクロスフェードで行います。葉は glTF の alphaMode MASK をそのまま AlphaMode::Mask(cutoff) として読み込み、両面マテリアルは背面カリングを無効化します。同じメッシュとマテリアルを共有するエンティティは自動でバッチ処理・インスタンス化されるため、密な森でも負荷は軽いままです。コリジョンメッシュは Avian や bevy_rapier に渡せ、新しい seed ごとに別のバリエーションが得られます。

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

Bevyでの使い方

Bevy は AssetServer で glTF/GLB を読み込みます。asset_server.load(GltfAssetLabel::Scene(0).from_asset("tree.glb")) を SceneRoot でスポーンし、個々のメッシュやマテリアルにはラベルでアクセスできます。FBX と OBJ にはサードパーティのクレートが必要なので、GLB を使うのが基本です。

  • LOD:LOD0〜LOD3 の各エンティティに VisibilityRange(開始・終了マージン)を付けると、距離に応じてディザのクロスフェードで切り替わります。これが Bevy の HLOD の仕組みです。
  • 葉:glTF の alphaMode MASK は StandardMaterial の AlphaMode::Mask(cutoff) になり、両面マテリアルでは背面カリングが無効になります。
  • 同じメッシュとマテリアルを共有するエンティティは自動でバッチング・インスタンシングされるため、木を大量に置いても軽く済みます。
  • コリジョン:Bevy には物理が組み込まれていないので、Avian や bevy_rapier でコリジョンメッシュからコライダーを作ります。

パック

その他のカテゴリー

他のスタイルで見る

他のエンジン向け