Google just came out with a new virtual reality modeling app called Blocks. It’s significant in that it is the first traditional box modeling style application made from the ground up for VR. As I previously wrote an article on Sculpting in VR it seemed appropriate for me to write some quick thoughts on Blocks.
3D painting applications like Quill and Tiltbrush can output 3D meshes but they aren’t manifold (meaning self enclosed) and don’t follow the traditional workflow of a 3D modeling program, and sculpting programs like Oculus Medium are voxel based and use a sculpting metaphor so they’re really only useful for hi poly organic forms.
Google Blocks seems like a promising branch for 3D modeling in VR. In it, you spawn geometric 3D shapes and then manipulate their vertices, edges, and faces manually with your tools. This is a big deal! The biggest commercial uses for VR applications in my opinion are not in the art fields of sculpting or painting, but rather in the lower polygon world of CAD and architectural design modeling.
Unfortunately I have to say that I don’t think Google Blocks really fulfills much on it’s promise.
First let me give a important disclaimer. Tools are not the end all be all of an artist or designers work. The tools that Pixar used to make Tin Toy in the 1980s are absolutely primitive by modern standards but that isn’t what made their talent show. Lots of great stuff has been made with Google Blocks by professional artists. That said I think there’s a lot of stuff missing from Google Blocks that could be expanded on.
Google Blocks is aiming for simplicity in it’s design, and that’s probably a good idea for a simple VR modeling application that will probably be used by a wide range of people with varying skillsets. That said I think the level of simplicity they have here ultimately complicates the process of using Blocks more than it simplifies it.
LACK OF DIRECT CONTROL OF THE MESH
The main issue I found was that I had no explicit control over the creation of vertices, or edges. You can subdivide surfaces which allows you to add a vertex and edge to split a face in two, but there is no ability to Rip Vertex like in blender (https://developer.blender.org/D512) which makes the process kind of haphazard and roundabout. Not only can you not create new vertices easily but you can’t delete them either. This becomes a big problem due to the nature of triangulation of surfaces in 3D. Quads are often used in 3D due to their simplicity of presentation but at some level all 3D has to break down to triangles. There are some forms you can make out of quads like a cube with 6 sides, but if you move the vertices in a particular way, it becomes impossible for the computer to describe the shape with 2D Quads alone, and it must break things down into triangles. Blocks does this automatically which means that as you edit the vertices and faces of a shape, it will automatically subdivide in a very messy and inconsistent way.
In Google’s attempt to keep their users from getting bogged down in managing all their vertices etc, they’ve made a system where I actually got way more bogged down because I couldn’t determine or fix the way that it was handling changes to the mesh automatically.
The model I tried making in Blocks suffered greatly from this problem and had a lot of bad intersecting geometry. If you go slow and keep what you’re making simple, then you won’t have nearly as much problems but the fact that stuff can get messed up and then be impossible to fix other than undoing, is very frustrating.
LACK OF KEY TOOLS (transform, boolean, layers)
In trying to keep things simple, Blocks lacks a lot of tools. I don’t think this is to it’s benefit though. They have an extrude tool. That’s cool. But once you extrude a face, it’s impossible to change it’s shape in a uniform way. The ability to select a face and then adjust it’s size using some kind of transform tool is a big deal for evenly and consistently editing a mesh! Lacking this doesn’t make the experience easier, it just makes it more complicated to do simple thing! The hardest part of VR modeling is that you lack physical resistance like with real clay, or a digital tablet surface. You’re just waving your arms around in the air, and so it can be hard to be precise and even, and lacking transform tools is a big part of that.
Want to keep things simple? Why not introduce basic boolean tools?
Boolean tools are wonderfully simple and intuitive for people to use and are great for creating clean and consistent surfaces without a great deal of hand eye coordination.
Also when you save the file, it saves everything all as a single object. Meaning when I originally modeled a potted plant, the plants and the pot were exported to blender as a single messy intersecting mesh. Have the ability to group stuff out to layers or groups is a big deal for organization. Yes adding layers adds complexity to the UI design process but it doesn’t have to necessarily add complexity to the UX.
Also some kind of basic sculpting feature would be good. Something where you can deform the mesh organically without having to select every single vertex etc. Would be a big help. Lots of ways this could be done. I’m not saying this thing needs to go full Oculus Medium/zBrush but having some organic control would be a big help. They already kind of have it with the Stroke tool, they might as well embrace it.
AN ALTERNATIVE WAY OF DOING THINGS
Here’s what I think they should have done with Google Blocks. Maybe it’s just the fact that I love this program a lot and have been learning it recently but I think they should have gone more in the direction of something like Fusion 360.
Fusion 360 is an industrial design and prototyping modeling software project sold by Autodesk. It’s pretty rad! It’s a cloud based CAD program. CAD is different than most 3D modeling programs. It comes out of drafting and mechanical engineering. Because of this 2 major features of CAD would help with Google Block’s problems.
1. CAD is “solid modeling” meaning that all models are treated as solid, manifold, non-intersecting objects. In CAD this is so that you can run physical simulations on it and also because if you sent non manifold instructions to a CNC machine it would get really confused and not know what to do. The physical possibility of the object is enforced in CAD and that would help a lot with the messy mesh issues I alluded to.
2. CAD solid modeling tends to define meshes using more powerful mathematical notations. A normal 3D mesh is basically just a bunch of points in space, connected by lines,and those lines are connected together to form faces. You can get some wonky contradictions and stuff with meshes if you aren’t careful. Since CAD comes out of industrial drafting though you can form objects using graceful bezier curves and parabolas etc. Adjust the angle of a bezier curve and you can adjust the sweep of a ships hull, while trying to do the same thing in a normal 3D model would require the manipulation of dozens of vertices and lines. CAD modeling has limitations in some ways, since the mathematically defined aspects of it’s mesh can require more thinking ahead, but overall the simplicity of it greatly outweighs the fiddling and futzing around you have to do with individual vertices. To unique selling point for Blocks seems to be the way it opens up VR to box modeling, but if you are going to do that, then it seems a more CAD-like solution would help set it apart more and also have greater utility.
ANYWAY, those are my thoughts, very loosely edited. I didn’t put nearly as much time into this as I did with my previous article on sculpting in VR but that’s partially because I’m so busy learning stuff right now! I’m rebooting my website soon and have a bunch of articles planned, so hit follow if you want to stay in the loop. I’ll have more VR art and neural network articles very soon!
Oh yeah and here’s the final model I did today. The model I imported from Google Blocks was so meshed up and bad that I basically had to resurface stuff using the sculpt tool in Blender.