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

Télécharger le fichier de masque

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.

Avant découpe

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.

Après découpe

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

Attribuez un matériau d'occlusion à chaque modèle. Vous pouvez utiliser le composant 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