روشهای بهینهسازی مانند LOD, Instancing, Frustum Culling
Three.js ابزارها و تکنیکهای متعددی برای کاهش مصرف منابع و افزایش FPS ارائه میدهد.
۱️⃣ LOD (Level of Detail)
🔹 تعریف
-
نمایش مدلها با جزئیات کمتر وقتی از دوربین فاصله دارند
-
کاهش تعداد Vertex و Draw Call برای صحنههای بزرگ
🔹 مثال
📌 LOD به صورت خودکار Mesh مناسب فاصله را انتخاب میکند.
۲️⃣ Instancing
🔹 تعریف
-
برای اشیاء مشابه (درخت، چراغ، سنگ و غیره) به جای چند Mesh جدا، از InstancedMesh استفاده میکنیم
-
کاهش Draw Call و مصرف GPU
🔹 مثال
📌 InstancedMesh برای صحنههای با تعداد زیاد اشیاء مشابه فوقالعاده بهینه است.
۳️⃣ Frustum Culling
🔹 تعریف
-
اشیائی که خارج از دید دوربین هستند را رندر نمیکند
-
به صورت پیشفرض فعال است (
Object3D.frustumCulled = true
)
🔹 نکته
-
برای Meshهای بزرگ یا صحنههای گسترده، Frustum Culling باعث صرفهجویی زیاد در GPU میشود
-
میتوان برای برخی اشیاء خاص آن را غیرفعال کرد:
۴️⃣ ترکیب تکنیکها برای صحنه بزرگ
-
LOD برای فاصلههای دور
-
Instancing برای اشیاء مشابه و پراکنده
-
Frustum Culling برای حذف اشیاء خارج از دید
📌 ترکیب این سه تکنیک باعث افزایش FPS، کاهش Draw Call و مصرف حافظه کمتر میشود.
۵️⃣ نکات مهم
-
همیشه ابتدا LOD برای مدلهای سنگین بسازید
-
InstancedMesh برای اشیاء تکراری ضروری است
-
Frustum Culling به صورت پیشفرض فعال است اما در صحنههای خاص نیاز به مدیریت دارد
-
برای مدلهای glTF با جزئیات بالا، حتما Instancing + LOD + Texture بهینه استفاده شود