بخش نهم آموزش یونیتی متوسطه (استفاده از Meshroom برای درج اشیاء واقعی در بازی)
فهرست مطالب
آخرین به روزرسانی در 29/07/2022
در بخش نهم از آموزش یونیتی متوسطه قرار داریم.
در این بخش قصد آموزش استفاده از اشیا واقعی در یونیتی را داریم.
مدل سازی در یونیتی یکی از چالش هایی است که معمولا کاربران زیادی با آن روبه رو هستند.
ما در این آموزش سیستم Meshroom را به شما آموزش خواهیم داد.
که با استفاده از آن می توانید اشیا واقعی از محیط پیرامون خود را یک خروجی عکس بگیرید و پس از خروجی عکس و وارد کردن آن ها به یونیتی با استفاده از این سیستم آن ها را تبدیل به مدل سه بعدی کنید.
پس تا پایان این آموزش جذاب با ما همراه باشید.
پیش نیاز این دوره ی آموزشی تسلط و درک مفاهیم اولیه ی زبان برنامه نویسی C# می باشد.
مقدمه
در زمینه مدل های سه بعدی ، photogrammetry فرآیند ساخت مدل های سه بعدی از اشیایی است که اسکن کرده اید.
آیا تا به حال به چند مدل سه بعدی واقعی برای بازی خود نیاز داشتید در حالیکه پروسه ی ساخت آن ها برای شما بسیار پیچیده بوده است ؟
ایا یک محیط بازی فوق العاده برای بازی خود در نظر دارید ؟
اگر اینطور است در ادامه با ما همراه باشید.
با photogrammetry ، شما مجموعهای از ورودیها ، عکسهای خود را میگیرید و آنها را از طریق یک pipeline یا یک سری متدهایی که آنها را پردازش میکنند، اجرا میکنید.
داده های این فرآیندها یا خروجی ها، ایجاد مدل های سه بعدی را برای شما به همراه دارند.
در این آموزش، از چندین عکس از یک مجسمه اژدها برای ایجاد یک مدل سه بعدی دقیق ، ادیت کردن آن در بلندر و وارد کردن خروجی به محیط Unity Viking village استفاده خواهید کرد.
پروسه ی آموزش استفاده از اشیا واقعی در یونیتی به شرح زیر است :
- یک شی خوب را برای عکسبرداری انتخاب کنید.
- عکس های مناسب بگیرید.
- تصمیم بگیرید که چه زمانی و کجا عکس ها را بگیرید.
- عکس های بد را حذف کنید.
- از Meshroom برای ایجاد اسکن های سه بعدی استفاده کنید.
- وارد کردن مدل ها به بلندر برای ادیت.
- کاهش تعداد polygon.
- مدل های سه بعدی را به یونیتی آماده و وارد کنید.
و در نهایت خروجی که می خواهیم به آن برسیم به شرح زیر می باشد :
پیدا کردن اشیاء خوب برای عکس گرفتن
قبل از هر چیزی باید بیاموزید که چگونه یک تصویر برداری مناسب از محیط داشته باشید.
مطمئناً باید اشیایی را تصویر برداری کنید که با محیط یا ایده بازی شما مرتبط هستند.
پس از این اولویت آشکار، برخی ویژگیها مانند : پایه های تخت یا کنتراست مناسب در رنگ ها یا تن ها وجود دارند که عکسبرداری یک شی را آسان تر میکنند.
همچنین باید فتواسکن اجسامی را که مدل سازی آنها دشوار است در نظر بگیرید.
برای مثال، مدلسازی اقلام موجود در طبیعت چالش برانگیز است، زیرا ایجاد متریال organic دشوار است.
به عنوان مثال این سنگ ها از The Tales Factory در فروشگاه Unity Asset نمونه خوبی هستند ؛ که لینک آنها در زیر گذاشته شده است.
چه زمانی باید عکس گرفت
مانند عکاسی، شرایط و زمانهای خاصی از روز وجود دارد که عکسبرداری بهتری را انجام میدهد.
اگر استودیوی سرپوشیده و نورپردازی دارید، میتوانید با برنامهریزی دقیق این شرایط را مدلسازی کنید.
اگر این کار را نکنید، باید در محیط بیرون کار کنید.
هنگام کار در خارج از منزل ، موارد زیر را در نظر داشته باشید :
- در نور روز عکس بگیرید.
- آسمان ابری عالی است. ابرها نور را پخش می کنند که باعث ایجاد یکنواخت نور در مدل شما می شود.
- شرایط آب و هوایی خشک خوب است و شرایط آب و هوایی بد ، احتمالاً بازتاب بیشتر در نتیجه نهایی خود خواهد داشت.
در برخی موارد، ممکن است متوجه شوید که مدل سه بعدی شما دارای براقی است که از واقعیت گرایی آن را دور می کند.
مدلی با ظاهر خنثی را انتخاب کنید که می توانید با انواع شرایط بالقوه مطابقت داشته باشید.
سپس می توانید به شرایط بازی خود افکت ها را اعمال کنید.
این به این معناست که سعی کنید افکت ها را از محیط یونیتی اضافه کنید از محیط طبیعی.
به عنوان مثال آیا محیط شما بارانی است ؛ پس سایهزنی را روی آن بیندازید که جلوههای براق را میافزاید.
یا به عنوان مثال آیا بازی شما در دنیایی پسا آخرالزمانی می گذرد که همه چیز قدیمی و فرسوده است ؛ پس به جای آن یک اثر پیری یا خوردگی اضافه کنید.
عکس برداری
مجموعه عکسی را که برای آموزش استفاده از اشیا واقعی در یونیتی استفاده می کنیم از لینک زیر دانلود کنید.
https://wolverine.raywenderlich.com/content/unity/tutorials/DragonSculpturePhotographs.zip
اکنون فایل فشرده را استخراج کرده و حدود 100 عکس از مجسمه اژدها را خواهید دید که از زوایای مختلف و ارتفاعات مختلف گرفته شده است.
این همان چیزی است که باید هنگام ثبت عکس به آن توجه کنید.
پوشش 360 درجه عکس ها از زوایای مختلف و ارتفاعات به شما اطمینان می دهد که جزئیات مورد نیاز خود را دریافت کنید.
هنگام عکس گرفتن، در اطراف جسم مورد نظر حرکت کنید تا از زوایای مختلف مناظر دریافت کنید.
سعی کنید با کوچکترین افزایش ممکن حرکت کنید و هم از نزدیک و هم از کمی دورتر عکس بگیرید.
شما قصد دارید جزئیات و عکس هایی را از نزدیک دریافت کنید که کل مدل را نشان می دهد.
در طول تایم عکسبرداری ، مدل را حرکت ندهید یا آن را نچرخانید ، زیرا این امر باعث از بین رفتن نظم مدل در برخی از نرم افزارها می شود.
در عوض، در حالی که سوژه را ثابت می گذارید، در اطراف آن حرکت کنید.
تنظیمات دوربین
برای داشتن مجموعه ای از عکس ها با ظاهر یکنواخت ، دوربین خود را روی حالت دستی یا حرفه ای قرار دهید.
اکثر دوربین های گوشی های هوشمند به شما اجازه ورود به این حالت را می دهند، در حالی که دوربین های DSLR دستی همیشه حالت دستی یا M دارند.
ابتدا یک حالت ISO ثابت را تنظیم کنید.
این میزان حساسیت سنسور دوربین دیجیتال شما به نور را تغییر می دهد.
اعداد بالاتر گرفتن عکسها را در شرایط تاریکتر آسانتر میکند ، اما باعث میشود که تصاویر نویزتری ایجاد شود.
در خارج از منزل با نور خوب، معمولاً می توانید این عدد را به 100 یا 200 کاهش دهید.
برای تصاویر photoscan ، همیشه یک عدد ثابت انتخاب کنید.
اگر در عکاسی تازه کار هستید، از حالت شاتر ثابت یا دیافراگم ثابت در دوربین خود استفاده کنید.
گاهی اوقات به این حالتهای اولویت (Pority mode) گفته میشود.
انجام این کار به شما کمک می کند آن تنظیم را مشخص کنید و به دوربین اجازه می دهد تنظیمات دیگر را برای حفظ نوردهی یکنواخت کنترل کند.
باز هم، همه اینها به نام گرفتن عکس هایی با نور خوب است.
هنگام گرفتن عکس های خود، همیشه مطمئن شوید که آنها در فوکوس هستند ؛ زیراکه شما هیچ تصویر تاری نمی خواهید.
تصاویر خود را در یک جهت ، اعم از افقی یا عمودی، در سرتاسر نگه دارید.
تنظیم ISO روی 200 ثابت برای اواسط روز و نور ابری در این شرایط به خوبی کار می کند.
ایجاد Photoscans با Meshroom
Meshroom یک برنامه فتوگرامتری اوپن سورس است که می توانید از آن برای ایجاد مدل های سه بعدی از عکس ها استفاده کنید.
از آن برای ایجاد یک عکس از مجسمه اژدها استفاده خواهید کرد.
آخرین نسخه را از اینجا دانلود و نصب کنید.
پس از اجرای Meshroom، رابط اصلی را مشاهده خواهید کرد.
در این نما می توانید هر کاری را که برای ایجاد عکسبرداری خود نیاز دارید انجام دهید.
در اینجا یک بررسی سریع از هر بخش از رابط اصلی آورده شده است :
1- اینجا جایی است که میتوانید عکسهایی را که میخواهید به صورت سه بعدی بازآفرینی کنید، بکشید و رها کنید.
2- Image Viewer به سادگی یک صفحه پیش نمایش برای عکس های فردی است.
3- پس از شروع فرآیند ، 3D Viewer نتایج بازسازی جسم شما را به شما نشان می دهد.
همچنین زوایای مختلف عکسهای شما را بر اساس metadata هایی که برنامه از تصاویر شما دریافت میکند، به شما نشان میدهد.
4- Graph Editor ، با pipeline فرآیندهایی را نشان می دهد که برنامه برای بازسازی شی شما به صورت سه بعدی انجام می دهد.
هر مرحله توسط یک Node نمایش داده می شود.
اینها مجموعه ای از ورودی ها و خروجی ها با پردازش هستند که در هر مرحله اتفاق می افتد.
عکس های شما از این pipeline عبور میکنند و نتیجه هر مرحله به مرحله بعدی میرسد.
5- در قسمت Node می توانید به جزئیات مربوط به Node های جداگانه در Graph Editor دسترسی داشته باشید.
شما می توانید تنظیمات هر Node را تغییر دهید، اما برای این آموزش، تنظیمات پیش فرض کافی است.
وارد کردن عکس ها به Meshroom
اکنون، عکس های مجسمه اژدهای دانلود شده را پیدا کنید.
سپس آنها را بکشید و در قسمت Images در Meshroom رها کنید.
عکس ها به ترتیب نام فایل در قسمت Images ظاهر می شوند.
در مرحله بعد، روی File ► Save As… کلیک کنید و یک مکان پوشه جدید در جایی از درایو خود انتخاب کنید و پروژه را به عنوان Dragon.mg ذخیره کنید.
اکنون، برای آماده شدن برای فرآیند بازسازی Meshroom، همه برنامه های غیر ضروری را ببندید.
اگر منابع رایانه شما ( میزان رم و پردازنده) کم باشد ، اسکن شروع نمی شود.
آغاز فرآیند بازسازی Meshroom
در این مرحله، شما آماده شروع بازسازی (reconstruction) هستید.
برای اینکار روی دکمه Start کلیک کنید تا فرآیند شروع شود.
در حالی که فرآیند در حال اجرا است ، می توانید پیشرفت آن را در نمای Graph Editor پیگیری کنید.
به یک نوار پیشرفت رنگی کوچک در هر node توجه کنید.
CPU شما نیز به احتمال زیاد بین 15 تا 30 دقیقه بسته به سرعت آن حداکثر شارژ می شود.
پس از تکمیل، اسکن حاصل را در صفحه نمایشگر سه بعدی خواهید دید.
اکنون کلیک چپ کرده و نشانگر ماوس خود را بکشید تا بچرخد، یا وسط کلیک کرده و بکشید تا نمای سه بعدی را به اطراف حرکت دهید.
از خروجی سه بعدی لذت ببرید که چرخه های CPU شما به ایجاد آن کمک کرده اند.
سپس پوشه ای را که فایل پروژه Meshroom خود را در آن ذخیره کرده اید باز کنید.
متوجه پوشه ای به نام MeshroomCache خواهید شد.
اینجا جایی است که فایل های شیء اسکن شده خروجی می شوند.
Import کردن در بلندر
در مرحله بعد، از Blender ، یک برنامه مدل سازی و انیمیشن سازی فوق العاده کاربردی و سه بعدی محبوب ، برای وارد کردن اسکن مدل سه بعدی اژدها و ادیت آن و آماده سازی برای وارد کردن به یونیتی استفاده خواهید کرد.
اگر در Blender تازه کار هستید ، رابط و کنترلها میتوانند برای مبتدیان گیجکننده باشند ، ترکیبهای کلیدی و اسکرینشاتهای زیادی را در ادامه خواهیم گفت.
با باز شدن launch screen بلندر ، روی General در قسمت New File کلیک کنید.
فایل جدید به طور پیش فرض حاوی یک شی مکعب است.
روی Cube کلیک کنید تا آن را انتخاب کنید ، سپس Delete را فشار دهید تا از آن خلاص شوید.
اکنون شما یک فضای تمیز برای کار دارید :
سپس روی File ► Import ► Wavefront (.obj) کلیک کنید.
به پوشه MeshroomCache بروید ، جایی که Meshroom فایل های مدل شی اسکن شده شما را ذخیره کرده است.
در زیر این پوشه، مدل را در زیر پوشه MeshroomCache/Texturing/GUID پیدا کنید.
GUID یک نام پوشه با شناسه تصادفی است که پس از پایان اسکن شما به آن اختصاص داده می شود.
سپس بر روی texturedMesh.obj دوبار کلیک کنید تا اسکن به Blender وارد شود.
import کردن ممکن است کمی طول بکشد زیرا فایل مدل Photoscanned بسیار بزرگ است.
با ظاهر اژدهای اسکن شده به طور پیش فرض شروع کنید.
روی دکمه Viewport Shading در نمای اصلی Blender کلیک کنید تا Viewport Shading و texturing کامل فعال شود.
سپس Shift + Middle Mouse را نگه دارید و viewport را بکشید تا مدل اصلی اژدها را به وسط صفحه نمایش خود حرکت دهید.
سپس Middle Mouse را نگه دارید و بکشید تا viewport بچرخد.
با اسکرول ماوس می توانید بزرگنمایی و کوچکنمایی کنید.
حال می توانید ببینید که اسکن به طور پیش فرض چقدر خوب به نظر می رسد.
Touching Up با بلندر
مدل پیچیده با تعداد رئوس بالا و جزئیات است.
در مرحله بعد، تعداد polygon (چند ضلعی) را با یک modifier سریع و موثر Blender به نام Decimate کاهش خواهید داد.
برای بازیهای منتشر شده تجاری که به بهینهسازی بیشتری نیاز دارند، ممکن است بخواهید زمان بیشتری را صرف کاهش تعداد polygon ها کنید.
در حال حاضر، Decimate به اندازه کافی خوب کار می کند.
با استفاده از پانل Scene Collection در Blender، روی texturedMesh ► Modifiers ► Add Modifier کلیک کنید.
از selection حال Decimate را انتخاب کنید.
یک ناحیه پیکربندی کوچک با گزینه های Decimate ظاهر می شود.
اکنون، Collapse با نسبت 0.1 و Factor 2.0 را انتخاب کنید.
سپس روی Apply کلیک کنید.
این باعث کاهش جزئیات در کل مدل می شود و تعداد راس ها را حدود 10 ضریب کاهش می دهد ؛ شما نباید متوجه افت بصری زیاد در جزئیات شوید.
برداشتن چمن
مشکلی که وجود دارد این که شما قصد دارید این اژدهای خاص را در محیط دهکده وایکینگ ها قرار می دهید ، بنابراین ما باید چمن های مدل را حذف کنیم.
اکنون، روی حذف چمن از مش تمرکز خواهید کرد.
در Blender، از حالت Object به حالت Edit Mode بروید.
برای این کار می توانید از رابط کاربری نرم افزار استفاده کنید یا Tab را روی صفحه کلید فشار دهید.
به تغییرات viewport خود توجه کنید تا تمام رئوس انتخاب شده اژدها نشان داده شود.
انتخاب رئوس
در مرحله بعد، فقط رئوس ناحیه چمن اطراف پایه اژدها را انتخاب کرده و سپس آنها را حذف خواهید کرد.
ابتدا ابزار Select Lasso را با فشار دادن Shift + Space، L. That’s Shift و Space با هم و سپس L را انتخاب کنید.
یا از نوار ابزار UI برای انتخاب ابزار Select Lasso استفاده کنید.
در مرحله بعد، از ترکیبی از کلیک و کشیدن Middle Mouse برای چرخش و وسط ماوس + Shift کلیک کنید و بکشید تا در اطراف حرکت کنید تا مدل را از همه زوایا مشاهده کنید.
از هر زاویه ، Lasoo ، رئوس مناطق چمن و با دقت اطراف پایه اژدها را انتخاب می کند.
بین هر انتخاب ، هنگام انتخاب نواحی جدید ، Shift را فشار دهید تا مطمئن شوید که به انتخاب رأس موجود شما اضافه شدهاند.
در اینجا یک GIF وجود دارد که این روند را نشان می دهد:
شما باید گهگاه نما را بچرخانید تا رئوس هایی را که پشت برجستگی ها و برآمدگی های مش چمنی هستند نیز انتخاب کنید.
اگر رئوس هایی را انتخاب می کنید که نمی خواهید حذف شوند ، Shift + Left روی آنها به صورت جداگانه کلیک کنید تا آنها را از انتخاب خود حذف کنید.
هنگامی که همه راس های چمن و اطراف را انتخاب کردید ، Delete ► رئوس را فشار دهید تا آنها را حذف کنید.
به اطراف مش باقیمانده نگاه کنید ، بزرگنمایی و کوچکنمایی کنید و view را بچرخانید.
برای هر رئوسی که از دست داده اید ، دوباره فرآیند انتخاب و حذف را تکرار کنید.
شما در نهایت باید چیزی شبیه به تصویر زیر داشته باشید :
بستن Base از Mesh
اکنون ، به حالت ویرایش بروید.
انتخاب Tab حالت های محیط نرم افزار را تغییر می دهد.
سپس با استفاده از ابزار Select و نگه داشتن Shift ، کل لبه پایینی رئوس روی مش اژدها را انتخاب کنید.(توجه داشته باشید این کار ممکن است کمی صبوری بخواهد)
یا می توانید از ابزار Select Lasso برای این کار استفاده کنید.
با انتخاب رئوس، روی Vertex Smooth Vertices کلیک کنید.
این حلقه رئوس را که انتخاب کرده اید کمی صاف می کند.
اکنون، ابزار 3D Cursor را با کلیک کردن بر روی Shift + Space، Space انتخاب کنید و با کلیک چپ، آن را در راستای پایینترین راس در انتخاب لبه پایینی رئوس قرار دهید.
میتوانید view خود را حرکت دهید و بچرخانید تا یک نمای جانبی از اژدها برای تعیین پایینترین راس دریافت کنید.
در مرحله بعد ، نقطه ی ” . ” را در نقطه محوری فشار دهید و سپس 3D Cursor را انتخاب کنید تا از موقعیت 3D Cursor به عنوان pivot point استفاده کنید.
سپس کلید های S ، Z ، 0 ، Enter را فشار دهید.
این سری از دستورات ، تمام رئوس انتخاب شده را به همان ارتفاع نقطه محوری که با 3D Cursor ایجاد کرده اید، مقیاس می دهد.
اکنون یک مش خواهید داشت که شبیه به تصویر زیر است :
در نهایت ، روی Vertex ► New Edge/Face from Vertices کلیک کنید.
این کار پایه جدید اژدهای شما را با capping گذاشتن رئوس انتخاب شده و ایجاد یک چهره جدید تکمیل می کند.
تغییر موقعیت اژدها
در مرحله بعد، با کلیک کردن بر روی Tab و انتخاب شی texturedMesh به Object Mode برگردید.
اژدها را با استفاده از ابزار Move با کلیک کردن بر روی Shift + Space، G در نقطه مبدا صحنه ، جایی که خطوط سبز و قرمز عبور میکنند، قرار دهید.
سپس از ابزار Rotate با کلیک روی Shift + Space Bar, R استفاده کنید تا آن را به حالت عمودی بچرخانید.
اکنون ابزار 3D Cursor را انتخاب کرده و تقریباً در مرکز اژدها در پشت آن کلیک کنید.
F3 را فشار دهید ، سپس Set Origin را تایپ کنید و Enter را فشار دهید.
حال از لیست جدیدی از دستورات ظاهر شده ، Origin to 3D Cursor را انتخاب کنید.
یک نقطه زرد در وسط 3D Cursor ظاهر می شود تا نقطه مبدا جدید مدل را نشان دهد.
حال شما آماده ی export هستید.
روی File ► Export ► Wavefront (.obj) کلیک کنید.
مطمئن شوید که Path Mode ► Copy را انتخاب کرده و گزینه Selection Only را در تنظیمات export علامت بزنید.
فایل را به عنوان Dragon.obj در یک مکان مناسب ذخیره کنید.
یک Path Mode برای export تضمین میکند که texture ها از همان پوشه ای کپی میشوند و به آن ارجاع داده میشوند که فایل مدل .obj است.
این به جلوگیری از مشکلات texture از دست رفته پس از وارد شدن به یونیتی کمک می کند.
وارد کردن به یونیتی
اکنون پروژه Starter را در Unity باز کنید ، سپس صحنه Assets/RW/Scenes/PhotoscanDragon را باز کنید.
empty pedestal را بین صخره های روستا (rock formations) قرار دهید.
این جایی است که مدل اژدهای اسکن شده عکس خود را قرار می دهید.
اکنون مدل export شده و فایل های export مرتبط را در پوشه پروژه Assets/RW/Models/Dragon بکشید و رها کنید.
سپس، از پنجره Unity Hierarchy برای مکان یابی FocalPoint GameObject استفاده کنید.
مدل Assets/RW/Models/Dragon/Dragon.obj را در Scene بکشید و رها کنید و آن را به FocalPoint GameObject اضافه کنید.
اکنون position و rotation مولفه Dragon Transform را به صورت زیر تغییر دهید:
- position : (X:-33.32، Y:0.53، Z:5.08)
- rotation : (X:-2.229، Y:90، Z:-0.6)
توجه : position و rotation شما ممکن است کمی متفاوت باشد ، بسته به جایی که هنگام تنظیم pivot point در blender کلیک کرده اید.
سپس، روی Play کلیک کنید و از اژدهای عکسبرداری شده خودتان که از دنیای واقعی گرفته شده و به صورت کاملا سه بعدی در دنیای محیط بازی شما قرار گرفته است ، شگفت زده شوید.
مهرسا امینی
برنامه نویس ، انیماتور ، سئوکار
موفقیت پس از برخواستن از شکست ها به وجود می آید