WLT+ASA: Información general del software complementario
IBinder
: enlace de SpacePins con Azure Spatial Anchors.
La interfaz IBinder
está en el centro, implementada aquí por la clase SpacePinBinder. SpacePinBinder es una clase Unity Monobehaviour y se puede configurar desde el inspector de Unity o desde el script.
A cada IBinder
se le asigna un nombre, así que un único elemento IBindingOracle
puede administrar enlaces para varios IBinder
.
IPublisher
: lectura y escritura de anclajes espaciales en la nube.
La interfaz IPublisher
controla la publicación de anclajes espaciales en la nube y su posterior recuperación en sesiones posteriores o en otros dispositivos. IPublisher
se implementa aquí con la clase PublisherASA. Los datos de posición en el espacio físico actual se capturan y recuperan mediante Azure Spatial Anchors.
Cuando se publica un anclaje espacial, se obtiene un identificador de anclaje en la nube. Este identificador se puede usar en sesiones posteriores o en otros dispositivos para recuperar la posición del anclaje en la nube en el sistema de coordenadas actual, junto con las propiedades almacenadas con él. El sistema siempre agrega una propiedad que identifica el elemento SpacePin asociado del anclaje en la nube.
Se debe tener en cuenta que IPublisher
y PublisherASA nos saben nada de los elementos SpacePin. IPublisher
no sabe ni le importa lo que se hará con los datos del anclaje en la nube. Ofrece una interfaz simplificada que admite "await" para publicar y recuperar anclajes en la nube.
Lectura frente a búsqueda
Si se conoce el identificador de un anclaje en la nube, se puede usar para recuperarlo. Este método es la manera más sólida de recuperar un anclaje en la nube. El método es Lectura.
Sin embargo, hay escenarios interesantes en los que el dispositivo no conoce los identificadores de los anclajes en la nube dentro de un área, pero si se pudieran recuperar los anclajes en la nube, sus datos espaciales y propiedades se combinarían para proporcionar suficiente información que los haría útiles.
Búsqueda: busca los anclajes en la nube del área alrededor de un dispositivo y devuelve los que pudo identificar. Este proceso también se conoce como reubicación general.
IBindingOracle: uso compartido de los identificadores de anclajes en la nube
La interfaz IBindingOracle proporciona un medio para conservar y compartir enlaces entre elementos SpacePin y anclajes en la nube específicos. En concreto, conserva los pares space-pin-ID/cloud-anchor-ID, junto con el nombre del elemento IBinder
.
La interfaz del oráculo es muy sencilla. Dado un elemento IBinder
, puede usar Put con los enlaces de IBinder
o puede usar Get. Put los almacena y Get los recupera. El mecanismo de almacenamiento y recuperación se deja a la implementación de la clase concreta que implementa la interfaz IBindingOracle.
Este ejemplo implementa posiblemente el elemento IBindingOracle más sencillo posible, en forma de la clase SpacePinBinderFile. En Put, escribe los enlaces de IBinder
en un archivo de texto. En Get, los lee del archivo de texto (si está disponible) y los inserta en IBinder
.
ILocalPeg: blob que marca una posición en el espacio físico
La interfaz ILocalPeg es una abstracción de un anclaje local del dispositivo. En un mundo más perfecto, el elemento ILocalPegs necesario se administraría internamente mediante IPublisher
. Sin embargo, los anclajes locales del dispositivo funcionan mucho mejor cuando se crean mientras el dispositivo está cerca de la posición del anclaje. El elemento IPublisher
solo sabe dónde se deben colocar los anclajes locales del dispositivo cuando se necesitan, no en el momento óptimo de crearlos.
SpacePinASA sabe cuándo es el mejor momento para crear su anclaje local. Cuando finaliza la manipulación de SpacePin y se establece su posición, SpacePinASA solicita a IPublisher
que cree una clavija local opaca en la posición deseada. A continuación, SpacePinBinder extrae ILocalPeg de SpacePinASA y lo pasa a IPublisher
para que se utilice en la creación de un anclaje espacial en la nube.