#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 – #Error: Unable to activate Windows Store app ‘!App’. The activation request failed with error ‘The system cannot find the file specified’.

Hello!

If you are creating a Hololens app with Unity3D, you probably spend some time to get used to having 3 open tools to work: Unity, a Visual Studio 2015 IDE for the edition of C# and other Visual Studio 2015 IDE for build, debug, and deploy (if you need to debug and deploy, of course).

So, I found myself in the following scenario: time to deploy or debug an App from Visual Studio to the Hololens and Visual Studio returns a timeout with the following error message:

 

—————————
Microsoft Visual Studio
—————————
Unable to activate Windows Store app ‘<your package names goes here>!App’. The activation request failed with error ‘The system cannot find the file specified’.
See help for advice on troubleshooting the issue.
—————————
OK Help
—————————

It’s pretty simple: the remote app in the device cannot be launched. If I also try to launch the app in the Hololens device from the “start menu”, the app seems not to respond.

But it gets weird. I’ve not have made any change in the project of Unity, I only rebuilt the Unity project to get new Visual Studio files. A workaround which works is repeating all the steps from zero in a new project, and, you know: everything works fine. But sometimes, it gets back and thrown this error.

This is a list of some of the tests that I did, and at the end was still having the same problem.

  • Delete the app on the device and deploy the binaries it again
  • Clean and Rebuild from the Visual Studio’s build IDE
  • Change the certificate from Visual Studio’s build IDE and increase the version number
  • Change the name of the app from within the Visual Studio build IDE, along with the name of the publisher
  • Close the build IDE and delete the directories that create Unity for the compilation

clipboard02

And luckily, I reached a stage which allowed me to continue working from Unity without having to replicate all the work from scratch. Let me share all the necessary steps:

  • In Unity access to the Player Settings
  • Menu [Edit / Project Settings / Player]
  • In the panel Inspector, select Windows as a platform
  • In [Publishing Settings / Certificate], create a new certificate

clipboard02

And it works! Is curious because is similar to what I tried to perform from the IDE but without success. Creating the cert From Unity, it seems to work.

I’ll keep this post as a reminder for the next time.

Update: Thanks to Dimi in the comments, this behaviour also applies when we are upgrading Unity projects. Now we have the version 5.5 and the upgrade process may also break the certificate signature. So, this fix will restore the project.

Greetings @ Toronto

El Bruno

#Hololens – #Error: Unable to activate Windows Store app ‘!App’. The activation request failed with error ‘The system cannot find the file specified’.

Hola !

Si estas creando alguna app con Unity3D para Hololens, seguramente te haya tomado un tiempo el acostumbrarte a tener 3 herramientas abiertas para poder probar algo: Unity, un IDE de Visual Studio 2015 para la edición de C# y otro IDE de Visual Studio 2015 para la compilación, depuración y despliegue (si necesitas depurar y desplegar, claro).

Pues bien, un escenario que me encontrado frecuentemente al momento de desplegar o depurar desde Visual Studio hacia las Hololens es el siguiente. Visual Studio da un timeout con el siguiente mensaje de error:

—————————
Microsoft Visual Studio
—————————
Unable to activate Windows Store app ‘<your package names goes here>!App’. The activation request failed with error ‘The system cannot find the file specified’.
See help for advice on troubleshooting the issue.
—————————
OK Help
—————————

Es bastante simple: no se puede lanzar la app en remoto en el device. El problema está en que si lanzamos la app en Hololens desde el “menú inicio”, la app parece no responder tampoco.

Lo más curioso sobre esto, es que me ha pasado en ocasiones donde no he realizado ningún cambio en el proyecto de Unity, solo he recompilado los binarios. Una solución que funciona sin problemas, es repetir los pasos desde cero en un proyecto nuevo, y todo funciona a la perfección. Hasta que vuelve este error.

Este es un listado de alguna de las pruebas que hice, y al final seguía teniendo el mismo problema.

  • Borrar la app en el device y desplegarla nuevamente
  • Clean y Rebuild desde el Visual Studio de compilación
  • Cambiar el certificado desde el Visual Studio de compilación e incrementar el número de versión
  • Cambiar el nombre de la app desde el Visual Studio de compilación, junto con el nombre del publisher
  • Cerrar el IDE de compilación y eliminar los directorios que crea Unity para la compilación

clipboard02

Y por suerte, llegué a un escenario que me ha permitido seguir trabajando desde Unity sin tener que replicar todo el trabajo desde cero.

  • En Unity acceder a las Player Settings
  • Menu [Edit / Project Settings / Player]
  • En el panel Inspector, seleccionar Windows como plataforma
  • En [Publishing Settings / Certificate], crear un nuevo certificado

clipboard02

Y funciona! Es curioso porque es similar a lo que intenté realizar desde el IDE pero no funcionó. Desde Unity parece funcionar.

Me guardo el post como reminder para la próxima.

Saludos @ Toronto

El Bruno

#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 – #Unity3D and error CS0227: Unsafe code requires the `unsafe’ command line option to be specified

Hello!

I was working and deleting some Assets in one Hololens Unity3D project, when I came across the following compilation error:

Assets/HoloToolkit/Sharing/Scripts/SDK/AnchorDownloadRequest.cs(58,22): error CS0227: Unsafe code requires the `unsafe’ command line option to be specified

If you are .Net developer you understand the context for this error, the message is asking us to enable a compilation flag to compile unsafe code.

My first task was a quick search, and I found the way to do this in Unity is following these steps

  • Create a text file named “smcs.rsp”
  • Edit the file and add the text “-unsafe”
  • Copy the file to the Assets folder in our Unity3D project

1 minute later I was able to build the project without problems. And I went back to see the HoloToolkitUnity contents, and I realize the file was inside it and that was one which I deleted in my “cleaning” process

po

Lesson learned!

Greetings @ Toronto

El Bruno

References

#Hololens – #Unity y el error CS0227: Unsafe code requires the `unsafe’ command line option to be specified

Hola !

Hoy estaba eliminado Assets que pensaba que no eran necesarios en Unity para un proyecto con las Hololens, cuando me encontré con el siguiente error de compilación:

Assets/HoloToolkit/Sharing/Scripts/SDK/AnchorDownloadRequest.cs(58,22): error CS0227: Unsafe code requires the `unsafe’ command line option to be specified

Este error es conocido para los que programamos en .Net, y lo que nos pide es habilitar un flag de compilación para poder generar código unsafe.

Mi primer recurso fue una búsqueda rápida y en la misma encontré que la forma de hacer esto en Unity es

  • Crear un archivo de texto llamado “smcs.rsp”
  • En el mismo agregar el texto “-unsafe”
  • Copiar el mismo a la carpeta Assets de nuestro proyecto

1 minuto después estaba compilando sin problemas. Y claro, fue ver el contenido de HoloToolkitUnity y ver que este archivo estaba dentro del mismo y que fue uno de los que borré en el proceso de “limpieza”

po

Lección aprendida !

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