Morning Altars
The Skinny:
Morning Altars is a proof-of-concept demo I developed for Day Schildkret, a nature artist who was interested in seeing his art form translated into virtual reality. My approach was to build a user interaction toolkit which reflects specific aspects of his process (i.e. the act of gathering materials, arraying objects symmetrically, etc), while trying some unusual stuff to make the interactions themselves memorable and physical. We collaborated on it over the course of a summer, pitching ideas back and forth until this final prototype took shape.
[SHOW PICTURES HERE]
Ethos Statement:
I took this in part as an opportunity to explore my personal interest in developing a piece of creative software that could only work in VR. Taking a great deal of inspiration from an obscure device described by Isaac Asimov in his short novel, The Naked Sun [LINK, ELABORATE, SHOW QUOTE], I endeavor to build an interface with no buttons or windows or visible controls. Instead, the user is guided purely by feel and intuition (and a pinch of trial and error). The final outcome is an experience not dissimilar to that of working with clay. It's naturalistic, playful, and inherently a bit messy. It's not immediately evident how to do anything at all, and it can certainly be frustrating for a user with a specific goal in mind to figure out the right function to accomplish it, but I would argue this does not set Morning Altars apart from the likes of Blender or ZBrush or even Microsoft Word. 3D art software is, as a rule, complex and impenetrable.
One aspect both Day and I were particularly excited about is the prospect of hand-gathering materials from nature. For him, this process is key to the artistic experience. It is meditative and time-consuming, causing the artist to yield a certain degree of creative control to fickle forces like biological degradation and his/her/their own stamina (or patience). In our demo, the user must navigate the environment physically, collecting and manipulating found objects without modifying or duplicating them. Such limitations strike me as far more appropriate for VR than any old flatscreen application, since in the former, motions like searching visually and bending over to pick stuff up need no abstraction. I think this approach might be very tedious on a conventional monitor and thus fits the prompt excellently.
Interaction System:
The foundations of the system can be broken down into three core categories of functionality: Collection, Manipulation and Placement.
- Collection: When in collection mode, the player may squeeze the trigger to grab objects within the blue field and add them to a handheld array. There are two submodes for collection: Bubble and Beam. Bubble is straightforward and serves as the default method, while Beam is there for comfort, so players don't have to repeatedly bend down to pick up stuff off the ground. At any time, the player may pocket the array and recall another at will, indexing through separate containers of objects like colors on a palette.
- Manipulation: While holding an array of items, the player can use their offhand to arrange them to form different patterns. Items of the same type are manipulated collectively, in order to make symmetry and uniformity as easy as possible. There are currently two types of array: Radial and Linear.
- Placement: Objects may be projected and placed on any surface within a given range, and will automatically adapt to rounded or uneven targets. Placed objects are taken out of the physics system until they are picked up again.
Environment Design:
Although the primary purpose of this project was to develop mechanics, it was important to me that those mechanics are not displayed in a sterile, synthetic-looking environment.
Using Unity's TerrainTools package, I added some topography to the play area. This is an important part of creating a sense of space for the VR player. There are five different layers of texture (see Fig. 3) which I painted onto the surface in order to rough out environmental details.
I then added various types of grass/flowers for an extra layer of detail. Yellow flowers serve to highlight ridges and break up large patches.
For the trees, I individually placed the 20 closest ones to the play area, tweaking their height and position in order to frame the sun and path favorably. I followed that up with several brush passes of larger and smaller trees to fill out the player's sightlines, all while keeping performance in mind.
Takeaways:
- If I made another environment for this, it would be underwater. I really hate stick-based movement in VR, and I think the physical motion of swimming could be really fun and fitting for this kind of project. It would also be the right whimsical twist on the subject matter, making use of the medium's borderline unreality. I think I was a little too literal with my environmental design as I was just trying to get something presentable for the demo, and it would actually benefit conceptually from being more fantastical. Too many VR games suffer from the pursuit of hyperrealism. That and there are TONS of cool shells and coral bits and sea creatures I can think of to model for materials.
- This was the first VR project I worked on where performance really became a big issue. The tree system I used to create the environment had every tree rigged to sway back and forth in the wind, and this combined with a lack of any kind of model optimization on my part led to the application lagging like crazy when I did my real-time demo for Day. I got carried away making my environment and paid for it when it degraded the presentability of the actual mechanics which were supposed to be the focus of the exercise.
- I wish I had time to make the interactions more pretty. There's a bit of a balance in the final product between functionality and smoothness of delivery, but more time spent on little sparkly effects and general game juice would have gone a long way on this one.