VR/AR User Interface

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

Thanks for all your comments.
Regarding the inclusion in Blender and licensing issues, this is exactly why we (had to) choose this way of implementing it as a separate library from Blender and why we DON’T put the BlenderXR files into the Blender binary folder ourselves but ask users to do that themselves:

  • we avoid GPL troubles by keeping a layer between Blender and the respective device APIs
  • we make it clear that BlenderXR (the library to use VR headsets) is just a temporary solution until OpenXR will be available.
  • The user interface itself is in the Blender code, fully device independent and under GLP

It would even be possible to accept the user interface changes into Blender without accepting BlenderXR: just disable loading the library. Then the VR UI would be “dead code” until OpenXR would become available. But of course that’s not my decision to make.

7 Likes

@makx

May I ask, how do you deal with huge scenes and it´s possible performance impact to avoid bad framerate and motion sickness?

This is one thing that worries me about having VR inside Blender, probably the biggest concern for me, because functionality can come, and other things can be done, but performance to avoid motion sickness could be a problem, specially when you have scene in blender itself that kill the viewport framerate, how can you “disengage” the VR framerate from the viewport framerate so you don´t get sick?

Thanks and great initiative!

You should talk with @ pepeland I know he was investigating possibilities for the future and this :slight_smile:

Cheers

1 Like

@JuanGea

Sorry for the late response.
Based on our experience with making MARUI for Maya we have some automatic performance adjustments that we can use, but we also learned NOT to restrict the user in terms of scene size or render settings too much.
The reason is that people and use cases are very different.
Some people get sick easily when the framerate drops, others are less affected.
Some people need to stay and work in VR for ours, working on raw asset geometry and don’t care about shading. Others just want a quick 5-second look of how the scene would look like in the game with all settings set to high-fidelity.
It is really better to leave it to the user to decide and just give them all the settings and information they need in an easy-to-use way.

Thanks for directing us to Pepeland. He actually already knows about BlenderXR and was so nice to make a video where he was trying out his Grease Pencil in VR:

2 Likes

I was asking that to know if you execute the Vr part in a separate thread so you can separate the Blender performance from the VR performance.

Another great feature to have, and I don´t know if you can implement it, at least as an option, is Fixed Foveated Rendering, for HMD´s without Eye tracking, in the end the only place in the lens were we can correctly see the scene is in the center, so Fixed Foveated Rendering could help A LOT with performance without the user noticing it.

Thanks for your work, I still have to try it, but I´m very excited with it :slight_smile:

Another question, does it work with Shift+Z? (with Cycles viewport rendering).

Cheers!

OK, I´m going to try it today.

It´s mandatory to use your own custom blender build?

Do you plan to make it compatible with a generic / official build?

Cheers!

After briefly trying it… I cannot try it further.

The eyes are shifted, the left eye is the right eye and the right eye is the left eye… no I cannot use it.

Is there a way to solve this?

Cheers!