فهرست مطالب:

واقعیت افزوده Vuforia 7 تشخیص زمینی هواپیما .: 8 مرحله
واقعیت افزوده Vuforia 7 تشخیص زمینی هواپیما .: 8 مرحله

تصویری: واقعیت افزوده Vuforia 7 تشخیص زمینی هواپیما .: 8 مرحله

تصویری: واقعیت افزوده Vuforia 7 تشخیص زمینی هواپیما .: 8 مرحله
تصویری: Vuforia 7 - walking through a virtual house with Augmented Reality 2024, جولای
Anonim
تشخیص واقعیت افزوده Vuforia 7 زمینی
تشخیص واقعیت افزوده Vuforia 7 زمینی
تشخیص واقعیت افزوده Vuforia 7 زمینی
تشخیص واقعیت افزوده Vuforia 7 زمینی

SDK واقعیت افزوده Vuforia for Unity 3D از ARCore و ARKit برای تشخیص هواپیماهای زمینی در AR استفاده می کند. در آموزش امروز از ادغام بومی آنها در Unity برای ایجاد یک برنامه AR برای Android یا IOS استفاده می شود. ما خودرویی خواهیم داشت که از آسمان روی زمین می افتد و وقتی نزدیک می شویم درهای آن به طور خودکار باز می شود. ما همچنین به انجام ویدئو در AR می پردازیم. برای پیگیری نیاز به Unity 3D دارید که بر روی رایانه شما نصب شده است (رایگان است). این دستورالعمل ها برای مبتدیان است ، بنابراین ما همه چیز را با جزئیات مرور می کنیم!

بهترین بخش در مورد SLAM Vuforia میزان دستگاه های IOS و Android است که از آن پشتیبانی می کند. لیست کامل دستگاه ها را می توانید در اینجا پیدا کنید:

library.vuforia.com/articles/Solution/grou…

مرحله 1: شروع یک پروژه جدید

شروع یک پروژه جدید
شروع یک پروژه جدید

اگر هنوز آن را ندارید Unity 3D را از اینجا بارگیری کنید:

بسته به دستگاهی که دارید ، حتماً پشتیبانی از واقعیت افزوده Vuforia و Android یا IOS را نصب کنید.

یونیتی را باز کنید و یک پروژه جدید یونیتی شروع کنید ، آن را هرطور که می خواهید بنامید.

ابتدا اجازه دهید برنامه ای را برای ساختن خارج کنیم تا فراموش نکنیم. بنابراین ، صحنه را ذخیره کرده و آن را "اصلی" بنامید.

به فایل بروید ، تنظیمات را ایجاد کنید و پلت فرم ساخت خود را به Android یا IOS تغییر دهید. به تنظیمات XR در تنظیمات پخش کننده بروید و Vuforia واقعیت افزوده پشتیبانی شده را بررسی کنید.

اگر از Android استفاده می کنید ، مجبور نیستید کار دیگری انجام دهید ، اما در IOS به تنظیمات دیگر بروید و مطمئن شوید که چیزی برای شناسه بسته نرم افزاری خود وارد کرده اید. از قالب "com. YourCompanyName. YourAppName" استفاده کنید.

برای استفاده از دوربین هر چیزی را قرار دهید و حداقل نسخه مورد نظر را به حداقل 9.0 تغییر دهید.

کار را کنار بگذارید و حالا بیایید همه چیز را تنظیم کنیم.

مرحله 2: بیایید Vuforia را راه اندازی کنیم

بیایید Vuforia را راه اندازی کنیم
بیایید Vuforia را راه اندازی کنیم

حالا بیایید همه چیز را تنظیم کنیم.

در منوی بالا به gameobject بروید و روی ARCamera کلیک کنید. حالا دوربین اصلی را از صحنه خود حذف کنید.

ARCamera را انتخاب کنید و در سمت راست در بازرس بر روی Open Vuforia Configuration کلیک کنید. روی مجموعه مجموعه داده ها کلیک کنید و همه موارد را علامت بزنید زیرا ما از هیچ هدف تصویری در اینجا استفاده نمی کنیم.

روی دستگاه ردیاب کلیک کنید و روی دستگاه پیگیری کنید. ردیابی را از حالت چرخشی به موقعیتی تغییر دهید.

اکنون به برگه شی بازی بازگردید و روی Vuforia ، Ground Plane و Plane Finder کلیک کنید. اینجا اسکریپت هایی وجود دارد که سطح زمین ما را پیدا می کنند.

آخرین چیزی که به آن نیاز داریم مرحله هواپیمای زمینی است ، بنابراین دوباره در منوی بالا به game object بروید و روی Vuforia ، Ground Plane کلیک کنید و Ground Plane Stage را انتخاب کنید. اکنون هر چیزی که ما به آن توجه کنیم در AR نشان داده می شود.

مرحله 3: یک اسکریپت جدید اضافه کنید

یک اسکریپت جدید اضافه کنید
یک اسکریپت جدید اضافه کنید
یک اسکریپت جدید اضافه کنید
یک اسکریپت جدید اضافه کنید

رفتار پیش فرض این تشخیص سطح زمین این است که هر بار که روی صفحه فشار می دهید یک شی جدید قرار دهید. آنچه ما می خواهیم این است که هربار که روی صفحه فشار می دهید ، شیء را تغییر دهید. بنابراین در پوشه دارایی خود راست کلیک کرده و یک اسکریپت C# جدید ایجاد کنید. آن را "DeployStageOnce" صدا کنید و همه چیز را با این کد جایگزین کنید:

با استفاده از سیستم ؛

استفاده از UnityEngine ؛ استفاده از Vuforia ؛ کلاس عمومی DeployStageOnce: MonoBehaviour {public GameObject AnchorStage؛ خصوصی PositionalDeviceTracker _deviceTracker؛ خصوصی GameObject _previousAnchor؛ public void Start () {if (AnchorStage == null) {Debug. Log ("AnchorStage باید مشخص شود")؛ برگشت؛ } AnchorStage. SetActive (false) ؛ } public void Awake () {VuforiaARController. Instance. RegisterVuforiaStartedCallback (OnVuforiaStarted) ؛ } public void OnDestroy () {VuforiaARController. Instance. UnregisterVuforiaStartedCallback (OnVuforiaStarted) ؛ } private void OnVuforiaStarted () {_deviceTracker = TrackerManager. Instance. GetTracker ()؛ } public void OnInteractiveHitTest (نتیجه HitTestResult) {if (result == null || AnchorStage == null) {Debug. LogWarning ("تست ضربه زدن نامعتبر است یا AnchorStage تنظیم نشده است") ؛ برگشت؛ } var anchor = _deviceTracker. CreatePlaneAnchor (Guid. NewGuid (). ToString () ، نتیجه)) ؛ if (anchor! = null) {AnchorStage.transform.parent = anchor.transform؛ AnchorStage.transform.localPosition = Vector3.zero؛ AnchorStage.transform.localRotation = Quaternion.identity؛ AnchorStage. SetActive (درست) ؛ } if (_previousAnchor! = null) {Destroy (_prequestAnchor)؛ } _previousAnchor = لنگر ؛ }}

برای اطمینان از استفاده از این اسکریپت ، باید تابع () OnInteractiveHitTest را فراخوانی کنیم ، بنابراین به یونیتی برگردید و روی شی بازی بازی یاب کلیک کنید. حالت را از حالت اتوماتیک به تعاملی تغییر دهید. اسکریپتی را که به تازگی ساخته ایم روی شیء بازی هواپیمای یاب بکشید. اسکریپت ContentPositioningBehavior را حذف کنید. یک نقطه برای یک شیء بازی در اسکریپت DeployStageOnce مشاهده می کنید ، هواپیمای یاب را به آنجا بکشید و این اسکریپت را پیدا کنید ، تابع OnInteractiveHitTest را از بالای لیست انتخاب کنید. اکنون هرگاه کاربر روی صفحه کلیک کند ، عملکرد ما فراخوانی می شود!

مرحله 4: اجازه دهید ماشین را اضافه کنیم

بیایید ماشین را اضافه کنیم
بیایید ماشین را اضافه کنیم

این مدل سه بعدی ماشین رایگان را از اینجا بارگیری کنید (مطمئن شوید نسخه.obj را دریافت کنید):

www.turbosquid.com/3d-models/max-exterior-…

همچنین ، این صدا را بارگیری کنید زیرا وقتی ماشین به زمین برخورد می کند ، آن را پخش می کنیم:

freesound.org/people/PaulMorek/sounds/1967…

هر دو فایل را از حالت فشرده خارج کرده و آنها را به پوشه دارایی خود بکشید.

روی ماشین کلیک کرده و به سمت راست نگاه کنید ، از منوی کشویی در بالا ، استفاده از مواد جاسازی شده را برای استفاده از مواد خارجی (قدیمی) تغییر دهید. اکنون می توانیم رنگ تمام مواد روی خودرو را تغییر دهیم.

ماشین را به مرحله هواپیمای زمینی خود بکشید تا کودک شود. مقیاس را در x ، y و z به 035 تغییر دهید.

حالا از طریق هر یک از اشیاء بازی کودک اتومبیل ها را مرور کرده و مواد آنها را به هر رنگی که می خواهید تغییر دهید.

یک جزء بدنه سفت و محکم را به شی بازی اصلی ماشین اضافه کنید و همچنین یک برخورد کننده جعبه را اضافه کنید ، آن را طوری مقیاس کنید که کل ماشین را پوشش دهد. همچنین یک برخورد دهنده جعبه ای را به مرحله سطح زمین اضافه کنید و آن را مقیاس بندی کنید تا چند برابر گسترده تر از مرحله سطح زمین باشد. به این ترتیب ما می توانیم ماشین را از آسمان بیندازیم و با استفاده از موتور فیزیک ساخته شده توسط Unity به زمین برخورد می کند.

مرحله 5: ماشین را در آسمان قرار دهید

ماشین را در آسمان قرار دهید
ماشین را در آسمان قرار دهید

یک جزء منبع صوتی را به شیء اصلی بازی ماشین اضافه کنید ، صدای تصادف ماشین را به محل کلیپ صوتی آن بکشید.

حال باید اسکریپتی بسازیم که هنگام فشار دادن کاربر به صفحه ، خودرو را روی هوا قرار دهد و هنگام برخورد خودرو با زمین ، صدای تصادف را پخش کند. بنابراین ، روی پوشه دارایی ها راست کلیک کرده و یک اسکریپت C# جدید ایجاد کنید و آن را "CarController" بنامید.

تمام کدهای موجود را با این مورد جایگزین کنید:

با استفاده از System. Collections ؛

با استفاده از System. Collections. Generic؛ استفاده از UnityEngine ؛ کلاس عمومی CarController: MonoBehaviour {بول خصوصی soundPlayed = false؛ // به روز رسانی یک بار در هر فریم نامیده می شود Update () {if (! soundPlayed && transform.localPosition.y <.05f) {soundPlayed = true؛ StartCoroutine (DelayPlaySound ()) ؛ }} public void MoveCar () {transform.localPosition += new Vector3 (0 ، 10 ، 0) ؛ transform.eulerAngles += Vector3 جدید (5 ، 20 ، 5) ؛ soundPlayed = false؛ } IEnumerator DelayPlaySound () {yield return new WaitForSeconds (.2f)؛ GetComponent (). پخش ()؛ }}

مانند تصویر بالا عملکرد MoveCar را به رویداد OnInteractiveHitTest اضافه کنید. اکنون با کلیک کاربر روی صفحه تماس گرفته می شود.

مرحله 6: درب های لامبو

درب های لامبو
درب های لامبو

بنابراین اگر شی بازی ماشین را گسترش دهید و درها را بیابید ، متوجه خواهید شد که هر دو در یک مش هستند. اگر بخواهیم درها را باز کنیم ، تنها گزینه ما درهای Lambo است که به صورت عمودی باز می شوند. برای انجام این کار ابتدا باید نقطه محوری آنها را تغییر دهیم.

یک شیء بازی خالی که فرزند ماشین است بسازید. درها را بکشید و آنها را فرزند این شیء بازی جدید کنید. شیء بازی اصلی را با لولا درب به جایی که نقطه محوری باید باشد منتقل کنید. حالا درهای کودک را به جای خود برگردانید. در حال حاضر هنگامی که ما والدین درها را می چرخانیم ، نقطه محوری در مکان مناسب است.

ما قصد داریم اسکریپتی بسازیم که وقتی به ماشین نزدیک می شوید درها را باز می کند ، اما قبل از انجام این کار به راهی برای "راه اندازی" رویداد نیاز داریم. یک کلایدر جعبه را به شیء بازی اصلی درب خود اضافه کنید و آن را مقیاس بندی کنید تا در هر دو جهت کمی از ماشین عبور کند. "isTrigger" را علامت بزنید. حالا یک برخورد کننده جعبه را به دوربین اصلی اضافه کنید و آن را به طور مناسب مقیاس بندی کنید. همچنین "isTrigger" را بررسی کنید. یک جزء Rigid Body را به دوربین خود اضافه کنید و علامت "useGravity" را بردارید. با انتخاب دوربین ، برچسب آن را به "MainCamera" در بالای بازرس تغییر دهید.

یک اسکریپت جدید به نام "LamboDoorBehavior" اضافه کنید و کد زیر را اضافه کنید. اسکریپت را به والدین درب خانه خود بکشید.

با استفاده از System. Collections ؛

با استفاده از System. Collections. Generic؛ استفاده از UnityEngine ؛ کلاس عمومی LamboDoorBehavior: MonoBehaviour {private float currAngle = 0؛ شناور خصوصی სასურველიAngle = 0؛ // Update یک بار در هر فریم نامعتبر نامیده می شود Update () {currAngle = Mathf. LerpAngle (currAngle، სასურველიAngle، Time.deltaTime * 3f)؛ transform.localEulerAngles = جدید Vector3 (currAngle ، 0 ، 0) ؛ } public void OpenDoors () {wishAngle = 60f؛ } public void CloseDoors () {wishAngle = 0؛ } void OnTriggerEnter (Collider col) {if (col. CompareTag ("دوربین اصلی")) {OpenDoors ()؛ }} void OnTriggerExit (Collider col) {if (col. CompareTag ("MainCamera")) {CloseDoors ()؛ }}}

این اسکریپت باعث می شود درهای شما به آرامی باز شوند وقتی که آنها را در AR با استفاده از تابع Lerp () به صورت یکپارچه که بین دو نقطه (یا در این مورد دو زاویه) بین هم قرار می گیرد ، به آرامی باز کنید.

مرحله 7: پخش ویدئو در AR

پخش ویدئو در AR
پخش ویدئو در AR
پخش ویدئو در AR
پخش ویدئو در AR

آخرین کاری که باید انجام دهیم این است که ویدیو را در AR پخش کنیم.

روی هر شی بازی که فرزند ماشین شما است راست کلیک کرده و یک شی سه بعدی به نام Quad ایجاد کنید. با این کار مطمئن می شوید که چهارگانه فرزند ماشین شما است. این چهارگوش را طوری قرار دهید و تغییر اندازه دهید که داخل خط تیره خودرو شما قرار گیرد و به نظر برسد که قرار است آنجا باشد. این همان چیزی است که ما قصد داریم ویدیو را روی آن پخش کنیم.

یک جزء پخش کننده ویدیو را به چهارگانه خود اضافه کنید. منبع را به URL تغییر دهید و یک پیوند سخت به فایل. MP4 پیدا کنید یا یک فایل ویدیویی را به پوشه دارایی خود بکشید و سپس آن کلیپ را به شکاف خالی بکشید. اگر می خواهید ویدیویی را از URL پخش کنید ، Instragram یک منبع عالی است. روی هر ویدیوی اینستاگرام در Google Chrome راست کلیک کرده و بازرسی را کلیک کنید. بخش حاوی ویدئو را پیدا کرده و پیوند را از آنجا کپی کنید (من این روش را در تصویر بالا مشاهده می کنم).

اگر می خواهید حلقه بیش از یک بار پخش شود ، حلقه را بررسی کنید. یک جزء منبع صوتی به این شی بازی اضافه کنید و منبع خروجی را به منبع صوتی در پخش کننده ویدئو تغییر دهید. منبع صوتی تازه ایجاد شده خود را به آن شکاف بکشید.

بالاخره کارمان تمام شد!

مرحله 8: برنامه را روی تلفن خود قرار دهید

برنامه را روی تلفن خود قرار دهید!
برنامه را روی تلفن خود قرار دهید!

اگر برای اندروید می سازید ، فقط می توانید به فایل بروید و با نصب تلفن همراه خود ، گزینه build and run را بزنید.

اگر قصد دارید از iPhone یا iPad استفاده کنید ، مطمئن شوید Xcode را از فروشگاه برنامه بارگیری کنید. همچنین ، برای یک حساب توسعه دهنده رایگان سیب از www.apple.developer.com ثبت نام کنید. به فایل بروید و build را بزنید. فایلی را که از Xcode ایجاد شده باز کرده و تلفن خود را وصل کنید. تیم توسعه خود را انتخاب کرده و دکمه play را فشار دهید.

ممکن است مجبور شوید دوربین را کمی دور خود بچرخانید اما یک ثانیه آن را بگذارید و روی صفحه ضربه بزنید و باید ببینید ماشین شما از آسمان روی زمین افتاده است! اکنون می توانید به داخل بروید و پخش ویدیوی خود را در داشبورد تماشا کنید!

از آن لذت ببرید و اگر سوالی در نظرات دارید به من اطلاع دهید!

توصیه شده: