Hola !
Durante estos ultimos meses HoloToolkit ha cambiado mucho. Estos cambios hacen que algunos de los ejemplos que he escrito ya no sean válidos. En el post de hoy, explicaré rápidamente como implementar la detección de manos con la versión actual de HoloToolkit.
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
- CursorWithFeedback
- Add Empty element, Managers
- Add existing scripts
- Gaze Managers
- Gaze Stabilizer
- Input Manager
- 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
- AnchorText (from HoloToolkit)
- Position, x:0 y:0.35 z:2
- Rotation, x:0 y:0 z:0
- Scale, x:0.3 y:0.3 z:0.3
- Cube
- Add 3D elements
- Into the Manager collection
- Add script Text Debug Manager (later on the post)
- Drag the Anchor Text (7.1.2) into the Anchor Debug Text Property
- Add script Text Debug Manager (later on the post)
Este es el proceso básico de creación de un proyecto de Hololens, lo que haremos ahora es crear un script que detecte alguna de las acciones con las manos del usuario de Hololens. Este script mostrará en modo debug estas acciones en el AnchorText que he agregado a la colección de Hologramas.
Para este ejemplo llamaré al script “TextDebugManager.cs“. El código del mismo es el siguiente
using HoloToolkit.Unity.InputModule; using UnityEngine; public class TextDebugManager : MonoBehaviour, IHoldHandler, IInputHandler { public TextMesh AnchorDebugText; private string _debugTextHold = ""; private string _debugTextInput = ""; void Update() { UpdateText(); } private void UpdateText() { if (AnchorDebugText != null) AnchorDebugText.text = string.Format( "Hold: {0}\nInput: {1}", _debugTextHold, _debugTextInput); } public void OnHoldStarted(HoldEventData eventData) { _debugTextHold = "OnHoldStarted"; } public void OnHoldCompleted(HoldEventData eventData) { _debugTextHold = "OnHoldCompleted"; } public void OnHoldCanceled(HoldEventData eventData) { _debugTextHold = "OnHoldCanceled"; } public void OnInputUp(InputEventData eventData) { _debugTextInput = "OnInputUp"; } public void OnInputDown(InputEventData eventData) { _debugTextInput = "OnInputDown"; } }
Dentro de la clase he implementado las interfaces “IHoldHandle“ e “IInputHandler“. Luego se muetran las operaciones de estar interfaces en el Update() del script. De esta forma, podemos implementar un modelo de Debug en una app de Hololens de una forma rápida, y en este caso, para capturar las interacciones del usuario sobre los Hologramas.
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, Moving and rotating holograms using an XBoxOne Controller
- El Bruno, How to detect AirTap and Click actions using HoloToolkit (updated!)