portaldacalheta.pt
  • Principal
  • Design De Marque
  • Personnes Et Équipes Produit
  • Innovation
  • Kpi Et Analyses
Mobile

Démo ARKit: réalisation de films en réalité augmentée



La RA et la réalité virtuelle sont de plus en plus courantes, et toutes les grandes entreprises de haute technologie les poursuivent: Apple a ARKit, Google a ARCore et Microsoft a son propre HoloLens (et puis, bien sûr, il y a Unity). Et avec quelques applications qui reçoivent beaucoup d'attention du public, Développement d'applications de réalité augmentée devient une compétence très souhaitable pour les développeurs mobiles.

Dans cet article, j'aimerais vous présenter une petite application simple mais significative qui fera plus que simplement avoir un cube rotatif. Qui a besoin de cubes rotatifs de toute façon? Faisons la matrice.



Introduction à ARKit

ARKit est un framework Apple pour la création d'applications AR pour les appareils iOS. Plusieurs moteurs de rendu peuvent être utilisés avec: SpriteKit pour les objets 2D, SceneKit pour la 3D, et Métal si nous voulons implémenter un moteur de rendu personnalisé.



comment faire de la modélisation financière

Pour cette démo, nous utiliserons SceneKit pour rendre et placer des objets 3D entièrement rendus (couteaux).



image: distinction entre les moteurs de rendu

Depuis ARKit v2, cinq types de configuration sont pris en charge dans ARKit:



AROrientationTrackingConfiguration - Lorsque vous souhaitez suivre uniquement l'orientation de l'appareil (par exemple, pour une application de constellation d'étoiles). Avec cette configuration, les mouvements physiques comme le pas de côté ne sont pas suivis et n'affecteront pas la position ou la direction des objets sur la scène.

ARWorldTrackingConfiguration - Il s'agit probablement de la configuration la plus souvent utilisée pour la RA car elle prend en charge ce que la plupart des gens considéreraient comme la réalité augmentée. Les exemples incluent des applications de chasse virtuelle pour animaux de compagnie ou Pokémon.



ARFaceTrackingConfiguration - Cette configuration n'est actuellement prise en charge que par l'iPhone X car elle nécessite une caméra TrueDepth (comme Face ID). Cette configuration suit les caractéristiques du visage et son décalage relatif par rapport à l'expression faciale neutre (par exemple, une application où les utilisateurs peuvent essayer des lunettes de soleil de mode avant de les commander).

ARImageTrackingConfiguration - Si vous avez un ensemble de marqueurs et que vous souhaitez montrer des animaux sautant hors du marqueur, cette configuration est faite pour vous. Il ne s’agit pas de marqueurs en forme de carte, mais de toute image 2D. Vous pourriez pointer votre appareil photo vers la Joconde et elle tournerait la tête et vous dirait quelque chose. Un inconvénient est que vous devez dire à l'avance quelle est la taille physique du marqueur d'image.



ARObjectScanningConfiguration - Cette configuration est la version 3D de ARImageTrackingConfiguration.

Dans cette démo, nous allons ajouter des couteaux et des balles à la scène, et nous aimerions avoir six degrés de liberté, donc l'outil approprié est ARWorldTrackingConfiguration.



exemples de loi de proximité gestalt

Le concept d'application

Tous ceux qui ont vu The Matrix peuvent se rappeler que Neo (Keanu Reeves) a esquivé les balles et les a arrêtées en l'air. Notre application nous aidera à recréer cette scène à partir d'un flux de caméra en direct. Ainsi, nous pouvons créer des vidéos personnalisées démontrant des pouvoirs de type néo.

Notre application aura des modèles 3D de balles et de couteaux. C'est à l'utilisateur de déterminer le nombre de balles ou de couteaux qu'il souhaite dans son film. Si vous souhaitez passer du temps et ajouter d'autres modèles, le code de l'application est open source et il est disponible sur GitHub ( https://github.com/altaibayar/toptal_ar_video_maker ). Bien qu'il ne s'agisse pas d'un didacticiel AR complet, la démo et la source devraient être une ressource précieuse si vous essayez de vous lancer dans le développement d'applications AR sur iOS.



Le scénario de cas d'utilisation prévu est le suivant:

  1. demandez à un ami de se déguiser en Neo (pas strictement nécessaire pour le fonctionnement de l'application, mais cela pourrait aussi bien paraître bien pendant que nous faisons cela).
  2. Demandez à «Neo» de se tenir à environ 10 mètres (30 pieds) de vous.
  3. Démarrez l'application et scannez le plan du sol.
  4. Ajoutez des balles et des couteaux volant à «Neo».
  5. Maintenez le bouton d'enregistrement enfoncé pour enregistrer la vidéo pendant que «Neo» effectue des mouvements sympas en esquivant ou en arrêtant les balles
  6. relâchez le bouton d'enregistrement et enregistrez la vidéo dans votre bibliothèque.

Construire l'application

Comme mentionné précédemment, nous voulons pouvoir bouger librement tout en enregistrant tous les 360 ° de la scène et que les balles et les couteaux suivent le mouvement de la caméra de manière appropriée.

À des fins de démonstration, nous n’aurons que deux types d’objets virtuels: les couteaux et les balles de fusil de chasse.

Les couteaux sont des objets détaillés et j'utiliserai le modèle gratuit de https://poly.google.com/view/3TnnfzKfHrq (Merci Andrew).

Les balles de fusil de chasse, cependant, sont de simples objets sphériques et nous pouvons simplement les coder. Nous les rendrons métalliques et brûlantes pour la variété. Comme nous émulons un fusil de chasse, nous les générons également sous forme de groupes groupés. Pour rendre le regroupement logique sans trop de tracas, nous pouvons utiliser le générateur de nombres aléatoires gaussien du GamplayKit.

GameplayKit est un outil utile qui est utile chaque fois que vous avez besoin d'une génération de bruit aléatoire, d'une machine à états, d'une IA ou d'une prise de décision basée sur les probabilités.

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; }

Une logique de décalage aléatoire similaire peut être utilisée pour les couteaux, mais comme ils ne se comportent pas comme des groupes, une distribution aléatoire simple peut être utilisée.

Architecture d'application

Il est au-delà de la portée de cette démo de se plonger dans les discussions sur le paradigme d'architecture qui est le meilleur. Il existe de nombreux articles qui approfondissent ce sujet.

migration de données à partir de systèmes existants

Au lieu de cela, je vais simplement présenter la structure du projet comme un guide pour trouver votre chemin dans le projet GitHub lié: quels sont les principaux composants, comment ils sont connectés et pourquoi ils ont été choisis.

L'application n'a que trois écrans:

PermissionViewController - L'écran où nous demandons à l'utilisateur d'accorder à l'application l'accès aux fonctionnalités mobiles requises.

  • Caméra - Évidemment
  • Galerie - Pour enregistrer la vidéo enregistrée et l'entrée microphone
  • Microphone - L'autorisation est requise par une bibliothèque que j'utilise pour créer la vidéo (par défaut, le son du microphone serait utilisé comme source d'une piste audio).

ExportViewController - Cet écran affiche une vidéo enregistrée et offre les options pour partager ou enregistrer la vidéo.

MainViewController - Toute la magie se produit ici.

D'après mon expérience, il est préférable que vous enveloppiez toutes les classes ARKit nécessaires telles que ARSession, ARConfiguration et tous les types uniques de SCNNode. De cette façon, le code est explicite.

ARSession est hérité d'ApeeScapeARSession, et la nouvelle classe de session n'a que trois méthodes: le constructeur de classe où nous configurons tout ce qui est nécessaire et les méthodes resetTracking et pauseTracking.

L'application reconnaît quatre types uniques de SCNNodes:

  • KnifeNode - Représente un objet 3D de couteau et charge automatiquement un couteau 3D en tant que géométrie.
  • BulletsNode - Ce nœud représente un ensemble de cartouches de fusil de chasse. Le bruit gaussien aléatoire, les couleurs et le mode d'éclairage physique sont définis automatiquement.

    Aucun travail spécial ou supplémentaire n'est requis dans les classes qui utilisent KnifeNode ou BulletsNode, et elles peuvent être utilisées comme modèles pour personnaliser l'application afin d'ajouter d'autres types d'objets 3D.

  • ReticleNode - Enveloppe un modèle 3D qui apparaît dans la scène au-dessus du sol pour montrer où les couteaux ou les balles seront ajoutés.
  • DirectionalLightNode - C'est un nœud représentant une lumière verticale pointant vers le bas.

Références et crédits

Modèle de couteau: https://poly.google.com/view/3TnnfzKfHrq

Enregistrement depuis SCNScene: https://github.com/svtek/SceneKitVideoRecorder

Icônes de bouton, application de démonstration ARKit: https://developer.apple.com/documentation/arkit/handling_3d_interaction_and_ui_controls_in_augmented_reality

principe d'unité et de variété de conception

Comprendre les bases

Qu'est-ce que ARKit?

ARKit est un framework Apple permettant de créer des applications de réalité augmentée pour les appareils iOS.

Qu'est-ce que SceneKit?

SceneKit est un framework pour développer des graphiques 3D dans un environnement Apple. Il sert d'interface abstraite vers les API de niveau inférieur telles que les moteurs de rendu.

Un didacticiel sur le flux de travail de conception pour les développeurs: fournir une meilleure interface utilisateur / UX à temps

Mode De Vie

Un didacticiel sur le flux de travail de conception pour les développeurs: fournir une meilleure interface utilisateur / UX à temps
Huit règles pour une production logicielle efficace

Huit règles pour une production logicielle efficace

Gestion De Projet

Articles Populaires
Ingénieur senior full-stack, équipe post-embauche des talents
Ingénieur senior full-stack, équipe post-embauche des talents
En souvenir de Matthew Osborne
En souvenir de Matthew Osborne
Comment créer un pipeline de déploiement initial efficace
Comment créer un pipeline de déploiement initial efficace
L'impact du Brexit sur le secteur des services financiers
L'impact du Brexit sur le secteur des services financiers
Comment préparer un modèle de tableau des flux de trésorerie qui s'équilibre réellement
Comment préparer un modèle de tableau des flux de trésorerie qui s'équilibre réellement
 
Conquérir la recherche de chaînes avec l'algorithme Aho-Corasick
Conquérir la recherche de chaînes avec l'algorithme Aho-Corasick
Estimation des coûts logiciels dans la gestion de projet agile
Estimation des coûts logiciels dans la gestion de projet agile
5 qualités indispensables des meilleurs chefs de projet
5 qualités indispensables des meilleurs chefs de projet
Comment recréer gratuitement les ressources d'un terminal Bloomberg
Comment recréer gratuitement les ressources d'un terminal Bloomberg
Noyaux d'arbres: quantification de la similitude entre les données structurées en arborescence
Noyaux d'arbres: quantification de la similitude entre les données structurées en arborescence
Articles Populaires
  • comment devenir certifié aws
  • comment créer un jeton ethereum
  • piratage de numéro de carte de crédit paypal
  • wrike contre asana contre camp de base
  • exemple de plan comptable du ménage
Catégories
  • Design De Marque
  • Personnes Et Équipes Produit
  • Innovation
  • Kpi Et Analyses
  • © 2022 | Tous Les Droits Sont Réservés

    portaldacalheta.pt