Jump to content

Linkone

Verified Members
  • Posts

    20
  • Joined

  • Last visited

Reputation

0 Neutral

Recent Profile Visitors

The recent visitors block is disabled and is not being shown to other users.

  1. Yes you can do just using OpenXR and the Vive Open XR Plugin
  2. @Alex_HTC Thank you for your reply. See answers below in your quoted message. Thank you for your suggestions. Anyway I am not sure why InputDevices do not work, but I may be thinking at it wrongly. In my experiment I let the user use only one controller, so that s why I wanted to register to the different bits. At the end of the day I found an hacky way to check the tracking status to assess if a controller is tracked or not and I use that to detect whether it s on or not. Here is the code in case someone get a similar problem. [SerializeField] InputActionProperty m_LeftControllerTrackingStateAction = new InputActionProperty(new InputAction("Tracking State", expectedControlType: "Integer")); [SerializeField] InputActionProperty m_RightControllerTrackingStateAction = new InputActionProperty(new InputAction("Tracking State", expectedControlType: "Integer")); private void Awake() { m_LeftControllerTrackingStateAction.action.performed += OnLeftControllerDetectedTracking; m_LeftControllerTrackingStateAction.action.canceled += OnLeftControllerDetectedTracking; m_LeftControllerTrackingStateAction.action.Enable(); m_RightControllerTrackingStateAction.action.performed += OnRightControllerDetectedTracking; m_RightControllerTrackingStateAction.action.canceled += OnRightControllerDetectedTracking; m_RightControllerTrackingStateAction.action.Enable(); } private void OnLeftControllerDetectedTracking(InputAction.CallbackContext context) { int trackingState = context.ReadValue<int>(); Debug.Log("Left controller tracking state is " + trackingState); if (trackingState > 0) { //Send event to ack that the controller is currently tracked } else if (trackingState == 0) { //Send event to ack that the controller is currently not tracked } else { Debug.LogError("Left Controller - Invalid tracking state: " + trackingState); } } private void OnRightControllerDetectedTracking(InputAction.CallbackContext context) { int trackingState = context.ReadValue<int>(); Debug.Log("Right controller tracking state is " + trackingState); if (trackingState > 0) { //Send event to ack that the controller is currently tracked } else if (trackingState == 0) { //Send event to ack that the controller is currently not tracked } else { Debug.LogError("Right Controller - Invalid tracking state: " + trackingState); } }
  3. I am developing an application targeting the Vive XR Elite 3 with Unity 2021.3.30 LTS. My application needs to detect when a motion controller is connected or disconnected. I've implemented this functionality using Unity's InputDevices.deviceConnected and InputDevices.deviceDisconnected events. The code works as expected when running on my PC using a Vive Pro headset + controllers, but it fails to detect controller connections and disconnections when running on the Vive XR Elite build. I am logging any errors and there any. It seems to me that the events are never fired. Here's a simplified version of my code: Can someone help me to understand if I can use something else to achieve this? public event Action<ControllerName> OnControllerConnected; public event Action<ControllerName> OnControllerDisconnected; public enum ControllerName { Left, Right } private void OnEnable() { InputDevices.deviceConnected += OnDeviceConnected; InputDevices.deviceDisconnected += OnDeviceDisconnected; } private void OnDisable() { InputDevices.deviceConnected -= OnDeviceConnected; InputDevices.deviceDisconnected -= OnDeviceDisconnected; } private void OnDeviceConnected(UnityEngine.XR.InputDevice device) { Debug.Log("Device connected: " + device.name); if ((device.characteristics & InputDeviceCharacteristics.Left) != 0) { Debug.Log("Left Controller Connected"); OnControllerConnected?.Invoke(ControllerName.Left); } else if ((device.characteristics & InputDeviceCharacteristics.Right) != 0) { Debug.Log("Right Controller Connected"); OnControllerConnected?.Invoke(ControllerName.Right); } } private void OnDeviceDisconnected(UnityEngine.XR.InputDevice device) { Debug.Log("Device connected: " + device.name); if ((device.characteristics & InputDeviceCharacteristics.Left) != 0) { Debug.Log("Left Controller Disconnected"); OnControllerDisconnected?.Invoke(ControllerName.Left); } else if ((device.characteristics & InputDeviceCharacteristics.Right) != 0) { Debug.Log("Right Controller Disconnected"); OnControllerDisconnected?.Invoke(ControllerName.Right); } }
  4. Hi there, no worries. I end up using a Vive Pro with Open XR to try and have a debugging system, plus I implemented a debug log to file for when I want to test the build in the XR elite.
  5. I was thinking on getting a new development machine, and I was wondering if anyone is developing using laptop. I havent manage yet to make a simple Unity project working with the DirectStreaming that comes with WaveXR and for me testing without making a build is fundamental (I cannot wait every time 20 mins to test somehting). For this reason I am thinking of upgrading the machine I am using. I am thinking of getting something highend (https://www.scan.co.uk/products/173-3xs-vengeance-4080-240hz-qhd-169-12gb-nvidia-rtx-4080-intel-core-i9-13900hx-64gb-ddr5-2tb-ssd-wi) but I am worried that with laptops you might have problems to setup WaveXR with DirectStreaming. Does anyone have any experience with using laptop and WaveXR direct streaming? Thank you for your help.
  6. I am using OpenGL to develop for the VIVE XR Elite standlone (so I don t have much choices from OpenGL). I haven't managed to get my setup done as well with Vive Streaming, but I can stream despite having some errors in the editor. So I think that the problem might simply be the UNity Version you are using. What version are you using?
  7. As far as I know and as @Huxxley said you can only use the OpenXR or Wave SDK to make a build that works for standalone. In particular if you use the Wave Skd it it will pop out the reccomended changes for the Player Settings which can be convenient if making a quick build. Things to check are similar to builds made on the Focus or Oculus Quest, like using the OpenGL3, Arm64 as target cpu, remove any post processing if using URP and similar others.
  8. I haven t used the Vive trackers personally, but the passthrough is achievable using the Vive Open XR plugin, and that s exactly the guide you are going through. I am using Unity 2021.3 LTS version. Also I am using the XR Elite, so I am not sure how it will be in the Focus 3. It will require time to adjust settings to make it work as unfortunately the documentation is not really good from the HTC people and things are scattered all around, but it is doable.
  9. Which Unity versione are you using? I think that to build for the Vive XR Elite, you need to use any LTS from the 2021 version, I managed to get the unity package. If you are still having trouble you can try to use the Vive Registry tool and add the packages directly from the Unity Package Manager.
  10. Out of curiosity what are you using to attach the headset to Unity? I am noticing that there is no Wave installed and I thought the only way was by using Wave DirectPreview
  11. The XR Elite is slighlty better than the Focus 3 and offers all of you are looking for. You can also have multiple Vive Tracker as far as I know.
  12. You can try to use the Wave DirectPreview, but requires you to set up your project for WaveXR. You can find more here.
  13. I managed to get a working unity package by downloading the raw file from here. I don t understand why in the official documentation point you out to use the unity package but alternatively you can use the Vive Registry from the package manager.
  14. Hello everyone, I am trying to use a sample project to see how to best develop for the XR Elite and I am having a really hard time on setting Direct Preview using the Wave Vive Registry. I believe I have the correct setup (laptop with NVDIA GTX 1060) I have mainly followed this guide (https://hub.vive.com/storage/docs/en-us/UnityXR/UnityXRDirectPreview.html) WaveXR correctly selected in XR-plugin management HTC Device drivers correctly installed, Windows firewall with correct permissions Adb path correctly set Install Device Apk -> Fails all of the time. Ensured that the full path does not have any spaces (D:\Projects\DiamondDiggers_XR_noURP\Library\PackageCache\com.htc.upm.wave.xrsdk@5.3.1-r.2\Runtime\DirectPreview\Binary\RRClient\Vive_rrClient.apk) I have set up SteamVr on the laptop and I am able to correctly to the laptop using the VIVE Business Streaming Can someone please help me in troubleshooting? Also how does the Unity plugin recognizes if we need to start a WiFi connection? Is there any discord community that helps with vr development? Any help will be greatly appreciated, Bye
×
×
  • Create New...