Becoming a Butterfly
Before we can do anything in VR, we need to create our monarch 3D model. To save time, rather than build the whole thing from scratch, we purchased a low-poly 3D model of a monarch butterfly that was rigged—meaning it had an armature, or bones we could use for animations. We then modified it using Blender to look and work the way we wanted.
For our purposes that meant:
- removing the head (this is where the VR camera will go),
- detaching the antennae and proboscis (the straw-like butterfly “tongue”) so we can control them independently in VR, and
- modifying the rig/armature and wings of the model to work well with VR hand controllers.
Removing the head is relatively straight-forward–we want this to be an empty space where we can put our VR camera in Unity so when a player puts the headset on, they are looking out from where the butterfly head would be. We detach the antennae and proboscis for similar reasons—so these can move with the player’s actual head in Unity.
The next part was a bit more complicated. We needed to modify the mesh so that the dimensions of the wings were more accurate; the wings themselves had thickness, particularly around the tubular veins that run through the wings to provide support; and rebuild the rig/armature of the model so that the wing bones could be animated using inverse kinematics (see part III below) in Unity with the hand controllers as targets. We used scale images of adult monarchs to recreate the wings and trace the paths of the veins.
We then made the veins into 3D “tubes” that run throughout the wings, as they do for real butterflies to provide the wings with nutrients and stability. (Note: in the final model we did this only for the forewings for performance reasons.)
We also spent quite a bit of time playing with the wing mesh to try to get regular edges running through and lining up between the fore- and hindwings. This is very important to get the wings to animate properly as they’ll only be able to “bend” along these edges: the wings won’t appear to move correctly when they’re flapping if the edges/vertices are arranged more haphazardly.
Once the geometry was ready, we did a few quick mock-ups showing how we anticipated the VR avatar to fit together in Unity. As you can see in the images below, the butterfly avatar needs to be quite large to fit the height of the player. Building it in this way means that the player’s head will be where the butterfly’s head would be and the player will perceive their actual feet to be at the same level as the butterfly’s feet in the virtual world, improving the level of immersion.
The player’s hand controllers will also be able to control the positions of the butterfly’s wings, so when the player stretches their arms straight out, the butterfly’s wings will likewise stretch straight out. Raising the right arm will cause the right wing to rise accordingly. The wings will simply follow the locations of the hands, with limitations added to each joint of the wing bones so that they cannot move or rotate in an unrealistic way.
Finally, we used Blender to unwrap the models, a process that allows you to map a surface texture or material to the model using an application like Blender or Substance Painter. In this instance, we’ll create two separate avatar materials: one for the body, and another one for the antennae and proboscis.