Release Notes

Contents

Release 3.1.4

SDK

Changes

  1. Improve the performance of system recording for device maker.

Bug fixes

  1. Fix bugs of the Adaptive Quality.
  2. Fix bugs for input device mapping failure when input device not support volum up/down. Need to update wave_server.apk to solve this issue.
  3. Fix bugs which may result in present right eye image to both eyes when applying partial texture and present with different left/right eye uv values.

Known Issues

Pluginkit SDK

Bug dixes

  1. Enhance device config data (disableVirtualDpad) let this configuration data can work if didn’t use setVirtualDpadSupport to enable disableVirtualDpad.

Unity

Changes

  1. Remove emulation-switching in DirectPreview options.
  2. Not to export log to file of DirectPreview Server.
  3. Set default Auto Graphics API false and Graphics Apis OpenGLES3.
  4. Improve DirectPreview stability.

Bug fixes

  1. Fixed foveation function not working in IL2CPP build.

Unreal

Bug fixes

  1. Fixed “The battery did not show when controller is in left-handed mode” issue.
  2. Fixed “Z-Fighting problem” by following the NearClippingPlane value in Project Settings.
  3. Fixed Unreal presenting the right eye image to both eyes if disable MultiView feature.

Known Issues

  1. Do not support IME in current version.

Release 3.1.1

SDK

Changes

  1. Renamed SDK API from WVR_TriggerVibrator to WVR_TriggerVibration.
  2. Simplify WVR_RenderConfig enum which contains WVR_RenderConfig_Default, WVR_RenderConfig_Disable_SingleBuffer, WVR_RenderConfig_Disable_Reprojection and WVR_RenderConfig_sRGB.
  3. WVR_GetSyncPose will no longer be blocked by vsync, instead, WVR_SubmitFrame will not return until the next vsync middle is coming.
  4. Fixed the issue that controller icons would be on the wrong side when the controller devices turned on.

Added

  1. Added new SDK API WVR_SetPosePredictEnabled for APP to have predicted HMD’s position, and Controllers’ rotation & position. HMD’s rotation prediction is always on. Note Pose Prediction.
  2. Added new InputId_Alias1_Back for WVR_InputId definition for controller device.
  3. Added How to support 64bit VR AP and 64 bit Support Limitation.
  4. Add WVR_SubmitExtend_PartialTexture in WVR_SubmitExtend enum and WVR_TextureLayout_t in WVR_TextureParams_t. It can specify the region of submitting texture.
  5. Support different kind of texture target by adding WVR_TextureTarget_2D_DUAL, WVR_TextureTarget_2D_EXT_DUAL and WVR_TextureTarget_VULKAN in WVR_TextureTarget enum.
  6. Add AdaptiveQuality 1.0. It can change CPU and GPU clock dynamically by calling WVR_EnableAdaptiveQuality . Using WVR_IsAdaptiveQualityEnabled to check if platform supports.
  7. Add WVR_EventType_RecommendedQuality_Lower and WVR_EventType_RecommendedQuality_Higher in WVR_EventType. They are used to inform developer to change quality when AdaptiveQuality enabled.
  8. Support submitting VkImage. Please check wvr_vulkan header.
  9. Disable watchdog when debug build.
  10. Release performance HUD tool. Performance Profiling.
  11. Support fade-out current Activity. Fade current Activity.

Bug fixes

  1. Fixed app crashed issue when app invokes onDestroy() more than once.
  2. Fixed bug and return error when starting camera before App resuming.
  3. Fixed Unity 2018.3 and later may crash because of allowing EGL_KHR_no_config_context.

Known Issues

  1. Performance HUD tool does not support Unreal in this version.

Pluginkit SDK

Added

  1. Added new Config supportedPositionPrediction. Only if true, WVR_SetPosePredictEnabled is able to predict for that device over position.
  2. Added new Config supportedRotationPrediction. Only if true, WVR_SetPosePredictEnabled is able to predict for that device over rotation.
  3. Added new InputId_Alias1_Back for WVR_InputId definition.
  4. Added How to support 64bit VR Device and 64 bit Support Limitation.
  5. Added new Config “maxSwipePoints”, “minSwipeLength” as the threshold to trigger swipe events.

Unity

Added

  1. Support Co-existence with DayDream and Oculus.
  2. Added Direct Preview feature(Alpha version).
  3. Added Customized AndroidManifest.xml folder at “Assets/WaveVR/Platform/Android/Customize/”.
  4. WaveVR_PermissionManager added new api for requestUsbPermission.
  5. WaveVR_Utils added GetControllerName API.
  6. Allow developer to adjust resolution in runtime.
  7. [Important] Added Scripts/EventSystem/WaveVR_GazeInputModule.cs.
  8. Added 64 bit Support.
  9. Added AdaptiveQuality feature and provide related APIs.
  10. Stereo Rendering mode can switch between SinglePass and MultiPass at runtime. Switch need reset the WaveVR_Render or just use different “WaveVR” prefab.

Change

  1. Do NOT allow gameObject with WaveVR_ControllerLoader to be set as controller in InputModuleManager.

  2. Improve WaveVR_Camera performance in SinglePass.

  3. Use GL.Clear() to replace LoadingCanvas.

  4. Developer can specify background color for the loading period.

  5. Set gaze to timer trigger if WaveVRButtons is not put in scene.

  6. Due to 2.1.8 and older server device service key table is wrong, needing to check capability of key mapping table.

  7. [Important] WaveVR_InputModuleManager.cs and InputModuleManager prefab are changed. If developer used
    1. WaveVR_InputModuleManager script in custom object,

    2) InputModuleManager prefab in custom scene, developer would need to check the parameters of WaveVR_InputModuleManager & InputModuleManager in new SDK.

  8. Move logic of reading OEM CONFIG of Beam&Pointer to ControllerLoader.

  9. If no controller connected and hmd enter button is unavailable, set Gaze to timger trigger.

  10. If there is only 1 controller and type is not focus, controller beam & pointer will be hidden by WaveVR_PoseTrackerManager.

  11. ControllerInstanceManager apply config of enabling single beam logic

  12. Change android targetSdkVersion to 26 and Unity 5.6 is no longer supported.

  13. [Important]Refine the button usage in scripts.
    1. Remove class WaveVR_ControllerInputModule.EControllerButtons, use WaveVR_ButtonList.EButtons instead.
    2. Remove volume keys from WaveVR_ButtonList.EButtons due to volume evens are enabled by default if device has volume keys and cannot be disabled.
    3. Remove WaveVR_InputModuleManager.OtherButtonToTrigger and WaveVR_ControllerInputModule.OtherButtonToTrigger due to its bad usage in architecture.
    4. Change WaveVR_InputModuleManager.ButtonToTrigger and WaveVR_ControllerInputModule.ButtonToTrigger to List<WaveVR_ButtonList.EButtons>
  14. Always overrides system settings of controller beam & pointer in ControllerLoader.

Bug fixes

  1. WaveVR_ControllerPointer fixed an issue that used a shared mesh in Unity built-in Quad to edit, instead of editing a copy object.
  2. WaveVR_ControllerLoader fixed exception by zero reset memory after alloc.
  3. Fixed controller pose is unexpected high in “InteractionMode Test” test scene.
  4. WaveVR_RenderModel loads default model when we cant find FBX from device service.
  5. Fixed controller is shown in gaze mode.

Removed

  1. WaveVR_ControlelrLoader removed menu of asset bundle creating.
  2. [Important] Set Scripts/Extra/GazeInputModule.cs to obsoleted.

Unreal

Changes

  1. Change android TargetSDKVersion to 26.
  2. Apply WaveVROEMConfig APIs on AdaptiveController, ControllerInstanceManager, LinePointer, RenderModel.
  3. Change WaveVRGetKeyValue API to WaveVR|OEMCONFIG API in WaveVR_Pawn.
  4. Override GameActivity.finish() to quit android application.
  5. Reset button states if device is disconnected.
  6. If no controller connected and hmd enter button is unavailable, set Gaze to timer trigger. - Refine WaveVR_Pawn gaze feature. - Add function IsButtonAvailable().
  7. Replace WVR_TriggerVibrator with WVR_TriggerVibration due to the change of wvr api.

Added

  1. Support MultiView and MultiView(Direct). Developer need choose GLES3.0 only in Unreal Project Settings when using MultiView.
  2. Support MultiSample 1~4X.
  3. Support arm64 build.
  4. Support custom multiple buttons for interaction click event.
  5. Added BP function SetPosePredictEnabled.
  6. Added WaveVROEMConfig class and APIs.
  7. Added WaveVR_IsEnableSingleBeam API.
  8. Added Software IPD feature.
  9. Added RenderMask feature.
  10. Added HMD Back key in button event & Unreal Input.
  11. Added Thumbstick to Unreal Input.
  12. Added AdaptiveQuality feature and provide related APIs.
  13. Added requestUsbPermission API to support OTG device.

Removed

  1. Set WaveVRJson APIs to deprecated.
  2. Set IsBatteryInfo API to deprecated.
  3. Removed Digital Trigger from Unreal Input since it won’t be SetInputRequest

Bug fixes

  1. Fixed “warm start HelloVR will show grey band in middle of screen” issue.
  2. Fixed “Controllers disappear while teleport” issue.
  3. Fixed HomeKey name in Chinese.

Known Issues

  1. Do not support IME in current version.

Release 3.0.2

SDK

Changes

  1. Renamed SDK API from WVR_GetDeviceErrorStatus to WVR_GetDeviceErrorState. WVR_GetDeviceErrorState queries the abnormal state whether is existed on the device.

  2. Rename SDK folder name and apk name. To see details SDK Folder Change List.

  3. Refined WVR_AnalogType name and id, please check the enum definition in file wvr_devices.h for detail.

    • Changed from WVR_AnalogType_TouchPad to WVR_AnalogType_2D
    • Changed from WVR_AnalogType_Trigger to WVR_AnalogType_1D
  4. Enable render Mask with Texture Target. Please refer to WVR_RenderMask.

Added

  1. WVR_SetInputRequest MUST be invoked after WVR_Init otherwise the app can NOT receive any key events from WAVE SDK 3.0 and later. To see detail.
  2. Added new SDK API WVR_GetInputMappingPair and WVR_GetInputMappingTable to get input device mapping result.
  3. Added new SDK API WVR_GetInputDeviceAnalogType to get input device analog type.
  4. Added new SDK API WVR_SetArmModel for APP to have simulated controller position with Arm Model, also a SDK API WVR_SetArmSticky to customize its behavior.
  5. Added new SDK API WVR_SetNeckModel for APP to have simulated HMD position with Neck Model.
  6. Added new WVR_InputId_Alias1_Enter and WVR_InputId_Alias1_Thumbstick for WVR_InputId definition.
  7. Added a checkpoint for checking the positions of controllers to adjust controller roles when client got the pose ready event.
  8. Support fixed foveation rendering. Please refer to WVR_RenderFoveation API.
  9. Support overfill function. Please refer to WVR_SetOverfillRatio .
  10. Support submit EGLImage directly.
  11. Support submit frame without doing distortion correction.
  12. Disable screenshot/cast if application set window to FLAG_SECURE.
  13. Support OEM performance module for device maker to config performance based on Application request.

Known Issues

  1. When we press the trigger button, the light blue effect of trigger key won’t show in app built with the SDK before version 2.1.8 or earlier.
  2. Unreal app is not supported for pressing HMD volume button to do unpair controller, need to go back to launcher or other unity app to do unpair controller operation.
  3. Plugin faceplate and switch device service to finch controller and connect finch with HMD, finch controller will be disconnected with HMD when unplug faceplate and there is no controller scanner in the scene, need to umount and mount HMD again to recover.

Bug fixes

  1. Add error handling when bit table is invalid.
  2. Fixed the issue of updating setting table from settings AP while system is setting the dominant hand.

Unity

Changes

  1. [Important] Getting runtime status is changed:
    • Real Connection:
      • Passive: developer can listen to event WaveVR_Utils.Event.ALL_VREVENT to get the connection status of Head, Dominant Controller and NonDominant Controller
      • Proactive: developer should use WaveVR_Controller.Input().connected to get the connection status of Head, Dominant Controller and NonDominant Controller
    • Valid Pose:
      • Passive: developer can listen to event WaveVR_Utils.Event.DEVICE_CONNECTED to check whether the pose of Head, Dominant Controller and NonDominant Controller is valid.
      • Proactive: developer should use WaveVR.Instance.getDeviceByType ().connected to check whether the pose of Head, Dominant Controller and NonDominant Controller is valid.
    • Left-Handed Mode:
      • Passive: developer can listen to event WaveVR_Utils.Event.DEVICE_ROLE_CHANGED to get the device role change event.
      • Proactive: developer should use WaveVR_Controller.IsLeftHanded to check left-handed mode. (True: left-handed)
  2. Assume developer uses InputModuleManager and set parameters as below:
    • Custom Input Module: Gaze
    • BtnController: True (means using controller button to controll)
    • With Time Gaze: False (means no timer)

    In runtime, if controller disconnected, Gaze module would use timer.

  3. Set HMD enter button to trigger Gaze as default.

  4. [Important] wvr.cs is changed:
    • Added API WVR_GetInputDeviceAnalogType
    • Added API WVR_SetNeckModel
    • Added API WVR_SetArmModel
    • Added API WVR_SetArmSticky
    • Added API WVR_SetInputRequest
    • Added API WVR_GetInputMappingPair
    • Added API WVR_GetInputMappingTable
    • Added API WVR_GetDeviceErrorState
    • Added API WVR_IsRenderFoveationSupport
    • Added API WVR_RenderFoveation
    • Removed API WVR_GetDeviceErrorStatus
    • Added enum WVR_PeripheralQuality
    • Added enum WVR_DeviceErrorState
    • Added enum WVR_SimulationType
    • Changed enum WVR_DeviceType
    • Changed enum WVR_InputId
    • Changed enum WVR_AnalogType
    • Changed enum WVR_ScreenshotMode
    • Changed enum WVR_SubmitExtend
    • Changed enum WVR_Eye
    • Added struct WVR_InputAttribute_t
    • Added struct WVR_InputMappingPair_t
    • Added struct WVR_RenderFoveationParams
  5. [Important] Change Unity plugin device type.

    From SDK3.0, developer will not see type “right” or “left” in component inspector. Instead, the device type will be “Dominant” or “NonDominant”. In right-handed mode, the “Dominant” hand will be right device. In left-handed mode, the “Dominant” hand will be left device. Here is the change file list. If developer used these files of previous version SDK to make customized prefabs, developer would have to check the value of fields in prefabs due to old types are removed from SDK3.0

    • Extra/GazeInputModule.cs
    • Extra/FollowTransform.cs
    • WaveVR.cs
    • WaveVR_AdaptiveControllerActions.cs
    • WaveVR_Beam.cs
    • WaveVR_Controller.cs
    • WaveVR_ControllerInputModule.cs
    • WaveVR_ControllerInstanceManager.cs
    • WaveVR_ControllerListener.cs (this file is obselete)
    • WaveVR_ControllerLoader.cs
    • WaveVR_ControllerManager.cs and its client function SetDeviceIndex
    • WaveVR_ControllerPointer.cs
    • WaveVR_ControllerPoseTracker.cs
    • WaveVR_ControllerRootToEmitter.cs
    • WaveVR_DevicePoseTracker.cs
    • WaveVR_EventSystemControllerProvider.cs
    • WaveVR_InputModuleManager.cs
    • WaveVR_PointerCameraTracker.cs
    • WaveVR_PoseTrackerManager.cs
    • WaveVR_RenderModel.cs
    • WaveVR_Reticle.cs
    • WaveVR_SetAsEventSystemController.cs
    • WaveVR_TrackedButtons.cs
  6. [Important] added / removed parameters and changed name of parameters of Prefab:
    • Beam.prefab
    • ControllerLoader.prefab
    • ControllerPointer.prefab
    • InputModuleManager.prefab

    Developer should check local customized prefabs.

  7. [Important] changed public variables name of Script:
    • WaveVR_ControllerLoader.cs
    • WaveVR_Beam.cs
    • WaveVR_ControllerPointer.cs

    Developer should check source code to which is related.

  8. In ControllerLoader.prefab, developer can customize beam & pointer.

  9. WaveVR_Beam.cs and WaveVR_ControllerPointer.cs is unbundled from WaveVR event system.

    Developer can not set raycast mode and related settings in WaveVR_Beam and WaveVR_ControllerPointer anymore. Developer should review related source code about using WaveVR_Beam and WaveVR_ControllerPointer.

  10. Send DEVICE_ROLE_CHANGED broadcast only when resuming and receving WVR_EventType_DeviceRoleChanged event

  11. In Mouse mode, use WaveVR_Render.Instance.righteye as right camera position, WaveVR_Render.Instance.lefteye as left camera position.

  12. Refine button behaviour of WaveVR_ButtonList & WaveVR_Controller
    • Input ID 1~15: provide press event only.
    • Input ID 16~18: provide press & touch event / axis.
  13. Send OEM_CONFIG_CHANGED event if runtime config value has been changed.

  14. Move VR Support check and symbol define addition to WaveVR_RenderBuildPecessor. Because the BuildCheck.cs might be removed by developer. :>

  15. In WaveVR_Settings, add more description for VR SinglePass.

  16. WaveVR_Render remove unused Gaze option, and refine CenterCamera.

    CenterCamera no need be modified to narrow viewport when playing because the Gaze won’t need it any more. When Playing, disable the CenterCamera.

  17. The attached camera is not required by WaveVR_Render.

  18. WaveVR_Render inspector has more settings and is able to set customized camera. If set, WaveVR_Render will not create new camera when expand stage.

  19. Updated all controller tips for supported language.

  20. Rename some unity files.
    • rename wavevr_internal.aar to wvr_internal.aar
    • rename wavevr_pidemo.aar to wvr_pidemo.aar
    • rename wavevr_resdemo.aar to wvr_resdemo.aar
    • rename wavevr_resindicator.aar to wvr_resindicator.aar
    • rename wavevr_unity_plugin.aar to wvr_unity_plugin.aar
    • rename wavevr_unity_plugin_2017.aar to wvr_unity_plugin_2017.aar
    • rename WaveVR.unitypackage to wvr_unity_sdk.unitypackage
    • rename Sample.unitypackage to wvr_unity_samples.unitypackage
    • rename WaveVR_SimulatorServer.apk to wvr_plugins_simulator_server.apk
    • rename HelloVRUnity.apk to wvr_unity_hellovr.apk
    • rename VRTestAppUnity.apk to wvr_unity_vrtestapp.apk

Added

  1. Added press-effect support for Grip, DPad_Left, DPad_Up, DPad_Down, DPad_Right, Trigger.

  2. Added support for custom ButtonList and InputMapping.

  3. Added ControllerInstanceManager to manage event, beam, pointer of controller instances.
    • There are different behavior in client application build with SDK 3.0.2 runs on different version of WaveVR runtime.
      • Application + runtime 3.0.2 - All applications are aligned focus controller.
      • Application + runtime 2.1.8 or older - Every application has its owned focus controller and isn’t sync with other applications.
    • If you are using application built with SDK 2.1.8 or older
      • Both 2 controllers are focus controller (able to interact with other objects/actors).
  4. Controller loader added support for FBX format.

    The loading priority is below: 1. FBX 2. Assetbundles 3. Client resource 4. Generic model

  5. Added system default controller tips.

  6. [Important] added new Prefab:
    • WaveVRButtons.prefab

    Developer should read documents “Buttons (new in SDK3.0) about button usage.

  7. [Important] add new Script:
    • WaveVR_ButtonList.cs

    Developer should read documents “Buttons (new in SDK3.0) about button usage.

  8. Developer can change WaveVR_Beam settings in runtime

  9. Support of new buttons: WVR_InputId.WVR_InputId_Alias1_Thumbstick & WVR_InputId.WVR_InputId_Alias1_Enter.

  10. Added “OtherButtonToTrigger” in InputModuleManager prefab. Developer can choose multiple buttons to trigger event.

  11. Added “UnityMouseMode” in WaveVR_ControllerInputModule, developer can change the value to let input module behaves like Unity mouse.

  12. New cameras : BothEyes, CenterEye

  13. New Delegates to listen to Camera Expand and status change.

  14. An experimental feature stereo rendering path: SinglePass.

    Developer can enable it by WaveVR_Settings (Preference). Old multipass rendering path still available.

  15. A RenderMask support for SinglePass

    RenderMask CommandBuffer will set to camera every frame.

  16. Support Foveated Rendering. Use FOV to set the foveated region.

  17. WaveVR prefab added the FoveatedRendering part. Default is disabled in WaveVR prefab.

  18. Added FoveatedRendering prefab. Put it into scene to enable a static foveated rendering. Developer can control it by script.

  19. Added WaveVR_RenderModel.cs to support

    merge multiple meshes to one mesh. customize emitter mesh to decide position/rotation of beam/pointer. show battery indicator provided by controller provider. broadcast DS_ASSETS_NOT_FOUND event when FBX is not found.

  20. Added “Controller Tips”, “Controller Instance Manager”, “Render Model”, “ScreenShot”, “RenderMask”, “Teleport”, “Button” tests to VRTestApp.

  21. Added a toggle to enable/disable Simulator and disable simulator by default.

  22. Simulator added controller button support.

Removed

  1. Switch custom hand in runtime.
  2. WaveVR_CavasEye are modified for new WaveVR_Render architecture.
  3. WaveVR_CavasEye can be only available in MultiPass. Suggest not to use.
  4. Removed “VirtualWall_test” scene in unity test app.
  5. Set WaveVR_TrackedButtons to obseleted interface.

Bug fixes

  1. Let touch dot effect more floating to touchpad.
  2. Fixed ControllerLoader memory leakage.
  3. Fixed “Get InputButtonState/InputTouchState did not work when use simulator” issue.
  4. Fixed Assets/Plugins/WaveVR_Simulator.dll not found in some computers.
  5. Fixed null reference exception when no focus window.

Known Issues

  1. When we press the trigger button, the light blue effect of trigger key won’t show in app built with the SDK before version 2.1.8 or earlier.
  2. If play switches beam during casting to an object, the object will not receive event from origin controller anymore.
  3. Use ControllerLoader prefab and uncheck “Track Position”. Even if ControllerLoader has parent with any position, the controller position will always be (0, 0, 0)
  4. Use WaveVR_PoseTrackerManager.cs standalone at a GameObject and set the “Track Timing” to “When Update”. The children objects of the GameObject will be hidden.
  5. Sometimes controller pointer will change after unplugging / plugging faceplate on Head Mount Device with SDK2.1.8 ROM.

Unreal

Changes

  1. Upgrade to Unreal Engine version 4.21.

  2. Changed spawn controller model from AdaptiveControllerBP to WaveVR_AdaptiveController, WaveVR_RenderModel, WaveVR_LinePointer.
    • Added WaveVR_AdaptiveController blueprint to replace AdaptiveControllerBP’s function of Pose/Event.
    • Added WaveVR_LinePointer blueprint to replace AdaptiveControllerBP’s function of beam/pointer.
      • Support line and pointer starting from custom emitter.
      • Support enable/disable line/pointer option.
    • Added WaveVR_RenderModel blueprint to replace AdaptiveControllerBP’s function of model/effect.
      • Merge multiple meshes to one bone.
      • Support battery indicator
      • Support custom emitter.
      • Support reading touchpad information.
      • Support auto key mapping.
  3. Changed controller model position from Cast to WaveVR_pawn location to the location output to “get Wave VRInput Device Position” which is set to HMD.

  4. Update generic controller model.

  5. Refine button behaviour
    • Input ID 1~15: provide press event only.
    • Input ID 16~18: provide press & touch event / axis.

    Developer can get all button events from WaveVREventCommon

  6. Change simulation pose options from true/false to force/no/when no position

  7. Hide controller when invalid pose.

  8. Apply texture size which derived from WVR_GetRenderTargetSize instead of monitor resolution.

  9. Changed test scenes of VRTestApp.
    • Added left controller to InputMode_test.
    • Added sound volume to SeaOfCube_test.
  10. wvr_device.h: enum WVR_SimulationType values are changed.

  11. Rename vr.permission.client.aar to wvr_permission_client.aar

  12. Rename simulator apk from WaveVR_SimulatorServer.apk to wvr_plugins_simulator_server.apk.

Added

  1. Added ControllerInstanceManager to manage beam/pointer and event.
    • There are different behavior in client application build with SDK 3.0.2 runs on different version of WaveVR runtime.
      • Application + runtime 3.0.2 - All applications are aligned focus controller.
      • Application + runtime 2.1.8 or older - Every application has its owned focus controller and isn’t sync with other applications.
    • If you are using application built with SDK 2.1.8 or older
      • Both 2 controllers are focus controller (able to interact with other objects/actors).
  2. Added auto reloading meshanism when render model is different.
  3. WaveVR Unreal SDK supports MotionController buttons below:
    • Touchpad: mapping to MotionController (R/L) Thumbstick
    • Trigger: mapping to MotionController (R/L) Trigger
    • Menu: mapping to MotionController (R/L) Facebutton1
    • DPad Up: mapping to MotionController (R/L) Thumbstick Up
    • DPad Right: mapping to MotionController (R/L) Thumbstick Right
    • DPad Down: mapping to MotionController (R/L) Thumbstick Down
    • DPad Left: mapping to MotionController (R/L) Thumbstick Left
  4. Add TriggerHapticPulse to vibrate controller.
  5. Support for new WVR_InputId.WVR_InputId_Alias1_Enter
  6. Added broadcast of ALL WaveVR button event. (not MotionController)
  7. Provide onConfigChanged callback when runtime OEM Config is changed.
  8. Added new APIs SetTrackingHMDPosition/SetTrackingHMDRotation/IsTrackingHMDPosition/SetTrackingOrigin3Dof.
  9. Added GetTexture2DFromImageFile feature.
  10. Added Splash Screen feature.
  11. Added Foveated Render feature.
  12. Added Screenshot APIs.
  13. Added Splash Screen Test, Forveation Test, Screenshot Test into VRTestApp.

Removed

  1. Remove WaveVRMotionControllerComponent
  2. Deprecated GetNumOfDof/SetNumOfDof.
  3. Deprecated AdaptiveControllerBP blueprints.

Bug fixes

  1. Fixed “Axis did not work when use instant play” issue.
  2. Trigger axis is incorrect.
  3. Axis of Thumbstick & Trigger is incorrect if GetAxis more than 1 time in a frame.
  4. Only one controller can take effect on Widget when both controllers are connected.
  5. The same actor receives the EXIT event from both controllers.

Known Issues

  1. Do not support IME in current version.

Pluginkit SDK

Changes

  1. Modified the build.gradle in device service project, merge grpc related dependencies into vr.pluginkit. Remember to remove the three dependencies “compile ‘io.grpc:grpc-okhttp:0.13.2’, compile ‘io.grpc:grpc-protobuf-nano:0.13.2’, compile ‘io.grpc:grpc-stub:0.13.2’.
  2. Add buttonId capabiity check inside setButtonPress(boolean press, int buttonId, long nanoTime). If the config inside TrackedDevice.Config.supportedButton for the buttonId is set to 1, the function can work.
  3. Add buttonId capabiity check inside setButtonTouch(boolean press, int buttonId, long nanoTime). If the config inside TrackedDevice.Config.supportedTouch for the buttonId is set to 1, the function can work.
  4. Add analogId capabiity check inside updateAnalog(int analogId, PointF axis, long nanoTime). If the config inside TrackedDevice.Config.supportedAnalog for the buttonId is set to 1, the function can work.

Added

  1. Added a new API setErrorState for developers to set or remove the abnormal states which occur by device.
  2. Added a new enumeration “DeviceErrorState” for replacing the original enumeration “DeviceErrorStatus”, which represents the current states of the device - normal or abnormal.
  3. Added new API registerDevice and unregisterDevice to replace getDevices. To see detail.
  4. Added three classes “VRCameraInterface”, “VRCameraData” and “VRCameraHandle” for camera developer. See also VRCameraInterface.
  5. Added a new field inside TrackedDevcie.Config to represent analog type.
  6. Added new InputId_Alias1_Enter and InputId_Alias1_Thumbstick for InputId definition.

Removed

  1. Removed abstract getDevies function form VRDeviceService
  2. Removed connect and disconnect function form VRDeviceService
  3. Removed abstract isConnected function form VRDevice

Release 2.1.8

Hardware

Notice

  1. New 6DoF controller Dev. Kit. has “Trigger” key with analog data. Please handle both “WVR_InputId_Alias1_Trigger” and “WVR_InputId_Alias1_Digital_Trigger” in your content app for the numerous controller types support.

SDK

Bug fixes

  1. Fixed cannot controller MTP overlay sometimes when gaze mode.
  2. Fix server suspend may encounter DS IPC mechanism didn’t suspend.
  3. Fixed the issue that Simple OEMService causes an app crashed because of sending server ready twice.
  4. Fixed controller beam hitting view of overlay but no response.
  5. Fixed black screen when running on specific device (Skyworth).
  6. Fixed ipd change does not update sometimes.
  7. Fixed a crash issue which was occurred when user started or reset an APP.
  8. Fixed cast fail and black screen when running second round WVR_Init
  9. Fixed crash sometimes when using two controllers.

10.Fixed virtual wall sometimes appears on the wrong timing after resuming.

Known Issues

  1. Only one controller can control overlay, such as quick menu, permission dialog and so on.

Unity

Changes

  1. Changed behavior to destroy controller when real device is disconnect or render model name is different.
  2. Changed adaptive loading to support FBX file, export button effect, beam and indicator option to controller loader.
  3. Changed controller tips for zh_cn, zh_tw language.

Added

  1. Show WaveVR relative attributes when building apps.
  2. Interaction add custom hand support.
  3. Add controller tips for RU, CS language.

Removed

  1. Removed the default value of NumDoFHMD, NumDoFController, and NumController in AndroidManifest.xml.

Bug fixes

  1. Fixed ControllerLoader memory leakage by cleaning native mesh.
  2. Fixed TrackedButtons naming conflicted with Steam VR
  3. Fixed Simulator not working when WIFI is connected.
  4. Fixed gazeTriggerType_System value when OverrideSystemDefault is not clicked.
  5. Fixed beam issues:Beam will disappear if beam mode is switched from other mode to mouse mode.Beam in flexible beam mode is NOT flexible.If there are two controllers in scene, only one controller beam changes following beam mode.
  6. Fixed issue of touch dot effect inactive between Apps switch.
  7. Read QualitySettings.activeColorSpace value at game thread to enable development build.
  8. Fixed Build Target group not switch to Android issue in DefaultPreferenceDialog.
  9. Fixed black screen issue after Unity 2018.1.2f1.

Unreal

Changes

  1. Set default values when cast WaveVR_Pawn failed in AdaptiveControllerBP. (no WaveVR_Pawn exists)
  2. Update projection matrix when IPD changed in WVR.
  3. Use Pawn without casting to WaveVRPawn location to spawn controller model.
  4. Set default values when cast WaveVRPawn failed in AdaptiveControllerBP. (no WaveVRPawn exists)
  5. Decouple CameraTexture plugin and sample and refine VRTestApp for camera.
  6. Reset orientation same as runtime pose while take off and on HMD if triggered Teleport.
  7. Do not set pose as 0, pose will be the same as the last valid one when pose is invalid.
  8. Move “Enable Input Simulator” feature from Controller to WaveVR_Pawn
  9. Hide controller when pose is invalid.
  10. Increase the arm model elbow pitch angle from degree 60 to 90.

Added

  1. Add Instant play feature.
  2. Add button event handling to Controller and Gaze for 3D objects of Editor Mode
  3. Add AskWaveVRPawnToTeleport_Event a bool NeedRotateYaw due to we do not make orientation change by default.
  4. Add TouchpadPress event.
  5. Add Enter/Exit event in WaveVR_Pawn for beam mouse mode.
  6. Add VR Mode while run on WVR path to increase performance.

Removed

  1. Remove mouse click event handling in AdaptiveControllerBP.
  2. Remove unhover event from interaction_interface.

Bug fixes

  1. Fix “Gaze will be triggered when switching interaction mode from Controller”
  2. Fix “Show native volume key while run on WVR path”
  3. Fix “Quick Manu cannot show after pause/resume” issue.
  4. Fix “Abnormal Quit” issue by solving assertion message.

Known Issues

  1. Do not support button effect in current version.
  2. Do not support IME in current version.
  3. Do not support WaveVR simulator in current version.

Pluginkit SDK

Changes

  1. Modified VRDevice lifecycle, call onResume/onPause after onStart

Added

  1. Added new pluginkit API setSwipeDistanceThreshold to adjust the minimum movement of swipe motions on touchpad

Release 2.1.0

SDK

Changes

  1. WaveVR server supports the functions with API Level 2. See detail in WVR Version Check.
  2. Refined WVR_EventType name and id, please check the enum definition in file wvr_types.h for detail.
  3. Renamed WVR_InputId_9 alias mapping from WVR_InputId_Alias1_Bumper to WVR_InputId_Alias1_Digital_Trigger.
  4. Supports pose reporting velocity and angular velocity.
  5. Supports overlay controller model dynamically loading from device service.
  6. Extend triggering time of Gaze to 3 seconds in overlay.
  7. Enlarge Gaze circle to 1.5 times in overlay.

Added

  1. Added new SDK API WVR_InAppRecenter for APP to make specific recenter within app. Note that the effect of re-center in app will be reset while the app is onPause.
  2. Supports interaction mode to switch controller or gaze content scene. See wvr_device.h for detail.
  3. Supports gaze trigger type to switch timeout or button trigger. See wvr_device.h for detail.
  4. Added WVR_SetPerformanceLevels API for Qualcomm SVR platform.
  5. Added new SDK API WVR_IsOverlayValid to check if overlay release after Android suspended.
  6. Added new SDK API WVR_SetNeckModelEnabled to enable/disable neck model.
  7. Runtime return zero position for 3dof scene AP (WVR_PoseOriginModel_OriginOnHead_3DoF).
  8. Added transition when switch to passenger mode.

Removed

  1. Deprecated WVR_TriggerRecenter API.
  2. Deprecated WVR_TrackingModeEvent_t struct.
  3. Deprecated WVR_Hexagon_t struct.

Bug fixes

  1. Fixed issue of WVR client is no default height for origin on ground.
  2. Fixed App hung when previous App out of boundary.
  3. Fixed jitter and no available texture sometimes when using StereoRenderer.
  4. Fixed black screen when missing properties files in device service.
  5. Fixed App black screen when the second time launching on Mali GPU.
  6. Fixed unity reload scene may cause abnormal when doing miracasting.
  7. Fixed controller cannot rebind after removing bonding.
  8. Fixed loading animation will always show up when user turns on/off virtual wall in more setting.
  9. Fixed the issue of server crash which is caused when server tried to unregister a controller after clearing all devices.
  10. Fixed the performance dropping when enable/disable passenger mode.
  11. Improved the overlay performance.
  12. Fixed scene shaking issue while HMD is static.
  13. Fixed screen mess after APP resumed.
  14. Fixed an issue which would occur recursive execution when system checked the positions of all of devices. This issue would appear that the moment controller role(right hand/left hand) should be exchanged.

Unity

Changes

  1. Replaced button name Bumper with Digital_Trigger.
  2. Replaced keyword trackpad with touchpad.
  3. Replaced WVR_EventType_Settings_Controller with WVR_EventType_DeviceRoleChanged
  4. Supports interaction mode to handle both user settings and system settings by using OverrideSystemSettings flag.
  5. Supports WaveVR Unity Plugin build passed on Unity 2018.
  6. Show generic controller model with old version wavevr service.
  7. Make the controller beam of fixed beam to be solid line and could be adjusted during design stage.
  8. Fine tune Interaction algorithm for System Focus. 1) Disable gaze icon when losing focus. 2) WaveVR_TrackedButtons does not check button state when losing focus.
  9. Update Finch controller model.
  10. Refine algorithm of Interaction Mode and Pose Tracker Manager.
    • We used 4 variables to determine whether to hide object with pose tracker or not. There are 2 kinds of pose tracked object: (1) Normal object : shown when connected && has system focus && pose updated. (2) Controller : shown when connected && has system focus && pose updated && not Gaze mode.
    • Hide pose tracked objects on AP start.
    • Use Gaze.EnableGaze and Controller.EnableController to record custom setting of Input Module.
    • Use InteractionMode_System to record system setting of Input Module.
    • Add broadcast of INTERACTION_MODE_CHANGED and SYSTEMFOCUS_CHANGED
    • Reset interaction mode and gaze trigger type to system settings when disabled (leave scene)
    • If interaction mode is Gaze only, (1) Hide event controller (including model, beam and pointer), (2) Not influence other GameObjects those are using WaveVR_PoseTrackerManager.
    • If interaction mode is NOT Gaze only, (1) Show event controller if connected, (2) Not influence other GameObjects.
  11. Change generic controller model to Finch.
  12. Export adaptive loading option.
  13. Using reload scene to apply SetQualityLevel instead of pause/resume for applyExpensiveChanges is true.

Added

  1. Added SetPerformanceLevels function.
  2. Added adaptive loading feature to controller loader. 1st priority is adaptive loading, next is generic model.
  3. Added interaction mode/gaze trigger type.
  4. Hide controller when interaction mode - gaze only.
  5. Support neck model in PoseTrackerManager and DevicePoseTracker.
  6. Added option to toggle adaptive loading.
  7. Support WaveVR simulator in editor.

Removed

  1. Removed Finch/Link/Pico/iQiyi controller model in SDK package.
  2. Removed libwvrDistortion.dll from apks.
  3. Removed the default value of “com.htc.vr.content.NumDoFHmd”, “com.htc.vr.content.NumDoFController”, and “com.htc.vr.content.NumController” from AndroidManifest.xml. Please refer to Configure App Capabilities to know how to configure your content app.

Bug fixes

  1. Fixed an issue which application would be black screen for 20 seconds and then crashed while pressing controller app button after Home button pressed.
  2. Reset button states while controller role change.
  3. Fixed black screen issue when controller role Change.
  4. Fixed AP can’t receive “WVR_EventType_DeviceRoleChanged” event while in background issue.
  5. Do NOT gaze if no system focus.
  6. Correct touch dot effect position.
  7. Reset button state after resume.
  8. Fixed render memory leakage.
  9. Fixed AssetBundleCreate for unity 2018.
  10. Fixed the beam length of other controller mode could not be recovered after switching interface between controller and Gaze.
  11. Fixed null pointer exception if no InputModuleManager in interaction mode.
  12. Controller Input Module still works when no system focus.
  13. Fixed sometimes beam is not controlled.
  14. Fixed GameObject with PointerEnter is not released when controller is hidden.
  15. Fixed when setting OverrideSystemSettings from false to true, interaction mode is not reset to user settings.
  16. Fixed memory leakage of WaveVR_Beam.

Unreal

Changes

  1. Replaced WVR_EventType_Settings_Controller with WVR_EventType_DeviceRoleChanged.
  2. Replaced button name Bumper with Digital_Trigger.
  3. Default disable telepot feature on WaveVR_Pawn.
  4. Changed WVR_Event name to fit SDK.
  5. Corrected camera image format value of CameraTexture.
  6. Reset button states while receive WVR_EventType_DeviceRoleChanged event.
  7. Change reticle color to white.
  8. Change beam color to white.
  9. Upgrade to fit UE4.19.
  10. Export FollowHMD and SimulationPose to controller loader.
  11. Change and refine PermissionManager behavior.
  12. Changed logic to add generic controller model to adaptive controller if resource loading failed.
  13. Changed loaded controller model base on WaveVRPawn location.
  14. Changed button support in PIE to AdaptiveController
  15. Changed the style of spinning reticle and beam of Controller.
  16. Changed generic controller model.
  17. Change interaction mode mechanism.
  18. Upgrade to Unreal Engine version 4.20.

Added

  1. Added permissions for accessing VRSettings.
  2. Added IsInputFocusBySystem condition to avoid showing controller while showing system menu.
  3. Added GetSupportedNumOfDoF/GetNumOfDoF/SetNumOfDoF in Blueprint function library.
  4. Added all common events broadcast.
  5. Added Adaptive Controller Loader feature
  6. Load generic controller model when FBX/PNG reading failed.
  7. Added spinning reticle.
  8. Added AskWRPawnToDispatcher on WaveVRPawn to trigger Teleport.
  9. Default use “touch pad” button to trigger onClick event on Widgets. And automatically trigger holver/unhover by controller beam or gaze.
  10. Added controller mouse mode for widget.

Removed

  1. Removed static function of PermissionManager.
  2. Removed indicator feature of Controller Model.
  3. Remove redundant WaveVRController APIs from Blueprint
  4. Remove all resources of Finch/Link blueprint.

Bug fixes

  1. Fixed “volume key on HMD not work”.
  2. Fixed Hide Controller model logic.
  3. Fixed Gaze point lost focus.
  4. Fixed AP can’t receive “WVR_EventType_DeviceRoleChanged” event while in background.
  5. Fixed local reference overflow of PermissionManager
  6. Fixed touch up / press up event is not received after switching hand.
  7. Fixed “Can’t launch on U11-Link” issue.
  8. Fixed “First frame not updated after doing Teleport immediately” issue
  9. Fixed “Black edge” issue.
  10. Fixed return value of isPermissionGranted.
  11. Fixed adaptive loader crash on API_LEVEL_1 server
  12. Fixed Simulated controller will flash at level starting issue.
  13. Fixed Memory leakage on adaptive loader,camera texture and WaveVRHMD.
  14. Fixed reticle and spinning reticle hidden by scene objects issue.
  15. Fixed “controller model shown with stripes” issue.
  16. Fixed “click event of mouse mode keep be sent when button is pressed continuely.” issue
  17. Fixed “beam is disappeared after move controller behind head and back in front of head” issue
  18. Fixed wrong pose on first frame while doing Teleport.
  19. Fixed warning messages.
  20. Fixed interaction mode is not reset to user settings when setting OverrideSystemSettings from false to true.
  21. Fixed 2D permisssion request issue.

Known Issues

  1. Do not support button effect in current version.
  2. Do not support IME in current version.
  3. Do not support WaveVR simulator in current version.

Pluginkit SDK

Changes

  1. Modified VRDeviceService onBind() must return super.onBind().

Added

  1. Add document of “Configure Device Capabilities” about defining capability of device for filtering app.

Removed

  1. Removed attribute include Attr_IsHWRecenter_Bool and Attr_Is6DoFTracking_Bool.

Release 2.0.37

SDK

  1. Fixed “While out-of-boundary, invoking SetArenaVisible to ForceOn virtual wall will cause the scene is black.”
  2. Fixed camera feature cannot work on 3-DoF mode.
  3. Release texture memory while app goes to background.
  4. Inform 6/3Dof Mode change to AP and DeviceService.
  5. Enable miracast + single-eye presentation.
  6. Fixed watchdog timeout on WVR_StartRender.
  7. Change android minSDKVersion to 25.
  8. 3/6 DoF mode switch configured by More Settings.
  9. Fixed miracast HMD and TV screen are both abnormal.
  10. Replace WVR_EventType_RecenterSuccess with WVR_EventType_RecenterSuccess_3DoF event when device is 3-DoF or in 3-DoF tracking mode.

Unity

  1. Change controller indicator “Trackpad” -> “Touchpad”.
  2. Add the button control feature to Gaze function.
  3. Reset button state after controller role is changed.
  4. Fix issue: AP does NOT receive role change event while in background.

Release 2.0.32

SDK

  1. Fixed app crash while VR device doesn’t install ConfigService.
  2. Allow content to set virtual wall WVR_ArenaVisible_Auto or WVR_ArenaVisible_ForceOn via SetArenaVisible function. WVR_ArenaVisible_ForceOff is still restricted for users’ safety.
  3. Removed “Launching” word of app switching picture.
  4. Fixed no button id in touchpad swipe event.
  5. Changed default mode of miracast to mirror mode.
  6. Upgraded the controller model of overlay.
  7. Fixed overlay controller hang after application suspend -> resume.
  8. Disable WVR_TriggerRecenter function for Vive Focus since Vive Focus has the system recenter flow and developers have no need to do recenter per content.
  9. Support left-handed mode. Note. The apps built with SDK 2.0.23 or former just support right-handed mode even users switch to left-handed mode via settings.
  10. Support 3DoF mode for the usage on vehicle.
  11. Support arm model controller for overlay.
  12. Change Miracast function from mirror mode with stereo distorted image to presentation mode with mono undistorted image.
  13. Change app switching image.
  14. Change app loader animation.

Unity

  1. Fixed touchpad of controller model sometimes may show blue effect even controller touchpad doesn’t be pressed.
  2. Fixed controller model indicator blurred with the translucent content scene.
  3. Fixed controller model indicator language cannot be switched real-time while system language is changed.
  4. Fixed controller model indicator cannot be shown while user turns to back.
  5. Set default value of controller model indicator OFF. Developer enables it by content demand.
  6. Fixed the flicker of controller model indicators.
  7. Fixed controller disappears while left/right hand switch.
  8. Add feature for hiding controller indicator when xangle > 90 degrees.
  9. Support controller mouse pointer mode to fix controller beam dot cross objects in visual but no hover event in fact.
  10. Fine tune controller arm model behavior.
  11. Fine tune the usage of controller module of unity plugin.
  12. Upgrade new controller model of Vive Focus, and add buttron effects and indicators.

Release 2.0.23

SDK

  1. Enable virtual wall for 3DoF contents.
  2. Fix some logic error for “New launched app inherits the last pose from previous app”.
  3. Fix issue “The launcher shifts 90 degrees after reboot device”.
  4. Fix issue “The content drifts after switch app”.
  5. Fix issue “Abnormal sensor polling caused system overhead”.
  6. Fix issue “Server crashes while controller is disconnected”.
  7. Hide controller model and disable button/touch/analog events until user does re-center successfully.
  8. Change the system overlay behavior from moving with head to fixed position.
  9. Change the controller beam style and position of system overlay.
  10. Change the Vive Wave logo while app launches.
  11. Fix issue “IME cannot be hit while the head is moving”.
  12. Fix issue “IME sluggish and broken”.
  13. Avoid onResume/onPause too fast resulting in Unity abnormal by sleeping 200ms in the main thread after calling unity resume.
  14. Avoid the black screen issue when the app crashes and onServerReady not along with onResume.
  15. Change texture number used in texture queue from 6 to 3 to shrink memory usage.
  16. Adjust z-order of overlay modules to fix issue “Controller focus dot crosses overlay panel”.
  17. Shutdown device if device is idle more than 4 hours.

Unity

  1. Update Finch controller model.

    • Change battery color from blue to white.
    • Change button color and line width.
    • Create touch-dot-texture dynamically if touchpad_use_texture is false.
    • Changed: Finch controller & beam’s shape.
    • Added: Finch controller transparency.
    • Tune size of beam pointer.
  2. Controller will become transparent if its position is closed to eye camera.

  3. Add a script ControllerFadeManager to help hiding controller when pitch is higher than 75 degree(this function IS NOT applied to controller by default).

  4. WaveVR_ControllerInputModule effects the WaveVR_ControllerPointer instead of the WaveVR_Reticle.

  5. Fine tune the behavior of arm model.

  6. Fix controller pose pulse issue.

  7. WaveVR_Render adds new checkbox, ‘TimeController’. This can help to set timeScale=0 if input focus is captured by system UI.

  8. Disable feature “Controller becomes transparent while user raises controller in front of eyes”.

  9. Fix issue “OnClick of button is called twice” in WaveVR_ControllerInputModule.cs.