O stylu Realistyczny
Realistyczne modele korzystają z workflow PBR metal/roughness, który glTF 2.0, Unity, Unreal, Godot i three.js czytają bezpośrednio.
- Kora: mapy koloru, normalnych i chropowatości na pniu i gałęziach.
- Liście: karty z alpha testem (masked) i teksturami kęp liści, a nie alpha blend — zapisują głębię, nie wymagają sortowania i rzucają poprawne cienie.
- Kora i liście mają osobne materiały, więc liczba draw calli jest przewidywalna, a GPU instancing działa bez problemów.
- LOD0 służy do zbliżeń; LOD1–LOD3 usuwają gałęzie i karty liści, a ostatni poziom jest dość lekki na duże odległości.
Najlepiej sprawdzają się w grach FPP i TPP, survivalach, otwartych światach i symulatorach na PC i konsole. Na urządzeniach mobilnych zacznij od LOD1 lub LOD2 jako najbliższego poziomu i pilnuj overdraw liści.
Użycie w Bevy
Bevy ładuje glTF/GLB przez AssetServer: asset_server.load(GltfAssetLabel::Scene(0).from_asset("tree.glb")), spawnowane jako SceneRoot; pojedyncze siatki i materiały są dostępne przez etykiety. FBX i OBJ wymagają zewnętrznych crate’ów, więc używaj GLB.
- LOD: nadaj encjom LOD0–LOD3 komponent
VisibilityRange(marginesy początku i końca), aby przełączać je według odległości z ditheringowym przenikaniem — to mechanizm HLOD w Bevy. - Liście: alphaMode MASK z glTF staje się
AlphaMode::Mask(cutoff)wStandardMaterial, a materiały dwustronne wyłączają culling tylnych ścian. - Encje dzielące siatkę i materiał są automatycznie batchowane i instancjonowane, więc wiele kopii drzew pozostaje tanich.
- Kolizja: Bevy nie ma wbudowanej fizyki; zbuduj collider z siatki kolizji za pomocą Avian lub bevy_rapier.