در دو قسمت ابتدایی این مجموعه مقاله تحت عنوان آموزش طراحی ۳ بعدی در بازی های ویدیویی، با تکستچرها (Textures)، متریالها (Materials)، شیدرها (Shaders) و فرآیند بدست آوردن UVهای مدل آشنا شدید. همچنین در قسمت سوم این مقاله شرحی بر روش اول ساخت تکستچر دادیم. در این قسمت قصد داریم در ارتباط با روشهای دوم و سوم تولید تکستچر توضیحاتی ارائه دهیم.
به کاربران عزیز سایت توصیه میشود که قسمتهای مختلف مقالات، به ترتیبی که بر روی سایت قرار میگیرند و از قسمت اول مطالعه شوند، چرا که مطالب این مجموعه مقالات در یک فرم پیوسته هستند. برای مثال برخی مطالب که در قسمتی از مقاله ذکر شده اند، توضیح آنها در قسمتهای قبلی آمده است.
۱٫ Procedural Texturing
در سوی دیگر ماجرا فرض کنید در یک شرکت بازیسازی بسیار معتبر و معروف مشغول به فعالیت هستید. شرکت مذکورهر بازی که میسازد، تبدیل میشود به بازی سال. روند ساخت بازی در این شرکت کاملا مُدون و برنامه ریزی شده است.
به طوری که برای ساخت یک بازی با Time to Beat (میانگین مدت زمانی که طول میکشد، بازی باز یک بازی را به اتمام برساند) نسبتا طولانی، بدون در نظر گرفتن مسائل مربوط به پیش تولید بازی، حداقل سه سال زمان میبرد تا به مرحله گُلد شدن (Gold) بازی برسد و به همین دلیل شما به عنوان کارمند بخش طراحی تکستچر در این شرکت، زمان کافی برای به اتمام رساندن کارتان دارید و به دلیل زمانبندیهای بسیار دقیق و حساب شده، فارغ از هر گونه فشاری نه تنها آن چه را که از شما میخواهند میتوانید به خوبی پیاده کنید بلکه خود نیز به سر ذوق آمده و ایدههای بکری را در جهت هر چه بهتر شدن نتیجه کار ارائه میدهید.
همچنان دنیا اسیر کروناست و شما نیز در خانه مشغول دور کاری هستید. با توجه به برنامه ریزیهای انجام شده، شما در این زمان باید فرآیند ساخت تکستچرهای مربوط به متریال یک Terrain بزرگ را آغاز کنید. از شما خواسته شده در جهت هر چه باور پذیرتر شدن طراحی زمین یک ناحیه، با آب و هوای بارانی، کار را ارائه دهید.
یک زمین پوشیده از خاک که در اثر بارش باران گلآلود شده و آب نیز در جاهایی از آن جمع شده است و سنگ ریزههایی با اشکال و سایزهای گوناگون و خار و خاشاک نیز باید بر روی زمین دیده شوند. البته به شما گفتهاند که فقط شکل ظاهری آب را بدون اینکه فیزیکی داشته باشد بر روی زمین طراحی کنید. چرا که گروه دیگری بعدا در این نواحی، آب را به همراه فیزیک آن، قرار خواهند داد.
مطالب مرتبط:
از آنجایی که به قدر کفایت برای انجام این کار زمان دارید و از شما یک کار بینقص میخواهند، برای ساخت این تکستچرها قصد دارید از روش Procedural استفاده کنید و یک تکستچر را ذره ذره و مرحله به مرحله بسازید. همانطوری که از نام Procedural مشخص است Workflow یا روند ساخت تکستچر به این صورت است که از ساخت پایهایترین قسمت یک تکستچر شروع میشود، و جزییات مورد نظر مرحله به مرحله اضافه میشوند، نتیجهی کار در هر مرحلهای بازبینی و تست میشود و در نهایت مپهای لازم ساخته میشوند و در فورمت یک فایل تصویری اکسپورت (Export) میشوند.
برای استفاده از این روشِ ساخت تکستچر، شما نیاز دارید به نرمافزار Substance Designer که برنامهای است بسیار قدرتمند و کاربردی به جهت ساخت تکستچر به روش Procedural. بسیاری از بازیهای AAA از این نرمافزار برای ساخت تکستچر استفاده میکنند. آخرین بازی معروف منتشر شده که از این نرمافزار استفاده کرد، Last of Us Part ۲ بود. ضمن اینکه بازی Hellblade ۲ و Project Mara که هنوز منتشر نشدهاند نیز بر طبق اعلام شرکت سازنده از این نرمافزار برای ساخت تکستچر استفاده میکنند.
این نرمافزار اصطلاحا Node-Based است. در توضیح این ویژگی باید گفت که اصولا اجرای روش Procedural نیاز به کدنویسیهای زیادی دارد. یعنی فرآیند ساخت یک تکستچر به این روش تماما به وسیلهی یک زبان برنامهنویسی پایه یا همان Low Level مثل C یا C++ انجام میشود.
روش Procedural برای ساخت تکستچرها بسیار قدرتمند و پر کاربرد است. از آنجایی که کدنویسی در تخصص خیلیها نیست، شرکت نرم افزاری Allegorithmic که زیر مجموعهای از شرکت عریض و طویل Adobe (سازنده نرمافزار فتوشاپ و بسیاری از نرمافزارهای پرکاربرد دیگر در زمینه گرافیک کامپیوتری) است، نرم افزاری ارائه داده که در آن، این کدها همگی به صورت آماده در پشت صحنه نوشته شدهاند و نتایج حاصل از آنها بر روی بلاکهای به نام Node آمدهاند و کاربر بدون دانستن ذرهای برنامهنویسی میتواند از این نودها استفاده کند و با متصل کردن آنها به یکدیگر، تکستچرهایی را خلق کند.
با اتصال این نودها، در واقع در پشت صحنه انواع کدها در کنار یکدیگر قرار گرفته و نتایجی را رقم میزنند، در واقع میتوان گفت، بدون دانستن ذرهای از دانش برنامه نویسی، یک برنامه بسیار دقیق و خوش ساخت برای ساخت یک تکستچر خاص به روش Procedural نوشته اید. در تصویر زیر نمایی کلی از نرمافزار Substance Designer و چگونگی اتصال انواع Nodeهای بکار رفته در ساخت تکستچر Terrain مذکور مشاهده میشود.
این Node Base بودن برنامهها امروزه کاربرد بسیار زیادی در انواع نرم افزارهای گرافیکی و موتورهای بازیسازی دارد. در قسمتهای قبلی این مقاله نیز به صورت گذرا به Node Base بودن Shader اشاره کردیم که به صورت Node در نرمافزار Maya به جهت ساخت شیدر یک شیشه وجود دارد.
روند ساخت تکستچر Terrain
روند ساخت تکستچرTerrain در برنامه یSubstance Designer با تولید یک سری اشکال تصادفی با هندسههای مختلف که در واقع نمایندهی نقوش روی زمین هستند، آغاز میشود. به همین سبب از یک Node که حاوی یک سری شکلهای کاملا تصادفی (Random) است استفاده میکنید. به این شکلهای تصادفی که هندسههای مختلفی دارند، نویز گفته میشود. منظور از اشکال تصادفی این است که آن شکل بدون نظم خاصی و به صورت تصادفی تولید شده است. البته در عین بینظمی، منظم هم هستند. در تصویر زیر انواع نویزهای از پیش ساخته شده در Substance Designer را مشاهده میکنید.
به جهت ساخت نقوش روی زمین شما از نویزی به نام Perlin Noise که در گرافیک کامپیوتری بسیار بسیار پر کاربرد است استفاده می کنید. از آنجایی که از این نویز در ساخت انواع تصاویر گرافیکی به وفور استفاده میشود، لازم است که قبل از پرداختن به ادامهی کار ساخت تکستچر، شرحی بر احوال این نویز بدهیم.
این نویز توسط Dr. Ken Perlin در حدود ۴۰ سال پیش، زمانی که بر روی یک پروژهی گرافیکی برای شرکت معروف دیزنی کار میکرد، ساخته شد. ا ز پایهایترین Assetهای استفاده شده در بحث CG میباشد. نتایج حاصل از این تحقیق که بر روی ساخت این نویز انجام شده در مقالهای تحت عنوان Image Synthesizer به قلم Ken Perlin آمده. در اثبات اهمیت بسیار زیاد این نویز در ساخت پایه و اساس تصاویر گرافیکی، لازم به ذکر است که Ken Perlin در سال۱۹۹۷ جایزهی بهترین دستاورد تکنیکی در زمینه گرافیک و مشخصا CGI (Computer generated Imagery) را از سوی آکادمی اسکار دریافت کرد.
یعنی دقیقا در سالی که فیلم بیمار انگلیسی جایزهی اسکار بهترین فیلم را از آن خود کرد. هر چند که از بحث اصلی دور شدیم اما لازم بود که در باب اهمیت این نویز کاربردی مطالبی را بدانیم. چرا که در دنیای CG و بالاخص بازیهای ویدیویی، افراد بسیاری هستند نظیر آقای Perlin که در پشت صحنه، خدمات بسیار ارزنده و کلیدی به صنعت گرافیک کامپیوتری کردند و ما امروزه در انواع بازیهای ویدیویی و انیمیشنها و کلا تصاویر مبتنی بر گرافیک کامپیوتر از آنها بهره میبریم. کسانی که نامشان در خفا است و کمتر کسی هست که با نام این دانشمندان عرصهی گرافیک کامپیوتری آشنا باشند.
به هر روی در ابتدای شروع کارتان نود مربوط به Perlin-Noise را وارد میکنید. از آنجایی که پشت این نود حدود ۲۵۰ خط، کد به زبان برنامهنویسی C است، و تا پایان مراحل ساخت تکستچرها نیاز به چند ده Node دیگر دارید، میتوان گفت برای ساخت این تکستچرها نیاز به چند هزار خط، کد به زبانC دارید. البته لازم به ذکر است، از آنجایی که برنامهی Substance Designer به زبان برنامهنویسی Python نوشته شده تعداد خط کدهای کمتری برای تکمیل کدهای مربوط به ساخت تکستچرها لازم است. و همانطوری که گفتیم این نرمافزار کار را راحت کرده و فقط با Node سر و کار دارید. در تصاویر زیر، نمایی از Perlin Noise Node و ظاهرش را مشاهده میکنید.
در مرحلهی بعد باید شکلها و هندسههای کوچکتری را برای تکستچرتان بسازید. توجه شود که در هر مرحله میتوانید نتیجهی کارتان را در حالت دو بعدی و یا سه بعدی، وقتی که تکستچر روی یک ۳D Mesh دلخواه قرار گرفته، ببینید. به جهت اضافه کردن انواع هندسههای دیگر که نقش سنگ ریزهها و کلوخهای زمینتان را ایفا میکنند یک سری نویز دیگر وارد میکنید و در واقع روال کار این است که هر Node را که وارد میکنید باید با Node که از مراحل قبل بدست آمده تلفیق یا اصطلاحا Blend کنید که برای این کار از یک نوع Node به نام Blend استفاده می کنید.
برای درست کردن سنگهای بزرگتر از یک سری هندسههای تصادفی که نظم خاصی در هندسهشان دیده نمیشود استفاده میکنید. همچنین برای درست کردن خار و خاشاک نیز از اشکال استوانهای شکل استفاده کرده و با استفاده از ابزارهایی که برنامه در اختیار شما قرار میدهد، به آن ها، شکلهای بینظمی میدهید که در ذهن بیننده نمای یک شاخهی شکسته شده کوچکی از یک درخت که بر روی زمین افتاده، تداعی شود.
از آنجایی که این هندسهها به صورت Grayscale یا سیاه و سفید هستند، توسط نودهایی که وظیفهشان دادن رنگ است، رنگ دلخواه را به آنها تزریق میکنید و اصولا Node و ابزارهای دیگری نیز در دسترس دارید تا این رنگها را باورپذیرتر و متناسب با آن چیزی که میخواهید تولید کنید.
در نهایت نیز از یک سری Node استفاده کرده و به گرافمان (بستری که تمامی Nodeهایی که استفاده میکنید، درون آن قرار میگیرند) اضافه میکنید تا انواع مپهای مورد نیازتان را بدست بیاورید. تمامی پارامترها و مشخصات این Nodeها به راحتی قابل تغییرهستن و به راحتی میتوانید با تغییر این پارامترها تکستچرهایی که از لحاظ ظاهری با یکدیگر متفاوت هستند را بدست آورید.
اصولا به دلیل اینکه تمام مراحل کار در کنترل خودتان است میتوانید طوری کار را به سرانجام برسانید که حجم فایل نهایی بسیار کمتر از حالت Photo Texturing باشد و با اینکه کیفیت کار بسیار بالاست اما حجم کمی نیز دارد. ضمن اینکه این نرمافزار یک فورمت خاصی از فایل را دارد که اگر انجین بازیسازی که از آن استفاده میکنید بتواند این فورمت را ساپورت کند، میتوانید حجم فایلی در حدود چند کیلوبایت داشته باشید که این از دید مسائل بهینهسازی واقعا فوق العاده است.
به هر روی با صرف زمان لازم، این تکستچرها را تهیه کرده و در Level مربوطه در بازی استفاده میکنید و از آنجایی که یک کار کاملا حرفهای و بدون ایراد را تحویل دادید موجبات رضایت خاطر دست اندرکاران ساخت بازی را فراهم کردید و همه راضی و خوشحال در جهت ساخت یک بازی تمام عیار فعالیت میکنید. در ادامه میتوانید تصاویرمربوط به تکستچرهای ساخته شده برای Terrain را مشاهده کنید. از چپ به راست به ترتیب مپهای Base Color و Normal و Roughness و AO را داریم.
در ادامه این تکستچرها، متریال Terrain مذکور را ساخته و در موتور بازیسازی Unreal Engine ۴ به Terrain اعمال میشوند. Terrain را در دو آب و هوای مهآلود و آفتابی مشاهده میکنید.
۲٫ Painting Texturing
روش بعدی ساخت تکستچر نیز یکی از روشهای پر کاربرد درCG است. در این روش همانطور که از نامش پیداست روال کار به این صورت است که به طور مستقیم روی مدلمان کار کرده و انواع جزییات و رنگها را به سطح آن اضافه میکنیم و اصطلاحا آن راPaint میکنیم. و در نهایت با استفاده از یک سری ابزارهای Bake کردن مپ (به فرآیند تهیه تکستچر با استفاده از شکل ظاهری مدلی که میخواهیم روی آن تکستچر بزنیم Baking میگویند) انواع مپها را برای مدلمان میسازیم.
در این زمینه نرمافزارهای زیادی در دسترس هستند. از جمله بهترین ها، نرم افزاری به نام Substance Painter است که از همان گروه نرم افزارهای Substance ساخت شرکت Allegorithmic میباشد. در این گونه برنامه ها، یک سری Brushها و البته ابزارهای دیگری در اختیار ما قرار میدهند تا بتوانیم انواع جزییات را به صورت لایه لایه به مدلمان اضافه کنیم. تکستچرهایی که از این روش بدست میآیند از آنجایی که مطابق بر هندسهی مدل است بسیار دقیق هستند و به خوبی تمامی جزییات را نمایش میدهند.
اما حجم تکستچرها به مانند تکستچرهای روش Procedural پایین نیستند، ولی همچنان کمتر از حجم تکستچرهای روش Photo Texturing هستند. در تصویر زیرنمایی کلی از نرمافزار Substance Painter را ملاحظه میکنید. در اینجا میخواهیم برای یک فانوس که در نرمافزار Maya درست شده است، تکستچر بسازیم. علاقه مندیم که رنگ پایه فانوس آبی باشد. فانوس قدیمی است، و سالها در انباری متروک رها شده است و به دلیل رطوبت زیاد نیز بدنهی آن زنگ زده است.
روند ساخت تکستچر فانوس
در روش Painting روال کار به این صورت است که لایه به لایه جزییات دلخواه را به فانوس اضافه میکنیم. از آنجایی که میخواهیم جزییات دقیقی از فانوس را نمایش دهیم، مدل را به صورت چند تکه درست کردیم که بتوانیم روی هر تکه به صورت جداگانه کار کنیم. یعنی پایه فانوس (مخزن نگه دارندهی سوخت فانوس)، دستههای آن، قسمت شیشهای نگهدارندهی فیتله و سر فانوس به صورت مجزا از یکدیگر تکستچرگذاری میشوند.
به همین دلیل تعداد تکستچرهای بدست آمده زیاد است. نتیجتا در این بخش فقط تکستچرهای پایه فانوس را نمایش خواهیم داد و طبیعتا فقط تکستچرهای این قسمت از فانوس را در تصاویر مشاهده خواهید کرد. اما در نهایت تصویر کامل شدهی فانوس را که در آن تمام قسمتهایش تکستچر دارند، خواهید دید.
لازم به توضیح است که در نرمافزار Maya بعد از اینکه فانوس را ساختیم، آن را Unwrapping کردیم تا UV Coordinateهای آن بدست آیند و فانوس آمادهی تکستچرگزاری شود. در تصاویر زیر مراحل اضافه کردن انواع جزییات به پایه فانوس را که به صورت لایه به لایه انجام شده ملاحظه میکنید.
در تصویر اول شکل خام و بدون تکستچر پایه فانوس را میبینید. در مرحلهی بعد رنگ پایه آبی اضافه میشود. سپس رنگهای تیرهای که نشاندهندهی لکههای روغن بر روی فانوس است، بر روی آن اسپری میشود. بعد از آن یک لایه Rough به صورت یک ماسک به پایه فانوس اضافه میکنیم تا رنگ آبی را از جنسی نشان دهد که در زیر تابش نور میدرخشد. که در دنیای واقعی به اینگونه رنگهای درخشان رنگ پلاستیک میگویند. ضمن اینکه به پایه اصطلاحا کمی Bump نیز اضافه میکنیم تا حالت نقطه نقطههای رنگ نیز به صورت برآمدگیهای ریزی روی سطح پایه نمایان شوند.
سپس یک لایه دیگر که حاوی یک متن (Text) است به پایه اضافه میکنیم. پس از آن مقداری زنگ زدگی (Rust) به لبههای پایه میدهیم. در مرحلهی بعد به سرتاسر پایه زنگ زدگی و خط و خشهایی اضافه میکنیم. در نهایت باز هم مقداری رنگ تیره که به صورت برجسته اعمال شده اند، به جهت نمایش روغن و نفت ریخته شده روی بدنه اضافه میشوند.
و بدین ترتیب طراحی جزییات بدنهی فانوس به پایان میرسد و نرمافزار بر اساس جزییاتی که روی پایه اضافه کردیم انواع مپها را برای ما میسازد. پس از آن قسمتهای دیگر فانوس نیز با جزییات دلخواهی که مدنظر داریم، Paint کرده و مپهای آنها را نیز به دست میآوریم.
در زیر میتوانید انواع مپها یا تکستچرهای بدست آمده از روش Painting که فقط برای بدنهی فانوس هستند، مشاهده کنید. دقت شود چینش قطعات مختلف پایه فانوس در مپ بر اساس نوع Unwrapping است که از قبل روی پایه انجام دادیم و نتیجتا چینش UV Coordinate ها بدین شکل در آمده اند. نام هر مپ در زیرشان آمده است.
هر چند که روشهای دیگری نیز برای ساخت تکستچر وجود دارند اما پایه و اساس آنها بر اساس این سه روش است و اصولا کاربرد کمتری دارند. حال این سوال پیش میآید که کدام روش نسبت به بقیه ارجحیت دارد؟
در نهایت فانوس تسکتچرگذاری شده به صورت زیر درمیآید؛ به سوالمان بازگردیم. پاسخ این است که از لحاظ منطقی همگی دارای یک سری ویژگیهای مثبت و منفی هستند. که با توجه به شرایط کاریمان میتوانیم از هر یک از این سه روش استفاده کنیم. از آنجایی که برای ساخت بازی ها، زمانِ صرف شده برای ساخت بازی نقش بسیار مهمی در اجرای پروژه دارد، عاقلانه این است که از هر سه روش در ساخت تکستچرها کمک بگیریم.
ضمن اینکه به صورت تلفیقی نیز میتوانیم از این روشها استفاده کنیم. مثلا یک سری عکس به جهت ساخت تکستچر گرفته و وارد نرمافزار Substance Designer کنیم و جزییاتی را به آن اضافه کنیم و برخی نقایص عکس را برطرف کنیم.
ضمن اینکه برخی مدلها فقط امکان ساخت تکستچر از یک روش خاص را دارند. مثلا بدیهی است که برای ساختن تکستچر یکی از هیولاهای بازی Bloodborne، Photo Texturing به ما کمک نمیکند و اصولا روش Painting برای ساخت تکستچر کاراکترها بسیار بهتر از روشهای دیگر است. اما ساخت تکستچر برای مدلهایی که مواد بکار رفته در آنها از Pattern های خاصی پیروی میکند، مثلا چوب، فلز، آسفالت، خاک، چمن، سطوح سنگی و از این دست، روش Procedural بسیار کارآمد است. در قسمت بعدی که قسمت آخر این مقالات است، به یک جمعبندی بهخصوص از تمام مطالب میرسیم. هفته آینده همراه ما باشید.
نظرات