Unity 3D در حال رشد
تاريخ عضويت: 2 شنبه 11 مرداد 1389 تعداد ارسالها: 29
جمعه 31 شهريور 1391 - 13:15 |
|
|
با عرض سلام، ادب و احترام خدمت تمامی مدیران و کاربران محترم سایت.
بنده دیگر آن کاربر بی ادب قدیمی نیستم.
البته پیش از توضیح بهتر است این نکته را دوباره متذکر شوم که شرکت محترم یونیتی این مشکل را تایید کردند. از طرف دیگر گفتند این مشکل چندان حیاتی نیست. به بنده گفتند این مشکل را به رای کاربران بگذارم تا اگر کاربران زیادی آن را تایید کردند در نسخ بعدی اعمال گردد.
توضیح مشکل مورد بحث در لینک بالا: (ببخشید اگر خیلی ساده توضیح می دهم)
در سیستم فعلی LOD یونیتی، شما باید برای هر آبجکت و به اندازه تعداد لول های LOD آن آبجکت، مش به صورت فرزند به آبجکت مورد نظر بدهید.
این موضوع درست است که سیستم LOD یونیتی، تنها یک مش را بر اساس لول جاری LOD برای هر آبجکت نشان می دهد و بقیه مش ها را غیر فعال می کند، اما متاسفانه بقیه مش ها را فقط غیر فعال می کند (نمایش نمی دهد، تنها از GPU حذف می کند) و این مش ها در RAM باقی می مانند.
از منظر دیگر، به علت این که تمامی این مش ها در صحنه جاری موجودند:
(1) زمان لود بالا می رود، چون اندازه فایل اجرایی زیاد شده است. (به علت ذخیره این تعداد مش در فایل نهایی)
(2) زمان اجرای بازی افزایش می یابد چون تعداد آبجکت های موجود در صحنه زیاد می شود و مدیریت این تعداد اضافی از آبجکت ها هزینه بردار است.
مثال:
15 عدد آبجکت دارید که هر کدام 5 سطح LOD دارند و در 3 صحنه از این آبجکت ها استفاده کرده اید:
15 * 5 * 3 = 255 مش
پیشنهاد بنده:
در صحنه ها هیچ گونه مشی قرار نگیرد (البته تنها در آبجکت هایی که از سیستم LOD استفاده می کنند).
تمام مش ها در بخش Resource های نرم افزار ذخیره شوند.
سیستم LOD (در تمامی صحنه های بازی) برای هر آبجکت تنها مش متناسب با لول جاری را از Resource ها لود کند و مش لول قبلی را از RAM و GPU حذف کند.
این گونه تنها یک مش برای هر آبجکت در RAM و GPU لود می شود.
از طرفی به علت کم شدن تعداد مش ها و ذخیره مش ها در فایل جداگانه ای، زمان لود و اجرا برنامه افزایش می یابد.
مثال بالا بعد از اعمال این پیشنهاد:
15 * 1 * 3 = 45 مش
255 یا 45 ؟
به نظر شما کدام بهتر است ؟
با تشکر از شما به خاطر وقت گرانبهایتان
JHS |
|
|