UI interaction with VR controllers vastly improved, please test the Beta v0.27

Spent the day today and yesterday to improve the UI interaction and finally decided to re-write the laserpointer input functions. Been waiting to get help from a specific coder to get the UI interaction sorted, but I couldn’t wait longer (no patience) so I decided to use some of the old scripts & functions - but simply do it “my way” instead :slight_smile: And it seems like its working great, as far as I can tell:

  • No more scrolling glitches or bugs when dragging pages/menus
  • Scrolling among game lists (gallery/list view) now works as expected and more “natural”
  • Scrolling inside drop-down menus now fully working (not only with scrollbars, but also by dragging with pointer)
  • Dragging game thumbnails or items doesnt result in accidentially clicking into game page (made my own new script with proper algorithms that determinates if a click should be made, or if user is scrolling/dragging only)
  • Dragging scrollbars doesnt jump around and behave glitchy anymore when pointer leaves the scrollbar
  • Clicking and dragging empty space on any page behaves normally, and scrolling by dragging empty space works properly
  • Scrolling speed corrected and now faster (will soon add an option for scroll speed adjustment).
  • If clicking an object/button, holding and dragging away and then releasing the trigger will now NOT result in improper click or abnormal behaviour
  • New UI interaction should now be easier to implement with upcoming hand-tracking+mouse interaction that Im already working on!

Please test the Beta 0.27 (just posted) and let me know what you think! If you find any glitches or have ideas for UI interaction improvements, please let me know!

And… Dont forget to read the ReadMeFirst.txt first! :slight_smile:




Wow! Really looking forward to testing this one tonight when the kids are sleeping… Now, where did I put those sleeping pills… :rofl:

Seems like You’ve covered all the minor (but very important) UI annoyances/glitches with this one… :upside_down_face:


Looking forward to hear your thoughts :slight_smile: thanks mate!

1 Like

If You keep up this pace, the software will actually be ready before the hardware is…! :smiley:


Haha not impossible! :wink:


It looks more “stable” now, the UI is really smooth, without the previous gliches (as far as I can tell).
Very good release.

I feel we are near somtething releasable to a more “populated” group of users :slight_smile: Like a first serious sprint of features.

Good job, and thank you.


^ I’ll second that (all of that) ^

It’s looking really nice. Besides the profile reset request I don’t have anything to add for the moment (well done!) with the functionality that exists currently… :wink:

1 Like

Thanks guys, happy to hear!

There are tons of stuff to be added the upcoming days and weeks, but this was kind of a milestone to reach, having the UI interaction correctly done without paid or licensed assets, plugins, SDKs or libraries.

Im back in the afternoon today, a bit busy until then…

1 Like

Hello at all!
All working fine!

1 Like

While I’m not a beta tester, I noticed that there was a link to the download, so I gave it a try. It’s looking pretty good overall. The scrolling seemed fine. I noticed a few issues:

  1. Some of the settings, like enable Parallel Projection, appear on multiple screens and don’t seem to be synchronized. When I changed the setting in one place, the other copies did not match.
  2. The initial placement of the panels seemed too high.
  3. When I adjusted the UI font size, to make the text larger, the panels moved downward. Ideally, the panels would not move based on the font.
  4. The text size on the right panel did not change, when I changed the UI font.
  5. When I changed the PiTool quality, it did not seem to take effect. Is there an Apply button somewhere that I missed?

Thanks Neil, I added you a few days ago as I realised I totally forgot to do it from start. I thought you might be interested to try it :slight_smile:

Heres the thing. In different categories you can see different profiles. Making changes will not instantly sync settings between categories, but Saving the profile or Apply the profile will instantly sync the settings everywhere. I think syncing before applying or saving will create confusion, as neither the json file nor PiTool itself is aware of the changes made unless these are saved or applied. Let me explain:

  1. There is always one “active” profile which the HMD uses (has been applied to the HMD). Thats the one you see in Quick Settings menu. If you change and apply that specific profile (from any menu), then everything will be synced in all menus.

  2. Every time you enter Settings or Profile Edit, that active profile is loaded automatically.

  3. If you chose another profile in Settings or Edit Profile and just load it, you simply load the options to the screen to see them. Not until you apply or save the changes, then changes are actually made.

  4. Apply = send values to HMD and make the profile active. Save = save to profile JSON only for later use. Load = only loads the profile settings to screen to be able to change-save-apply.

Initially, months ago, I had every single slider change automatically synced without applying or saving, but believe me it becomes very confusing as you will no longer know what settings are actually applied to the HMD and if the profile is saved or not. Next time u start PE u realised the profile was totally different from what you thought it was, because the profile was never saved or applied ans settings were just temporary changed on-screen. That was super confusing ans frustrating.

These are the reasons why I had to change it, and I think its way more logic now to understand and manage. As long as you know the difference between loading, applying and saving a profile :slight_smile:

Also, as u probably have seen, when applying settings in PE, everything is synced to PiTool instantly. If applying settings in PiTool, everything is synced to PE instantly. Thats because the change was actually made and applied.

If you save a profile in PE, the changes will be seen when u load the same profile in PiTool. If you save a profile in PiTool, the changes will be seen once u load the profile in PE.

So everything is indeed synced :slight_smile:

Im working on a solution to automatically and manually adjust this. Its a limitation of the SDK but I have a workaround.

The panels should not move when font is changed. The font change only changes the font by +1 or -1 in size and leaves everything untouched. This sounds weird. Can you please somehow record the behaviour? Ive never seen that happening.

They do, but only the options and not the labels. Its to prevent the label text to get improper size (too small to read or to large) as the text is already smaller on the right panel from start.

All settings (except some Advanced settings like IPD/Vertical offet) needs Apply button to be pressed to
apply changes to HMD.
But: since the Unity scene is loaded, render quality change wont be seen until you start a game or quit and start PE again. Thats a limitation in how Render Quality works on Pimax. The application running needs to restart to take effect. FoV and other values changes instantly, but render quality changes will only be seen when any game or SteamVR itself is started. To be able to see the RQ change in realtime, i would need to use a script that quits and restarts PE (restarts Unity player)

Hope you get my point :slight_smile:

Thanks a lot for the input, much appreciated!


I didn’t request it, since I didn’t have any VR controllers at the time. I now have a pair of Index controllers, so I can play HL Alyx (and beta test your app).

Perhaps an Apply button which is always visible and flashes or highlights or changes color whenever a setting is changed would be helpful.

I’ll see if I can make a recording of the behavior. I only tried the app once and it was obvious, but it could have been due to some sort of rare side-effect.

My understanding is that it’s not particularly hard to do that and might be worth implementing at some point. Even if it’s not something you could do inside of Unity, you could probably work with the PiTool team to restart Pimax Experience, after your app exits.