VR/AR User Interface

Hi everyone!

My name is Max Krichenbauer, of MARUI-PlugIn. (https://www.marui-plugin.com)
We’re making VR/AR plug-ins for 3D design software, most importantly for Autodesk Maya.
Here is a video of our latest release “MARUI v3”:
https://www.youtube.com/watch?v=9MufSG2zPHI

We often hear from Blender users in the VR/AR world how much they would like to have something like MARUI for Blender - the ability to work in VR/AR.
Since we’re also big fans of the Blender project, we’d be happy to deliver and contribute.

We started studying the Blender source code and think we found a way to add VR support without interfering with the any other development.
We already managed to build a prototype VR viewer that works for the Oculus Rift, HTC Vive, and Windows MR headsets.

We don’t really want a clumsy plug-in solution nor a separate “our-VR-enabled-only” fork.
Our concept would be to provide all of our changes as source code to the Blender project itself,
and finance the development via crowd-funding / donations from VR enthusiasts in the Blender user community.

So I wanted to have an open and friendly discussion here on whether such an effort would be welcomed.
Please let me know your opinion.

Best regards,
Max

8 Likes

The problem with VR within blender sofar has always been licensing, the GPL and many of the VR sdk’s just aren’t compatible. with OpenXR coming this will hopefully change in the near future

1 Like

I second this. Any solution that doesn’t go through OpenXR will inevitably be too ad hoc in my opinion.

There is also the problem of licensing. You don’t want to link to a SDK directly from within Blender.

If you could lead this kind of effort it would be a really welcome addition to Blender in my (very biased :wink: ) opinion.

I would really love to experiment with this at least. There are some funny 3d building apps for VR already, but I guess sculpting or texture painting in VR (or AR) could be fantastic.

Regarding the licensing issues, I always wondered if something like a “let a comfortable install script / setup.exe download the SDK and let it do the ‘prohibided’ linking” could be possible in these cases?

if you don’t want to wait for openXR , you could probably play around with this diff which added openVR support but it’s kinda dated , will probably not apply cleanly.

Last i heard openXR was still on target for a provisional spec this year , so it seems unlikely the openVR stuff will ever make it to mainline, but it can be a nice starting point to start exploring vr input. (just know you’ll have to switch api’s later on)

Thank you so much for your replies!
I understand the problems with licensing.
The advantage we have is that the way we built MARUI it does not link against any of the VR APIs directly, but uses an abstraction layer and separate VR modules.
So we can get working on the user interface part already without having to wait for OpenXR.
VR users could just download the VR module for their respective device separately and use it already.
And when OpenXR gets released, we can just replace the abstraction layer with OpenXR.
Would that be an acceptable solution?

2 Likes

For development purposes absolutely, for inclusion in mainline blender I’d prefer to go the openXR route once available, having people download non-free things just to make blender work is not quite in line with blenders opensource goals.

Please keep us updated. As a user I’m very interested in this.

Sorry for the long silence!
We’re currently finalizing the concept:
Until the release of OpenXR, we provide an abstraction layer.
The source code and binary libraries will be provided on github.
People who want to use Blender in VR can to download a .DLL / .so from our github and place it in their Blender folder.
In the long run, we’ll replace our abstraction layer with OpenXR.
Inside the blender source code, we only add an attempt to load the required functions from the library.
If no library is present or loading fails, Blender would still work normally.
If loading was successful, users can activate VR-mode and use their Oculus Rift / HTC Vive / WindowsMR headset to view and edit their scene.

In the Blender source code, we add a new window state and stereo display mode (in wm_Window),
and add the specific handling of the case that a window is a VR mirror window.
We add a “VR” struct which functions as the main interface.
Behind the VR struct is a widget-based user interface system, that is easy to maintain and extend
(we’ve had good experiences with our approach in developing MARUI).

Here is a quick video of our current prototype:

Of course, financing the development is a big issue, so if you know VR game companies who use Blender and might want to become sponsors, please help us get in touch.

8 Likes

That is pretty awesome looking, good job!

This looks absolutely amazing!!! Does it work on Linux? Please keep us updated!

To start at least, you could easily publish a fork here/on BA and get some buzz that way. Especially for VR companies, doing things like scene setup in VR (was that EEVEE I saw running in VR?) in Blender itself would be a massive time saver.

There’s several examples of forks making it into master these days - EEVEE itself started, I believe, as such a fork…

Sorry once again for the slow replies.
We released our first prototype at


and

Yes, Linux is supported too.
Yes, EEVEE also works (and it looks amazing!)

Next we’ll suggest our changes to the Blender developer community.
Hopefully it can become part of Blender soon.

And as we said before, once OpenXR is available we’ll just switch and keep the full functionality.

5 Likes

Great to hear! Thank you!

This is great! I just got it up and running and found it is a lot of fun to work with Blender in VR.

Do you plan on extending the Python API to allow developers to create add-ons and modal operators that work with VR input devices?

Great Work!

I’ve been thinking about this a lot personally and have thought about the best ways to interact with the scene through VR, mainly from the user experience perspective rather than implementation.

This looks promising. As long as there are fully open libraries that can display the screen for each type of headset, I don’t see why this can’t be included in Blender.

That’s the problem, if you look at the github, they are linking to closed source binaries (OculusSDK & FoveSDK)… Whilst they haven’t put the binaries in the folder they have distributed them as well with the instructions to us to move them into the folder ourselves.

:frowning:

This isn’t really a suitable solution if it is going to be added to Blender, then, hey. I am not familiar with all the details, but is OpenXR not sufficient to have Blender VR supported across headsets without proprietary software other than the device drivers for each headset (which would be installed when the headset is set up)?

It seems like they’re writing native implementations with each SDK, which is both doubling up on work and making use of closed dependencies. I think until there is an open toolset this can be implemented with, it is unlikely to get much consideration for inclusion into Blender.

OpenXR will be a standard, it just isn’t released yet. Once it is, then it probably will make its way into blender if there is a willing developer (which there usually are for cool tech like this!)

“I think until there is an open toolset this can be implemented with, it is unlikely to get much consideration for inclusion into Blender.”

It is more than unlikely… It definitely won’t be considered for inclusion into blender. This is a violation on GPL.

2 Likes

Very interesting, but IMO what would be more useful is an export to web VR from blender.

Thank you!
This is a good idea. I hope we can get to it sometime soon, but for now we are focusing on the basic user interface. However, we do keep later customization options in mind, so nothing will be hard-coded.

1 Like