portaldacalheta.pt
  • Κύριος
  • Σχεδιασμός Ux
  • Κερδοφορία & Αποδοτικότητα
  • Κύκλος Ζωής Προϊόντος
  • Ευκίνητος
Κινητό

Επίδειξη ARKit: Δημιουργία ταινιών επαυξημένης πραγματικότητας



Οι AR και VR γίνονται mainstream, και όλες οι κορυφαίες μεγάλες εταιρείες υψηλής τεχνολογίας τις ακολουθούν: η Apple διαθέτει ARKit, η Google έχει ARCore και η Microsoft έχει το δικό τους HoloLens (και, φυσικά, υπάρχει η Unity). Και με λίγες αιτήσεις που λαμβάνουν πολλή προσοχή του κοινού, Ανάπτυξη εφαρμογών επαυξημένης πραγματικότητας γίνεται μια πολύ επιθυμητή ικανότητα για προγραμματιστές κινητής τηλεφωνίας.

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



Εισαγωγή στο ARKit

ARKit είναι ένα πλαίσιο της Apple για τη δημιουργία εφαρμογών AR για συσκευές iOS. Μπορούν να χρησιμοποιηθούν αρκετές συσκευές απόδοσης: SpriteKit για 2D αντικείμενα, SceneKit για 3D και Μέταλλο αν θέλουμε να εφαρμόσουμε μια προσαρμοσμένη απόδοση.



γωνιακό 2 mvc 5 παράδειγμα

Για αυτήν την επίδειξη, θα χρησιμοποιούμε το SceneKit για την απόδοση και την τοποθέτηση τρισδιάστατων αντικειμένων (μαχαίρια).



εικόνα: διάκριση μεταξύ renderer

Από το ARKit v2, υποστηρίζονται πέντε τύποι διαμόρφωσης στο ARKit:



AROrientationTrackingConfiguration - Όταν θέλετε να παρακολουθείτε μόνο τον προσανατολισμό της συσκευής (π.χ. για μια εφαρμογή αστερισμού). Με αυτήν τη διαμόρφωση, οι φυσικές κινήσεις όπως το πλευρικό σκαλοπάτι δεν παρακολουθούνται και δεν θα επηρεάσουν τη θέση ή την κατεύθυνση των αντικειμένων στη σκηνή.

ARWorldTrackingConfiguration - Αυτή είναι ίσως η πιο συχνά χρησιμοποιούμενη διαμόρφωση για το AR, καθώς υποστηρίζει αυτό που οι περισσότεροι άνθρωποι θα θεωρούσαν επαυξημένη πραγματικότητα. Παραδείγματα περιλαμβάνουν εικονικές εφαρμογές για κυνήγι κατοικίδιων ζώων ή Pokémon.



ARFaceTrackingConfiguration - Αυτή η διαμόρφωση υποστηρίζεται προς το παρόν μόνο από το iPhone X, επειδή απαιτεί κάμερα TrueDepth (όπως το Face ID). Αυτή η διαμόρφωση παρακολουθεί τις δυνατότητες στο πρόσωπο και τη σχετική αντιστάθμισή της από την ουδέτερη έκφραση του προσώπου (π.χ., μια εφαρμογή όπου οι χρήστες μπορούν να δοκιμάσουν γυαλιά ηλίου μόδας πριν το παραγγείλουν).

ARImageTrackingConfiguration - Εάν έχετε ένα σύνολο δεικτών και θέλετε να δείξετε τα ζώα να πηδούν έξω από το δείκτη, τότε αυτή η διαμόρφωση είναι κατάλληλη για εσάς. Αυτά δεν πρέπει να είναι δείκτες που μοιάζουν με κάρτα, αλλά οποιαδήποτε δισδιάστατη εικόνα. Θα μπορούσες να δείξεις τη φωτογραφική σου μηχανή στη Μόνα Λίζα και θα γύριζε το κεφάλι της και θα σου έλεγε κάτι. Ένα μειονέκτημα είναι ότι πρέπει να πείτε εκ των προτέρων ποιο είναι το φυσικό μέγεθος του δείκτη εικόνας.



ARObjectScanningConfiguration - Αυτή η διαμόρφωση είναι η τρισδιάστατη έκδοση του ARImageTrackingConfiguration.

Σε αυτό το demo, θα προσθέσουμε μαχαίρια και σφαίρες στη σκηνή και θα θέλαμε να έχουμε έξι βαθμούς ελευθερίας, οπότε το κατάλληλο εργαλείο είναι το ARWorldTrackingConfiguration.



Η έννοια της εφαρμογής

Όλοι όσοι έχουν δει το The Matrix μπορούν να θυμηθούν τους Neo (Keanu Reeves) να αποφεύγουν τις σφαίρες και να τις σταματούν στον αέρα. Η εφαρμογή μας θα μας βοηθήσει να αναδημιουργήσουμε αυτήν τη σκηνή από μια ζωντανή ροή κάμερας. Έτσι, μπορούμε να δημιουργήσουμε προσαρμοσμένα βίντεο που δείχνουν Neo-like δυνάμεις.

android αποστολή αναφοράς σφαλμάτων στον προγραμματιστή

Η εφαρμογή μας θα έχει τρισδιάστατα μοντέλα από σφαίρες και μαχαίρια. Εξαρτάται από τον χρήστη πόσες σφαίρες ή μαχαίρια θέλουν στην ταινία τους. Εάν θέλετε να αφιερώσετε λίγο χρόνο και να προσθέσετε άλλα μοντέλα, ο κώδικας της εφαρμογής είναι ανοιχτού κώδικα και είναι διαθέσιμος στο GitHub ( https://github.com/altaibayar/toptal_ar_video_maker ). Αν και δεν πρόκειται για πλήρες σεμινάριο AR, η επίδειξη και η πηγή θα πρέπει να αποτελούν πολύτιμο πόρο εάν προσπαθείτε να μπείτε στην ανάπτυξη εφαρμογών AR σε iOS.



Το σενάριο της προβλεπόμενης περίπτωσης χρήσης έχει ως εξής:

  1. να έχεις έναν φίλο ντύσιμο ως Neo (Δεν είναι απολύτως απαραίτητο για τη λειτουργία της εφαρμογής, αλλά μπορεί επίσης να φαίνεται καλός ενώ το κάνουμε αυτό).
  2. Ζητήστε από το 'Neo' να απέχει περίπου 10 μέτρα από εσάς.
  3. Ξεκινήστε την εφαρμογή και σαρώστε το επίπεδο γείωσης.
  4. Προσθέστε σφαίρες και μαχαίρια που πετούν στο 'Neo'.
  5. Κρατήστε πατημένο το κουμπί εγγραφής για να εγγράψετε το βίντεο ενώ το 'Neo' εκτελεί μερικές κουλ κινήσεις που αποφεύγουν ή σταματούν τις σφαίρες
  6. αφήστε το κουμπί εγγραφής και αποθηκεύστε το βίντεο στη βιβλιοθήκη σας.

Δημιουργία της εφαρμογής

Όπως αναφέρθηκε προηγουμένως, θέλουμε να είμαστε σε θέση να κινούμαστε ελεύθερα ενώ καταγράφουμε και τις 360º της σκηνής και να έχουμε τις σφαίρες και τα μαχαίρια να παρακολουθούν την κίνηση της κάμερας κατάλληλα.

Για σκοπούς επίδειξης, θα έχουμε μόνο δύο τύπους εικονικών αντικειμένων: μαχαίρια και κουκκίδες.

Τα μαχαίρια είναι λεπτομερή αντικείμενα και θα χρησιμοποιώ το δωρεάν μοντέλο από https://poly.google.com/view/3TnnfzKfHrq (Ευχαριστώ Andrew).

Οι σφαίρες κυνηγετικών όπλων, ωστόσο, είναι απλά σφαιρικά αντικείμενα και μπορούμε απλά να τα κωδικοποιήσουμε. Θα τα κάνουμε μεταλλικά και κόκκινα για ποικιλία. Επειδή μιμούμαστε ένα κυνηγετικό όπλο, θα τα δημιουργήσουμε και ως ομαδοποιημένα σμήνη. Για να γίνει κατανοητό το clustering χωρίς υπερβολική ταλαιπωρία, μπορούμε να χρησιμοποιήσουμε τη γεννήτρια τυχαίων αριθμών Gauss από το GamplayKit.

Το GameplayKit είναι ένα χρήσιμο εργαλείο που είναι χρήσιμο κάθε φορά που χρειάζεστε τυχαία παραγωγή θορύβου, μηχάνημα κατάστασης, AI ή λήψη αποφάσεων βάσει πιθανότητας.

override init() { super.init(); // generate 50 gaussian distributed position around [0, 0, 0] let positions = Randomness.gaussian(center: SCNVector3Zero, count: 50); for pos in positions { let node = SCNNode(geometry: sphereGeometry()); node.position = pos; self.addChildNode(node); } } private func sphereGeometry() -> SCNGeometry { // radius of one projectile sphere is 5mm/0.2inch let sphere = SCNSphere(radius: 0.005); // sphere is reddish sphere.firstMaterial?.diffuse.contents = UIColor.red; // reflection on light is gray/silver sphere.firstMaterial?.reflective.contents = UIColor.gray; // metalness is 0.3 sphere.firstMaterial?.metalness.contents = 0.3; // shading should be realistic sphere.firstMaterial?.lightingModel = .physicallyBased; return sphere; }

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

Αρχιτεκτονική εφαρμογών

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

s corporation vs c corporation vs partnership

Αντ 'αυτού, απλώς θα παρουσιάσω τη δομή του έργου ως οδηγό για να βρείτε το δρόμο σας γύρω από το συνδεδεμένο έργο GitHub: ποια είναι τα κύρια στοιχεία, πώς συνδέονται και γιατί επιλέχθηκαν.

Η εφαρμογή έχει μόνο τρεις οθόνες:

PermissionViewController - Η οθόνη όπου ζητάμε από τον χρήστη να παραχωρήσει στην εφαρμογή πρόσβαση στις απαιτούμενες δυνατότητες για κινητά.

  • ΦΩΤΟΓΡΑΦΙΚΗ ΜΗΧΑΝΗ - Προφανώς
  • Εκθεσιακός χώρος - Για να αποθηκεύσετε εγγραφή βίντεο και εισόδου μικροφώνου
  • Μικρόφωνο - Απαιτείται άδεια από μια βιβλιοθήκη που χρησιμοποιώ για τη δημιουργία του βίντεο (από προεπιλογή, ο ήχος από το μικρόφωνο θα χρησιμοποιείται ως πηγή ενός κομματιού ήχου).

ExportViewController - Αυτή η οθόνη εμφανίζει ένα εγγεγραμμένο βίντεο και προσφέρει τις επιλογές για κοινή χρήση ή αποθήκευση του βίντεο.

MainViewController - Όλη η μαγεία συμβαίνει εδώ.

Από την εμπειρία μου, είναι καλύτερο να ολοκληρώσετε όλα τα απαραίτητα μαθήματα ARKit όπως το ARSession, το ARConfiguration και όλους τους μοναδικούς τύπους SCNNode. Με αυτόν τον τρόπο, ο κωδικός είναι αυτονόητος.

Το ARSession κληρονομείται στο ApeeScapeARSession και η νέα κλάση συνεδρίας έχει μόνο τρεις μεθόδους: τον κατασκευαστή κλάσης όπου ρυθμίζουμε ό, τι απαιτείται και τις μεθόδους resetTracking και pauseTracking.

Η εφαρμογή αναγνωρίζει τέσσερις μοναδικούς τύπους SCNNodes:

  • Κόμβος μαχαιριού - Αντιπροσωπεύει ένα αντικείμενο 3D μαχαιριού και φορτώνει αυτόματα ένα 3D μαχαίρι ως τη γεωμετρία του.
  • BulletsNode - Αυτός ο κόμβος αντιπροσωπεύει ένα σύνολο κελυφών κυνηγετικών όπλων. Ο τυχαίος θόρυβος Gauss, τα χρώματα και η φυσική λειτουργία φωτισμού ρυθμίζονται αυτόματα.

    Δεν απαιτείται ειδική ή πρόσθετη εργασία στις τάξεις που χρησιμοποιούν KnifeNode ή BulletsNode και μπορούν να χρησιμοποιηθούν ως πρότυπα για την προσαρμογή της εφαρμογής για την προσθήκη περισσότερων ειδών τρισδιάστατων αντικειμένων.

  • ReticleNode - Περιτυλίγει ένα μοντέλο 3D που εμφανίζεται στη σκηνή πάνω από το πάτωμα για να δείξει πού θα προστεθούν μαχαίρια ή σφαίρες.
  • DirectionalLightNode - Αυτός είναι ένας κόμβος που αντιπροσωπεύει ένα κατακόρυφο φως που δείχνει προς τα κάτω.

Αναφορές και πιστώσεις

Μοντέλο μαχαιριού: https://poly.google.com/view/3TnnfzKfHrq

Εγγραφή από το SCNScene: https://github.com/svtek/SceneKitVideoRecorder

Εικονίδια κουμπιών, εφαρμογή επίδειξης ARKit: https://developer.apple.com/documentation/arkit/handling_3d_interaction_and_ui_controls_in_augmented_reality

Κατανόηση των βασικών

Τι είναι το ARKit;

Το ARKit είναι ένα πλαίσιο της Apple για τη δημιουργία εφαρμογών επαυξημένης πραγματικότητας για συσκευές iOS.

μονάδες δοκιμών σε java

Τι είναι το SceneKit;

Το SceneKit είναι ένα πλαίσιο για την ανάπτυξη τρισδιάστατων γραφικών σε περιβάλλον Apple. Χρησιμεύει ως μια αφηρημένη διεπαφή προς API χαμηλότερου επιπέδου, όπως απόδοσης.

Ανώτερος συνεργάτης πελάτη, υγειονομική περίθαλψη και βιοεπιστήμες

Αλλα

Ανώτερος συνεργάτης πελάτη, υγειονομική περίθαλψη και βιοεπιστήμες
Εξερεύνηση SMACSS: Επεκτάσιμη και αρθρωτή αρχιτεκτονική για CSS

Εξερεύνηση SMACSS: Επεκτάσιμη και αρθρωτή αρχιτεκτονική για CSS

Τεχνολογία

Δημοφιλείς Αναρτήσεις
Αισθητική και αντίληψη - Τρόπος προσέγγισης εικόνων εμπειρίας χρήστη
Αισθητική και αντίληψη - Τρόπος προσέγγισης εικόνων εμπειρίας χρήστη
Βέλτιστες πρακτικές διάταξης ιστού: Αναλύθηκαν 12 διαχρονικά μοτίβα διεπαφής χρήστη
Βέλτιστες πρακτικές διάταξης ιστού: Αναλύθηκαν 12 διαχρονικά μοτίβα διεπαφής χρήστη
Εξοικείωση με το Πρόγραμμα ανάπτυξης Sketch
Εξοικείωση με το Πρόγραμμα ανάπτυξης Sketch
Mini Tutorial - Ένας οδηγός για συνδυασμούς γραμματοσειρών
Mini Tutorial - Ένας οδηγός για συνδυασμούς γραμματοσειρών
Για Σχεδιαστές με Αγάπη (Ένα Γράμμα από έναν Προγραμματιστή Front-end)
Για Σχεδιαστές με Αγάπη (Ένα Γράμμα από έναν Προγραμματιστή Front-end)
 
Σχεδιασμός βάσει δεδομένων και γενετικός σχεδιασμός - Μια επισκόπηση
Σχεδιασμός βάσει δεδομένων και γενετικός σχεδιασμός - Μια επισκόπηση
Διακομιστές ARM: Κινητή αρχιτεκτονική CPU για κέντρα δεδομένων;
Διακομιστές ARM: Κινητή αρχιτεκτονική CPU για κέντρα δεδομένων;
Ξεκινήστε με μικροσυσκευές: Ένα εκπαιδευτικό πρόγραμμα Dropwizard
Ξεκινήστε με μικροσυσκευές: Ένα εκπαιδευτικό πρόγραμμα Dropwizard
Μείνετε Sharp - Πώς να ενισχύσετε τη δημιουργικότητα όταν υποχωρεί η εργασία
Μείνετε Sharp - Πώς να ενισχύσετε τη δημιουργικότητα όταν υποχωρεί η εργασία
Ditch MVP, Υιοθετήστε Ελάχιστα Βιώσιμα Πρωτότυπα (MVPr)
Ditch MVP, Υιοθετήστε Ελάχιστα Βιώσιμα Πρωτότυπα (MVPr)
Δημοφιλείς Αναρτήσεις
  • επεξεργασία πώς να κάνετε ένα αντικείμενο να κινείται εμπρός και πίσω
  • διαφορά μεταξύ ενός s corp και του ac corp
  • ορισμός της διαπραγματευτικής δύναμης των αγοραστών
  • πώς να προγραμματίσετε ένα ρομπότ σε java
  • ποιο από τα παρακάτω εργαλεία οπτικοποίησης δεδομένων χρησιμοποιείται για την οργάνωση ποσοτικών δεδομένων;
  • οικονομικά οφέλη της τεχνητής νοημοσύνης
  • ομοσπονδιακή φορολογική ταξινόμηση γ εταιρεία
Κατηγορίες
  • Σχεδιασμός Ux
  • Κερδοφορία & Αποδοτικότητα
  • Κύκλος Ζωής Προϊόντος
  • Ευκίνητος
  • © 2022 | Ολα Τα Δικαιώματα Διατηρούνται

    portaldacalheta.pt