Occlusion Culling در یونیتی چیست ؟ بهینه سازی بازی در یونیتی
دوشنبه, ۵ بهمن ۱۳۹۴، ۰۵:۳۵ ب.ظ
منبع:gameover.blog.ir
Occlusion Culling باعث میشه اجسام پشت دوربین رندر نشه و سرعت بازی رو خیلی بالا میبره و باعث کارایی بی نظیری در رندر میشه و حتی برای بازی های اپن ورد open world هم پاسخگو هست.
--
بعضی اوقات می خوایم فقط صحنه هایی که در محدوده ی دوربین هستن یا توی یک محوطه مکعبی دلخواه هستن رندر بشه فقط، تا سرعت بازی بره بالا یا بهینه تر بشه و پردازش اضافی برای قسمت هایی که پشت دوربین هست جهت رندر انجام نشه. اگه اشتباه نکنم طبق توضیحات سایر دوستان به این کار می گیم Occlusion system .
آموزش فارسی رو می تونید در دو تا فیلم آپارات ببینید :
لینک مستقیم فیلم اول :
http://opizo.com/UyaQH0
لینک مستقیم فیلم دوم :
http://opizo.com/OgVS8z
توضیحات اضافی:
یکی از تکنیک های مهم بهینه سازی بازی های بزرگ و بهبود فریم ریت frame rate در یونیتی و سایر گیم انجین ها:
یکی از تنظیمات occlusion culling و یکی از تنظیمات دیگه گزینه ی near دوربین هست.
near پارامتر نزدیک بودن هست.مثلا اگه بهش عدد 10 بدیم اشیا تا 10 متری رندر میشه و باقی رندر نمیشه مگه اینکه پلیر حرکت کنه و تا مرز ده متر اشیا رندر میشه.
تکنیک دیگه اینه که بیایم خودمون اسکریپت بنویسیم ابتدا آرایه ای بسازیم که کل اشیای صحنه داخلش باشه.(یعنی از نوع GameObject باشه)
سپس Tag هر گیم ابجکت رو چک کنیم اگه غیر از tag زمین و خودمون بود شرط دوم رو اجرا کنیم و اون اینه :
با تابع Vector3.Distance به الگوی
public static float Distance(Vector3 a, Vector3 b);
اگر فاصله کمتر از میزان دلخواه بود گیم ابجکت رو setActive(true یا فعال وگرنه setActive(false یا غیر فعال کنه.
با استفاده از این تکنیک هر چقدر بازی شما بزرگ باشه به شدت افزایش کارایی و بهینه سازی رو خواهیم داشت.
این یکی از حقه های بسیار مهمی هست که اکثر بازی ساز های بزرگ ازش بهره می برن.
با تشکر از رئیس :)
یک آموزش دیگه که از سایت یونیتی گرفتیم و زیپ کردیم روی پیکو فایل از اینجا دانلود کنید:
http://gameover.blog.ir/1394/11/17/%D8%A2%D9%85%D9%88%D8%B2%D8%B4-Occlusion-Culling-Occlusion-Area-%D8%B2%DB%8C%D9%BE-%D8%B4%D8%AF%D9%87-%D8%A7%D8%B2-%D8%B3%D8%A7%DB%8C%D8%AA-%D8%A7%D8%B5%D9%84%DB%8C-%DB%8C%D9%88%D9%86%DB%8C%D8%AA%DB%8C
۹۴/۱۱/۰۵