Utiliser EasyAR Mega dans Unity pour implémenter l'occlusion
L'occlusion est une technologie clé pour améliorer l'immersion de l'intégration virtuel-réel en AR. Cet article décrit comment implémenter des effets d'occlusion dans Unity avec EasyAR Mega.
Avant de commencer
- Terminez le démarrage rapide avec l'exemple EasyAR Mega Unity.
- Pouvoir créer du contenu aligné avec le monde réel.
Méthode d'implémentation de l'occlusion
Modélisation hors ligne: dans le système de coordonnées Block, créez une geometry correspondant 1:1 aux entités du monde réel, comme murs, colonnes ou grands équipements; ou obtenez un modèle optimisé en recadrant et réduisant les faces du modèle dense Block.
Alignement runtime: à l'exécution, alignez le système de coordonnées Block avec l'espace réel via cloud localization et chargez la geometry correspondante.
Remplacement de material: attribuez des materials d'occlusion spéciaux à ces geometry.
Effet visuel: lorsque le GPU rend d'autres objets virtuels, les pixels des parties occultées sont automatiquement éliminés car ils ne passent pas le depth test, ce qui fait que les objets virtuels suivent la logique d'occlusion de l'espace physique réel.
Utiliser les fichiers de masque issus des résultats de cartographie
Suivez les étapes ci-dessous pour télécharger le fichier de masque du résultat de cartographie via l'entrée Mask file download de la base de données de localisation cloud, l'utiliser comme modèle blanc d'occlusion, puis l'importer dans la scène. Le fichier peut être utilisé directement ou découpé selon les besoins.
Note
Cette méthode de téléchargement s'applique uniquement aux résultats de mapping version 9.6 ou ultérieure.
Télécharger le fichier de masque
Après avoir ajouté le Block à la base de données de localisation cloud, cliquez sur Mask file download dans la colonne Action de la ligne correspondante.

Dans la fenêtre contextuelle, sélectionnez standard precision ou low precision selon les besoins, puis cliquez sur le bouton Download correspondant pour télécharger le fichier de masque au format glb.

[Optionnel] Découper le modèle
Le fichier de masque couvre tout le Block. Si cette couverture suffit pour l'occlusion, utilisez-le directement. Si seule une partie est nécessaire, découpez le modèle.
Ouvrez le modèle téléchargé dans un logiciel de création de contenu numérique, par exemple Blender.

Découpez le modèle, ne conservez que la partie nécessaire à l'occlusion et enregistrez-le au format glb. Gardez position, rotation et échelle inchangées afin qu'il s'aligne avec le Block après import dans Unity.

Importer le modèle dans Unity
Importez le modèle dans Unity et montez-le sous le nœud Block correspondant de la scène comme nœud enfant.
Note
L'import d'un modèle glb dans Unity nécessite le package com.unity.cloud.gltfast version 6.8 ou ultérieure. Installez-le ou mettez-le à jour via Package Manager.
Dans le panneau Inspector, modifiez le Transform du modèle d'occlusion par rapport au nœud Block :
- Définissez
Positionsur(0, 0, 0). - Définissez
Rotationsur(0, 180, 0). - Définissez
Scalesur(1, 1, 1).
Le modèle d'occlusion doit alors coïncider avec la partie correspondante du modèle dense du Block.

Note
Le fichier de masque téléchargé utilise une définition de coordonnées différente de Unity, il faut donc régler la composante Y de Rotation sur 180.
Attribuer un matériau d'occlusion au modèle
Changez le matériau du modèle en matériau d'occlusion. Vous pouvez utiliser SpatialMappingOcclusion intégré à Unity.

Simuler avec des données EIF ou exécuter sur appareil réel
Utilisez la simulation de données EIF ou un appareil réel pour vérifier si les objets virtuels sont occultés par les zones réelles correspondantes.
Utiliser une geometry comme occlusion
Suivez les étapes ci-dessous pour ajouter dans la scène une geometry utilisée comme occlusion et vérifier l'effet.
Placer la geometry d'occlusion
Selon le modèle dense du Mega Block, utilisez une geometry intégrée ou personnalisée comme occlusion et placez-la à la bonne position dans le système de coordonnées Block.

[Optional] Ajuster finement la position de la geometry selon le panorama

Attribuer un material d'occlusion à la geometry
Changez le material de la geometry en material d'occlusion. Vous pouvez utiliser le SpatialMappingOcclusion intégré de Unity.

Simuler l'exécution avec EIF data ou exécuter sur appareil réel
Ajustez finement le placement du modèle d'occlusion selon l'effet d'exécution.
Utiliser un modèle dense recadré et réduit comme occlusion
Suivez les étapes ci-dessous pour recadrer et réduire le modèle dense Mega Block exporté, obtenir un modèle blanc pour l'occlusion, puis l'importer dans la scène comme occlusion.
Exporter dans Mega Blocks
Cliquez sur le bouton Export à droite de Mesh pour exporter le modèle dense.

Modifier les options d'exportation
Lors de l'exportation, veillez à modifier les options d'exportation.
Dans la figure, 1 correspond au niveau LOD. Plus le niveau est bas, plus le modèle est simple et moins il comporte de faces. Si vous avez besoin de la précision la plus élevée, sélectionnez le niveau le plus élevé.
Dans la figure, 2 correspond à l'option d'exportation des textures. Ici, seul le modèle blanc est nécessaire comme occlusion, les textures ne sont pas nécessaires.
Recadrer et réduire le modèle
Recadrez et réduisez le modèle exporté dans un logiciel de création de contenu numérique, par exemple Blender, puis enregistrez-le en glb.
Astuce
L'exemple utilise le Decimate Modifier de Blender.

Après recadrage et réduction:

Importer le modèle d'occlusion dans Unity et le monter sous le nœud Block dans la scène

Modifier le Transform du modèle
Modifiez le Transform du modèle afin que Position et Rotation soient toutes deux à 0.
À ce moment, le modèle blanc utilisé pour l'occlusion doit s'ajuster au modèle dense, car les opérations de recadrage et de réduction dans le logiciel de création de contenu numérique n'ont pas modifié la définition du système de coordonnées Block.

Attribuer un material d'occlusion au modèle
Changez le material du modèle en material d'occlusion. Vous pouvez utiliser le SpatialMappingOcclusion intégré de Unity.

Simuler l'exécution avec EIF data ou exécuter sur appareil réel
Utilisez EIF data pour simuler l'exécution ou exécutez sur un appareil réel pour voir l'effet.
Attentes sur l'effet d'occlusion
L'effet d'occlusion est principalement influencé par:
- La précision du localization tracking lui-même
- La précision du placement du modèle
- La précision du modèle lui-même, s'il ne s'agit pas d'une simple geometry
Lors d'un localization drift, un décalage de quelques centimètres est normal.
Un modèle d'occlusion avec trop de faces peut facilement affecter les performances. Il est recommandé de ne l'utiliser que dans les zones nécessaires et d'utiliser autant que possible une geometry simple comme occlusion.


