Πίνακας περιεχομένων:

Επαυξημένη Πραγματικότητα Vuforia 7 Ground Plane Detection .: 8 Βήματα
Επαυξημένη Πραγματικότητα Vuforia 7 Ground Plane Detection .: 8 Βήματα

Βίντεο: Επαυξημένη Πραγματικότητα Vuforia 7 Ground Plane Detection .: 8 Βήματα

Βίντεο: Επαυξημένη Πραγματικότητα Vuforia 7 Ground Plane Detection .: 8 Βήματα
Βίντεο: Augmented reality Unity+Vuforia project_1 (Markers) 2024, Νοέμβριος
Anonim
Επαυξημένη Πραγματικότητα Ανίχνευση Επίγειου Αεροπλάνου Vuforia 7
Επαυξημένη Πραγματικότητα Ανίχνευση Επίγειου Αεροπλάνου Vuforia 7
Επαυξημένη Πραγματικότητα Ανίχνευση Επίγειου Αεροπλάνου Vuforia 7
Επαυξημένη Πραγματικότητα Ανίχνευση Επίγειου Αεροπλάνου Vuforia 7

Το SDK επαυξημένης πραγματικότητας της Vuforia για το 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 Augmented Reality και Android ή IOS ανάλογα με τη συσκευή που διαθέτετε.

Ανοίξτε την Unity και ξεκινήστε ένα νέο έργο Unity, ονομάστε το όπως θέλετε.

Αρχικά ας βγει η εφαρμογή που έχει ρυθμιστεί για να δημιουργηθεί, ώστε να μην ξεχνάμε. Έτσι, σώστε τη σκηνή και ονομάστε την "κύρια".

Μεταβείτε στο αρχείο, δημιουργήστε ρυθμίσεις και αλλάξτε την πλατφόρμα κατασκευής σας σε Android ή IOS. Μεταβείτε στις ρυθμίσεις XR στις ρυθμίσεις της συσκευής αναπαραγωγής και ελέγξτε το Vuforia Augmented Reality Supported.

Εάν χρησιμοποιείτε Android, δεν θα χρειαστεί να κάνετε τίποτα άλλο, αλλά στο IOS μεταβείτε σε άλλες ρυθμίσεις και φροντίστε να βάλετε κάτι για το αναγνωριστικό της δέσμης σας. Χρησιμοποιήστε τη μορφή "com. YourCompanyName. YourAppName."

Βάλτε οτιδήποτε για την περιγραφή χρήσης της κάμερας και αλλάξτε την ελάχιστη έκδοση στοχευμένης έκδοσης σε τουλάχιστον 9.0.

Κλείστε από αυτό και τώρα ας ρυθμίσουμε όλα τα άλλα.

Βήμα 2: Ας ρυθμίσουμε τη Vuforia

Ας στήσουμε τη Vuforia
Ας στήσουμε τη Vuforia

Τώρα ας τακτοποιήσουμε τα πάντα.

Μεταβείτε στο gameobject στο επάνω μενού και κάντε κλικ στο ARCamera. Τώρα διαγράψτε την κύρια κάμερα από τη σκηνή σας.

Επιλέξτε την ARCamera και στη δεξιά πλευρά του επιθεωρητή κάντε κλικ στο Άνοιγμα διαμόρφωσης Vuforia. Κάντε κλικ στη συλλογή συνόλων δεδομένων και καταργήστε την επιλογή όλων επειδή δεν χρησιμοποιούμε στόχους εικόνας εδώ.

Κάντε κλικ στο tracker συσκευής και κάντε κλικ στο track track πόζα. Αλλάξτε την παρακολούθηση από περιστροφική σε θέση.

Τώρα επιστρέψτε στην καρτέλα αντικειμένων παιχνιδιού και κάντε κλικ στο Vuforia, το Ground Plane και το Plane Finder. Αυτό φιλοξενεί τα σενάρια που βρίσκουν το επίπεδο του εδάφους μας.

Το τελευταίο πράγμα που χρειαζόμαστε είναι το στάδιο του επιπέδου εδάφους, οπότε μεταβείτε ξανά στο αντικείμενο παιχνιδιού στο επάνω μενού και κάντε κλικ στο Vuforia, Ground Plane και επιλέξτε Ground Plane Stage. Τώρα οτιδήποτε το κάνουμε αυτό θα εμφανιστεί στο AR.

Βήμα 3: Προσθέστε ένα νέο σενάριο

Προσθήκη νέου σεναρίου
Προσθήκη νέου σεναρίου
Προσθήκη νέου σεναρίου
Προσθήκη νέου σεναρίου

Η προεπιλεγμένη συμπεριφορά αυτής της ανίχνευσης επιπέδου γείωσης είναι να τοποθετείτε ένα νέο αντικείμενο κάθε φορά που πατάτε στην οθόνη. Αυτό που θέλουμε είναι να επανατοποθετούμε το αντικείμενο κάθε φορά που πατάτε στην οθόνη. Κάντε δεξί κλικ στο φάκελο περιουσιακών στοιχείων σας και δημιουργήστε ένα νέο σενάριο C#. Καλέστε το "DeployStageOnce" και αντικαταστήστε τα πάντα με αυτόν τον κωδικό:

χρήση συστήματος ·

χρησιμοποιώντας το UnityEngine. χρησιμοποιώντας Vuforia? δημόσια τάξη DeployStageOnce: MonoBehaviour {public GameObject AnchorStage; ιδιωτικό PositionalDeviceTracker _deviceTracker; ιδιωτικό GameObject _previousAnchor; δημόσιο κενό Έναρξη () {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 (_previousAnchor); } _previousAnchor = άγκυρα; }}

Για να βεβαιωθούμε ότι αυτό το σενάριο χρησιμοποιείται, πρέπει να καλέσουμε τη συνάρτηση OnInteractiveHitTest (), οπότε επιστρέψτε στην Unity και κάντε κλικ στο αντικείμενο του παιχνιδιού εύρεσης επιπέδου. Αλλάξτε τη λειτουργία από Αυτόματο σε Διαδραστικό. Σύρετε το σενάριο που μόλις φτιάξαμε στο αντικείμενο παιχνιδιού του αεροπλάνου. Καταργήστε το σενάριο ContentPositioningBehavior. Θα δείτε ένα σημείο για ένα αντικείμενο παιχνιδιού στο σενάριο DeployStageOnce, σύρετε το πρόγραμμα εύρεσης επιπέδου εκεί και βρείτε αυτό το σενάριο, επιλέξτε τη συνάρτηση OnInteractiveHitTest από την κορυφή της λίστας. Τώρα η λειτουργία μας καλείται κάθε φορά που ο χρήστης κάνει κλικ στην οθόνη!

Βήμα 4: Ας προσθέσουμε το αυτοκίνητο

Ας προσθέσουμε το αυτοκίνητο
Ας προσθέσουμε το αυτοκίνητο

Κατεβάστε αυτό το δωρεάν μοντέλο 3D αυτοκινήτου από εδώ (Βεβαιωθείτε ότι έχετε την έκδοση.obj):

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

Επίσης, κατεβάστε αυτόν τον ήχο γιατί θα τον παίξουμε όταν το αυτοκίνητο πέσει στο έδαφος:

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

Αποσυμπιέστε και τα δύο αυτά αρχεία και σύρετέ τα στο φάκελο περιουσιακών στοιχείων σας.

Κάντε κλικ στο αυτοκίνητο και κοιτάξτε δεξιά, αλλάξτε Χρήση ενσωματωμένων υλικών για χρήση εξωτερικών υλικών (παλαιού τύπου) από το αναπτυσσόμενο μενού στο επάνω μέρος. Τώρα θα μπορούμε να αλλάξουμε το χρώμα όλων των υλικών στο αυτοκίνητο.

Σύρετε το αυτοκίνητο στη σκηνή του αεροπλάνου σας κάνοντάς το παιδί. Αλλάξτε την κλίμακα σε 0,035 στα x, y και z.

Τώρα περάστε από κάθε ένα από τα αυτοκίνητα αντικείμενα παιδικού παιχνιδιού και αλλάξτε τα υλικά τους σε όποιο χρώμα θέλετε.

Προσθέστε ένα άκαμπτο εξάρτημα αμαξώματος στο ριζικό αντικείμενο του παιχνιδιού του αυτοκινήτου και προσθέστε επίσης ένα κουτί σύγκρουσης, κλιμακώστε το έτσι ώστε να καλύπτει ολόκληρο το αυτοκίνητο. Προσθέστε επίσης έναν επιταχυντή κουτιού στο στάδιο του επιπέδου εδάφους και κλιμακώστε τον έτσι ώστε να είναι μερικές φορές ευρύτερος από το στάδιο του επιπέδου εδάφους. Με αυτόν τον τρόπο μπορούμε να ρίξουμε το αυτοκίνητο από τον ουρανό και θα χτυπήσει στο έδαφος χρησιμοποιώντας την ενσωματωμένη μηχανή φυσικής της Unity.

Βήμα 5: Βάλτε το αυτοκίνητο στον ουρανό

Βάλτε το αυτοκίνητο στον ουρανό
Βάλτε το αυτοκίνητο στον ουρανό

Προσθέστε ένα στοιχείο πηγής ήχου στο βασικό αντικείμενο του παιχνιδιού του αυτοκινήτου, σύρετε τον ήχο του ατυχήματος του αυτοκινήτου στο σημείο ήχου του κλιπ.

Τώρα πρέπει να φτιάξουμε ένα σενάριο που θα βάζει το αυτοκίνητο στον αέρα όταν ο χρήστης πατάει στην οθόνη και μετά παίζει τον ήχο της συντριβής όταν το αυτοκίνητο πέσει στο έδαφος. Έτσι, κάντε δεξί κλικ στο φάκελο στοιχείων και δημιουργήστε ένα νέο σενάριο C# και ονομάστε το "CarController".

Αντικαταστήστε όλο τον κώδικα εκεί με αυτό:

χρησιμοποιώντας System. Collections;

χρησιμοποιώντας System. Collections. Generic; χρησιμοποιώντας το UnityEngine. δημόσια τάξη CarController: MonoBehaviour {private bool soundPlayed = false; // Η ενημέρωση καλείται μία φορά ανά πλαίσιο void 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 (). Play (); }}

Προσθέστε τη λειτουργία MoveCar στο συμβάν OnInteractiveHitTest όπως στην παραπάνω εικόνα. Τώρα θα κληθεί όταν ο χρήστης κάνει κλικ στην οθόνη.

Βήμα 6: Πόρτες Lambo

Πόρτες Lambo
Πόρτες Lambo

Έτσι, εάν επεκτείνετε το αντικείμενο του παιχνιδιού αυτοκινήτου και βρείτε τις πόρτες, θα παρατηρήσετε ότι και οι δύο πόρτες είναι ένα ενιαίο πλέγμα. Αν θέλουμε να ανοίξουμε τις πόρτες, η μόνη μας επιλογή θα είναι οι πόρτες Lambo που ανοίγουν κάθετα. Για να γίνει αυτό το έργο πρέπει πρώτα να αλλάξουμε το σημείο περιστροφής τους.

Φτιάξτε ένα κενό αντικείμενο παιχνιδιού που είναι παιδί του αυτοκινήτου. Σύρετε τις πόρτες και κάντε τις τέκνα αυτού του νέου αντικειμένου παιχνιδιού. Μετακινήστε το αντικείμενο του γονικού παιχνιδιού εκεί που πρέπει να βρίσκεται το σημείο περιστροφής, από τους μεντεσέδες της πόρτας. Τώρα μετακινήστε τις παιδικές πόρτες στη θέση τους. Τώρα, όταν περιστρέφουμε την πόρτα γονέα, το σημείο περιστροφής είναι στο σωστό μέρος.

Θα φτιάξουμε ένα σενάριο που ανοίγει τις πόρτες όταν πλησιάζετε στο αυτοκίνητο, αλλά πριν το κάνουμε αυτό χρειαζόμαστε έναν τρόπο για να "ενεργοποιήσουμε" το γεγονός. Προσθέστε ένα συγκρουστικό κουτιού στο αντικείμενο του γονικού παιχνιδιού της πόρτας σας και κλιμακώστε το έτσι ώστε να περνάει λίγο πάνω από το αυτοκίνητο και προς τις δύο κατευθύνσεις. Ελέγξτε το "isTrigger". Τώρα προσθέστε ένα συγκρουστικό κουτιού στην κύρια κάμερα και κλιμακώστε το κατάλληλα. Επίσης, ελέγξτε το "isTrigger". Προσθέστε ένα στοιχείο Rigid Body στην κάμερά σας και καταργήστε την επιλογή "useGravity". Με την κάμερα επιλεγμένη, αλλάξτε την ετικέτα της σε "MainCamera" στο επάνω μέρος του επιθεωρητή.

Προσθέστε ένα νέο σενάριο που ονομάζεται "LamboDoorBehavior" και προσθέστε τον παρακάτω κώδικα. Σύρετε το σενάριο στον γονέα της πόρτας σας.

χρησιμοποιώντας System. Collections;

χρησιμοποιώντας System. Collections. Generic; χρησιμοποιώντας το UnityEngine. δημόσια τάξη LamboDoorBehavior: MonoBehaviour {private float currAngle = 0; ιδιωτικό πλωτήρα επιθυμητόAngle = 0; // Η ενημέρωση καλείται μία φορά ανά πλαίσιο void 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 ("MainCamera")) {OpenDoors (); }} void OnTriggerExit (Collider col) {if (col. CompareTag ("MainCamera")) {CloseDoors (); }}}

Αυτό το σενάριο θα κάνει τις πόρτες σας να ανοίγουν αργά όταν τις κλείνετε στο AR χρησιμοποιώντας τη συνάρτηση Lerp () σε ενότητα η οποία παρεμβάλλεται μεταξύ δύο σημείων (ή σε αυτήν την περίπτωση δύο γωνιών).

Βήμα 7: Αναπαραγωγή βίντεο σε AR

Αναπαραγωγή βίντεο σε AR
Αναπαραγωγή βίντεο σε AR
Αναπαραγωγή βίντεο σε AR
Αναπαραγωγή βίντεο σε AR

Το τελευταίο πράγμα που πρέπει να κάνουμε είναι να κάνουμε αναπαραγωγή βίντεο σε AR.

Κάντε δεξί κλικ σε οποιοδήποτε αντικείμενο παιχνιδιού είναι παιδί του αυτοκινήτου σας και δημιουργήστε ένα τρισδιάστατο αντικείμενο, Quad. Αυτό θα βεβαιωθεί ότι το quad είναι παιδί του αυτοκινήτου σας. Τοποθετήστε και αλλάξτε το μέγεθος αυτού του τετραγώνου έτσι ώστε να ταιριάζει στο ταμπλό του αυτοκινήτου σας και να φαίνεται ότι υποτίθεται ότι ήταν εκεί. Αυτό είναι που θα παίξουμε το βίντεο.

Προσθέστε ένα στοιχείο αναπαραγωγής βίντεο στο τετράγωνό σας. Αλλάξτε την πηγή σε URL και βρείτε έναν σκληρό σύνδεσμο σε ένα αρχείο. MP4 ή σύρετε ένα αρχείο βίντεο στο φάκελο στοιχείων σας και, στη συνέχεια, σύρετε αυτό το κλιπ στην κενή υποδοχή. Εάν θέλετε να κάνετε ροή σε ένα βίντεο από μια διεύθυνση URL, το Instragram είναι μια εξαιρετική πηγή. Κάντε δεξί κλικ σε οποιοδήποτε βίντεο Instagram στο Google Chrome και κάντε κλικ στην επιλογή επιθεώρηση. Βρείτε το τμήμα που περιέχει το βίντεο και αντιγράψτε τον σύνδεσμο από εκεί (έχω αυτήν τη μέθοδο που απεικονίζεται παραπάνω).

Βεβαιωθείτε ότι έχετε ελέγξει το βρόχο εάν θέλετε να παίζει περισσότερες από μία φορές. Προσθέστε ένα στοιχείο πηγής ήχου σε αυτό το αντικείμενο παιχνιδιού και αλλάξτε την πηγή εξόδου σε πηγή ήχου στη συσκευή αναπαραγωγής βίντεο. Σύρετε την πηγή ήχου που δημιουργήσατε πρόσφατα σε αυτήν την υποδοχή.

Επιτέλους τελειώσαμε!

Βήμα 8: Βάλτε την εφαρμογή στο τηλέφωνό σας

Βάλτε την εφαρμογή στο τηλέφωνό σας!
Βάλτε την εφαρμογή στο τηλέφωνό σας!

Εάν χτίζετε για Android, μπορείτε απλώς να μεταβείτε στο αρχείο και να πατήσετε build and run με το τηλέφωνό σας συνδεδεμένο.

Αν δημιουργείτε iPhone ή iPad, φροντίστε να κάνετε λήψη του Xcode από το κατάστημα εφαρμογών. Επίσης, εγγραφείτε για έναν δωρεάν λογαριασμό προγραμματιστή μήλου από τη διεύθυνση www.apple.developer.com. Μεταβείτε στο αρχείο και πατήστε build. Ανοίξτε το αρχείο που δημιουργήθηκε από το Xcode και συνδέστε το τηλέφωνό σας. Επιλέξτε την ομάδα ανάπτυξης και πατήστε το κουμπί αναπαραγωγής.

Youσως χρειαστεί να μετακινήσετε λίγο την κάμερα, αλλά δώστε του ένα δευτερόλεπτο και αγγίξτε την οθόνη και θα δείτε το αυτοκίνητό σας να πέφτει από τον ουρανό στο έδαφος! Τώρα μπορείτε να περπατήσετε μέσα και να παρακολουθήσετε το βίντεό σας να παίζει στον πίνακα ελέγχου!

Διασκεδάστε και ενημερώστε με αν έχετε οποιεσδήποτε ερωτήσεις στα σχόλια!

Συνιστάται: