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, choisissez la précision standard ou basse selon les besoins, puis cliquez sur Télécharger pour obtenir l'archive du fichier de masque (zip). Décompressez-la pour récupérer les fichiers des modèles.

Note
L'archive peut contenir un ou plusieurs modèles glb. Vous pouvez importer les modèles séparément dans Unity ou les fusionner au préalable dans un logiciel de création de contenu numérique comme Blender.
[Optionnel] Découper le modèle
Les modèles téléchargés couvrent ensemble tout le Block. Pour occulter tout le Block, passez cette étape et importez-les directement dans Unity. Pour une zone partielle, découpez les modèles comme suit.
Importez les fichiers des modèles extraits dans un logiciel de création de contenu numérique, tel que Blender.

Découpez les modèles pour ne conserver que les parties nécessaires à l'occlusion, puis exportez-les au format glb. Si vous avez importé plusieurs modèles, vous pouvez les fusionner avant l'exportation. Conservez leur position, orientation et taille dans le repère du Block afin qu'ils restent alignés après l'importation dans Unity.

Importer le modèle dans Unity
Importez les modèles dans Unity et attachez-les comme enfants du nœud Block correspondant dans la scène. Si vous utilisez plusieurs modèles, importez-les séparément et attachez-les tous au même nœud Block.
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 de chaque modèle d'occlusion pour définir sa position, sa rotation et son échelle 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
Attribuez un matériau d'occlusion à chaque modèle. Vous pouvez utiliser le composant 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.


