Virtuoso: musical instruments in VR

This is my experience as well. I used to work in the video game industry and it didn’t matter much if it was Direct3D, OpenGL or whatever. At least back then the concepts were the same, even if the details were different.

Much has happened since those days, so my knowledge is very outdated by now. But I’ve enjoyed doing a bit of WebGL stuff here and there (and again, as I knew OpenGL it didn’t take any effort at all to get going). I did make some kind of WebGL tutorial a while back, btw. Mostly as notes to my future self and as an aid for some WebGL talks I did. Guaranteed to be much better OpenGL tutorials out there, but in case someone would find it useful:

WebGL Demo
Github repo

2 Likes

Guess OpenXR could be a good start for low level stuff: Monado / Demos / openxr-simple-example
But if I would do any experiments into the VR direction I would probably start with Unity or Unreal Engine. Or Godot for an open source project: VR starter tutorial part 1 — Godot Engine (stable) documentation in English
Nice thing with Unity, UE and Godot is that it abstracts on top of OpenGL (also ES2/3 for embedded), Vulcan, Metal, DirectX (and OpenVR/OpenXR etc.) so one isn’t pinning oneself into one particular corner. And a lot of high level functionality that one most likely needs in some form for nontrivial applications (and that would likely take several hundred years to develop at this level by now) already exist.
Meta seems to invest quite some money into Godot lately to get it en par with Unity/UE for VR/AR - after their takeover attempt of Unity failed… Potentially good for Open Source :slight_smile:

3 Likes

Godot is new to me. Looks nice. I made a small VR-experiment in Unity3D and made it run on Quest once. Just a room I could walk around in while listening to sounds emitted from various objects in that space. That took a couple of hours to do, so getting started with VR in Unity3D seemed fairly straight-forward. I’ve also used Babylon.js for work and found that relatively easy to work with. So for not very demanding web based VR content that might be a decent alternative.

…but, the difficult part is not the technical stuff imo, it is making the 3D content. I’ve tried to learn how to model stuff, but I just can’t get the hang of it. So, lots of ideas for stuff I want to make (an interactive VR-experiences for our (Tic Tic’s) music, for instance). But since I can’t create the content we would need the whole thing suddenly gets more complicated (i.e. boring).

1 Like

The usual recommendation would be Blender. It needs some time to get used to but offers a streamlined workflow once understood and is very feature rich.

A little off topic.
When planning to (also) manufacture the stuff then a CAD application that allows precise, parametric modelling is helpful. Instead of working with triangulated meshes that are fast to render but just an approximation, these can describe the precise geometry.

Against common belief Blender can also be used for precision modelling. But particularly when many fundamental parameters still have to be tweaked later on, a parametric modeller might be faster.
E.g. FreeCAD is a UI based Open Source CAD program.
And Fusion 360 (also has CAM) and SolidEdge (can do both parametric and direct modelling) are free for personal use.

What I currently use is “code CAD”, this allows to design stuff programmatically. Really good for highly parametric stuff! The most prominent ones would be OpenSCAD (kernel: CSG-based, language: custom functional), CadQuery (kernel: BREP-based (OpenCascade), language: Python) and Curv3d (kernel: SDF-based, language: custom functional). *

Am currently iterating on a (non electronic) musical instrument with CadQuery: http://polymoe.org
The renderings are done in Blender. Just visited a CNC course in the local makerspace, can use the CNC now by myself - yay! Prototypes incoming soon :slight_smile:

One could certainly also use CadQuery&Co to create models for VR. But I guess learning Blender would be much faster workflow wise. And also more flexible, particularly for organic stuff (well, SDF based programs like Curv3D would also work for organics - if one is more into math than pushing-and-pulling-until-it-looks-good :slight_smile: )

*: CSG= constructive solid geometry, building stuff by boolean operations on primitive geometric bodies. Most old CAD systems from early 20th century used this
BREP = border representation, functional description of the 3d surface of an object. This is what most current CAD systems use (most kernels are hybrid that can also map CSG operations on BREP)
SDF: signed distance field, places inside the body have positive values, on the surface it’s zero and outside is negative; good for organic shapes, good for hierarchical composition, can do many things that are very difficult with BREP (and vice versa for some others). Is starting to get traction now - but the BREP legacy is large and BREP and SDF don’t mix well…