Deux semaines se sont écoulées depuis la fin de la conférence de la WWDC. Les sessions ont été regardées, la documentation a été relue, des projets de démonstration ont été réalisés, ce qui signifie que vous pouvez remplir toutes les informations collectées dans un article.

Dans la première version d'ARKit, il était possible de suivre les mouvements du téléphone dans l'espace, de déterminer la quantité et la chaleur de la lumière autour, ainsi que d'obtenir des informations sur les plans horizontaux. ARKit 1.5, qui a été publié avec iOS 11.3, a amélioré la qualité d'image, ajouté la définition des plans verticaux, la reconnaissance des images 2D statiques et la mise au point automatique. Voyons ce qui a été ajouté dans la version 2.0.
Sauvegarder et restaurer une carte AR
Nous avons eu la possibilité de sauvegarder la carte de l'environnement ainsi que les objets espacés de la réalité augmentée. Ayant une carte, vous pouvez initialiser en utilisant une session AR, après quoi les objets précédemment placés apparaîtront aux bons endroits. La carte enregistrée peut également être transférée sur le serveur et utilisée sur d'autres appareils.
Il est implémenté comme ceci: ARSession
a la méthode getCurrentWorldMapWithCompletionHandler
, qui retourne ARWorldMap
. Les informations sur les points de contrôle sont stockées dans cet objet, à l'aide desquelles ARKit peut restaurer la coordonnée zéro de la scène, ainsi qu'un tableau ARAnchors
auquel des objets peuvent être attachés. ARWorldMap
peut être enregistré ou envoyé quelque part. Pour restaurer une carte, vous devez la transférer dans le champ initialWorldMap
de ARSessionConfiguration
avant de démarrer la session. Après le démarrage, l'état de la session passera à .limited
avec la raison .relocalizing
. Dès que ARKit a collecté suffisamment de points pour la restauration, la coordonnée zéro sera définie sur la position correcte et l'état de la session passera à l'état .normal
.
Pour de meilleures performances, Apple recommande ce qui suit:
- Scannez la scène sous différents angles. Le tableau de points sera plus grand et plus précis;
- l'environnement doit être statique et bien texturé;
- Un tableau de points doit être assez dense.
Vous n'avez pas besoin de surveiller ces paramètres ARFrame
- ARFrame
, car maintenant ARFrame
a un champ worldMappingStatus
. Mais vous devez les prendre en compte lors de la conception de l'application.
Réalité augmentée multijoueur
Le mécanisme de sauvegarde de la carte de l'environnement a permis de synchroniser le système de coordonnées entre plusieurs appareils. Connaissant la position de chacun des appareils par rapport à la carte de l'environnement, vous pouvez créer des scénarios multi-utilisateurs.
Lors de la présentation, le jeu SwiftShot a été montré, dans lequel vous devez tirer depuis votre fronde sur la fronde d'un adversaire.

Le jeu est écrit en Swift + SceneKit. Les actions des utilisateurs sont synchronisées à l'aide de la structure MultipeerConnectivity . Les sources d'application peuvent être téléchargées ici .
Réflexion environnementale
En ajoutant un objet métallique de réalité virtuelle à la scène, j'aimerais y voir un reflet d'objets du monde réel. Pour ce faire, ARWorldTrackingConfiguration
un champ environmentTexturing
. Si vous utilisez SceneKit
comme moteur et définissez le champ environmentTexturing
sur .automatic
, vous obtenez le résultat suivant:

En recevant l'image de la caméra, ARKit construit une carte cubique avec la texture de l'environnement. Les informations qui ne sont pas tombées dans le cadre sont générées à l'aide d'algorithmes d'apprentissage automatique.
Suivre les images animées 2D
Dans ARKit 1.5, seul le suivi des images statiques est apparu. Dans la deuxième version, la restriction est supprimée et vous pouvez maintenant obtenir les coordonnées des images en mouvement. Des fonctionnalités similaires étaient auparavant fournies par le SDK Vuforia. Lors de la présentation, à titre d'exemple d'utilisation, ils ont montré le remplacement de photos sur une vidéo dans un cadre photo:

Pour un meilleur suivi, vous devez utiliser des images contrastées et bien texturées avec des fonctionnalités distinctes. Xcode vous avertira si cette exigence n'est pas respectée.
Pour suivre les images, vous devez utiliser ARImageTrackingConfiguration
. Le tableau trackingImages
est passé à la configuration et maximumNumberOfTrackedImages
. Les coordonnées de l'image seront renvoyées sous la forme ARImageAnchor
.
Suivi d'objets statiques 3D
Ajout de la prise en charge de la reconnaissance des objets 3D statiques. Avant la reconnaissance, l'objet doit être numérisé. Vous pouvez le faire en utilisant une application d'Apple . L'objet à numériser doit être solide, mat et bien texturé.
Pour suivre des objets, créez un ARReferenceObject à partir d'un fichier ou d'un répertoire de ressources et ajoutez-le à ARWorldTrackingConfiguration.detectionObjects
. Informations sur les objets que vous recevrez dans l' ARFrame
.
À titre d'exemple, la présentation a montré la présentation d'informations sur la statuette dans le musée en réalité augmentée.
Suivi du visage
Dans les versions précédentes, il était possible d'obtenir les coordonnées et la rotation du visage, le maillage polygonal du visage et un tableau de mélanges (51 émotions avec une progression de zéro à un). Dans la deuxième version, nous verrons trois innovations:
définition de la lumière directionnelle.
ARKit 2 utilise une image de visage comme source d'informations lumineuses. Avec lui, vous pouvez déterminer l'intensité, la température et la direction de la lumière. Cela rendra les masques plus réalistes;
suivi de la langue.
Un tongueOut a été ajouté aux tongueOut
, qui indique le [0,1] degré de «hauteur» de la langue. De moi-même, je peux ajouter que presque tous mes amis ont essayé de montrer la langue, à qui j'ai joué avec des animoji;
suivi des yeux.
ARFaceAnchor a trois nouveaux champs: leftEyeTransform
, rightEyeTransform
et lookAtPoint
. Il existe déjà des démos sur Internet avec des exemples d'utilisation:
Améliorations générales dans la nouvelle version:
- l'initialisation et la définition des avions se sont accélérées;
- le suivi du téléphone dans l'espace et la détermination des avions sont devenus plus précis;
- la précision de la détermination des limites des avions avec l'expansion de l'avion s'est améliorée;
- Ajout de la prise en charge du rapport d'aspect 4: 3 (ce format sera désormais sélectionné par défaut).
Toutes les améliorations, à l'exception de la transition vers un rapport d'aspect 4: 3, seront appliquées automatiquement à vos applications. Pour ce dernier, vous devez reconstruire l'application avec le nouveau SDK.
Si l'information vous a été utile, soutenez-moi avec la flèche vers le haut. Et je suis prêt à répondre aux questions dans les commentaires.