بهینهسازی مدلها
بهینهسازی مدلها باعث میشود که صحنهها سریعتر رندر شوند، مصرف GPU کمتر شود و FPS بالا بماند.
۱️⃣ کاهش تعداد Vertices / Polygons
-
مدلهای سهبعدی با Polygon زیاد باعث کاهش عملکرد میشوند
-
استفاده از مدلهای Low-Poly یا Decimation در نرمافزارهای 3D قبل از وارد کردن به Three.js توصیه میشود
📌 نکته: glTF بهترین فرمت برای مدلهای بهینه است، چون حجم کم و رندر سریع دارد
۲️⃣ Merge کردن Meshها
-
ترکیب چند Mesh کوچک به یک Mesh بزرگ باعث کاهش Draw Call میشود
-
Three.js کلاس
()BufferGeometryUtils.mergeBufferGeometries
را ارائه میدهد
🔹 مثال
۳️⃣ استفاده از Instancing
-
برای اشیاء مشابه (مثلاً درختان یا چراغها) به جای چند Mesh جدا، از InstancedMesh استفاده کنید
-
بسیار بهینه و سریع برای تعداد زیاد اشیاء مشابه
🔹 مثال
۴️⃣ کاهش Texture و Material
-
استفاده از Texture با رزولوشن مناسب
-
استفاده از Compressed Textures (KTX2 / Basis)
-
ترکیب Materialهای مشابه و کاهش تعداد Shaderها
۵️⃣ سطح جزئیات (LOD)
-
LOD (Level of Detail): مدلها با فاصله بیشتر، جزئیات کمتر دارند
-
کلاس
()THREE.LOD
برای مدیریت سطوح مختلف جزئیات
🔹 مثال ساده
۶️⃣ حذف اشیاء غیر ضروری
-
اشیاء پشت دوربین یا خارج از دید میتوانند Frustum Culling شوند
-
Three.js به صورت پیشفرض این کار را انجام میدهد، ولی اشیاء غیرقابل مشاهده را حذف کردن دستی میتواند مفید باشد
۷️⃣ بهینهسازی Animation و Skeleton
-
مدلهای اسکلتبندی سنگین (SkinnedMesh) میتوانند FPS را کاهش دهند
-
کاهش تعداد استخوانها و استفاده از GPU Skinning کمک میکند
۸️⃣ نکات مهم
-
همیشه Draw Call و تعداد Vertex را بررسی کن
-
glTF + InstancedMesh + LOD بهترین ترکیب برای صحنههای بزرگ است
-
Compressed Texture و کاهش تعداد Material باعث کاهش مصرف GPU میشود