Nanite تکنولوژی جدیدی در آنریل انجین 5 می باشدکه به کاربران اجازه میدهد جزییات بسیار زیادی را با کیفیت واقع گرایانه رندر کرده و نمایش دهند. Nanite این کار را با متد جدید رندرینگ Unreal Engine 5 به نام virtualized geometry انجام می دهد.
virtualized geometry چیست ؟
virtualized geometry به آنریل انجین اجازه میدهد که هر سطحی را به صورت مجموعه ای از triangleهای کوچک نمایش دهد، حتی اگر آن سطح از میلیون ها یا میلیاردها Polygon تشکیل شده باشد.
در نتیجه هنرمندان میتوانند از مدلهای سه بعدی با جزییات بالا یا مدلهای اسکن شده با جزییات بالا، در بازیها و نرم افزارهایشان استفاده نمایند بدون اینکه نگرانی بابت کاهش بازده و یا سرعت رندر نهایی داشته باشند.
در حقیقت دیگر با استفاده از تکنولوژی virtualized geometry نیازی به شمارش Polygon های مدلها نیست و میتوانید به هر تعداد که خواستید صحنه را از مدلهای خود تکمیل نمایید.
Nanite چگونه کار میکنید؟
Nanite آنریل انجین از تکنیک تکثیر (instancing) استفاده میکند. instancing به Unreal Engine اجازه می دهد که از یک دارایی (Asset)، کپی های متعددی تهیه کند که هر کدام از آنها خصوصیات منحصر به فردی دارند. این بدان معناست که کاربران و هنرمندان میوانند یک Asset با کیفیت بالا تولید نمایند، مثلا یک مدل سه بعدی با جزییات بسیار بالا، و از آن برای تولید یک صحنه (دنیا) استفاده نمایند بدون اینکه نیاز باشد هر Asset را به صورت مجزا تولید بسازند.
برای مثال یک هنرمند میتواند یک مدل با جزییات بسیار بالا مثلا یک درخت اسکن شده با تمام جزییات را وارد آنریل انجین 5 نمایند و از آن برای ساخت درختان یک جنگل استفاده کند. بدون اینکه نگران کاهش بازده کار و افت فریم در رندر نهایی شود.
در این صورت به لطف تکنولوژِی Nanite، آنریل انجین 5 میتواند بدون افت کیفیت و سرعت، تک تک درختان را به صورت کامل رندر نماید.
مزایای استفاده از Nanite
Nanite یک انقلاب در گرافیک سه بعدی real-time به حساب می آید. این قابلیت به توسعه دهندگان نرم افزار و علی الخصوص بازی ها، اجازه میدهد که از Asset های با جزییات بسیار بالا بدون نگرانی از افت کیفیت و سرعت استفاده نمایند.
در حقیقت میتوان گفت که Nanite نسل جدیدی از بازی ها و نرم افزارهای شبیه سازی Real-Time را بوجود خواهد آورد. چیزی که تا قبل از این حتی قابل تصور هم نبود. ساخت بازی ها و برنامه هایی که از مدلهای سه بعدی و دیگر دارایی های بازی با جزییات بسیار بالا استفاده میکندو در عین حال با سرعت مناسبی اجرا می شود.
مهمترین مزایای استفاده از Nanite را میتوان به صورت زیر عنوان کرد.
- دیگر نیازی به شمارش Polygon ها نیست :
- افزایش شدید جزییات
- کاهش زمان بارگذاری
- کاهش حافظه مصرفی
- Automatic LOD
عدم نیاز به بررسی Polygon ها با Nanite
در ساخت یک نرم افزار یا بازی real-time مهمترین بخش کار، حفظ بازده و سرعت اجرای بازی در کنار زیبایی و کیفیت صحنه ها است. در قدیم، مجبور بودیم از روش های Low-Polygon برای ساخت بازیهای استفاده کنیم.
حتما باید تعداد پالیگان های صحنه از حد مشخصی فراتر نمیرفت تا مطمئن باشیم امکان رندرینگ و نمایش ان در همه سیستم ها وجود دارد. اما با وجود Nanite در آنریل انجین 5، دیگر چیزی به نام محاسبه Polygon های صحنه بی معناست. زیرا نیازی به حداقل نگه داشتن کار نخواهیم داشت و با هر تعدادی قابل اجرا هستند.
نکته جالب اینجاست که عملا هیچ محدودیتی در تعداد پالیگان های صحنه وجود ندارد. مدیریت رندرینگ و خروجی صحنه، کاملا به عهده Unreal Engine 5 و تکنولوژی Nanite خواهد بود.
افزایش شدید جزییات با Nanite
Nanite در آنریل انجین میتواند میلیون ها و میلیارها Polygon را رندر کند بدون اینکه هیچ جزییاتی را از دست بدهد. در حقیقت با حفظ کیفیت و جزییات صحنه و مدلها، میتواند میلیون ها پالیگان را پردازش کرده و به صورت real-time رندر نماید.
خوب نتیجه این کار چیزی جز کیفیت و جزییات بالای رندرینگ و در نتیجه خروجی photorealistic نخواهد بود. شما میتوانید مدلهای تولید شده Zbrush را بدون تغییر وارد محیط خود نمایید. اینکار میتواند بشدت به کیفیت خروجی کمک کرده و واقع گرایانه بودن آن را افزایش دهد.
کاهش زمان بارگذاری با Nanite
Nanite میتواند زمان بارگذاری صحنه و Asset ها را به طرز شگفت انگیزی افزایش دهد .
این زمان از روش های سنتی Loading صحنه در آنریل انجین بسیار بیشتر و سریعتر بوده و در نتیجه میتوان بازده زیادی در اجرای بازی و نرم افزارهایی که از Nanite استفاده میکنند را تجربه نمود.
کاهش حافظه مصرفی با Nanite
Nanite نسبت به روشهای مرسوم، از حافظه بسیار کمتری بهره مند می شود. در نتیجه زمانی که در یک پروژه از Nanite استفاده میکنید، حافظه اجرایی کاهش یافته و میتوانید از منابع سیستم برای اجرا و پردازش دیگر نرم افزارها استفاده نمایید.
این موضوع در پروژه های سنگین بسیار مهم است و میتوان با سیستم میان رده نیز، پروژه های بزرگ را به خوبی مدیریت کرد.
در نتیجه میتوانید از افکت ها، تکسچرها و قابلیت های دیگری در Unreal Engine 5 استفاده نمایید.
Automatic LOD با Nanite
دیگر نیازی نیست تا به روش های سنتی برای مدلهای با جزییات بالا level of details متفاوت تعریف و تولید نمایید. با استفاده از Nanite در Unreal Engine 5، میتوانید به سادگی اینکار را به صورت خودکار انجام دهیم. موتور پردازشی آنریل انجین 5، به صورت خودکار در زمان لودینگ مدلها، اینکار را انجام داده و LOD ها مختلفی را در نظر میگیرد.
Nanite از چه چیزهایی پشتیبانی میکند؟
Nanite در آنریل انجین از انواع Asset ها در بخش Geometry به شرح زیر پشتیبانی میکند:
- Static Mesh
- Instanced Static Mesh
- Hierarchical Instanced Static Mesh
- Geometry Collection
Nanite در حال حاضر و زمان نگارش این مطلب محدود به rigid meshe ها می باشد که قسمت اعظمی از ساختارهای درون صحنه را تشکیل میدهد. این تکنولوژی میتواد از dynamic translation, rotation و non-uniform scaling های rigid meshe ها پشتیبانی کند. اما از general mesh deformation پشتیبانی نمیکند.
همچنین از Custom depth or stencil و Vertex painting on instances تا این لحظه پشتیبانی نمیکند.
در حال حاضر حداکثر میتوانید تا 16 میلیون از یک موضوع در صحنه تکثیر نمایید که عدد بسیار بسیار بزرگی بوده و برای اجرای اکثریت پروژه ها کافی است .
در زمینه Material ها، Nanite از حالت Blend –Opaque پشتیبانی میکند. دیگر وضعیت های متریال در حالت Nanite یا غیر فعال می شوند یا بدون هیچ گونه افکتی رندر خواهد شد که شامل موارد زیر نیز می شود که فعلا هیچ کدام از آنها توسط Nanite پشتیبانی نمی شوند :
- Blend Modes using Masked or Translucent
- Deferred Decals
- Using a Nanite mesh for a Mesh Decal.
- Nanite supports having a decal projected onto its surface.
- Wireframe
- Two Sided
- Pixel Depth Offset
- World Position Offset
- Custom Per-Instance Data
در بخش Rendering نیز، در حال حاضر موارد زیر توسط Nanite در Unreal Engine 5 پشتیبانی نمی شوند.
View-specific filtering of objects using:
- Minimum Screen Radius
- Distance culling
- Forward Rendering
- Stereo rendering for Virtual Reality
- Split Screen
- Multisampling Anti-Aliasing (MSAA)
- Lighting Channels
- Raytracing against the fully detailed Nanite mesh
- Ray Tracing features are supported but rays intersect the coarse representation (fallback mesh) instead of the fully detailed Nanite mesh.
- Some visualization view modes do not yet support displaying Nanite meshes
Platforms قابل پشتیبانی توسط Nanite
در حال حاضر Nanite از PlayStation 5, Xbox Series S|X, and PC پشتیبانی میکند. در حقیقت کارت گرافیک شما در هر کدام از پلتفرم ها می بایست حداقل توانایی اجرای آخرین نسخه DirectX 12 را داشته باشد و حداقل از مشخصات زیر پشتیبانی کند :
- NVIDIA: Maxwell-generation cards or newer
- AMD: GCN-generation cards or newer
- All newer version of Windows 10 (newer than version 1909.1350) and Windows 11 with support for DirectX 12 Agility SDK are supported.
- Windows 10 version 1909 — The revision number should exceed or be equal to .1350.
- Windows 10 version 2004 and 20H2 — The revision number should exceed or be equal to .789.
- DirectX 12 (with Shader Model 6.6 atomics), or Vulkan (VK_KHR_shader_atomic_int64)
- Latest Graphics Drivers
کاربردهای Nanite
مثال های بسیار زیادی از کاربرد Nanite به صورت عملی وجود دارد به عنوان مثال Quixel Megascans که کتابخانه ای بسیار با کیفیت از Asset های سه بعدی و دوبعدی می باشد و در آنریل انجین بشدت از آن استفاده می شود، میتواند بهترین مثال برای کارکردهای این تکنولوژی باشد.
با استفاده از Nanite میتوانید تمامی دارایی های Quixel Megascans را به سادگی در پروژه های خود استفاده نمایید بدون اینکه نگرانی بابت چگونگی رندر شدن آن ها و افکت کیفیت و سرعت داشته باشید.
کتابخانه Quixel Megascans شامل وسایل، محیط، شخصت ها و موضوعات و تکسچرهای بسیار باکیفیتی است که قطعا برای اجرای هر پروژه ای شما را وسوسه میکند.
در مثالی دیگر میتوان به سیستم شبیه سازی فیزیکی Chaos Destruction اشاره کرد. که برای شبیه سازی افکت های تخریب واقع گرایانه در Unreal Engine مورداستفاده قرار میگیرد.
در این حالت Chaos Destruction به کمک Nanite میتواند جزییات تخریب و انفجار را به صورت عجیبی بالا برده و نتیجه کار بسیار واقع گرایانه و باورپذیرتر شود.
همه چیز درباره Nanite در آنریل انجین
Nanite در آنریل انجین یک تکنولوژی قدرتمند و یک پتانسیل بسیار عظیم و انقلابی در unreal Engine 5 است که به کاربران اجازه میدهد تجربه جدیدی از دنیای مجازی را بدون نیاز به سخت افزارهای قدرتمند در اختیار داشته باشند .
این قابلیت قطعا میتواند دنیای گیمینگ را متحول کند. تصور کنید میتوانید در یک محیط کاملا واقعی با جزییات بسیار بسیار بالا، حرکت کرده و بازی کنید. دیگر نیازی نیست برای رسیدن با بازده خروجی و افزایش سرعت رندرینگ، تعداد Polygon ها و جزییات مدلها را کاهش دهیم، بلکه میتوانیم هر آنچه را که نیاز داریم وارد صحنه کرده و استفاده کنیم .
Nanite در آنریل انجین 5، بر اساس تکنولوژی جدیدی به نام geometry caching استوار شده است. این تکنولوژی جدید، موتور رندرینگ اجازه پیدا میکند که ساختار مدلها را در حافظه ذخیره کرده و در هر زمانی که نیاز به پردازش آن بود از حافظه برای پردازش آن استفاده نماید.
در نتیجه سرعت اجرا، نمایش صحنه و رندرینگ نهایی بسیار افزایش پیدا میکند. اما همین موضوع ممکن است در برخی موارد باعث افزایش حجم حافظه نیز گردد.
Nanite در Unreal Engine محدود به موضوعات static نیست. شما میتوانید از این تکنولوژی برای پردازش و کار با dynamic object ها نیز مانند کاراکترهای بازی و ماشین ها و … استفاده نمایید.
در نتیجه تصور نکنید که از این تکنولوژی فقط برای مدلهای ثابت مثل درخت و سنگ و … میتوان استفاده کرد. دست شما برای استفاده تقریبا باز و بدون محدودیت است .
شاید شما فقط به بازی ها می پردازید، اما Nanite در آنریل انجین نه فقط برای Game ها، بلکه برای سینما و شبیه سازی و VFX نیز بسیار پرکاربرد است. مثلا در بخش in-Camera VFX میتوان گفت که Nanite یک موهبت بزرگ است. یا در شبیه سازی معماری و … که نیاز به جزییات بالا می باشد، دیگر محدودیتی نخواهید داشت.