I have been working on a project for a while now. An Oculus Quest Home app. Main feature I want to get better working now, is a VR app browser and launcher.
A more 3D way of accessing your apps, like Oculus Home did with the VR Console where you could add your games as cartridges and launch them from within the home. This would be especially useful for sideloaded apps, and generally just a way of getting more control over how you organize your apps and how you want to launch them.
The other, maybe more obvious, feature is a home like Oculus Home or SteamVR Home, where you can decorate it any way you want. I hope to add features that would make it easier to place objects and align them with your real home or VR location. Just need to add a place where you can reset it all, and make it room-scale.
I have some questions though, for ideas. I am doing it in Unity, and I finally got it working so that I can get icons for different apps installed on the Quest, and also a list of all their names, the ability to launch them, some methods for benchmarking the app.
I also added a way to load GLTF files, like you can in Oculus Home. Which means you can load a 3D model from the Internet at runtime into your Quest Home. On top of whatever objects I will make available inside the app natively. That might give the performance a hit, so I have been working on making it possible to adjust the quality of these models at runtime.
I have mainly testet the features. It all still lacks some usuable UI and such, but the ideas so far work. The reason I made this post is that I wanted to know if anyone know of a way to get images from the Quest Store of the installed apps and such? Many app icons are just the unreal logo. SideQuest apps are actually better at having icons. I also tried accessing their banners, but only Unity apps seems to use banners, for the most part anyway, and they are all the same. Just a Unity image with a name of the app on it.
One of my goals with this app is to try to keep it all open source, so everything I am using in the app has to be open source. So I am also making it under an open source license. Here is my git if anyone is interested. https://github.com/kblood/Quest-VR-Menu
I have not added the latest update yet. I want to polish it a bit more first. But the version that is on git does load GLTF files, reduce the quality, add mesh colliders, reduce their size if they are too big... generally I want to make that all a bit more customizable with some UI in the game, and make it possible to save your objects.
I started out using Unity's XR stuff for the controls, but switched to the Oculus Integration SDK instead as it could add support for hand-tracking and such later. So now its based on the Oculus SDK. I might try to make a branch for each of them at some point.
But its a very early prototype. Mainly proof of concept stuff so far, but I would still like to get some input here. Maybe hear some ideas, maybe others might want to work on it as well. I am thinking it should be possible to also install apps from this app like you can with SideQuest, but on the Quest itself, and add ADB commands as well, to f.ex. enable higher refresh rates, set the resolution higher and such things. Should be possible by sending ADB commands from the Quest to itself over the network.
Another question I have about this, is if its possible to access the general screenshots and videos that users have made on the Quest device? Since the icons that the apps have are often not set to anything but a generic f.ex. Unreal Engine logo, I need a way for users to be able to make their own icons for each game, as I want it to be possible to make cartridges and such in the app.
Wow! What an epic project! Can't believe you're achieving all of this on your own. Sounds like the job of a rather big studio. Very impressive! Good luck and excited for your results.
To be honest most of the code I have from open source projects, Unity forums, YouTube videos, StackOverflow, blogs and stuff like that. Ever since I got the Quest 1 I have been wanting to do something like this. Well, first it was just meant to be an app where you could create your own home in VR. Which I think someone already did, if not more than one person.
Then began being pretty annoyed by the launchers on the Quest and Quest 2, the menu systems and such. Especially for 3rd party apps... that just has to be possible to do better. But then I have ended up going off investigating ideas instead of getting the first ones to fully work. So its not even a prototype, its just features I have tested and know to work.
What I have gotten to work is the features that would be needed to get it to work well. Like I combined several projects that mainly Unity have shared in different ways... oh and the Khronos Group. Both these groups are sharing a lot of really awesome code libraries that are just out there for people to use.
The Khronos Group is a lot of different companies working together to make open source stuff, like OpenGL and Vulkan.
Unity has some LOD and Mesh Simplifier projects that I have used to make it possible to adjust mesh quality at run time, and I used it with the GLTF stuff from the Chronos Group since they made some useful GLTF Unity projects. The main Unity project I use is this one: https://github.com/Whinarn/UnityMeshSimplifier
Oculus also has some nice code they have shared, but, its maybe not as well explained as I had hoped. They pretty much just mashed it all together and released it on the Unity Asset Store. Just being able to interact with UI elements took me a day or so to figure out, because I had to take the time to understand the example well enough to be able to put it on the VR controllers. It is an example that was made for GearVR and such I think, and all of this stuff is just there, and its not especially clear what it was meant for until digging into the code, trying out the examples and such. It all has the potential of being used for full Quest tracking and controllers though.
I have a lot of experience with some more advanced Unity stuff because I have been modding the game Satellite Reign, and to do that I had to find ways to serialize data and doing a lot of stuff at run-time that you would probably not normally do at runtime. But it was always pretty specific to the mods I was working on for Satellite Reign.