#Hololens – HoloToolkit Sharing: Share holograms between different devices (Post 1 of N, no idea right now the total amount of effort to make it work …)

Hello!

Now that I’ve found a 2nd set of Hololens to work here in Toronto, is the time to go back to Unity3D and the HoloToolkit. More specific: it’s time to learn and test on one of the less documented features: Sharing Holograms.

Once we have imported package of HoloToolkit Unity (in the right way), we can see in the Assets folder Sharing.

Clipboard03.jpg

This is the element that we must add to our project of Unity it to have “Sharing” capabilities with other apps on Hololens. In the properties of this element, we see that it uses a couple of interesting classes:

  • SharingStage.cs
  • SharingSessionTracker.cs
  • AutoJoinSession.cs
  • CustomMessages.cs

clipboard05

As always, in the absence of relevant documentation, I recommend you browse the source code since it is the simplest way to understand how this feature works. For now I only some of the [Sharing Stage] properties

  • Client Role: defines the type of customer for a Sharing app. According to the documentation of the class 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 and Server Port: You got this, this is easy: the IP address and port of the server that is used to coordinate the sharing of information between various devices
  • Auto Discover Server: Only enabling this check, our app should be able to discover automatically Sharing Server on the same subnet. In my case, and such time by my local network restrictions, not have been able to discover it automatically, by what I had to configure manually the IP address and port.

After reading all this, comes to ask yourself where you’re Sharing Service. The server is an executable app hidden in the bowels of the HoloToolkit package.

$\HoloToolkit-Unity-master\External\HoloToolkit\Sharing\Server\SharingService.exe

Now you can launch the executable and have our Sharing Service Up and Running.

Note: There is also an option to launch Sharing Service from Unity menus. I have not managed to work. However I could not make it work.

clipboard07

Now, more news, there are 2 ways to use the Sharing Service

  • local, running in app mode
  • service, running as a Windows service

clipboard09

For this example I run the app in local mode. At this time we can see the following in the command console

Clipboard11.jpg

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

When we launched an app created that use the Asset of Sharing, with properly configured values, we can see that the server detects a new session and begins to show logs on it.

clipboard14

As well, in the next post about Sharing I hope to show how 2 apps share and work on a same hologram!

Greetings @ Toronto

El Bruno

References

Advertisements

#Hololens – HoloToolkit Sharing: compartir Hologramas entre diferentes devices (Post 1 de N o lo que me cueste hacerlo funcionar …)

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.

Clipboard03.jpg

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

clipboard05

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.

clipboard07

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

clipboard09

Para este ejemplo lanzaré la app en modo local. En este momento podemos ver lo siguiente en la consola de comando

Clipboard11.jpg

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.

clipboard14

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

#Hololens – This is the right way to work with #Unity packages and #HoloToolkit

Hello!

Yesterday I was lucky enough to be part of an online / virtual meeting with other Hololens developers. One of them teach us the correct way to use packages in Unity. In fact, the example that he said (and I share here) is based on the way we must use HoloToolkit.

I have written some posts on HoloToolkit, I usually copy the HoloToolkit assets to the directory [Assets] in a Unity 3D project and it works. However there is a better way to do this, a much better way. So, I will describe the steps required in 3 samples scenarios working with HoloToolkit.

Create a HoloToolkit Unity Package

  • Clone / download the latest version of HoloToolkit from GitHub
  • Open Unity and select the option “Open project”
  • Select the folder “HoloToolkit-Unity-master”

clipboard03

  • Unity will create a new project and it will include the contents of HoloToolkit in the Assets
  • In the Projects pane, select the Assets folder, display the shortcut menu and select the option [Export Package]

clipboard05

  • Select the items to be exported. By default, it is advisable to leave all selected, but if you already have experience with these Assets you can create a custom package

clipboard06

  • Select the directory and destination and create the Unity Package
  • Personally, I’d rather have a package for each set of big changes that exist in HoloToolkit, so that I add the suffix year, month and day to each package

clipboard08

  • Done !

Now you can close Unity and start to work with this package in a new Unity project

Use the HoloToolkit Unity Package in a Unity project

  • Create a new 3D project in Unity
  • Now we must import the HoloToolkit package. Select the menu [Assets / Import Package / Custom Package]

clipboard11

  • This option will show us the elements of the Unity Package we want to import. For this sample, I will import one package a couple of weeks old to show the correct way of update a package later.

clipboard12

  • At this time, Unity is responsible for importing all the elements (this is similar to copy all the files in the Assets directory)
  • Once imported, you can see all the items in the Assets directory

clipboard14

  • We can now begin to work with the HoloToolkit assets in our Unity project

Update a HoloToolkit package in Unity

  • In this scenario we will perform the same steps to import a package
  • The important point here, is when there are changes in the package. We will we be warned when we are going to import the package
  • For example in the picture below you can see changes in the file [Build / Editor / BuildDeployWindow.cs] and new files in [Imput / Plugins / … ]

clipboard15

  • This allows us to know the changes which exist between different versions of a package, and also to select the items that we want to use

 

And this is the correct way to work with Unity Packages applied to HoloToolkit.

Greetings @ Toronto

El Bruno

References

#Hololens – Forma correcta de trabajar con #Unity packages y #HoloToolkit

Hola !

Ayer en una juntaba online / virtual con otros Hololens developers, uno de ellos comentó la forma correcta de utilizar paquetes en Unity. En realidad, el ejemplo que comentó (y que yo compartiré aquí) es sobre la forma correcta de utilizar HoloToolkit.

Yo he escrito algunos posts sobre HoloToolkit, y ayer me di cuenta que copiar los contenidos al directorio [Assets] en un proyecto de Unity 3D funciona, sin embargo hay una forma mejor. Para esto describiré los pasos necesarios en 3 escenarios de ejemplo con HoloToolkit.

Crear un Unity Package para HoloToolkit

  • Clonar / descargar la última versión de HoloToolkit desde GitHub
  • Abrir Unity y seleccionar la opción “Open project”
  • Seleccionar el folder “HoloToolkit-Unity-master”

clipboard03

  • Unity creará un nuevo proyecto y en los Assets del mismo veremos el contenido de HoloToolkit
  • En el panel Projects, seleccionar el folder Assets, desplegar el menú contextual y seleccionar la opción [Export Package]

clipboard05

  • Seleccionar los elementos a exportar. Por defecto es aconsejable dejar todo seleccionado, aunque si tienes experiencia con estos Assets puedes crear un package a medida

clipboard06

  • Seleccionar el directorio y destino y crear el Unity Package. Personalmente, prefiero tener un paquete por cada conjunto grande de cambios que exista en HoloToolkit, es por eso que le agrego el sufijo año, mes y dia a cada paquete

clipboard08

  • Done !

Ahora ya podemos cerrar Unity y trabajar con este paquete en un nuevo proyecto de Unity

Utilizar HoloToolkit Unity Package en un proyecto de Unity

  • Crear un nuevo proyecto 3D en Unity
  • Ahora debemos importar el paquete de HoloToolkit. Para esto seleccionamos el menú [Assets / Import Package / Custom Package]

clipboard11

  • Esta opción nos mostrará los elementos del Unity Package que queremos importar. En este caso importaré uno de hace un par de semanas para mostrar la forma correcta de actualizar un package luego.

clipboard12

  • En este momento, Unity se encarga de importar todos los elementos (esto es similar a copiar todos los archivos en el directorio Assets)
  • Una vez importado, podemos ver todos los elementos en el directorio Assets

clipboard14

  • Ahora ya podemos comenzar a trabajar con los elementos de HoloToolkit en nuestro proyecto de Unity

Actualizar un Package de HoloToolkit en Unity

  • En este escenario realizaremos los mismos pasos para importar un paquete
  • Lo que nos puede llamar la atención es que si hay cambios en el paquete, se nos avisará de los mismos al momento de importarlos
  • Por ejemplo en la siguiente imagen podemos ver cambios en el archivo [ Build / Editor / BuildDeployWindow.cs] y archivos nuevos en [Imput / Plugins / … ]

clipboard15

  • Esto nos permite conocer que cambios existen entre las diferentes versiones de un package y además seleccionar los elementos que queremos importar.

Y esta es la forma correcta de trabajar con Unity Packages aplicada a HoloToolkit.

Saludos @ Toronto

El Bruno

References

#Hololens – Create a project with Spatial Mapping and Gaze Cursor in 5 minutes

Hi !

After a couple of posts on HoloToolkit, I’ll share the basic steps to use Spatial Mapping in a Unity 3D project. I’ll do this as a memory backup, since always forget something when I’m creating a project.

  • Create a project 3D in Unity3D
  • Clone HoloToolkit Unity and copy it to the [Assets] folder in our project
  • Save the Scene. I strongly suggest to create a folder named [Scenes] inside the folder [Assets] folder of our project, and save here the scene
  • Unity will process these changes, this usually take a minute
  • At the root of the project in the Hierarchy panel, delete Main Camera and Directional Light
  • In the Projects panel search Main Camera and add it to the root of the Hierarchy. Main Camera is in [Assets / HoloToolkit / Utilities / Prefabs]
  • In Hierarchy, create an Empty Object and rename it as [Managers]
  • In the Projects panel search Cursor and add it within the element as [Managers]. Cursor is in [Assets / HoloToolkit / Utilities / Prefabs]
  • Select the [Managers] element in the Hierarchy and in the Inspector panel, press [Add Component]. Type and select [Gaze Manager] in the search and add it
  • In the properties of [Gaze Manager] open the combo of [Raycast Layer Mask] and deselect [TransparentFX]

Note: Looking at the source code of [CursorManager.cs] I realized that it also uses [GazeManager], and it is necessary to add it to the project. This took me like crazy a couple of days until I gave with the solution.

  • In this moment already have a project that us shows the Gaze in them elements of the environment where we use the Hololens. Is time of adding Spatial Mapping.
  • In the panel Projects search SpatialMapping and add it to the root of Hierarchy. SpatialMapping is in [Assets / HoloToolkit / SpatialMapping / Prefabs]
  • Now is time of configure the project to be “Hololens capable”
  • This it explained in the first tutorial of the Hololens Academy in the section [Export the project from Unity to Visual Studio]

The following video demonstrates the functionality of Spatial Mapping included in the HoloToolkit Unity. I’ve also added the option to enable it or disable it making an AirTap on a cube we see in the environment in front of us.

And ready, this my personal memory reminder !

Greetings @ Toronto

El Bruno

References

#Hololens – Creando un proyecto con Spatial Mapping y Gaze Cursor en 5 minutos

Hola !

Después de escribir un par de posts sobre HoloToolkit, voy voy a apuntar los pasos para poder usar Spatial Mapping en un proyecto, ya que siempre se me olvida algo.

  • Crear un proyecto 3D en Unity3D
  • Clonar HoloToolkit Unity y copiarlo a al carpeta [Assets] de nuestro proyecto
  • Guardar la Scene. Recomiendo crear una carpeta [Scenes] dentro de la carpeta carpeta [Assets] de nuestro proyecto
  • Aquí Unity procesará estos cambios, y esto suele tardar un minuto
  • En la raíz del proyecto, eliminar Main Camera y Directional Light
  • En el panel Projects buscar Main Camera y agregarlo a la raíz de Hierarchy. Main Camera está en [Assets / HoloToolkit / Utilities / Prefabs]
  • En Hierarchy crear un Empty Object y renombrarlo como [Managers]
  • En el panel Projects buscar Cursor y agregarlo dentro del elemento como [Managers]. Cursor está en [Assets / HoloToolkit / Utilities / Prefabs]
  • Seleccionar el elemento [Managers] en Hierarchy y en el panel Inspector, presionar [Add Component]. Seleccionar [Gaze Manager] en la búsqueda y agregar el mismo.
  • En las propiedades de [Gaze Manager] desplegar el combo de [Raycast Layer Mask] y deseleccionar [TransparentFX]

Nota: Viendo el código del script [CursorManager.cs] me dí cuenta de que el mismo utiliza también [GazeManager], y es necesario agregarlo al proyecto. Esto me tuvo como loco un par de días hasta que dí con la solución.

  • En este momento ya tenemos un proyecto que nos muestra el Gaze en los elementos del entorno donde usemos las Hololens. Es momento de agregar Spatial Mapping.
  • En el panel Projects buscar SpatialMapping y agregarlo a la raíz de Hierarchy. SpatialMapping está en [Assets / HoloToolkit / SpatialMapping / Prefabs]
  • Ahora es momento de configurar el proyecto para que sea “Hololens capable”.
  • Esto lo explican en el primer tutorial de la Hololens Academy en la seccion [Export the project from Unity to Visual Studio].

El siguiente vídeo muestra la funcionalidad de Spatial Mapping que tenemos en el HoloToolkit, yo además he añadido la opción de habilitarlo o deshabilitarlo haciendo un AirTap sobre un cubo que vemos en el ambiente.

Y listo, con esto no se me pasa más un paso para montar este tipo de proyecto!

Saludos @ Toronto

El Bruno

References

#Hololens – #Holotoolkit, Scenes automatic configuration, cool Build options and more

Hello!

A few days ago I wrote a post on HoloToolkit, a great set of Unity assets which are very useful if we create 3D apps. Today, I almost accidentally discovered that in addition to assets for the creation of apps, HoloToolkit adds a few useful menu options in Unity.

Let´s review the basic way to install and use HoloToolkit

  • Create a 3D project in Unity
  • Download the latest HoloToolkit version from Github
  • Unzip and copy the contents of HoloToolkit to the Assets folder of the new Unity3D project
  • This process may take a while since Unity processes all the elements that have been added to the project

Clipboard01

  • Once added and processed all the HoloTookit items, we can see them in the Project panel

Clipboard14

  • In addition, and this is so interesting, we have a new menu in Unity called “HoloToolkit”

Clipboard16

  • In the new menu, we can find several options, as for example the ability of adjust the Scene where are working with them options that need for a project for Hololens. This usually is translated in
    • Set MainCamera X,Y,Z positions to 0
    • Set MainCamera ClearFlags from Skybox to SolidColor
    • Set MainCamera Background color to Solid Black
    • Set MainCamera NearClippingPlane to 0.85
  • In the following video we can see how this option saves us 5 minutes of work

2016 08 30 HoloToolkit apply scene settings

  • “Build Window” option also allows us to accelerate the build process a little bit. I found some problems with this option, since once the Open SLN is not working fine, we can not change the IP of deploy and other details.

Clipboard02

  • I guess that it will be a question of reporting these bugs and see if any update fixes them. Or, if I have more time, learn a bit of scripting of Unity and see if I can solve something and share it (this last it see little likely)

Greetings @ Toronto

El Bruno

References

#Hololens – #Holotoolkit, configuración automática de Scenes, opciones de Build y más

Hola !

Hace unos días escribí un post sobre HoloToolkit, un gran complemento para Unity cuando creamos apps 3D. Hoy, casi sin querer he descubierto que además de assets propios para la creación de apps en Unity agrega unas opciones de menú bastante útiles.

Repasemos la forma de instalar y utilizar HoloToolkit

  • Crear un project 3D en Unity
  • Descargar la última versión de HoloToolkit de Github
  • Descomprimir y copiar el contenido de HoloToolkit al directorio Assets de nuestro proyecto
  • Este proceso puede tardar un poco ya que Unity procesa los elementos que se han agregado al proyecto

Clipboard01

  • Una vez agregados y procesados los elementos del HoloToolkit, los podremos ver en el panel Project

Clipboard14

  • Además, y esto es lo interesante, tenemos un nuevo menú en Unity llamado “HoloToolkit”

Clipboard16

  • En el mismo encontramos varias opciones, como por ejemplo la capacidad de ajustar la Scene donde estamos trabajando con las opciones que necesitamos para un project para Hololens. Esto usualmente se traduce en
    • Set MainCamera X,Y,Z positions to 0
    • Set MainCamera ClearFlags from Skybox to SolidColor
    • Set MainCamera Background color to Solid Black
    • Set MainCamera NearClippingPlane to 0.85
  • En el siguiente vídeo podemos ver como esta opción nos ahorra 5 minutos de trabajo

2016 08 30 HoloToolkit apply scene settings

  • La opción “Build Window” nos permite también acelerar un poco el proceso de compilación. Aquí me he encontrado algunos problemas, ya que una vez compilado el proyecto algunas opciones no abren la solución, tampoco podemos cambiar la IP de deploy y otros detalles más.

Clipboard02

  • Supongo que será cuestión de reportar estos errores y ver si alguna actualización los soluciona. O, si tengo más tiempo, aprender un poco de scripting de Unity y ver si puedo solucionar algo y compartirlo (esto último lo veo poco probable)

Saludos @ Toronto

El Bruno

References

#Hololens – #Holotoolkik, amazing set of assets to create #Unity3D apps for Hololens

Hello!

Today I change 2D for 3D dev and Visual Studio 2015 / UWP by Unity. When you start working with Unity3D and Hololens, you should know about HoloToolkit.
The Microsoft Hololens product team has created and shared HoloToolkit, which is a set of assets which provide features such as spatial mapping, client / server support to share holograms among multiple users, cursors, gestures features, and more.

It is fairly easy to install a Unity project:

Clipboard01

  • Copy the contents downloaded from […\HoloToolkit-Unity-master\Assets\] to the [Assets] folder in the new project
  • And after Unity process those changes, we can begin to use the new assets.

Clipboard03

Obviously, we need to do some extra clean up, and remove the folder [HoloToolkit-Examples]. Although this is a good resource to use as reference of use of some assets.

This weekend I will end up published my 1st App in the store for the Hololens and the coming week I will continue posting on the matter!

Greetings @ Toronto

El Bruno

References

#Hololens – #HoloToolKit, imprescindible colección de Assets para crear Hololens Apps

Hola !

Hoy cambio el 2D por el 3D y Visual Studio 2015 y UWP por Unity. Y claro, cuando comienzas a trabajar con Unity3D para Hololens, una de las cosas que debes conocer es HoloToolkit

El equipo de producto de Hololens ha creado HoloToolkit, que es un set de assets que proveen funcionalidades como spatial mapping, soporte cliente / servidor para compartir hologramas entre varios usuarios, cursores, manejo del gestos, y más.

Es bastante fácil de instalar un proyecto Unity :

Clipboard01

  • Copiamos el contenido descargado de [..\HoloToolkit-Unity-master\Assets\] a la carpeta [Assets] de nuestro proyecto
  • Y después de que Unity procese los cambios, ya podemos comenzar a utilizar los assets agregados.

Clipboard03

Obviamente, en este punto hay que limpiar un poco, y eliminar la carpeta [HoloToolkit-Examples], aunque es un buen recurso para tener en cuenta como referencia de uso de algunos assets.

Este fin de semana terminaré de publicar mi 1ra App en el store para las Hololens y la semana que viene seguiré posteando al respecto!

Saludos @ Toronto

El Bruno

References