FoliMesh

three.js için Gerçekçi tarzında 3D asset paketleri

Paketler GLB olarak geliyor; içe aktarma three/addons içindeki GLTFLoader ile yapılıyor, dönüştürme ya da shader düzenlemesi gerekmiyor. LOD0–LOD3 mesh'lerini lod.addLevel(mesh, distance) ile THREE.LOD yapısına bağlarsınız; renderer her karede kamera mesafesine göre seviye değiştirir. DRACOLoader veya KTX2Loader yalnızca dosya bu uzantıları gerçekten kullanıyorsa eklenir.

PBR kabuk ve alpha test'li yaprak kartları WebGLRenderer ile de WebGPURenderer ile de çalışır. Ilıman orman ve İğne yapraklı orman paketleri InstancedMesh ile iyi instancelanır; BatchedMesh birkaç ağaç varyantını tek çağrıda karıştırır. THREE.LOD örnek başına uygulanmadığı için örnekleri chunk bazında seviyeye göre gruplayın. Kabuk ve yapraklar ayrı materyaller kullanır, bu da draw call sayısını öngörülebilir tutar; çarpışma mesh'leri görünmez kalır ve Rapier ya da cannon-es'e verilebilir. Survival, açık dünya ve birinci/üçüncü şahıs oyunlarına uygun; mobilde LOD1 veya LOD2'den başlayın.

Gerçekçi tarzı hakkında

Gerçekçi modeller, glTF 2.0, Unity, Unreal, Godot ve three.js’in doğrudan okuduğu PBR metal/roughness iş akışını kullanır.

  • Kabuk: gövde ve dallarda renk, normal ve pürüzlülük haritaları.
  • Yapraklar: yaprak kümesi dokulu alpha test (masked) kartlar; alpha blend değil, bu yüzden derinlik yazar, sıralama gerektirmez ve doğru gölge düşürür.
  • Kabuk ve yapraklar ayrı materyal kullanır; draw call sayısı öngörülebilir kalır ve GPU instancing sorunsuz çalışır.
  • LOD0 yakın plan içindir; LOD1–LOD3 dalları ve yaprak kartlarını azaltır, son seviye uzak mesafe için yeterince hafiftir.

PC ve konsolda birinci ve üçüncü şahıs oyunlar, hayatta kalma, açık dünya ve simülatörler için idealdir. Mobilde en yakın seviye olarak LOD1 veya LOD2 kullanın ve yaprakların overdraw’ına dikkat edin.

three.js içinde kullanım

three.js’te GLB’yi three/addons içindeki GLTFLoader ile yükleyin; DRACOLoader veya KTX2Loader’ı yalnızca dosya bu uzantıları kullanıyorsa ekleyin.

  • Mesafeye göre LOD: LOD0–LOD3 için lod.addLevel(mesh, distance) ile THREE.LOD; seviye her karede kamera mesafesine göre değişir.
  • Ormanlar: InstancedMesh binlerce kopyayı tek draw call’da çizer, BatchedMesh ise birkaç ağaç varyasyonunu karıştırır. THREE.LOD instance bazında çalışmaz; instance’ları her chunk için LOD’a göre kendiniz gruplayın.
  • Yapraklar: glTF alphaMode MASK, material.alphaTest’e dönüşür; çift yüzlü materyaller otomatik olarak side: THREE.DoubleSide alır.
  • Çarpışma mesh’i: görünmez tutun ve Rapier veya cannon-es gibi bir fizik kütüphanesine verin.

Hem WebGLRenderer hem de WebGPURenderer ile çalışır.

Paketler

Diğer tarzlarda aynısı

Diğer motorlar için aynısı