bg single
خانه آموزش ها نورپردازی در یونیتی برای بازی سازی
product-introduction-image

نورپردازی در یونیتی برای بازی سازی

comment image 0 دیدگاه
comment image 25 بهمن 1400

نویسنده : پشتیبان

درود همه ی کاربران عزیز مدرسه گرافیک پلاس و علاقه مندان به دنیای بازی سازی با یک آموزش یونیتی تحت عنوان نورپردازی در یونیتی . Unity در بین برنامه نویسان مشتاق بازی محبوبیت بیشتری پیدا کرده است. این به دلیل است که یونیتی به طور مستقیم از بسیاری از پلتفرم ها مانند محیط های موبایل، دسکتاپ و کنسول پشتیبانی می کند. علاوه بر این، استفاده از آن برای توسعه دهندگان یا استودیوهای کم درآمد رایگان است.

یونیتی از چندین فناوری و مؤلفه پشتیبانی می کند. برخی از اجزای کلیدی، تکنیک های روشنایی و روشنایی هستند. در یونیتی می توانید با شبیه سازی رفتار پیچیده نورها یا با استفاده از یک مدل نورپردازی ساده، یک صحنه را روشن کنید.

این آموزش بر توضیح نحوه عملکرد نورپردازی در Unity 5، انواع و خواص نورپردازی و نحوه استفاده از آنها برای ایجاد جلوه های روشنایی غنی تمرکز دارد.

Screen Shot 2017 01 07 at 11.06.04 - نورپردازی در یونیتی برای بازی سازی

نورپردازی در یونیتی مستقیم و غیر مستقیم

در یک سناریوی واقعی، شما دو نوع افکت نوری دارید: نور مستقیم و غیر مستقیم. روشنایی مستقیم همانطور که از نام آن پیداست، نوری است که مستقیماً از یک منبع نور (لامپ، خورشید یا موارد دیگر) می آید. از طرفی نور غیر مستقیم نوری است که از جسم دیگری می آید.

اجازه دهید هر دوی آنها را آزمایش و اجرا کنیم.

نور مستقیم در حال حاضر در صحنه شما قابل مشاهده است. همانطور که احتمالا متوجه شدید، در صحنه یک نور جهت دار به نام نور جهت دار دارید .

نورهای جهت دار بیشتر در صحنه های بیرونی برای نور خورشید و مهتاب استفاده می شوند. آنها بر تمام سطوح اشیاء در صحنه تأثیر می گذارند. آنها همچنین کمترین هزینه را برای پردازنده گرافیکی دارند.

می توانید Directional Light را انتخاب کنید و ویژگی های آن را در پنجره Inspector مشاهده کنید. شما متوجه چندین ویژگی جالب مانند نوع ، رنگ و شدت خواهید شد. می توانید با ویژگی های Color و Rotation بازی کنید و نتیجه را در زمان واقعی مشاهده کنید. با تغییر آن مقادیر، شما مستقیماً با نور جهت بازی می کنید.

Screen Shot 2017 01 07 at 12.03.41 - نورپردازی در یونیتی برای بازی سازی

در این لحظه، صحنه سه بعدی شما هیچ نور غیر مستقیمی ندارد. می‌توانید با نزدیک‌تر کردن Sphere به دیوار سبز یا قرمز آن را بررسی کنید. رنگ کره تغییر نخواهد کرد.

global 1 - نورپردازی در یونیتی برای بازی سازی

یکی از راه های استفاده از نور غیر مستقیم، استفاده از GameObjects استاتیک است. به خاطر داشته باشید که استفاده از آبجکت های ثابت بازی می تواند عملکرد رندر بازی شما را بهبود بخشد، اما باعث کاهش کیفیت نیز می شود، بنابراین باید تعادل مناسب را برای بازی خود پیدا کنید.

یک جعبه مش جعبه را به صحنه خود اضافه کنید ( GameObject  > 3D Object  > Cube ) و آن را در کنار کره قرار دهید. نام آن را مکعب بگذارید .

global 2 - نورپردازی در یونیتی برای بازی سازی

Cube را انتخاب کنید و در داخل Inspector ویژگی Static  را فعال کنید .

global 3 - نورپردازی در یونیتی برای بازی سازی

هنگامی که ویژگی Static را فعال می کنید ، Unity به طور خودکار یک نقشه نور برای آن شی ایجاد می کند و مدل روشنایی صحیح را اعمال می کند. اکنون می‌توانید دوربین را به سمت مکعب حرکت دهید و نور غیرمستقیم را ببینید. رنگ سبز (در تصویر) یا قرمز اکنون در مکعب پخش می شود .

global 4 - نورپردازی در یونیتی برای بازی سازی

اگر جهت Directional Light را تغییر دهید ، متوجه خواهید شد که Unity به طور خودکار نقشه های نور را نیز به روز می کند.

نور غیرمستقیم که روی مکعب اعمال می شود به کره اعمال نمی شود زیرا کره ساکن نیست. می‌توانید با ثابت کردن Sphere ( Inspector  > Static ) این مشکل را حل کنید.

در این لحظه می توانید نور مستقیم و غیرمستقیم را به اجسام ساکن اضافه و پیکربندی کنید. با این حال، صحنه های سه بعدی از اشیاء پویا تشکیل شده اند. بنابراین، چگونه می توانیم چنین افکت هایی را روی آن اشیا اعمال کنیم؟ این سوال ما را به بخش بعدی هدایت می کند.

پروب های نور

هنگامی که صحنه شما حاوی اشیاء غیر ایستا است، باید از تکنیک های نورپردازی خاصی برای نورپردازی صحیح آنها استفاده کنید تا از صحنه جدا به نظر نرسند.

با استفاده از کاوشگرهای نوری و موقعیت آنها، می توانید از نقاط استراتژیک در صحنه نمونه برداری کنید. هر کاوشگر نوری می تواند از یک منطقه خاص نمونه برداری کند و سپس روشنایی آن منطقه خاص را محاسبه کند. این محاسبات به قدری سریع هستند که در طول بازی از آنها استفاده شود. استفاده از کاوشگرهای نوری از هرگونه قطع ارتباط بین نور اجسام متحرک و اشیاء ایستا نقشه برداری شده با نور در صحنه جلوگیری می کند.

کره یک شی پویا است، بنابراین، و برخلاف آنچه به نظر می رسد، به درستی روشن نشده است. اگر نور جهت را خاموش کنید، متوجه خواهید شد که تنها نوری که بر کره تأثیر می گذارد ، نور محیط است. برای روشن کردن درست کره ، باید از کاوشگرهای نور استفاده کنید.

برای افزودن کاوشگرهای نوری به قسمتی از صحنه خود، به Component > Rendering > Light Probe Group بروید.  این یک گروه کاوشگر نور در صحنه شما ایجاد می کند.

Light Probes01 - نورپردازی در یونیتی برای بازی سازی

مرحله بعدی قرار دادن پروب های گروه در موقعیت صحیح است. اکنون می خواهید آنها را نزدیک هر گوشه جعبه قرار دهید .

بهترین راه برای انجام این کار تغییر به نمای املایی است (با کلیک بر روی مکعب در گوشه سمت راست بالای صحنه). سپس، هر گره پروب نوری را انتخاب کنید و آن را به هر گوشه Box بکشید (مشابه تصویر بعدی).

Light Probes02 - نورپردازی در یونیتی برای بازی سازی

این فرآیند را تا زمانی که همه گره ها را در موقعیت قرار دهید تکرار کنید.

Light Probes03 - نورپردازی در یونیتی برای بازی سازی

صحنه هایی وجود دارند که برای روشن کردن صحیح اشیا به کاوشگر اضافی نیاز دارند. به منظور افزودن پروب های بیشتر، می توانید یک پروب را انتخاب کنید و سپس در قسمت Inspector ، روی دکمه Duplicate Selected کلیک کنید.

Light Probes04 - نورپردازی در یونیتی برای بازی سازی

پس از تکثیر، باید گره جدید را در جای مناسب قرار دهید (گره تکراری در همان موقعیت انتخاب شده قرار می گیرد).

Light Probes05 - نورپردازی در یونیتی برای بازی سازی

اگر نگاه دقیق‌تری به رابط در Inspector بیندازید ، متوجه می‌شوید که می‌توانید پروب‌های جداگانه ( افزودن پروب )، حذف پروب‌ها ( حذف انتخاب‌شده )، یا همه پروب‌ها را از گروه ( انتخاب همه ) اضافه کنید.

برای مشاهده عملکرد کاوشگرهای نور، Sphere را انتخاب کنید و یک بدنه صلب به آن اضافه کنید ( افزودن جزء >  صلب ). سپس، ماده ای را به برخورد دهنده اختصاص دهید. می توانید از مواد لاستیکی استفاده کنید.

Light Probes06 - نورپردازی در یونیتی برای بازی سازی

اکنون، Sphere  را نزدیک بالای جعبه قرار دهید و Play را فشار دهید . اکنون می توانید روشنایی مناسب کره را ببینید. برای مشاهده تفاوت ها، پروب های نور را غیرفعال کنید و صحنه را دوباره پخش کنید.

Light Probes07 - نورپردازی در یونیتی برای بازی سازی

نور نقطه ای

چراغ های نقطه ای رایج ترین نور در بازی ها هستند. آنها معمولاً برای انفجار و لامپ استفاده می شوند. از آنجایی که آنها نور را در همه جهات ساطع می کنند، هزینه متوسطی روی پردازنده گرافیکی دارند. با این حال، محاسبه سایه ها هنگام استفاده از نورهای نقطه ای گران تر است.

با انتخاب GameObject > Light > Point Light ، یک نور نقطه اضافه کنید . بعد، چراغ Point  را در داخل جعبه نزدیک به بالا قرار دهید.

point 1 - نورپردازی در یونیتی برای بازی سازی

نور نقطه را انتخاب کنید و به پارامترهای موجود در Inspector نگاهی بیندازید .

point 2 - نورپردازی در یونیتی برای بازی سازی

اولین پارامتر  Type است . در اینجا می توانید نوع نوری را که می خواهید استفاده کنید تنظیم کنید. می توانید نقطه ، جهت ، نقطه یا ناحیه را انتخاب کنید. هر کدام یک جلوه نور خاص را ارائه می دهند. می توانید هر یک از گزینه ها را انتخاب کنید و نتایج را در زمان واقعی مشاهده کنید. با این حال، برای این آموزش شما از گزینه Point استفاده خواهید کرد. این یک جلوه لامپ ایجاد می کند (نور در همه جهات به یک اندازه می تابد).

پارامتر دوم پخت است . می‌توانید آن را روی Realtime ، Baked یا Mixed تنظیم کنید. مقدار را به عنوان پیش فرض بگذارید. پارامتر Range تعیین می کند که چقدر نور از مرکز نور نقطه ساطع می شود . پارامتر Color رنگ نور ساطع شده را مشخص می کند.

Intensity  روشنایی نور را مشخص می کند و Bounce Intensity ضریب شدت نور غیر مستقیم را مشخص می کند. Shadow Type ویژگی های سایه و انواع سایه را تعریف می کند. می‌توانید آن را روی No Shadows ، Hard Shadows یا Soft Shadows تنظیم کنید. به یاد داشته باشید که سایه های روشن نقطه ای گران ترین برای موتور هستند، بنابراین در انتخاب این گزینه مراقب باشید.

اگر  سایه‌های سخت  یا  سایه‌های نرم را انتخاب کنید ، سایه‌ای را خواهید دید که توسط کره و نور نقطه‌ای ایجاد می‌شود . هنگامی که مقدار Strength را تغییر می‌دهید ، سایه نیز ضعیف یا برجسته می‌شود. Resolution به شما امکان می دهد سطح جزئیات سایه ها را تعریف کنید. در نهایت،  Bias و  Normal Bias  به شما امکان می‌دهند که افست مورد استفاده در هنگام مقایسه موقعیت پیکسل در فضای نور با مقدار نقشه سایه را پیکربندی کنید.

کوکی یک پارامتر اختیاری است که نشان دهنده یک کانال آلفای بافت است که به عنوان ماسک استفاده می شود و میزان روشنایی نور را در موقعیت های مختلف تعیین می کند. از آنجایی که این یک نور نقطه ای است، بافت مورد استفاده باید یک Cubemap باشد.

گزینه Draw Halo فقط یک هاله در اطراف منبع نور ارائه می کند. Flare اشاره ای به شعله ور شدن در موقعیت نور را تعریف می کند. Flare و Draw Halo می توانند هنگام اشکال زدایی صحنه سه بعدی و تنگناهای احتمالی مفید باشند.

حالت رندر تعیین می کند که نورپردازی در هنگام رندر کردن صحنه چقدر اهمیت دارد. هر چه مهم تر باشد، رندر فشرده تر خواهد بود. حالت رندر را می توان روی  خودکار ،  مهم یا  غیر مهم تنظیم کرد. در نهایت، Culling Mask برای انتخاب یا حذف گروه هایی از اشیاء که تحت تأثیر نور نقطه قرار می گیرند استفاده می شود.

اکنون که تمام ویژگی های نور نقطه ای را دیدید، اجازه دهید در مورد نور مستقیم و غیرمستقیم هنگام استفاده از نورهای نقطه ای صحبت کنیم. هنگامی که یک بازی ایجاد می کنید، یکی از ویژگی های اصلی استفاده از نور و افکت های روشنایی است. با این حال، سناریوی نورپردازی سنگین منجر به بارگذاری سنگین‌تر، تنگناهای FPS و کار بیشتر برای CPU خواهد شد. بنابراین، به شما توصیه می شود که با ویژگی های Shadows  Type و Baking بازی کنید تا عملکرد صحنه خود را متعادل کنید.

برای مثال، اگر Baking را روی Realtime و Shadow Type را روی Hard Shadows یا Soft Shadows قرار دهید، یک افکت سایه بسیار زیبا و واقعی بین Sphere و Box خواهید داشت . با این حال، اگر صحنه شما از نورهای زیادی تشکیل شده باشد، این تنظیمات می تواند برای CPU سنگین باشد.

چگونه آن مسئله را حل کنیم؟ در ابتدا می توانید  پارامتر Baking را روی Bake تنظیم کنید. پس از انجام این کار، یونیتی به طور خودکار نقشه های نوری را برای این نور ایجاد می کند و عملکرد را به شما افزایش می دهد. با این حال، این افزایش عملکرد هزینه‌های خود را دارد: اکنون سایه‌هایی را ندارید که توسط نور نقطه‌ای بر روی اجسام پویا، مانند کره ، ریخته می‌شوند .

بهترین روش این است که هر نور را به صورت جداگانه تجزیه و تحلیل کنید و سپس بر اساس آن پیش بروید. به عنوان مثال، در این صحنه داشتن Realtime Baking و Hard Shadows منطقی تر است ، زیرا فقط یک منبع نور در داخل جعبه وجود دارد.

با این حال، اگر منبع نور شما یک مشعل در دیوار است، بهتر است Baking را روی Bake تنظیم کنید و اجازه دهید Unity نقشه های نور را تولید کند.

به یاد داشته باشید که مدیریت کیفیت و عملکرد بازی به عهده سازنده است. بنابراین، به خاطر داشته باشید که باید در حفظ این تعادل مراقب باشید، به خصوص اگر برای دستگاه های تلفن همراه توسعه می دهید.

نور افکن

نورهای نقطه ای نور را از یک منبع نوری که منطقه خاصی را هدف قرار می دهد ساطع می کنند. آنها فقط اجسام را در یک منطقه خاص روشن می کنند، منطقه ای که توسط یک مخروط سه بعدی محدود شده است. اصولاً مثل چراغ های جلو ماشین کار می کنند. همانطور که ممکن است تصور کنید، آنها برای چراغ قوه، چراغ های جلو اتومبیل یا پایه چراغ ها مناسب هستند. آنها همچنین گران ترین نوع نور برای پردازنده گرافیکی هستند.

اکنون اجازه دهید نور نقطه ای را به نور نقطه ای تبدیل کنیم. نور نقطه ای را که قبلا ایجاد کردید انتخاب کنید و نوع آن را به Spot تغییر دهید . سپس نور را بچرخانید تا بتواند کف جعبه را روشن کند . نام آن را به Spot light تغییر دهید .

spot 1 - نورپردازی در یونیتی برای بازی سازی

همانطور که ممکن است متوجه شده باشید، در داخل Inspector ، پارامترهای Spot مشابه پارامترهای Point هستند. با این حال، یک مورد جدید به نام نقطه نقطه دارید .

spot 2 - نورپردازی در یونیتی برای بازی سازی

نقطه نقطه زاویه مخروط نور را بر حسب درجه تعیین می کند.

در مورد نور مستقیم و غیر مستقیم، نورهای نقطه ای دقیقاً مانند نورهای نقطه ای عمل می کنند. شما هم همین محدودیت ها و مزایا را دارید. بنابراین، هنگام تنظیم تعادل نور در بازی خود باید مراقب باشید.

توجه داشته باشید که برای متعادل کردن ظاهر و عملکرد همیشه می توانید با سایه ها و پخت بازی کنید.

نور منطقه

نور ناحیه ای نوری است که در تمام جهات در یک طرف یک ناحیه مستطیلی از یک صفحه ساطع می شود. این مستطیل در هر دو  ویژگی Width و Height تعریف شده است. چراغ‌های ناحیه فقط در حین پخت نقشه سبک در دسترس هستند، به این معنی که در زمان اجرا هیچ تأثیری روی اشیا ندارند.

Spot light را انتخاب کنید و نوع  آن را به Area و نام آن را به Area light تغییر دهید . سپس نور را در داخل جعبه خود قرار دهید و در Inspector ، Width و Height را تغییر دهید تا کل قسمت داخل جعبه را پوشش دهد .

area 1 - نورپردازی در یونیتی برای بازی سازی

با نگاه کردن به پارامترهای Area light ، متوجه خواهید شد که بیشتر پارامترها مشابه پارامترهای قبلی هستند، به عنوان مثال Type ، Draw Halo ، Flare ، Render Mode و Culling Mask .

پارامترهای جدید واقعی عرض و ارتفاع هستند.  هر دو برای تنظیم اندازه ناحیه نور مستطیلی استفاده می شوند.

area 2 - نورپردازی در یونیتی برای بازی سازی

اگر Play را فشار دهید ، خواهید دید که نور ناحیه نور خود را به همه اشیاء در محدوده خود می‌تابد. اندازه مستطیل با ویژگی های Width و Height تعیین می شود. سمتی که نور در آن ریخته می شود، حالت عادی هواپیما است، که همان جهت مثبت Z نور است . نور از تمام سطح مستطیل ساطع می شود. به همین دلیل، سایه‌ها و سایه‌های جسم آسیب‌دیده بسیار ملایم‌تر از منابع نور نقطه‌ای یا جهت‌دار هستند.

محاسبات روشنایی برای یک نور منطقه کاملاً پردازشگر هستند، بنابراین در زمان اجرا در دسترس نیستند و فقط می‌توانند در نقشه‌های سبک پخته شوند.

نتیجه گیری

این آموزش در مورد نورپردازی در Unity 5 به پایان می رسد. شما با چندین افکت نورپردازی و تنظیمات آشنا شدید. با این دانش، اکنون می توانید چندین افکت نورپردازی را در بازی یا برنامه خود اعمال کنید.

راستی! برای دریافت مطالب جدید در کانال تلگرام یا پیج اینستاگرام مدرسه گرافیک پلاس عضو شوید.

این مقاله چقدر براتون مفید بود؟

از ۱ تا ۵ امتیاز بدید.

میانگین رتبه 3.7 / 5. تعداد رای: 3

برای ارسال نظر باید ثبت نام / ورود به حساب کاربری کنید.
آخرین دیدگاه های شما
هنوز کسی نظری نداده ! تو اولین نفر باش

هر هفته بهترین مقالات و تخفیف های ویژه را ایمیل می کنیم. برای دریافت، به کلوپ ۲۰۰۰۰ نفری ما بپیوندید.



جشواره فروش ویژه (99 هزار تومانی) مدت محدود (همه دوره ها 99 هزار تومان)

0 روز 0 ساعت 0 دقیقه 0 ثانبه!