مقدمه
واقعیت افزوده یا AR یکی از جذابترین تکنولوژیهایی است که میتواند دنیای واقعی را با محتوای دیجیتال ترکیب کند. تصور کنید کاربر دوربین موبایل خود را روی یک میز بگیرد و یک مدل سهبعدی، کاراکتر بازی، محصول فروشگاهی یا حتی یک راهنمای آموزشی دقیقاً روی همان سطح ظاهر شود. این همان چیزی است که با ساخت محتوای واقعیت افزوده در یونیتی میتوان انجام داد.
Unity یکی از بهترین گزینهها برای توسعه تجربههای AR است، چون هم برای بازیسازی مناسب است و هم ابزارهای قدرتمندی برای ساخت اپلیکیشنهای تعاملی موبایل دارد. با استفاده از AR Foundation میتوان یک پروژه واقعیت افزوده ساخت که قابلیت اجرا روی اندروید و iOS را داشته باشد. البته برای اندروید معمولاً از ARCore و برای iOS از ARKit استفاده میشود.
در این مقاله یاد میگیریم چطور در یونیتی محتوای واقعیت افزوده بسازیم، چه پکیجهایی نیاز داریم، چطور صحنه AR را آماده کنیم، چگونه سطح واقعی را تشخیص دهیم و در نهایت یک مدل سهبعدی را با لمس صفحه در محیط واقعی قرار دهیم. هدف این مقاله این است که مسیر ساخت یک پروژه AR را ساده، عملی و قابل اجرا توضیح دهد؛ نه فقط یک توضیح تئوری و کلی.
چطور در یونیتی محتوای واقعیت افزوده بسازیم؟
برای ساخت محتوای واقعیت افزوده در یونیتی، باید چند مرحله اصلی را انجام دهید: آمادهسازی پروژه، نصب پکیجهای AR، تنظیمات پلتفرم، ساخت صحنه، تشخیص سطح، قرار دادن آبجکت و در نهایت خروجی گرفتن برای موبایل. اگر این مراحل را درست انجام دهید، میتوانید یک نمونه اولیه AR بسازید که روی گوشی واقعی اجرا شود.
واقعیت افزوده در یونیتی چیست؟
واقعیت افزوده در یونیتی یعنی نمایش محتوای دیجیتال مثل مدل سهبعدی، افکت، انیمیشن، متن، رابط کاربری یا آبجکت تعاملی روی تصویر واقعی دوربین موبایل. در این حالت کاربر همچنان محیط واقعی را میبیند، اما یونیتی محتوای مجازی را به شکل هماهنگ روی آن قرار میدهد.
برای مثال در یک بازی AR، کاربر میتواند کاراکتر بازی را روی زمین اتاق خود ببیند. در یک اپلیکیشن فروشگاهی، کاربر میتواند قبل از خرید، یک مبل سهبعدی را در اتاق خود تست کند. در آموزش، میتوان یک مدل سهبعدی از قلب، موتور خودرو یا ساختمان را روی میز نمایش داد.
چرا Unity برای ساخت AR انتخاب خوبی است؟
Unity برای ساخت AR چند مزیت مهم دارد. اول اینکه محیط آن برای طراحی صحنه، مدیریت مدلهای سهبعدی، متریال، نورپردازی و انیمیشن بسیار مناسب است. دوم اینکه با C# میتوان منطق تعاملی پروژه را بهصورت تمیز پیادهسازی کرد. سوم اینکه Unity از ابزارهایی مثل AR Foundation پشتیبانی میکند و همین موضوع باعث میشود بتوانید پروژه را برای اندروید و iOS توسعه دهید.
اگر قبلاً با یونیتی کار کرده باشید، ورود به دنیای AR برای شما سخت نیست. بسیاری از مفاهیم مانند GameObject، Prefab، Scene، Component، Script و Build Settings همان چیزهایی هستند که در پروژههای معمولی یونیتی هم استفاده میشوند.
ابزارهای مورد نیاز برای ساخت AR در Unity
برای شروع ساخت محتوای واقعیت افزوده در یونیتی، به این موارد نیاز دارید:
- Unity Hub و نسخه مناسب Unity
- یک پروژه 3D یا URP
- پکیج AR Foundation
- پکیج ARCore XR Plugin برای اندروید
- پکیج ARKit XR Plugin برای iOS
- گوشی واقعی با پشتیبانی از AR
- کابل USB برای تست روی موبایل
- مدل سهبعدی یا Prefab برای نمایش در محیط واقعی
برای شروع، پیشنهاد میشود ابتدا روی اندروید تست کنید، چون خروجی گرفتن و تست مستقیم معمولاً سادهتر است. اگر قصد خروجی iOS دارید، به سیستم مک و Xcode هم نیاز خواهید داشت.
نصب AR Foundation در یونیتی
برای نصب AR Foundation، از مسیر زیر وارد Package Manager شوید:
Window > Package Manager
سپس از بخش Unity Registry عبارت AR Foundation را جستوجو و نصب کنید. بعد از نصب AR Foundation، باید پلاگین مخصوص پلتفرم هدف را هم نصب کنید. اگر میخواهید خروجی اندروید بگیرید، ARCore XR Plugin را نصب کنید. اگر هدف شما iOS است، ARKit XR Plugin را نصب کنید.
نکته مهم این است که نسخه پکیجها با نسخه Unity و AR Foundation هماهنگ باشد. بهتر است از نسخههای پیشنهادی و پایدار استفاده کنید تا در زمان Build با خطاهای ناسازگاری مواجه نشوید.
فعالسازی XR Plug-in Management
بعد از نصب پکیجها، باید XR Plug-in Management را فعال کنید. برای این کار وارد مسیر زیر شوید:
Edit > Project Settings > XR Plug-in Management
اگر برای اندروید خروجی میگیرید، در تب Android گزینه ARCore را فعال کنید. اگر برای iOS خروجی میگیرید، در تب iOS گزینه ARKit را فعال کنید.
این مرحله بسیار مهم است، چون اگر پلاگین پلتفرم فعال نباشد، حتی اگر AR Foundation را نصب کرده باشید، پروژه AR روی موبایل بهدرستی اجرا نمیشود.
ساخت صحنه پایه برای پروژه AR
برای یک صحنه ساده AR معمولاً به چند آبجکت اصلی نیاز داریم:
AR Session
AR Session وظیفه مدیریت چرخه اجرای تجربه واقعیت افزوده را بر عهده دارد. این آبجکت وضعیت Tracking، شروع و توقف Session و ارتباط کلی با سیستم AR دستگاه را مدیریت میکند.
XR Origin یا AR Session Origin
این آبجکت نقطه اتصال دنیای واقعی و دنیای یونیتی است. دوربین AR داخل این ساختار قرار میگیرد و موقعیت آبجکتهای مجازی نسبت به محیط واقعی محاسبه میشود.
AR Camera
دوربین AR همان دوربینی است که تصویر واقعی موبایل را دریافت میکند و محتوای دیجیتال را روی آن نمایش میدهد. در پروژه AR معمولاً دوربین پیشفرض یونیتی حذف میشود و از AR Camera استفاده میکنیم.
تشخیص سطح در واقعیت افزوده
یکی از مهمترین قابلیتهای AR، تشخیص سطح یا Plane Detection است. با این قابلیت، اپلیکیشن میتواند سطوحی مثل زمین، میز یا دیوار را شناسایی کند. برای این کار باید از کامپوننت AR Plane Manager استفاده کنید.
AR Plane Manager معمولاً روی XR Origin قرار میگیرد و وظیفه دارد سطوح قابل تشخیص را پیدا کند. برای نمایش بهتر سطحها میتوانید یک Prefab ساده به آن بدهید تا کاربر متوجه شود که دستگاه کجا را بهعنوان سطح قابل استفاده تشخیص داده است.
در پروژههای واقعی بهتر است نمایش سطح را بعد از قرار دادن آبجکت خاموش کنید تا تجربه کاربری تمیزتر شود. برای مثال وقتی کاربر مدل سهبعدی را روی زمین قرار داد، دیگر نیازی نیست خطوط تشخیص سطح همیشه نمایش داده شوند.
قرار دادن مدل سهبعدی با لمس صفحه
بعد از تشخیص سطح، مرحله بعدی این است که کاربر با لمس صفحه بتواند یک آبجکت را در محیط واقعی قرار دهد. برای این کار معمولاً از AR Raycast Manager استفاده میشود.
فرآیند کلی به این شکل است:
- کاربر صفحه موبایل را لمس میکند.
- از نقطه لمسشده یک Raycast به سمت محیط واقعی ارسال میشود.
- اگر Raycast با یک سطح شناساییشده برخورد کند، محل برخورد مشخص میشود.
- مدل سهبعدی در همان نقطه ساخته یا منتقل میشود.
یک نمونه ساده از منطق کار به شکل زیر است:
using UnityEngine;
using UnityEngine.XR.ARFoundation;
using UnityEngine.XR.ARSubsystems;
using System.Collections.Generic;
public class ARPlaceObject : MonoBehaviour
{
public GameObject objectToPlace;
public ARRaycastManager raycastManager;
private GameObject spawnedObject;
private List<ARRaycastHit> hits = new List<ARRaycastHit>();
void Update()
{
if (Input.touchCount == 0)
return;
Touch touch = Input.GetTouch(0);
if (touch.phase != TouchPhase.Began)
return;
if (raycastManager.Raycast(touch.position, hits, TrackableType.PlaneWithinPolygon))
{
Pose hitPose = hits[0].pose;
if (spawnedObject == null)
{
spawnedObject = Instantiate(objectToPlace, hitPose.position, hitPose.rotation);
}
else
{
spawnedObject.transform.position = hitPose.position;
spawnedObject.transform.rotation = hitPose.rotation;
}
}
}
}این اسکریپت باعث میشود کاربر با لمس صفحه، آبجکت سهبعدی را روی سطح واقعی قرار دهد. اگر آبجکت قبلاً ساخته شده باشد، با لمس جدید فقط موقعیت آن تغییر میکند.
آمادهسازی مدل سهبعدی برای AR
در پروژههای واقعیت افزوده باید به حجم و کیفیت مدل سهبعدی توجه زیادی داشته باشید. مدلهای خیلی سنگین میتوانند باعث افت فریم، داغ شدن گوشی و تجربه کاربری ضعیف شوند.
برای بهینهسازی مدلها بهتر است این نکات را رعایت کنید:
- تعداد Polygon مدل را کنترل کنید.
- از Textureهای بسیار بزرگ استفاده نکنید.
- متریالها را ساده نگه دارید.
- انیمیشنهای غیرضروری را حذف کنید.
- مدل را در اندازه واقعی تنظیم کنید.
- Pivot مدل را درست قرار دهید.
- از Prefab تمیز و قابل مدیریت استفاده کنید.
اگر هدف شما نمایش محصول در AR است، مقیاس مدل اهمیت زیادی دارد. مثلاً اگر یک صندلی سهبعدی میسازید، اندازه آن باید به اندازه واقعی نزدیک باشد تا کاربر حس درستی از محصول بگیرد.
نورپردازی و حس واقعیتر در AR
یکی از دلایل مصنوعی دیده شدن بعضی پروژههای AR، نورپردازی ضعیف است. برای بهتر شدن نتیجه، میتوانید از Light Estimation استفاده کنید تا نور آبجکت مجازی با نور محیط واقعی هماهنگتر شود.
همچنین بهتر است از سایههای ساده، متریالهای طبیعی و رنگهای منطقی استفاده کنید. در AR هدف این نیست که آبجکت فقط دیده شود؛ هدف این است که کاربر احساس کند آن آبجکت واقعاً در محیط قرار گرفته است.
طراحی تعامل در محتوای واقعیت افزوده
ساخت محتوای AR فقط به نمایش یک مدل سهبعدی محدود نمیشود. برای جذابتر شدن تجربه، باید تعامل اضافه کنید. برای مثال:
- چرخاندن مدل با کشیدن انگشت
- بزرگ و کوچک کردن مدل با Pinch
- نمایش اطلاعات با لمس آبجکت
- اجرای انیمیشن با کلیک
- تغییر رنگ یا متریال محصول
- گرفتن اسکرینشات از صحنه AR
- ذخیره موقعیت آبجکتها
این تعاملات باعث میشوند اپلیکیشن AR از یک نمایش ساده به یک تجربه واقعی و کاربردی تبدیل شود.
تنظیمات خروجی اندروید برای پروژه AR
برای خروجی گرفتن از پروژه AR روی اندروید، وارد Build Settings شوید و Android را انتخاب کنید. سپس در Player Settings چند مورد مهم را بررسی کنید:
- فعال بودن ARCore در XR Plug-in Management
- تنظیم Minimum API Level مناسب
- فعال بودن دسترسی Camera
- انتخاب معماری مناسب مثل ARM64
- استفاده از IL2CPP در صورت نیاز
- تست روی دستگاه واقعی
بسیاری از خطاهای رایج پروژههای AR به دلیل تنظیم نبودن Build Settings یا نصب نبودن ماژول Android Build Support در Unity ایجاد میشوند.
اشتباهات رایج در ساخت AR با یونیتی
در زمان ساخت محتوای واقعیت افزوده در یونیتی، چند اشتباه بسیار رایج وجود دارد:
تست فقط داخل Editor
بعضی قابلیتهای AR داخل Editor مثل موبایل واقعی عمل نمیکنند. بهتر است پروژه را حتماً روی گوشی تست کنید.
استفاده از مدلهای سنگین
مدلهای سنگین برای موبایل مناسب نیستند. در AR عملکرد روان بسیار مهمتر از جزئیات بیش از حد است.
نادیده گرفتن نور محیط
اگر نور آبجکت با محیط هماهنگ نباشد، نتیجه نهایی مصنوعی دیده میشود.
نداشتن راهنمای کاربر
کاربر باید بداند باید گوشی را حرکت دهد، سطح را اسکن کند و کجا لمس کند. یک UI ساده میتواند تجربه را بسیار بهتر کند.
تنظیم نبودن پکیجها
اگر AR Foundation، ARCore یا ARKit بهدرستی نصب و فعال نشده باشند، پروژه در زمان اجرا یا Build دچار مشکل میشود.
ایدههایی برای ساخت محتوای واقعیت افزوده در Unity
اگر میخواهید پروژه AR تمرینی یا تجاری بسازید، این ایدهها میتوانند شروع خوبی باشند:
- نمایش سهبعدی محصولات فروشگاهی
- اپلیکیشن تست مبلمان در خانه
- بازی AR با کاراکترهای تعاملی
- آموزش آناتومی بدن با مدل سهبعدی
- راهنمای تعمیرات با نمایش مرحلهبهمرحله
- کارت ویزیت واقعیت افزوده
- منوی رستوران AR
- نمایش معماری و ماکت ساختمان
- بازی کودکانه با حیوانات سهبعدی
- اپلیکیشن آموزشی برای مدارس
بهترین پروژه AR پروژهای است که فقط جذاب نباشد، بلکه یک مشکل واقعی را هم حل کند.
نتیجهگیری
ساخت محتوای واقعیت افزوده در یونیتی یکی از بهترین مسیرها برای ورود به دنیای AR است. با استفاده از AR Foundation میتوانید پروژهای بسازید که قابلیت اجرا روی موبایل را داشته باشد و با ابزارهایی مثل AR Plane Manager و AR Raycast Manager، سطح واقعی را تشخیص دهید و مدل سهبعدی را در محیط قرار دهید.
برای شروع لازم نیست پروژه پیچیدهای بسازید. یک صحنه ساده با تشخیص سطح، لمس صفحه و نمایش یک مدل سهبعدی میتواند اولین نمونه کامل شما باشد. بعد از آن میتوانید تعامل، انیمیشن، نورپردازی، UI و قابلیتهای پیشرفتهتر را اضافه کنید.
اگر هدف شما ساخت اپلیکیشن تجاری، بازی موبایل یا نمونهکار حرفهای است، یادگیری AR در Unity میتواند یک مهارت بسیار ارزشمند باشد. مهمترین نکته این است که پروژه را از همان ابتدا روی دستگاه واقعی تست کنید و به عملکرد، حجم مدلها و تجربه کاربری توجه داشته باشید.