-
VIVE Wave
-
SDK
- What is VIVE Wave?
- Where can I download the Wave SDK?
- How do I access the Wave Developer Community forum?
- How do I fix compile or build errors after importing a custom package?
- How do I put controllers into a scene?
- How do I switch heads with different tracking pose settings in the same scene?
- How do I switch between 6DoF and 3DoF in the same scene?
- Why can't I receive events or click on the system overlay?
- How do I get controller objects in runtime?
- How do I show or hide the controller pointer?
- How do I change the controller model object from Root to Emitter?
- How do I know if a controller sends an event?
- How do I set the controller position in a rotation-only environment?
- How do I display only one controller in a scene?
- How do I find out the distance of the head from the floor?
-
Distributing your app
-
-
VIVE SRWorks
-
VIVE Eye and Facial Tracking
- Where can I download the VIVE Eye and Facial Tracking SDK and runtime?
- How do I calibrate eye tracking?
- What drivers are required for VIVE Eye and Facial Tracking?
- How do I update the VIVE Eye and Facial Tracking runtime?
- How do I update the VIVE Pro Eye firmware?
- When starting my app, why does Windows prompt for permission to make changes?
- The eye camera version shows "N/A". Is that a problem?
- If I encountered other eye tracking issues, what should I do?
- I encountered eye calibration initialization and OpenCL errors. What should I do?
- Can eye tracking work when using the VIVE Wireless Adapter?
- If the user has visual impairment, what happens to the calibration data?
- What's the trackable FOV? How about the tracking accuracy?
-
VIVE Hand Tracking
- Does the Hand Tracking SDK support VIVE Cosmos?
- Are there prebuilt samples available, and where can I find them?
- My Unity build throws this exception: "DllNotFoundException: aristo_interface". What should I do?
- I encountered this error: "Start Detection Error: Camera". What should I do?
- I encountered this error: "Start Detection Error: OpenCL". What should I do?
- Is there a way to improve hand detection accuracy?
-
VIVE 3DSP Audio
- Are there tutorials for the VIVE 3DSP Audio SDK?
- How do I know if there's a public release for the SDK?
- How do I quickly enable VIVE 3DSP Audio SDK to add enhanced support for 3D sound effects in Unity?
- Does 3DSP Audio SDK have any hardware dependencies?
- Can VIVE 3DSP Audio SDK be used in conjunction with other spatialization SDKs?
-
VIVEPORT
-
VIVE Business Streaming
-
Facial tracking
-
Hand tracking
-
VIVE Wrist Tracker
- How do I use VIVE Wrist Tracker with VIVE Focus 3 for PC VR apps?
- How do I set VIVE Wrist Tracker options?
- How do I use VIVE Wrist Tracker as VIVE Tracker?
- How do I use VIVE Wrist Tracker for hand tracking?
- How do I use VIVE Wrist Tracker as VIVE Tracker for Native or Unity?
- How do I use VIVE Wrist Tracker as VIVE Tracker for Unreal Engine?
-
How do I get controller objects in runtime?
WaveVR uses the
Controller Loader to load the controller in runtime. Therefore, controller objects cannot be modified in Editor.
In Assets > WaveVR > Extra > GenericModel > Resources > Controller, the Generic Controller Model prefabs shows the structure of a WaveVR controller.
The prefab contains the Controller Model, Controller Beam, and Controller Pointer.
Go to Find the Beam and Pointer in the controller model (sample code) to learn how to get the Beam and Pointer.
Find the Beam and Pointer in the controller model (sample code)
Follow the steps below to find the Beam and Pointer.
- Listen to the CONTROLLER_MODEL_LOADED broadcast to receive the controller instance.
- Find all the children of the controller.
-
Find GameObject with beam/pointer in the children.
private GameObject dominantController = null, nonDominantController = null; void OnEnable() { WaveVR_Utils.Event.Listen (WaveVR_Utils.Event.CONTROLLER_MODEL_LOADED, OnControllerLoaded); } void OnControllerLoaded(params object[] args) { WaveVR_Controller.EDeviceType _type = (WaveVR_Controller.EDeviceType)args [0]; if (_type == WaveVR_Controller.EDeviceType.Dominant) { this.dominantController = (GameObject)args [1]; listControllerObjects(this.dominantController); } if (_type == WaveVR_Controller.EDeviceType.NonDominant) { this.nonDominantController = (GameObject)args [1]; listControllerObjects(this.nonDominantController); } } void OnDisable() { WaveVR_Utils.Event.Remove (WaveVR_Utils.Event.CONTROLLER_MODEL_LOADED, OnControllerLoaded); } private void listControllerObjects(GameObject ctrlr) { if (ctrlr == null) return; WaveVR_Beam _beam = null; WaveVR_ControllerPointer _pointer = null; // Get all children. GameObject[] _objects = new GameObject[ctrlr.transform.childCount]; for (int i = 0; i < ctrlr.transform.childCount; i++) _objects[i] = ctrlr.transform.GetChild (i).gameObject; // Find beam. for (int i = 0; i < _objects.Length; i++) { _beam = _objects [i].GetComponentInChildren<WaveVR_Beam> (); if (_beam != null) break; } if (_beam != null) Debug.Log ("Find beam: " + _beam.name); // Find pointer. for (int i = 0; i < _objects.Length; i++) { _pointer = _objects [i].GetComponentInChildren<WaveVR_ControllerPointer> (); if (_pointer != null) break; } if (_pointer != null) Debug.Log ("Find pointer: " + _pointer.name); }
Was this helpful?
Yes
No
Submit
Thank you! Your feedback helps others to see the most helpful information.