Search Unity

  1. Megacity Metro Demo now available. Download now.
    Dismiss Notice
  2. Unity support for visionOS is now available. Learn more in our blog post.
    Dismiss Notice

Question Unity OpenXR Plugin and Pico 4 headset?

Discussion in 'VR' started by joeysipos, Jan 28, 2023.

  1. joeysipos

    joeysipos

    Joined:
    Jul 28, 2015
    Posts:
    41
    Does anyone know if the OpenXR plugin supports the Pico 4 headset on Windows PC? Does SteamVR OpenXR + Pico headset work? It appears there is no Pico Interaction Profiles to choose from?

    I don't have a Pico Neo headset to test with but some of my users are telling me it doesn't work on the Pico 4?
     
  2. Cloudwalker_

    Cloudwalker_

    Joined:
    Jan 3, 2014
    Posts:
    140
    Through steamvr it's emulated as a quest 2. For Android there is a specific xr plugin
     
    Felix_K likes this.
  3. DevDunk

    DevDunk

    Joined:
    Feb 13, 2020
    Posts:
    4,969
    Pico has an OpenXR plugin on their site. This works for both standalone and pcvr afaik
     
  4. Cloudwalker_

    Cloudwalker_

    Joined:
    Jan 3, 2014
    Posts:
    140
    Anything marked as experimental I tend to avoid. However I've never tried their openxr plugin to know how it is.
     
  5. DevDunk

    DevDunk

    Joined:
    Feb 13, 2020
    Posts:
    4,969
    From my experience, it's really solid. The pico sdk in general is pretty experimental haha
     
  6. AakashDP

    AakashDP

    Joined:
    Nov 22, 2016
    Posts:
    21
    I'm using Unity's OpenXR for my Steam game and it works for both Pico 3 and 4 and a bunch of other devices. Only issue is that the controller rotation in game is different between devices and the Pico controllers are identified as Oculus controllers, not Pico! so you may run into issues if a specific rotation of your hand is crucial for your game
     
  7. DevDunk

    DevDunk

    Joined:
    Feb 13, 2020
    Posts:
    4,969
    Virtual desktop, or the streaming assistant compatibility mode, can show up as quest 2 for compatibility.
    Using the pico openxr package you can add a pico controller profile for streaming assistant
     
    AakashDP likes this.
  8. aseem-metastudios

    aseem-metastudios

    Joined:
    Jun 22, 2022
    Posts:
    4
    PICO no longer has the "PICO Unity OpenXR Plugin" available on their website. How do I get Pico Interaction Profiles now?
     
  9. DevDunk

    DevDunk

    Joined:
    Feb 13, 2020
    Posts:
    4,969
    That's weird. I'll ask on the dev forums
     
  10. aseem-metastudios

    aseem-metastudios

    Joined:
    Jun 22, 2022
    Posts:
    4
    Thanks for the super fast response
    upload_2023-6-13_12-2-45.png

    upload_2023-6-13_12-3-16.png

    As you can see, the Unity OpenXR SDK is not available for download.
     
  11. Arnold_2013

    Arnold_2013

    Joined:
    Nov 24, 2013
    Posts:
    281
    I don't know if it will help much, I have openXR interaction profile version 1.0.0 "PICO Unity OpenXR Plugin(Experiment).zip" from the site from some time ago, but on Unity 2022.3 LTS its not doing anything for my controllers. The only way to get some input is to add bindings profile for Oculus Touch.
    I've always had both in my game, so I have no idea if the Pico interaction profile ever did anything.

    I am using the PICO streaming assistant to connect to my PC. (tried Wifi and wired). SteamVR does show the right controller models.

    But it might also be OpenXR or my own errors. So far openXR has not reduced the per hardware setup time by much. On the Index everything is working, so I know some parts work.
     
  12. DevDunk

    DevDunk

    Joined:
    Feb 13, 2020
    Posts:
    4,969
    The streaming assistant might use the quest layout for PCVR yes. You probably have it in compatibility mode.
    Without compatibility mode it does use the pico controller for me

    And of course with android builds it uses the pico controller.

    (I sent them the package btw)
     
  13. aseem-metastudios

    aseem-metastudios

    Joined:
    Jun 22, 2022
    Posts:
    4
    Thanks, but as @DevDunk mentioned, I received the package from them.

    FYI, I talked to PICO support and here is their response

     
    Arnold_2013 likes this.
  14. Arnold_2013

    Arnold_2013

    Joined:
    Nov 24, 2013
    Posts:
    281
    Thanks for confirming it works for you, if its not too much trouble could you confirm it works down to the input debugger device level? Otherwise I'll just wait for the new OpenXR plugin from Pico to come online.
    I am not in compatibility mode, and SteamVR does show the PICO 4 controller models... but when Unity openXR runs the Input Debugger shows Oculus. I think this is why my PICO interaction profile is not working.

    I could live with this, but I would really like to get the controller velocity and these only return (0,0,0) in my current situation. Don't know if this would be any better with the pico controllers detected.

    upload_2023-6-14_8-8-50.png

    upload_2023-6-14_8-9-9.png

    upload_2023-6-14_8-9-28.png
     
  15. m0nkeybl1tz

    m0nkeybl1tz

    Joined:
    Feb 10, 2013
    Posts:
    35
    Hey, I'm trying to get set up for PICO development, and I downloaded the latest Unity plugin (released yesterday) and I can't find the PICO Interaction Profile. Can anyone else confirm? If so, is there anything I can do to make it work? Also, I see both OpenXR and PICO as options for plug-in providers. Do I need to check them both or just OpenXR?
     
    Last edited: Jun 30, 2023
  16. DevDunk

    DevDunk

    Joined:
    Feb 13, 2020
    Posts:
    4,969
    You got the pico sdk, not the openxr pico plugin
     
  17. m0nkeybl1tz

    m0nkeybl1tz

    Joined:
    Feb 10, 2013
    Posts:
    35
    Ahhh I'm seeing that now. So it looks like the OpenXR plugin is still not available on their site?
     
  18. DevDunk

    DevDunk

    Joined:
    Feb 13, 2020
    Posts:
    4,969
    Yep, sadly not.
    I think it will be online somewhere august-september
     
  19. m0nkeybl1tz

    m0nkeybl1tz

    Joined:
    Feb 10, 2013
    Posts:
    35
    Ok that's fine, it's nice to at least know I'm not taking crazy pills when I couldn't get it to work :D

    Thanks for the info!
     
    DevDunk likes this.
  20. warpbu

    warpbu

    Joined:
    Jan 29, 2017
    Posts:
    8
    Does someone happen to have the old "broken" OpenXR plugin laying around?
     
    aseem-metastudios likes this.
  21. DE_Hizral

    DE_Hizral

    Joined:
    Feb 21, 2020
    Posts:
    20
    Hello, Would like to asked, is the PICO Unity OpenXR Plungin can be download from another link? because the plugin is still not available in the PICO SDK.

    Is there any news regarding when they will make the download available again?
     
  22. DevDunk

    DevDunk

    Joined:
    Feb 13, 2020
    Posts:
    4,969
    I think it will be oktober :/
     
  23. Autarkis

    Autarkis

    Joined:
    Oct 10, 2011
    Posts:
    318
    with the openXR sdk being taken offline, I don't really care about this broken version, as I am still currently using Unity 2021.3 LTS...
    Does anyone know if there's a zip somewhere of an openXR pico package I can use?
    Praying DevDunk brings some magic ;)
    (i'd ask on the pico forums, but I just saw a couple un-answered threads about the openxr package, so I figure I may have better luck here...)
     
    PatHightreeXVR likes this.
  24. pepeInLudus

    pepeInLudus

    Joined:
    Jan 18, 2022
    Posts:
    5
    I have the zip file of the original version of OpenXR. Send me a private message and I'll share it with you.
     
    developerarreterra likes this.
  25. Autarkis

    Autarkis

    Joined:
    Oct 10, 2011
    Posts:
    318
    Appreciate it pepe. Thanks for the pm!
     
  26. Fangh

    Fangh

    Joined:
    Apr 19, 2013
    Posts:
    274
    ANy news on this ?
    Does anyone has the zipfile ?

    BTW which OpenXR ControllerPofile should I choose for Pico PCVR ?
    upload_2023-8-31_17-55-6.png
     
  27. DevDunk

    DevDunk

    Joined:
    Feb 13, 2020
    Posts:
    4,969
    They released the 2.3 sdk and in their newsletter said openxr is coming soon.
    The planning is october.
    Once released, you can add the pico controller profile for PCVR as well (or joink the old package, which could work for openxr on pc still)
     
    Fangh likes this.
  28. Fangh

    Fangh

    Joined:
    Apr 19, 2013
    Posts:
    274
    I actually succeeded to make it work on PCVR with Streaming Assistant & SteamVR by choosing Oclulus Touch Controller profile
     
    DevDunk likes this.
  29. Arnold_2013

    Arnold_2013

    Joined:
    Nov 24, 2013
    Posts:
    281
    Good you found a workaround until pico comes with an update.
    Do they show the 'pointer velocity' (or other controller velocity) as anything other than 0? This is a problem I am having with the 'old' pico profile when using a PICO 4.
     
  30. cecarlsen

    cecarlsen

    Joined:
    Jun 30, 2006
    Posts:
    858
    What exactly does your setup look like? I have image in the Pico, but the head tracking is not applied to the camera.

    Using Unity 2023.1.13, OpenXR 1.8.2, StreamingAssistent, Play Mode OpenXR Runtime: StreamVR, and no Pico SDK. Didn't even get to the controllers yet.
     
    Last edited: Sep 18, 2023
  31. DevDunk

    DevDunk

    Joined:
    Feb 13, 2020
    Posts:
    4,969
    1. Try a recent Unity and OpenXR version
    2. You might need to set the pico link mode to compatibility
    2.1 or install the taken down pico openxr plugin to add pico xr support (or wait for the next release, probably oktober)
    3. SteamVR plugin also should work for PCVR
     
  32. cecarlsen

    cecarlsen

    Joined:
    Jun 30, 2006
    Posts:
    858
    Thanks @DevDunk

    1. Newer than 2023.1.13? It's using OpenXR 1.8.2.

    2. The StreamingAssistent Controller Mode is already set to "Compatibility".

    2.1 Where do I get this?

    3. This is what I was using. It works fine on Pico, but since the Meta Quest 57 update (Sep 11th), OpenVR stopped working on Quest (at lease in the Editor). So I am trying to get both Pico and Quest working in the same project usng OpenXR. Is this even possible?
     
    Last edited: Sep 18, 2023
  33. DevDunk

    DevDunk

    Joined:
    Feb 13, 2020
    Posts:
    4,969
    1. My bad, I read 2022
    2. Then pico is just being broken, happens too often lol

    3. It's possible, but does require 1 build per vendor
     
  34. cecarlsen

    cecarlsen

    Joined:
    Jun 30, 2006
    Posts:
    858
    It works fine using OpenVR, so the device itself is not broken. But like I wrote, Quest no longer works in OpenVR (in Editor), so that's no longer an option.

    Well ok, I first need it to work in the Editor. Not seen that working yet.
     
  35. chasehek

    chasehek

    Joined:
    Feb 4, 2017
    Posts:
    4
    Did I understand correctly that OpenXR does not work correctly on Pico 4? What exactly is not working?
    And more. I need to make my application for Pico G2. It has Android 8.1. This is a problem. The new Pico SDK only supports Android 10. Don't know if OpenXR works correctly for Pico G2?
     
  36. DevDunk

    DevDunk

    Joined:
    Feb 13, 2020
    Posts:
    4,969
    They are reworking OpenXR, at least on the 3 and 4.
    That will release around oktober. The old package was taken down, but worked pretty good from my experience.
    For older devices I recommend to contact Pico. You probably need to stick to the old sdk
     
  37. kelekg

    kelekg

    Joined:
    Dec 25, 2017
    Posts:
    1
    Arnold_2013 and DevDunk like this.
  38. DevDunk

    DevDunk

    Joined:
    Feb 13, 2020
    Posts:
    4,969
    Finally!
     
  39. Arnold_2013

    Arnold_2013

    Joined:
    Nov 24, 2013
    Posts:
    281
    grabbed a copy just in case it is removed again ;)
     
    DevDunk likes this.
  40. DaveA_VR

    DaveA_VR

    Joined:
    May 26, 2022
    Posts:
    33
    Is this a new version or did they just re-publish the old one?
     
  41. DevDunk

    DevDunk

    Joined:
    Feb 13, 2020
    Posts:
    4,969
    It's a new one, but idk how much has changed. The package version number has changed


    Add it to the project, for PCVR add the pico controller profile and done, for android add the pico controller profile and check Pico Support and done (you do need separate builds for pico and meta headsets, but the code can remain the same).
    On the headset side there is some custom implementation, which is why you need to check pico support. Meta has the exact same
     
    DaveA_VR likes this.
  42. DaveA_VR

    DaveA_VR

    Joined:
    May 26, 2022
    Posts:
    33
    DevDunk likes this.
  43. DaveA_VR

    DaveA_VR

    Joined:
    May 26, 2022
    Posts:
    33
    Here's the problem though, if my settings are correct (to run on both Quest2 and Pico):

    upload_2023-9-27_16-2-17.png

    upload_2023-9-27_16-2-53.png

    So again, OpenXR supports one or the other, not both. That's insane. So I must have something wrong.
     
  44. DevDunk

    DevDunk

    Joined:
    Feb 13, 2020
    Posts:
    4,969
    You cannot use both pico and quest at the same time on android. Enable pico and add the pico 3 controllers, then the meta build disable/remove pico components and select quest support and add the touch controllers
     
    Arnold_2013 likes this.
  45. DaveA_VR

    DaveA_VR

    Joined:
    May 26, 2022
    Posts:
    33
    I'm looking for the Editor API(s) that would let me do this via a build script. Anyone have a clue or example how to 'check/uncheck' those boxes?

    Asking ChatGPT, which suggested, and please let me know if this is sane:

    Code (CSharp):
    1. using System;
    2. using System.Linq;
    3. using UnityEditor;
    4. using UnityEditor.XR.Management;
    5.  
    6. public static class XRProviderSelector
    7. {
    8.     public static void SetXRProvider(string provider)
    9.     {
    10.         if (string.IsNullOrEmpty(provider))
    11.         {
    12.             UnityEngine.Debug.LogError("Provider name can't be null or empty.");
    13.             return;
    14.         }
    15.  
    16.         var settings = XRGeneralSettingsPerBuildTarget.XRGeneralSettingsForBuildTarget(BuildPipeline.GetBuildTargetGroup(EditorUserBuildSettings.activeBuildTarget));
    17.        
    18.         if (settings == null)
    19.         {
    20.             UnityEngine.Debug.LogError($"No XR settings found for current build target: {EditorUserBuildSettings.activeBuildTarget}");
    21.             return;
    22.         }
    23.  
    24.         var loadersList = settings.Manager.loaders;
    25.         loadersList.Clear(); // Clearing any existing loaders.
    26.  
    27.         if (provider.Equals("None", StringComparison.OrdinalIgnoreCase))
    28.         {
    29.             UnityEngine.Debug.Log("No XR provider set.");
    30.             return;
    31.         }
    32.  
    33.         var availableLoaders = XRPackageMetadataStore.GetLoaders();
    34.         var matchingLoaderType = availableLoaders.FirstOrDefault(loaderMetadata => loaderMetadata.loaderName.Equals(provider, StringComparison.OrdinalIgnoreCase))?.loaderType;
    35.  
    36.         if (matchingLoaderType == null)
    37.         {
    38.             UnityEngine.Debug.LogError($"No XR provider found with name: {provider}");
    39.             return;
    40.         }
    41.  
    42.         var loaderInstance = XRPackageMetadataStore.CreateLoaderInstance(matchingLoaderType);
    43.         if (loaderInstance != null)
    44.         {
    45.             loadersList.Add(loaderInstance);
    46.             UnityEngine.Debug.Log($"Set XR provider to: {provider}");
    47.         }
    48.         else
    49.         {
    50.             UnityEngine.Debug.LogError($"Could not create instance of XR provider: {provider}");
    51.         }
    52.     }
    53. }
    54.  
     
  46. DevDunk

    DevDunk

    Joined:
    Feb 13, 2020
    Posts:
    4,969
    Definitely possible with a build script, but I don't have the code anymore.
    I do remember ChatGTP being absolutely useless in there, since no much code is available for this.

    Iirc you can loop over the OpenXR features and enable and disable those within the loop
     
  47. cecarlsen

    cecarlsen

    Joined:
    Jun 30, 2006
    Posts:
    858
    I've created an empty project in Unity 2022.3, enabled OpenXR, and added the new Pico SDK
    2.3.4 to the Packages folder. But the Pico settings panel is empty. And I cannot selected anything related to Pico in the list of Interaction Profiles.

    What am I missing?

    01 XR Plugin Management.png

    02 OpenXR.png

    03 Pico.png
     
  48. DevDunk

    DevDunk

    Joined:
    Feb 13, 2020
    Posts:
    4,969
    You can use the pico openxr plugin without the pico sdk. Not sure about combining them.
    I currently have a 2022.3 project with just the pico sdk, without the openxr plugin
     
  49. cecarlsen

    cecarlsen

    Joined:
    Jun 30, 2006
    Posts:
    858
    Thanks, I switched from "PICO Unity Integration SDK" to the new "PICO Unity OpenXR SDK(Preview)", using Unity 2022.3.10f1. I see the "OpenXR PICO Plugin" in the package manager, but there is still no Interaction Profile option related to Pico in the OpenXR settings panel. I'm using a Pico 4. No warnings or errors in the console.

    PICO's OpenXR plugin depends on Unity's OpenXR plugin, so I guess it must be in you project too. Unless I'm missing something.

    PicoXRPluginUsingOpenXRPlugin.png
     
    Last edited: Oct 6, 2023
  50. DevDunk

    DevDunk

    Joined:
    Feb 13, 2020
    Posts:
    4,969
    Yes, but I wondered if you also need the Pico SDK, which you also have installed.
    Do you have any errors? Maybe try in a new project?