Table of Contents

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

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.

Entrée de téléchargement du fichier de masque

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.

Télécharger le fichier de masque

[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.

Avant découpe

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.

Après découpe

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 Position sur (0, 0, 0).
  • Définissez Rotation sur (0, 180, 0).
  • Définissez Scale sur (1, 1, 1).

Le modèle d'occlusion doit alors coïncider avec la partie correspondante du modèle dense du Block.

Importer le modèle d'occlusion

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.

Remplacer le matériau du modèle d'occlusion

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. Place occlusion geometry

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

Fine-tune occlusion according to the 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. Fine-tune occlusion according to the panorama

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.

Before cropping

Après recadrage et réduction:

After cropping

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

Import occlusion model

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.

Occlusion model fit

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.

Replace occlusion model material

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.

Rubriques connexes