#Hololens – Spatial Understanding vs Spatial Mapping, y un paso a paso sobre como utilizarlo

Hola !

HoloToolkit posee 2 herramientas que nos permiten realizar un un scaneo de nuestros alrededores cuando usamos Hololens.

  • Spatial Mapping
  • Spatial Understanding

Spatial Mapping es el asset que usamos por defecto y es el que nos permite tener un control básico del proceso de scan que realiza Hololens. Por ejemplo, una vez que agregamos este elemento y habilitamos el dibujo del Mesh, podemos ver en tiempo real el scan que hace Hololens del entorno donde la estamos utilizando.

Spatial Understanding nos permite ir un paso más allá y realizar algunas tareas más complejas. Por ejemplo:

  • Definir el momento de inicio y fin para el proceso de scan. Esto es realmente útil cuando por ejemplo, necesitamos realizar un scan inicial y luego sabemos que el contexto de trabajo no cambiará. Si deshabilitamos el scan en tiempo real, le damos más recursos a Hololens para utilizar en otras cosas
  • Realizar consultas simples sobre diferentes elementos en nuestro punto de vista. Por ejemplo, para buscar superficies planas en una pared o en el piso para posicionar hologramas.
  • Realizar consultas más complejas, para buscar elementos como una silla, una guitarra, etc. A esta opción no la he utilizado pero la tengo en reserva para cuando la necesite.

Importante: siempre que utilizamos Spatial Understanding, debemos tener agregado el prefab de Spatial Mapping, en caso contrario veremos unos errores muy divertidos.

Personalmente creo que las 2 mejores formas de conocer como funciona Spatial Understanding son las siguientes

  • Leer el artículo de Jeff Evertt Case study – Expanding the spatial mapping capabilities of HoloLens, donde comenta como han creado este asset para escenarios específicos que no se contemplaban en HoloToolkit.
  • Revisar la Scene de ejemplo ubicada en “HoloToolkit-Unity/Assets/HoloToolkit-Examples/SpatialUnderstanding/SpatialUnderstanding-FeatureOverview/Scenes/“.
    La misma utiliza Spatial Understanding para realizar un scan inicial del ambiente y luego presentar algunas opciones de consultas simples.

Si además lo quieres utilizar en un proyecto propio, el siguiente pequeño paso a paso puede ayudarte. El resultado final es una app que muestra en tiempo real un HUD con el estado del scan y al finalizar deshabilita la visualización del Mesh.

Estos son los pasos a seguir.

  1. Create a 3D project in Unity3D
  2. Import HoloToolkit package
  3. Configure project to
    1. Support HoloLens projects (UWP, VR, etc)
    2. enable Spatial Mapping feature
  4. Clean Scene elements
  5. Add
    1. Hololens Camera
    2. Cursor With Feedback
    3. Input Manager
    4. Spatial Mapping
    5. Spatial Understanding
    6. FPS Display
  6. Add Empty element
    1. Rename to CodeManagers
    2. Add new C# Script named “GameStartScanner.cs”

El proyecto debe quedar similar al siguiente

Clipboard02

El código completo del ejemplo se puede descargar desde aquí (link).

Y el script para la nueva clase está debajo, y lo mejor es revisar un par de apuntes interesantes sobre la misma

  • Las propiedades MinAreaForComplete , MinHorizAreaForComplete, MinWallAreaForComplete definen el mínimo de área a escanear para dar el proceso cómo válido
  • En el Start() se inicia el proceso de Scan con la operación SpatialUnderstanding.Instance.RequestBeginScanning(); y además nos suscribimos a los cambios de estado
  • La propiedad DoesScanMeetMinBarForCompletion es la que se encarga de validar si se ha terminado el proceso de scan
  • En el Update se realizan 2 operaciones imporantes
    • Se muestra en un FPS Text el estado del proceso de scan
    • Si el se ha encontrado el minimo de elementos, finalizamos el proceso de scan, y deshabilitamos el proceso visual de scan

Código de ejemplo

 

Saludos @ Toronto

El Bruno

References

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s