Table of Contents

Usar EasyAR Mega en Unity para implementar oclusión

La oclusión (Occlusion) es una tecnología clave para mejorar la inmersión de la integración entre contenido virtual y real en AR. Este artículo describe cómo implementar efectos de oclusión en Unity mediante EasyAR Mega.

Antes de comenzar

Formas de implementar oclusión

  • Modelado offline: en el sistema de coordenadas Block, cree geometría con correspondencia 1:1 para entidades del mundo real, como paredes, columnas y equipos grandes; o consiga un modelo optimizado recortando y reduciendo caras del modelo denso de Block.

  • Alineación en runtime: durante la ejecución, alinee el sistema de coordenadas Block con el espacio real mediante cloud localization y cargue la geometría correspondiente.

  • Sustitución de material: asigne materiales especiales de oclusión a estas geometrías.

  • Efecto visual: cuando la GPU renderiza otros objetos virtuales, los píxeles de las partes ocluidas se descartan automáticamente porque no superan el depth test, haciendo que los objetos virtuales sigan la lógica de oclusión del espacio físico real.

Usar archivos de máscara de los resultados de mapeo

Siga estos pasos para descargar el archivo de máscara desde el resultado de mapeo mediante la entrada Mask file download de la base de datos de localización en la nube, usarlo como modelo blanco de oclusión e importarlo en la escena. El archivo puede usarse directamente o recortarse según sea necesario.

Nota

Este método de descarga solo se aplica a resultados de mapeo de la versión 9.6 o posterior.

Descargar el archivo de máscara

Después de agregar el Block a la base de datos de localización en la nube, haga clic en Mask file download en la columna Action de la fila correspondiente.

Entrada de descarga del archivo de máscara

En la ventana emergente, seleccione standard precision o low precision según sea necesario y haga clic en el botón Download correspondiente para descargar el archivo de máscara en formato glb.

Descargar archivo de máscara

[Opcional] Recortar el modelo

El archivo de máscara cubre todo el Block. Si su cobertura ya satisface la oclusión, úselo directamente. Si solo se necesita una parte, recorte el modelo.

Abra el modelo descargado en software de creación de contenido digital, como Blender.

Antes de recortar

Recorte el modelo, conserve solo la parte necesaria para la oclusión y guárdelo en formato glb. Mantenga sin cambios la posición, rotación y escala para que se alinee con el Block tras importarlo en Unity.

Después de recortar

Importar el modelo en Unity

Importe el modelo en Unity y móntelo bajo el nodo Block correspondiente de la escena como nodo hijo.

Nota

Para importar un modelo glb en Unity se requiere el paquete com.unity.cloud.gltfast, versión 6.8 o posterior. Instálelo o actualícelo desde Package Manager.

En el panel Inspector, modifique el Transform del modelo de oclusión relativo al nodo Block:

  • Establezca Position en (0, 0, 0).
  • Establezca Rotation en (0, 180, 0).
  • Establezca Scale en (1, 1, 1).

Después, el modelo de oclusión debe coincidir con la parte correspondiente del modelo denso del Block.

Importar modelo de oclusión

Nota

El archivo de máscara descargado usa una definición de coordenadas distinta de Unity, por lo que el componente Y de Rotation debe establecerse en 180.

Asignar un material de oclusión al modelo

Cambie el material del modelo por un material de oclusión. Puede usar SpatialMappingOcclusion integrado en Unity.

Cambiar material del modelo de oclusión

Simular con datos EIF o ejecutar en un dispositivo real

Use simulación con datos EIF o un dispositivo real para comprobar si los objetos virtuales quedan ocluidos por las áreas reales correspondientes.

Usar geometría como oclusión

Siga estos pasos para añadir geometría usada como oclusión en la escena y verificar el efecto.

Colocar geometría de oclusión

Según el modelo denso de Mega Block, use geometría integrada o geometría propia como oclusión y colóquela en la posición correcta del sistema de coordenadas Block. Place occlusion geometry

[Optional] Ajustar la posición de la geometría según la panorámica

Fine-tune occlusion according to the panorama

Asignar material de oclusión a la geometría

Cambie el material de la geometría a un material de oclusión. Puede usar el SpatialMappingOcclusion integrado de Unity. Fine-tune occlusion according to the panorama

Simular ejecución con datos EIF o ejecutar en dispositivo real

Ajuste la colocación del modelo de oclusión según el efecto de ejecución.

Usar un modelo denso recortado y reducido como oclusión

Siga estos pasos para recortar y reducir el modelo denso de Mega Block exportado, obtener un modelo blanco para oclusión e importarlo en la escena como oclusión.

Exportar en Mega Blocks

Haga clic en el botón Export a la derecha de Mesh para exportar el modelo denso.

Modificar opciones de exportación

Preste atención a modificar las opciones de exportación al exportar.

En la figura, 1 es el nivel LOD. Cuanto menor es el nivel, más simple es el modelo y menos caras tiene. Si necesita la máxima precisión, seleccione el nivel más alto.

En la figura, 2 es la opción de exportar texturas. Aquí solo se necesita el modelo blanco como oclusión y no se necesitan texturas.

Recortar y reducir el modelo

Recorte y reduzca el modelo exportado en software de creación de contenido digital, como Blender, y guárdelo como glb.

Consejo

En el ejemplo se usa Decimate Modifier de Blender.

Before cropping

Después de recortar y reducir:

After cropping

Importar el modelo de oclusión a Unity y montarlo bajo el nodo Block de la escena

Import occlusion model

Modificar el Transform del modelo

Modifique el Transform del modelo para que Position y Rotation sean todos 0.

En este momento, el modelo blanco usado para oclusión debe encajar con el modelo denso, porque las operaciones de recorte y reducción en el software de creación de contenido digital no cambiaron la definición del sistema de coordenadas Block.

Occlusion model fit

Asignar material de oclusión al modelo

Cambie el material del modelo a un material de oclusión. Puede usar el SpatialMappingOcclusion integrado de Unity.

Replace occlusion model material

Simular ejecución con datos EIF o ejecutar en dispositivo real

Use datos EIF para simular la ejecución o ejecute en un dispositivo real para ver el efecto.

Expectativas del efecto de oclusión

El efecto de oclusión está influido principalmente por:

  • La precisión del localization tracking en sí
  • La precisión de colocación del modelo
  • La precisión del propio modelo, si no es geometría simple

Es normal que aparezcan desalineaciones de varios centímetros durante localization drift.

Si el modelo de oclusión tiene demasiadas caras, puede afectar fácilmente al rendimiento. Se recomienda usarlo solo en áreas necesarias y usar geometría simple como oclusión en la medida de lo posible.

Temas relacionados