آموزش بازی سازی: آشنایی با ویژگیهای فنی دوربینها در دنیای سهبعدی
در سومین مقالهی مرتبط با مسئلهی دوربین در ساخت بازیهای ویدیویی میخواهیم به طور اختصاصی به بررسی ویژگیهای فنی دوربینها در دنیای گرافیکهای رایانهای بپردازیم. این موضوع از آنجایی اهمیت دارد که همانند دنیای واقعی، در این دنیا هم یک دوربین دارای خصوصیات فنی متعددی است و تغییر در هر یکی از این ویژگیها گهگاه میتواند آنچه را که در قاب تصویر برای مخاطب به تصویر کشیده میشود به کلی تغییر دهد.
البته جنبهی دیگر این موضوع آشنایی با روشهای خلق نماهای متفاوت، صرفا با تغییر ویژگیهای فنی دوربین بازی است. بدون شک دوربینها دریچهی نگاه ما به دنیای گرافیکهای رایانهای هستند و برای همین گاهی به جای این که لازم باشد تمامی عناصر بازی خود را به شکل خاصی طراحی کرده و در دنیای بازی پیاده کنیم، صرفا لازم است تغییراتی را روی دوربین بازی خود صورت دهیم و این گونه با کمترین هزینه به نتیجهی مورد نظرمان برسیم.
قبل از بررسی موارد گفته باید به این مسئله اشاره کنیم که اگر چه غالب نکاتی که در این مقاله گفته میشوند قابلیت استفاده در بیشتر موتورهای بازیسازی را دارند، اما به دلیل این که مبنای کاری ما نرمافزار Blender است و این نرمافزار یک ابزار حرفهای در زمینهی گرافیکهای سهبعدی کامپیوتری است، برای همین احتمالا بعضی از قابلیتها و ویژگیهای اشاره شده را نتوان به صورت مستقیم در موتورهای بازیسازی مشاهده کرد. به این خاطر ممکن است که شما برای دستیابی به این ویژگیها مجبور به استفاده از پلاگینهای جداگانه یا مقداری برنامهنویسی داشته باشید. همچنین باید به این نکته توجه کنید که بازیسازی صرفا طراحی و پیادهسازی گیمپلی درون یک موتور ساخت بازی نیست و شما بدون شک در موارد پرشماری هم به صحنههای سینمایی مختلفی هم در بازی خود احتیاج خواهید داشت. به این خاطر برای ساخت چنین صحنههایی معمولا سر و کار شما با نرمافزارهایی از قبیل نرمافزار بلندر خواهد بود و این گونه آن چه که ما به آن اشاره میکنیم، کاملا در دسترس و قابل استفاده خواهد بود.
انواع لنز
اولین و مهمترین ویژگی هر دوربینی نوع لنز آن است، چرا که لنز هر دوربینی ویژگیهای کلی نمای خروجی هر دوربین را مشخص میکند. در دنیای گرافیکهای رایانهای سه نوع لنز پرسپکتیو (Perspective)، اورتوگرافیک (Orthographic) و پانورامیک (Panoramic) وجود دارد که البته ممکن است بسته به نرمافزاری که استفاده میکنید مقداری این نامها متفاوت باشند. لنز پرسپکتیو همان گونه که قبلا اشاره کردیم، خروجی همانند آن چه را که ما در واقعیت مشاهده میکنیم به ما میدهد.
لنزهای پرسپکتیو دارای خصوصیتی به نام فاصلهی کانونی (Focal Length) هستند. فاصله کانونی که واحد آن به میلیمتر (mm) است برای ما زاویه دید (Angel of View - AOV) و سطح بزرگنمایی اجزای تصویر را مشخص میکند. زاویه دید مشخص کننده این است که مثلا ما از یک منظره چه وسعتی از آن را میتوانیم در یک زمان توسط لنز خود ضبط کنیم. هر چقدر فاصلهی کانونی بزرگتر باشد، زاویه دید کوچکتر و میزان بزرگنمایی بیشتر میشود. به عنوان مثال شما میتوانید در زیر تفاوت بین فاصله کانونیهای مختلف را مشاهده کنید.
ما در این جا قصدی برای توضیح دقیق مسئلهی فاصلهی کانونی نداریم و صرفا به گفتن این مسئله اکتفا میکنیم که اولین و بارزترین مشخصهی هر دوربین با لنز پرسپکتیو، فاصلهی کانونی آن است چرا که همانند تصاویر بالا، نشان میدهد که با این که دوربین ما در یک نقطه مشخص قرار دارد ولی میتواند نماهای بسیار متفاوتی را از منظرهی مورد نظر به ما تحویل بدهد.
البته در موتورهای بازیسازی شما معمولا با پارامتری به نام Field of View یا به اختصار FOV طرف هستید که میتوانید برای سادگی مطلب آن را همارز زاویه دید در نظر بگیرید. البته در واقعیت این دو پارامتر با یکدیگر متفاوت هستند ولی برای این که مقاله بیش از حد طولانی نشود از توضیح این دو صرف نظر میکنیم.
گاهی بسته به نیازهای ما لنزهای پرسپکتیو پاسخگوی ما نیستند. مثلا همان گونه که در تصویر زیر قابل مشاهده است، به خاطر اصل پرسپکتیو در تصویر سمت چپ، ما هیچگاه نمیتوانیم همانند تصویر سمت راست، ارزش مکانی برابری برای همهی عناصر خود ایجاد کنیم و در مقالههای قبلی بیان کردیم که چنین چیزی در بازیهای مدیریتی مشکل آفرین است.
برای برطرف کردن این مسئله، لنزهای اورتوگرافیک در دنیای گرافیکهای رایانهای به وجود آمدند و به جای استفاده از پارامترهایی از قبیل زاویه یا میدان دید، دارای پارامتری به نام مقیاس اورتورگرافیک (Orthographic Scale) هستند. این پارامتر بسیار ساده است و صرفا میزان زوم دوربین در چنین حالتی را تغییر میدهد. اگر با موتور یونیتی کار کرده باشید مشاهده کردهاید که در حالت اورتوگرافیک کمکردن فاصلهی دوربین با صحنهی مورد نظر هیچ تاثیری روی نمای خروجی صحنه شما ندارد و منجر به بزرگنمایی نمیشود. دلیل این مسئله حذف شدن شاخص عمق در تصاویر این گونه لنزهاست و برای همین اگر شما مایل به افزایش وسعت نمای خروجی هستید باید از پارامتر گفته شده استفاده کنید.
لنزهای پانورامیک (Panoramic) شاید کم استفاده ترین لنزهای این دستهبندی هستند. هنگامی که شما سعی کنید با زاویه دید بسیار زیاد به خصوص در یکی از محورهای مختصات از صحنهی خود تصویر برداری کنید، چنین نماهایی به وجود میآید. برخلاف لنزهای قبلی که هر کدام دارای یک پارامتر اختصاصی بودند، لنزهای پانورامیک معمولا دارای دو پارامتر هستند. این دو پارامتر برای مشخص کردن حداقل و حداکثر زاویهی دید لنز مورد استفاده قرار میگیرند که البته حداکثر بازهی که میتوان به این وسیله در قاب تصویر قرار دارد، ۱۸۰ درجه است و مثلا شما میتوانید مقادیر گفته شده را به صورت ۹۰- درجه و +۹۰ درجه وارد کنید.
لنزهای پانورامیک به دلیل خروجیهای عجیب و غریب خود به ندرت در بازیهای ویدیوی مورد استفاده قرار میگیرند اما به هر جهت اگر از توانایی این لنزها به خوبی استفاده شود میتوان با استفاده از آنان نماهای خلاقانهای را خلق کرد. به عنوان مثال به انیمیشن سادهی زیر نگاهی بیاندازید.
همان گونه که مشاهده میکنید دوربین روی یک ریل ثابت مسافتی را طی کرده و نمایی از مکعبهای ساده را به تصویر میکشد. حال بیایید نگاهی به انیمیشن زیر بیاندازیم.
در این حالت صرفا ما به جای استفاده از لنز پرسپکتیو از لنز پانورامیک استفاده کردیم و این گونه آن نمای ساده را به نمایی کروی شکل تبدیل کردیم. وقتی به این تفاوتها و کارکردها توجه کنید میتوانید صرفا با استفاده از صحنههای معمولی همانند آن ترتیب سادهی مکعبها روی زمین، به خلق صحنههای خلاقانه همانند کرهی چرخان نشان داده شده بپردازید.
عمق میدان و Clipping
اما در کنار لنزهایی که در موردشان صحبت کردیم، معمولا تمامی دوربینها در دنیای گرافیکهای رایانهای دارای یکسری خصوصیات مشترک از قبیل عمق میدان (Depth of field - DOF) و Clipping هستند. عمق میدان که آن را با عنوان عمق میدان دید هم میشناسند یکی از کاربردیترین قابلیتهای موجود در دنیای عکاسی و فیلمبرداری است که با استفاده از آن میتوانیم در یک صحنهی مشخص روی سوژهی خاصی متمرکز شویم.
البته قبل از استفاده از این قابلیت بهتر است با یکسری اصطلاحات موجود در دوربینهای دیجیتال آشنا شوید. به عنوان مثال احتمالا بسیار مشاهده کردهاید که در معرفی گوشیهای موبایل و در بخش معرفی دوربینهای آنان، همواره یکی از مشخصات اعلام شده گشادی دریچهی دیافراگم است و معمولا چنین چیزی را با عبارتی همانند f/1.8 نشان میدهند. حرف f مخفف عبارت فاصلهی کانونی است. اما نکتهی مهم این مسئله عدد بعد از این حرف است. به طور خلاصه این عدد با حاصل تقسیم فاصلهی کانونی به قطر دیافراگم در دوربینهای دیجیتال به دست میآید. دریچهی دیافراگم مبحث پیچیدهای نیست و صرفا به بخشی از دوربینها گفته میشود که وظیفهی تنظیم گشادی دریچهی جلوی لنز دوربین را برعهده دارد و میتوانید آن را در عکس زیر مشاهده کنید.
اهمیت این مسئله برای ما این است که دوربینها در مقادیر مختلف گشادی دریچه دیافراگم دارای عمق میدانهای مختلفی هستند و برای همین در هر مقدار مشخصی از این پارامتر نقطه تمرکز آنان دچار تغیر میشود. به عنوان نمونه بهتر است به عکس زیر نگاهی بیاندازید.
همان گونه که مشاهده میکنید هر چقدر مقدار این پارامتر بیشتر شود، نقطه تمرکز دوربین ما به سمت بینهایت میل میکند و این گونه ما میتوانیم وضوح بیشتری را در بخشهای انتهای تصویر خود داشته باشیم. البته به صورت پیشفرض وضعیت همهی دوربینها در نرمافزارهای سهبعدی روی فوکس (Focus) بینهایت است و لازم نیست از این بابت نگران باشید. اما اگر بخواهید همانند تصویر زیر روی یک عنصر درون صحنهی خود متمرکز شوید باید به چه مواردی توجه کنیم؟
در حالت عادی با کوچکتر شدن گشادی دریچه دیافراگم، نقطه تمرکز ما به فواصل نزدیک دوربین مایل میشود و به چیزی همانند تصویری که در بالا آوردهایم نزدیک میشویم. ولی در دنیای گرافیک رایانهای ما در کنار قابلیت تغییر پارامتر گشادی دریچهی دیافراگم میتوانیم نقطه تمرکز دروبین خود را از جلوی آن به روی هر سوژه و نقطهی دیگری تغییر دهیم.
اما در این حالت وقتی ما میزان گشادی دریچهی دیافراگم دروبین را تغییر دهیم، از نقطهی مبدا ما به دو طرف عمل غیرمتمرکز شدن دوربین صورت میگیرد و این گونه نیست که عناصر نزدیک دوربین همچنان تار بمانند و عناصر انتهایی ما از حالت تاری خارج شوند.
استفاده از این قابلیت بسیار ساده است و میتوانید به راحتی از آن در بازی خود استفاده کرده و با ایجاد نقاط تمرکز بر کیفیت کار خود بیافزاید. البته همان گونه که اشاره کردیم بهتر است قبل از هر چیزی با مبحث عمق میدان دید و تاثیر گشادی دریچه دیافراگم روی آن آشنا شوید.
آخرین قابلیتی که تقریبا تمامی دروبینهای موجود در دنیای گرافیک رایانهای از آن برخوردارند قابلیتی به نام Clipping است. به طور خلاصه این قابلیت مشخص میکند که دوربین بازی باید چه محدودهای از منظره مورد نظر را پردازش کرده و به عنوان خروجی به ما تحویل بدهد.
همان گونه که مشاهده میکنید صرفا با تغییر دو پارامتر ساده میتوانیم این کار را انجام دهیم. فقط باید به این نکته توجه کنید که مبنای فاصلههای تعیین شده مکان دوربین ما است.
البته برخلاف نرمافزارهایی از قبیل بلندر که بخش رندر (Render) کاملا مجزایی دارند، در موتورهای بازیسازی همانند یونیتی معمولا تعدادی گزینهی اضافی همانند امکان فعال یا غیرفعال کردن ویژگیهایی همانند تصویر برداری HDR یا تکنیک MSAA، در بخش دوربین بازی وجود دارد که به دلیل پیچیده بودن این مباحث، بررسی آنان را به مقالههای بعدی حواله میدهیم.
نظرات