How to create controller model to fit your requirements?

Introduction

WaveVR provides independent script of controller related function to fulfill your needs, the easiest way to use controller in WaveVR is to use WaveVR_ControllerLoader prefab, you can get all functionalities of WaveVR controller in this prefab and you have nothing to do when you use another real device.

WaveVR_ControllerLoader integrates features as below:

Scripts Purpose
WaveVR_ControllerInstanceManager (new in SDK 3.0) Apply policy from OEM to manage controller beam.
WaveVR_PoseTracker Manage device’s tracking pose and decide to show/hide object.
WaveVR_RenderModel Get controller model from real device and draw to Unity’s scene.
WaveVR_AdaptiveControllerActions Show color on mapped mesh when you press/touch the key on the real device.
WaveVR_ShowIndicator Show tips for the buttons.
WaveVR_Beam Show a beam from controller root.
WaveVR_ControllerPointer Show a pointer based on controller.

Please confirm all above features meet your requirements when you design a scene. However, you may only need 1 or 2 functions from above list, please use dedicated script instead.

If you want to You may use Note
Show controller model of real device WaveVR_RenderModel  

Get controller tracking pose and want WaveVR

to decide when to show/hide your controller.

WaveVR_PoseTrackerManager You have only 1 between 2 choices.

Get controller tracking pose only but don’t want

WaveVR to decide when to show/hide your controller.

WaveVR_DevicePoseTracker or

WaveVR_ControllerPoseTracker

Show tips on your controller. WaveVR_ShowIndicator

Your controller’s button need

follow naming rule by WaveVR.

Show different color when you press/touch keys. WaveVR_AdaptiveControllerActions
Draw a beam from controller WaveVR_Beam  
Draw a pointer. WaveVR_ControllerPointer  

Moreover, you may combine several scripts to customize your controller. For example:

Case 1: I want to show controller model of real device, need WaveVR to provide pose and decide when to show or hide.

Empty object + WaveVR_PoseTrackerManager.cs WaveVR_RenderModel.cs

Case 2: I have a customized controller model and need WaveVR to provide pose only.

Customized controller + WaveVR_DevicePoseTracker.cs or WaveVR_ControllerPoseTracker.cs

Case3: I prefer to follow all policies by WaveVR but used my designed controller model.

Customized controller + WaveVR_PoseTrackerManager.cs