Hola !
Ahora que he encontrado un 2do set de Hololens para trabajar aquí en Toronto, llega el momento de volver a Unity3D y a HoloToolkit. Dentro del mismo, es momento de probar una de las features menos documentadas que hay: Sharing Holograms.
Una vez que hemos importado (de la forma correcta) el paquete de HoloToolkit Unity, podemos ver dentro de los Assets la carpeta Sharing.
Este es el elemento que debemos agregar a nuestro proyecto de Unity para que el mismo tenga capacidades de “Sharing” con otras apps en Hololens. En las propiedades de este elemento vemos que el mismo utiliza un par de clases interesantes:
- SharingStage.cs
- SharingSessionTracker.cs
- AutoJoinSession.cs
- CustomMessages.cs
Como siempre, al faltar documentación relevante, os recomiendo ver el código de las mismas ya que es la forma más simple de comprender cómo funciona esta funcionalidad. Por ahora solo remarcar las propiedades de [Sharing Stage]
- Client Role: define el tipo de cliente para una app de Sharing. Segun la documentación de la clase C#:
/// Set whether this app should be a Primary or Secondary client.
/// Primary: Connects directly to the Session Server, can create/join/leave sessions
/// Secondary: Connects to a Primary client. Cannot do any session management
- Server Address y Server Port: La dirección IP y puerto del servidor que se utiliza para coordinar el sharing de información entre varios devices
- Auto Discover Server: Solo con habilitar este check, nuestra app debería poder descubrir automáticamente un Sharing Server en la misma subnet. En mi caso, y tal vez por las restricciones de mi red local, no he podido descubrirlo automáticamente, por lo que he tenido que configurar a mano la dirección IP y el puerto.
Después de leer todo esto, llega el momento de preguntarse donde está Sharing Service. El server es un exe escondido en las entrañas del paquete de HoloToolkit.
$\HoloToolkit-Unity-master\External\HoloToolkit\Sharing\Server\SharingService.exe
Ahora ya podemos lanzar el executable y tener nuestro Sharing Service Up and Running.
Nota: Hay una opción para lanzar Sharing Service desde el menú de Unity. No he conseguido que funcione.
Ahora bien, más novedades, existen 2 formas de lanzar el Sharing Service
- local, funcionando en modo app
- servicio, funcionando como un servicio de Windows
Para este ejemplo lanzaré la app en modo local. En este momento podemos ver lo siguiente en la consola de comando
C:\Hololens\Sharing\Server>SharingService.exe -local
Running Sharing Service locally. Enter ‘q’ to quit.
SharingService: ** Logging Session Began at 23:24:59, 10-6-2016
SharingService: ***********************************
SharingService: ****** Sharing Service OnStart ******
SharingService: ***********************************
SharingService: Server Info:
Build Version: 1.1.0.0
Schema Version: 15
SharingService: Listening for session list connections on port 20602 of all network devices of the local machine.
SharingService: Local IP addresses are:
SharingService: 172.16.80.1
SharingService: 192.168.0.19
SharingService: 169.254.80.80
SharingService: Created Session “Default” with ID 0 on port 20601
Cuando lanzamos una app creada que utilize el Asset de Sharing, con los valores correctamente configurados, podremos ver que el server detecta una nueva sesión y comienza a mostrar logs sobre la misma.
Pues bien, en el siguiente post sobre Sharing espero poder mostrar como 2 apps comparten y trabajan sobre un mismo holograma!
Saludos @ Toronto
El Bruno
References
- GitHub, HoloToolkit
- GitHub, HoloToolkit Unity
- El Bruno, Importar HoloToolkit Unity
Hola El Bruno, te pregunto si pudiste hacer funcionar la experiencia compartida entre dispositivos y cuál fue tu approach?. Es posible hacerlo con un Hololens y una PC corriendo el servicio + un emulador?
Gracias
LikeLike
Hola Rodolink
No lo he probado con 2 Hololens, si con el emulador y las Hololens. La verdad es que los hologramas se comparten bien y la experiencia parece que responde muy bien en conceptos de tiempo y velocidad.
Un detalle, he hecho la prueba con el tutorial de la Holographic Academy y con un proyecto simple compartiendo simples formas 3D. Debería poder hacer una prueba mas completa para ver como se comporta.
Saludos
LikeLike
Gracias por la respuesta, sigo sin poder echarlo andar, con servicio local y el app corriendo en el editor de Unity funciona, pero cuando trato de conectarme al servicio desde el emulador o desde otro Hololens no se conecta, supongo que porque el servicio esta corriendo de manera local, pero al tratar de correr el servicio como servicio me sale error en la consola (path//SharingService.exe -install) has tenido éxito corriendo el servicio asi en vey de local?
LikeLike
Hola bruno, podrías explicar como es el proceso que se debe hacer para, una vez arrancado el servidor, el emulador y las hololens corran todas ellas en un mismo ordenador?, que de diferente deben estar configurada cada una de ellas?
LikeLike
Hola Guillermo
pues daria para un rato largo de escribir, si saco tiempo lo pongo en un post. Te recomiendo que veas https://github.com/Microsoft/MixedRealityToolkit-Unity/wiki/Sharing y si sigues los pasos del tutorial principal de la HoloAcademy https://developer.microsoft.com/en-us/windows/mixed-reality/holograms_240#chapter_3_-_shared_coordinates tambien podras ver los requisitos y pasos necesarios. Es todo cuestion de configurar correctamente direcciones IPs
Saludos
-Bruno
LikeLike