Hola !
Ahora que ya tengo conectado el mando de XBoxOne a las Hololens, y escribí sobre la base para trabajar con el mismo, hoy veremos algunas de las funcionalidades de la clase “Game Controller Manipulator“, que es parte de HoloToolkit.
Esta clase nos permite hacer varias cosas, sin tener que agregar ni una línea de código:
- Seleccionar y mover un holograma dentro del PoV del usuario de Hololens
- Rotar un holograma sobre sus 3 ejes
Veamos un ejemplo de esta clase funcionando.
Importante: He encontrado un error en los pasos de configuración y he actualizado el post para solucionar los mismos.
Empezamos por lo básico con los siguientes pasos
- Create a 3D project in Unity3D
- Configure project to support HoloLens projects
- Clean Scene elements
- Import HoloToolkit package
- Add
- HololensCamera
- SpatialMapping
- Uncheck the property “Draw Visual Meshes”
- DefaultCursor
- InputManager
- Add Empty element, Managers
- Add existing scripts
- Game Controller Manipulator
- Check the option “Move Gaze Target”
- Add existing scripts
- Add Empty element, HoloCollection
- Add 3D elements
- Cube
- Position, x:0 y:0 z:2
- Rotation, x:0 y:0 z:0
- Scale, x:0.3 y:0.3 z:0.3
- Cube
- Add 3D elements
- Edit – project settings – Input
- Add element
- Name: ControllerLeftStickX
- Gravity: 0
- Dead: 0.19
- Sensitivity: 1
- Type: Joystick Axis
- Axis: X Axis
- Add element
- Name: ControllerLeftStickY
- Gravity: 0
- Dead: 0.19
- Sensitivity: 1
- Type: Joystick Axis
- Axis: Y Axis
- Add element
- Name: ControllerTriggerAxis
- Gravity: 0
- Dead: 0.19
- Sensitivity: 1
- Type: Joystick Axis
- Axis: Y Axis
- Add element
La configuración del Cube quedaría similar a la siguiente imagen:
La sección de input quedaría similar a la siguiente imagen:
Ahora veamos un poco lo que puede hacer el script Game Controller Manipulator. Lo primero que vems es que el mismo tiene la siguientes propiedades
En estas props se utilizan los valores custom que agregamos en las settings de Input del proyecto. Además las 2 últimas propiedades son importantes
- En “Rotate modifier button name” indicamos el nombre de un botón del mando de XboxOne. En este caso Fire2 se corresponde con el boton B. Mientras tengamos presionado el mismo y movamos los joysticks del mando, el holograma que este apuntado con el Gaze, girará sobre sus ejes X, Y y Z.
- Si seleccionamos “Move Gaze Target”, cuando presionemos el botón “Fire 1” (botón A en el mando) podremos mover el holograma seleccionado utilizando los joysticks del mando.
En estos 2 escenarios vemos como en las propiedades de la clase se definen cuáles son los elementos de Input que se utilizan para mover el objeto de trabajo.
Finalmente comentar que esta clase se puede utilizar de 2 formas
- Si se selecciona la opción “Move Gaze Target”, el movimiento y rotación se aplicará al holograma al que esté apuntando el Gaze.
- Si se asocia el script a un elemento y no se selecciona la opción “Move Gaze Target”, las opciones de mover y rotar se aplicarán al elemento
Saludos @ Toronto
El Bruno
References
- GitHub, HoloToolkit
- GitHub, HoloToolkit Unity
- El Bruno, How to Import the HoloToolkit Unity
- El Bruno, How to place a Hologram using AirTap and HoloToolkit
- El Bruno, Creating a menu with options with HoloToolkit
- El Bruno, Using voice commands to display a menu with HoloToolkit
- El Bruno, How to create a 3D text always visible using HoloToolkit
- El Bruno, How to create a HUD (3D text always visible without HoloToolkit)
- El Bruno, How to detect hands using HoloToolkit
- El Bruno, Windows 10, Xbox One Controller, Bluetooth and some lessons learned
- El Bruno, How to use Fire Buttons actions with an XBoxOne Controller
- El Bruno, HoloToolkit compiled packages for Unity3D in GitHub
- El Bruno, How to detect AirTap and Click actions using HoloToolkit (updated!)
- El Bruno, Detect user hand interactions using #HoloToolkit (update!)
- Unity, Input Manager
- Unity, Input Class Reference