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
- Complete inicio rápido con el ejemplo EasyAR Mega Unity.
- Poder crear contenido alineado con el mundo real.
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.

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.

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

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.

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
Positionen(0, 0, 0). - Establezca
Rotationen(0, 180, 0). - Establezca
Scaleen(1, 1, 1).
Después, el modelo de oclusión debe coincidir con la parte correspondiente del modelo denso del Block.

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.

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.

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

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.

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.

Después de recortar y reducir:

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

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.

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.

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.


