در این مجموعه مقاله قصد داریم یک بار برای همیشه مشخص کنیم که منظور از مفهوم کلیدی تکستچر (بافت) و به دنبال آن متریال که در بازیهای ویدیویی، انیمیشنها و کلا تصاویر ساخته شده با استفاده از گرافیک کامپیوتری به وفور استفاده میشود، چیست؟ در ابتدا قصد داریم به زبان ساده و در حد مبتدی تعریفی از این دو مفهوم که جز لاینفک طراحی بازی و طراحی ۳ بعدی (Game Design) است، ارائه دهیم و بعد انواع مختلف آنها و کاربردهایشان را بررسی میکنیم.
پس از آن مروری کوتاه بر مفهوم شیدرها (Shader) و متریالها (Material) داریم و سپس در ارتباط با آمادهسازی مدل به جهت اینکه تکستچری بر روی آن بنشیند توضیحی ارائه خواهیم داد که این موارد به قسمت دوم مقاله موکول میشوند.
بعد از آن به معرفی روشهای تولید تکستچرها میپردازیم و اینکه کدام روشِ تولید و برای چه منظوری نسبت به دیگری ارجحیت دارد؛ این مباحث در قسمتهای سوم و چهارم تهیه و تدوین میشود. در نهایت به توضیح و تبیین یک تکنیک جدید بهینهسازی مدلهای فیزیکی یا همان اشیا درون تصاویر گرافیکی با استفاده از تکستچرها، میپردازیم. این مورد قسمت پنجم و آخر مقاله خواهد بود.
در این مقاله علاوه بر بررسی مفهومهای ذکر شده، در خلال مقاله شما را با چندین اصطلاح رایج در ساخت بازیهای ویدیویی آشنا خواهیم کرد. عمومآ معادل رسمی فارسی ندارند و اصولآ یک طراح تصاویر گرافیکی در هر کشوری که باشد از اصطلاح انگلیسی آن که رایج است استفاده میکند. چون به هر حال زبان مشترک بازیسازها انگلیسی است.
همانطور که ذکر شد، این مقاله در پنج قسمت ارائه میشود. بعد از مطالعه هر پنج قسمت نه تنها به پاسخ بیشتر سوالاتتان در ارتباط با موضوع خواهید رسید، بلکه آماده ورود به وادیه یادگیری فرآیند تکستچرگذاری (Texturing) به صورت عملی میشوید. در همین راستا پایه و اساس یکی از مهمترین تکنیکهای رایج در بازیسازی را فرا خواهید گرفت. ضمن اینکه با نام و کاربرد چند نرمافزار مهم در این زمینه آشنا خواهید شد.
البته توجه شود که این مجموعه مقالات در ارتباط با آموزش گام به گام نرمافزار خاصی نیست و اصطلاحا یک Tutorial محسوب نمیشود. در این مقالات سعی بر این است که شما را با مقدمات فرایند Texturing آشنا کنیم، تا انگیزه و مقدمهای باشد برای ورود به این عرصه. ضمن اینکه سعی بر این بوده که در این مقالات به موضوعاتی پرداخته شود که در مراجع مختلف در مکانی واحد و به صورت مدون شرح داده نشده اند، چرا که معمولا مطالب آموزشی که به صورت رایگان در منابع مختلف از جمله وبسایتهای داخلی و خارجی، قرار داده شدهاند به صورت پرا کنده و غیر متمرکز هستند.
در این مقاله به جهت درک بهتر موضوعات، تصاویری ارائه شده که همگی از جمله کارهای شخصی نگارنده هستند. به کاربران عزیز تکفارس توصیه میشود هر پنج قسمت مقاله که طی بازههای زمانی مختلف ارائه میشوند را به دقت مطالعه بفرمایید، چون مطالب این مجموعه مقاله در یک فرم پیوسته هستند. برای مثال برخی مطالب که در قسمتی از مقاله ذکر شده اند، توضیح آنها در قسمتهای قبلی آمده است، بنابراین لازم است به همان ترتیبی که مقالات بر روی سایت قرار میگیرند، مطالعه شوند.
تکستچر (Texture – بافت)
به طور کلی تکستچرها یک فایل تصویری از نوع بیت مپ (Bitmap) هستند که میتوانند به صورت تصاویر رنگی (Color Mode) و یا سیاه و سفید (Grayscale Mode) باشند. این بیت مپها میتوانند فورمتهای فایلی مختلفی داشته باشند. مثلآ بیشترین فورمتهای مورد استفاده در فرآیند ساخت تکستچرها، فورمتهای JPG و PNGوTGA هستند که همگی با آنها آشنا هستیم.
اما منظور از یک فایل بیت مپ چیست؟ قبل از آنکه در اینباره توضیحی ارایه کنیم، قابل ذکر است که اصولآ به جای واژه تکستچر گاهی از واژهی مپ (Map) که همان معنی نقشه را میدهد استفاده میشود، در ادامه توضیح خواهیم داد که چرا به تکستچرها مپ نیز میگویند.
و اما بیت مپ. به طور کلی به فایلهای تصویری که حاصل یک سری مقادیر عددی برای رنگهای موجود در تصویر است بیت مپ میگویند. یا به طور ملموس تر، هر فایل تصویری که از یک سری مربعات ریز به نام پیکسل که هر کدام از آنها دارای یک رنگ به خصوصی است، تشکیل شده باشد به آن بیت مپ میگویند.
کلمه بیت، در بیت مپ به این دلیل به کار رفته چون این پیکسلهای درون بیت مپ حاوی یک مقدار عددی که معرف رنگ آن است، میباشد؛ و با توجه به اینکه این عدد از نوع اعداد صحیح باشد و یا اعشاری، یک سایز (حجم اشغال شده در حافظه کامپیوتر) دارد که این سایز برای هر پیکسل به بیت بیان میشود که در واقع کوچکترین واحد اندازه گیری مقدار اطلاعات ذخیره شده در حافظهی کامپیوتر است.
مطالب مرتبط:
پس فهمیدیم که فایل تکستچرها از نوع بیت مپ است، که میتواند فورمتهای مرسوم فایلهای تصویری را داشته باشد. بدیهی است که بیشتر، از حالت دو بعدی (۲D) این تصاویر استفاده میکنند، هرچند که تکستچرهای سه بعدی (۳D) نیز داریم اما به دلیل حجم بالا کاربرد کمتری داشته و در این مقاله بررسی نمیشوند.
اما این تکستچرها یا همان فایلهای تصویری چه کاربردی دارند؟ به طور خلاصه اصولا تکستچرها میتوانند بر روی انواع مدلهای دو بعدی یا سه بعدی بنشینند و با توجه به ویژگیهایی که دارند به این مدل ها، رنگ، عمق، نور و سایه روشن میدهند به طوری که برای بیننده جنس مواد به کار رفته در آن مدل، ملموس شود؛ و در واقع مدل از حالت خام که فقط تشکیل شده از یک سری پلیگان (Polygon) خارج شود و اصطلاحآ مدل ما دارای روح و حس شود.
تمامی ادوات فیزیکی یک بازی باید تکستچر داشته باشند. یک اشتباهی که گاهی بین بازی بازها رایج است، این است که فکر میکنند فقط بازیهای واقع گرایانه نیاز به تکستچر دارند و بازیهای کوچک که فضای آن فانتزی و غیر واقع گرایانه است و اصطلاحا کارتونی هستند، تکستچر ندارند، که این حرف درست نیست. برای مثال اگر بخواهید مدلتان فقط یک رنگ سادهی صورتی داشته باشد باید یک تکستچر یا فایل تصویری به رنگ صورتی تهیه کرده و روی مدل قرار دهید. هر چند که میتوان این کار را با استفاده ازشیدر (Shader) و بدون نیاز به تکستچر انجام داد که در ادامه در مورد شیدرها توضیحات بیشتری خواهیم داد.
حال سوالی که پیش میآ ید این است که آیا میتوانید از فقط یک عدد فایل تصویری رنگی به عنوان تکستچر استفاده کرده و بر روی مدلمان قرار دهیم؟ پاسخ این است که بله میتوانید. اما نباید از یک همچنین مدلی که فقط دارای یک تکستچر که نمایانگر رنگ آن است، انتظار داشتن جزییات خاصی را داشته باشید. چرا که این مدل جز رنگ هیچ خاصیت دیگری ندارد. نه عمق جزییات آن مشخص میشود و نه تداعی کنندهی ماده فیزیکی خاصی است و نه به نور محیط واکنشی دارد. پس از اینجا میفهمیم برای روح و عمق بخشیدن به یک مدل، نیاز به چند نوع تکستچر داریم.
بیس کالر مپ (Base Color Map)
همانطور که گفتیم، تکستچری وجود دارد که فقط وظیفهاش دادن رنگ به مدلمان است. یعنی این رنگ باید مبرا از هر گونه جزییات و سایه روشن باشد، و اصطلاحآ باید دیفیوز (Diffuse) باشد. به این تکستچر، آلبیدو (Albedo) یا دیفیوز و یا بیس کالر (Base Color) میگوییم. البته در ساخت و بررسیهای انواع تکستچرها در برخی منابع، آلبیدو و دیفیوز را جدا از هم میدانند. اما ما در اینجا چون نمیخواهیم وارد جزییات شویم و به دلیل اینکه در بیشتر موارد میتوان از هر کدام از این دو مپ به جای دیگری استفاده کرد، این دو را معادل یکدیگر فرض میکنیم. در تصویر، یک بیس کالر مپ از متریال یک پارچه مشاهده میشود.
رافنس مپ (Roughness Map)
یک جسم به جز رنگ، مشخصههای دیگری نیز لازم دارد. یکی از مشخصههای آن، نوع واکنش به نور است. برای مثال چوب مقدار کمی از نور تایید شده به خود را منعکس میکند در صورتی که یک فلز، مثلآ آهن مقدار زیادی از نور تابیده شده به خود را منعکس کرده و در هنگامی که نور مستقیم و یا غیر مستقیم به آن میتابد از لحاظ ظاهری، دارای یک درخشش خاصی است که چوب این درخشش را ندارد و اصطلاحا مات است.
این قابلیت توسط یک تکستچر به نام رافنس مپ به مدل داده میشود. همانطوری که از اسمش پیداست، این مپ میزان رافنس یا همان زبری (منظور از زبری فقط زبری ظاهری نیست. زبریهایی نیز روی سطوح اجسام وجود دارند که با چشم غیر مسلح دیده نمیشوند) را برای مدلمان تعیین میکند. به طوری که هر چه جسم، سطحی زبرتر یا راف (Rough) داشته باشد بازتابش نور کمتری دارد و مات است و هر چه سطح صافتر و یا اسموث (Smooth) داشته باشد بازتابش نور بیشتری دارد و درخشان است.
این نوع مپها رنگی نیستند و اصولآ سیاه و سفید هستند. یعنی برخلاف بیس کالر که تمام کانالهای رنگی یعنی کانال قرمز (Red)، سبز (Green) و آبی (Blue) را دارد (اصطلاحآ میگوییم دارای کانالهای RGB هست)، فقط دارای رنگهای مشکی و سفید و یا رنگهای بین مشکی و سفید (خاکستری) هستند وپیکسل آنها تک کانال است.
این رنگهای سیاه و سفید و خاکستری هر کدام معنی خاصی دارند. رنگ مشکی که مقدار عددی آن صفر است نمایانگر یک سطح کاملا صاف و اسموث است که تقزیبا تمام نوری را که به آن تایید میشود، بازتابش میکند (مانند آینه).
رنگ سفید که مقداری عددی آن برابر ۱ است، نمایانگر یک سطح کاملا زبر است که تقریبآ هیچ نوری را منعکس نمیکند و مشخصا مات است (مانند خاک خالص). حال رنگهای خاکستری، یعنی از خاکستری پر رنگ که نزدیک به رنگ مشکی است تا خاکستری کم رنگ که نزدیک به رنگ سفید است، با توجه به کم رنگ یا پر رنگ بودنش مقدار بازتابش نور آن، بین بازتابش ماکسیمم و مینیمم است.
از آنجایی که سطح یک جسم به صورت یکسان بازتابش نور ندارد، بنابراین یک رافنس مپ شامل تمامی مقادیر رنگی بین ۰ و ۱ یعنی رنگهای خاکستری و البته گاهی فقط شامل رنگهای مشکی و سفید است. تصویر بالا تکستچر رافنس از متریال همان پارچه را نشان میدهد. که تعیین میکند، کجای پارچه و به چه صورت به نور واکنش داشته باشد.
نرمال مپ (Normal Map)
مورد دیگری که به یک مدل ساخته شده توسط کامپیوتر، روح و حس میبخشد این است که آن مدل دارای عمق باشد. یعنی اگر سطح آن نمایانگر مادهای باشد که دارای برجستگیها و یا خلل و فرجهایی باشد، باید بیننده نیز آنها را به خوبی مشاهده کند. البته منظور، برجستگیها و فرورفتگیهای ریز و در مقیاس کوچک است. چرا که برجستگیهای بزرگ به روشهای دیگری ساخته میشوند که از حوصلهی این مقاله خارج است.
برای مثال برجستگیها و فرورفتگیهای پوست صورت انسان و یا فرورفتگی بین دو ردیف آجر که به وسیلهی سیمان به یکدیگر چسبیده اند. یا انحناهای ریز روی سطح یک سنگ و یا سطح آسفالت و یا خاک. این مهم توسط یک تکستچر به نام نرمال مپ انجام میشود.
از آنجایی که یک نرمال مپ میتواند دارای طیفهای رنگی مختلف باشد بنابراین نرمال مپی هم وجود دارد که نشان دهندهی یک سطح صاف بدون خلل و فرج است. پس تمام ادوات فیزیکی موجود در دنیای بازیها باید این تکستچر را داشته باشند.
اما چرا اصطلاح نرمال را برای این مپ قائل میشوند؟ در اینجا نرمال به معنی بردارهای نرمال بر سطح یا عمود بر سطح است. که از مباحث ریاضی سال آخر دبیرستان و درس هندسهی تحلیلی و جبر خطی (مربوط به رشتهی ریاضی فیزیک در دورانی که به سال آخر تحصیل در مدرسه، پیش دانشگاهی میگفتند) است.
کاربرد این بردار که همواره عمود بر سطح است این است که جهت انحنای سطح، در یک نقطه مشخص از آن سطح را تعیین کند. اینکه تعیین کند سطح در یک نقطه مذکور دارای فرورفتگی است یا برامدگی. از لحاظ فاز رنگ نیز اصولآ این مپ رنگی است ولی عمدهی رنگهای موجود در این مپ رنگ سبز و آبی و قرمز است.
دقت شود نرمال مپها در انواع مختلفی هستند که هر یک کاربرد خاصی دارند. در اینجا وارد جزییات نمیشویم، اما وقتی از نرمال مپ صحبت میکنیم، منظور، آن نرمال مپهایی هستند که در حالت Tangent Space میباشند. رنگ غالب در این نوع نرمال مپ آبی کم رنگ است که در لبههای جسم به طیف قرمز تغییر پیدا میکند. اصولآ در جایی که جسم دارای برآمدگی و یا فرورفتگی باشد طیف رنگی قرمز در آن نقاط دیده میشوند.
اما سوالی که ممکن است در اینجا پیش بیاید، این است که چطور یک تصویر سادهی دو بعدی میتواند به یک مدل اصطلاحا بُعد دهد، هر چند که مقدار آن کوچک باشد. پاسخ، همان توهم معروف است. به طور خلاصه هر مپ از طریق یک شیدر (Shader) بر روی سطح یک مدل مینشیند، و ورودی آن مپ طوری برنامهنویسی شده است که در جایی که در مپ رنگهای قرمز وجود دارد، تکستچر به طریقی روی مدل بنشیند که گویی یک بُعد سومی هم وجود دارد.
یعنی از همان تکنیک قدیمی و سادهای استفاده میشود که ما میتوانیم شکل یک مکعب را طوری بر روی کاغذ دو بعدی رسم کنیم، که از نگاه چشم و درواقع مغز ما، سه بعدی به نظر برسد. در تصویر بالا نرمال مپ مربوط به پارچه، نمایش داده شده است. با کمی دقت ملاحضه میشود که در برخی جاهای مپ تغییر کانال رنگی و در نتیجه پستی و بلندیهای ریزی بر روی پارچه دیده میشود. البته لازم به توضیح است که این جزییات، زمانی که این تکستچرها توسط شیدر بر روی یک مدل نشستند، نمایان میشوند.
و قرار نیست در خوده این تکستچرهای دو بعدی جزییاتی به جز تغییر کانالهای رنگی ببینید. در واقع این شیدر است که این تغییراتِ رنگی را به جزییاتی نظیر نوع بازتابش نور و پستی و بلندیهای روی سطح تبدیل میکند. در ادامه راجع به شیدرها بیشتر توضیح خواهیم داد.
امبینت آکلوژن مپ (Ambient Occlusion Map)
در هنر نقاشی، زمانی که نقاش بخواهد به تصویری که خلق می کند، روح و جان دهد و آن را ملموس تر جلوه دهد از تکنیک سایه روشن زدن بر روی لبه های (Edges ) تصویر استفاده می کند. که در واقع نمایانگر واکنش تصاویرِ در حال نقاشی شدن به نور است. در گرافیک کامپیوتری (Computer Graphics) یا همان CG و در زمینه ی Texturing از این تکنیک قدیمیِ نقاش ها استفاده شده و یک مپ به نام امبینت آکلوژن که به طور مختصر آن را AO می نامند، ابداع کردند که نمایانگر سایه روشن های یک مدل است.
خیلی دنبال معادل فارسی این اصطلاح نگردید، چون معانی موجود، اصولا با فلسفه ی وجودی این مپ همخوانی ندارد. به طور کلی این نام وجود سایه روشن ها در اثر تابش نور محیطی و عمدتا غیر مستقیم بر روی مدل را القا می کند. در واقع این مپ حاوی Lighting Data یا همان اطلاعات نوری مدل است.
این که نور بر روی مدل در چه نقاطی سایه انداخته است. البته تاکید می کنیم که فقط میزان سایه در لبه های جسم را مشخص می کند و نه کل جسم که به این سایه روشن ها اصطلاحا Soft Shadow می گویند. این مپ نیز به مانند رافنس مپ تک کانال بوده و سیاه و سفید است. در واقع فقط شامل مقادیر رنگی بین ۰ و۱ است.
یک مدل تکستچر به نام لایت مپ (Light Map) وجود دارد که عمومآ کسانی که در ابتدا وارد وادیه Texturing می شوند آن را با AO Map یکی فرض میکنند. هرچند که کاربردهای یکسانی می توانند داشته باشند اما در موارد مهمی با یکدیگر فرق دارند که از ذکر جزییات این موضوع خودداری می کنیم. از آنجایی که ترکیب این مپ با انواع نورهای مختلف در دنیای بازی، تاثیر مستقیم بر روی جزییات و قدرت سایه های مدل دارد، وجود آن کاملا ضروری است.
در این مپ با توجه به اینکه در کجای آن، رنگ های مشکی، خاکستری و سفید داریم، می توانیم میزان سایه و یا عدم وجود سایه در لبه های مدل را به بیننده القا کنیم.
حال که این چهار مپ را تهیه کردیم، می توانیم آن ها را از طریق یک شیدر روی همدیگر قرار داده و باهم تلفیق کنیم و بر روی مدل دلخواه قرار داده تا به آن رنگ و روح و جان و جنس دهیم. در تصویر مشاهده می کنید که تکستچرهای پارچه بر روی یک مدل سه بعدی از یک مبل راحتی اعمال شده است.
این چهار نوع تکستچر و یا در واقع چهار نوع مپ از مهمترین مپهای یک مدل در فرآیند Texturing هستند. اصولآ دهها نوع تکستچر مپ دیگر نیز وجود دارند که با توجه به اینکه هر کدام کاربردهای تخصصیتری دارند در این جا مطرح نمیکنیم. از جمله متالیک مپ (Metallic Map) که به مدلهای فلزی داده میشود تا حس فلز بودن را به آن مدل القا کند و البته این مپ در غیر فلزات کاربردی ندارد.
بنابراین در مواقعی که با کمبود زمان و یا کمبود حجم حافظهی سیستم طرف هستیم میتوانیم از همان رافنس مپ کاربردِ درخششِ فلز گونه را بگیریم و از متالیک مپ استفاده نکنیم. یا یک نوع مپ دیگر وجود دارد به نام امیسیو مپ (Emissive Map) که به طور خلاصه کاربردش Bold کردن (نمایان کردن) یک رنگ خاص بر روی مدلمان است. مپ دیگری نیز وجود دارد به نام گلوسی مپ (Glossy Map) که برای القای حس شیشه به مدل استفاده میشود. مثلا برای ساخت یک پنجره حتما به این مپ نیاز داریم.
اسپکیولر مپ (Specular Map) نیز برای درخشش و سایه روشنهای حاصل از نور استفاده میشود. در واقع میتوان گفت در بعضی حالات و با توجه به نور موجود در صحنه (Scene) این مپ میتواند تلفیقی از Glossy و AO باشد.
به همین ترتیب مپهای دیگری نیز وجود دارند که برخی از آنها کاملآ وابسته به شکل ظاهری مدل هستند، و بر اساس نظر شخصی خودمان نمیتوانیم این مپها رو درست کنیم. در ادامه خواهیم گفت که مپهای Normal و AO نیز میتوانند، جزیی از همین دسته از مپها باشند. از جمله این مپها میتوان به Direction Map, Thickness Map, Color Map, Bent Normal Map, Position Map, Curvature Map اشاره کرد.
در تصاویر زیر تکستچرهای یک پارچهی چرم به رنگ زرشکی که به مانند تکستچرهای پارچهی نخی از طریق نرمافزار Substance Designer ساخته شده اند، مشاهده میشوند که به همان مدل مبل راحتی اعمال شده اند. مشاهده میکنید که جزییات سطح چرم به خوبی نمایان است.
یک مپ دیگر نیز داریم به نامهایت مپ (Height Map) که کاربردش در ساخت پستی و بلندیهای یک سطح، اما در مقیاس بسیار بزرگ است. برخلاف نرمال مپ که در ساخت پستی و بلندیهای بسیار ریز دخالت دارد.
تفاوت دیگری که با نرمال مپ دارد این است که سیاه و سفید است. یکی از کاربردهای آن ساخت Terrain (زمین وسیع) در دنیای بازی است که در آن، کوهها و تپهها و درهها و کلا پستی و بلندیهای بزرگ میتوانند توسط این مپ زمانی که روی یک سطح صاف بنشیند، ایجاد شوند. مبحث فوق العاده جالب و کاربردی است که امیدوارم در آینده فرصت مطرح کردن آن به وجود بیاید.
در زیر تصاویر مربوط به یکهایت مپ نشان داده شده است. همانطوری که ملاحضه میکنیدهایت مپ به یک زمین صاف (زمین سبز رنگ در تصویر زیر) اعمال میشود و یک زمین با انواع پستی و بلندی که نمایانگر کوهها و درهها است، به ما میدهد.
نرم افزارهای مختلفی در این زمینه وجود دارند که از طریق آنها میتوانیم انواعهایت مپ را بسازیم. ازجمله این نرم افزارها میتوانیم به TerreSculpter و World Machine اشاره کنیم. موتور بازیسازی آنریل انجین نیز قابلیت تبدیلهایت مپ به یک زمین با انواع پستی و بلندی را دارد. زمین مشاهده شده در تصویر توسط آنریل انجین ساخته شده است.
لازم به توضیح است که این زمینی که درست کردیم بخشی از ناحیهای در ایالت داکوتای شمالی در آمریکا است. اصولا سایتهای اینترنتی وجود دارد که بر اساس نقشه و جغرافیا ی واقعی مناطق مختلف کرهی زمین، هایت مپ آن ناحیه را به ما میدهند. البته باید یک سری اصلاحاتی رویهایت مپها انجام شود تا بدین شکل قابل استفاده باشند. در قسمت بعدی، به مباحث دیگر طراحی ۳ بعدی در بازیهای ویدیویی میپردازیم.
نظرات
بسیار عالی و کامل. ممنون از نویسنده.