Slowly Learning by Building "The Construct" from The Matrix
The Matrix is one of my favorite movies of all time and I'd bet that just about every VR enthusiast reading this post feels the same way. The idea of entering a virtual world with full-sensory immersion -- jumping between buildings, racing motorcycles, dodging bullets, and learning anything instantly -- gives me a total rush of excitement. Now, I realize we are far from that world of full immersion with current technology, but that won't stop me from trying to experience a piece of it!
For my first real project, I decided I wanted to build the scene where Morpheus first introduces Neo to The Construct. Neo and Morpheus are definitely beyond my current skill to create, so they're free to go save Zion from robo-squids while I tackle the rest of the scene, which conveniently only consists of a few components:
- A completely white background in all directions
- Two red leather arm chairs
- A small end table
- A 1950s era television with remote
When I first started, it didn't occur to me to look around the internet to see if anyone else had done this for VR already. Had I looked, I would have found that an interpretation of this scene has indeed been created over at http://www.tipatat.com/TheMatrixVR/. I want to give a friendly shout out to the creators, Tipatat Chennavasin, Eric Beyhl, and Jon Dadley, (I haven't met them) for this cool demo and then see if I can one-up them with a more realistic version (friendly competition, of course). In keeping with the theme of this website, I'm going to see how close I, a beginner, can get to the appearance of reality - to reach the "immersive limit". Now let's rewind a couple days prior to me finding TheMatrixVR and look at how I got started creating the assets.
What follows is a very honest, crude, beginner attempt at making a virtual reality scene with only basic knowledge of Maya, and Unreal Engine. Someday soon I hope to make this into a tutorial series, but I'm definitely not there yet. When it's done, I'll update this post with the link to YouTube.
I began modeling a chair first. Now this is admittedly a pretty intimidating object for a beginner, but I figured that if I could get the backrest looking good, the rest of the scene would be easy. I found a clever method for that from a tutorial and modified it for my purposes. I'm pretty pleased with my progress, but I have a long way to go before it looks real. Here is a picture of me testing out the method on a plane polygon. After using the "Smooth" command on this, it actually looked pretty good.
After doing that proof of concept, I attempted to model the main body of the chair. Here's how it looks at the moment. Far from "real" looking, but not too embarrassing to post to the internet, I've decided.
I've been thinking a lot about how to make this chair in a more intelligent way and I think I've figured it out. I need to create the upholstered part as eight distinct pieces: each side will be broken up into three pieces (armrest support, armrest, and upper) and the center will be two pieces (base and backrest). When each piece looks right, I can combine them. I was hoping to work on this a bit more this week, but things keep getting in the way. For example, my fiancée, Kayla, and I are planning our wedding, which is exciting, but a lot of work!
The Retro Television
I was able to do some work on the TV, which was a lot more straight forward to design. I didn't need to look up any techniques beyond what I'd already learned on DigitalTutors.com for the model itself.
I still would like to smooth out the edges a bit and fine tune the smaller details to make it look more realistic, but the model is a decent start.
Thinking I was pretty cool at this point, I exported the model to FBX format and imported it into the demo FPS scene in Unreal Engine. I found on my first attempt, that I was only able to apply a single material to the model. On top of that, the wood texture I tried out looked alright on some faces, but completely stretched out on others. Honestly, it looked like crap, BUT, I was able to view it in VR! In my Oculus DK2, it looked like the right scale, so this was definitely an accomplishment.
Discovering UV Mapping
After searching around the net for why my textures were all stretched out, I discovered UV mapping. UV Maps allow you to size and orient the way a texture will be laid out on your object. I found a tutorial, Getting Started with UVs in Maya, and after completing two of the videos, decided I knew enough (I didn't) to get started. I still need to go back and finish that tutorial...
Laying out pieces looks a bit like this. I'm guessing I'm not supposed to have a huge pile in the center though.
I'm trying not to dive too deep in any one area right now, so I aligned all of the faces on the UV map to not look like total garbage and moved on (I imagine some readers are cringing right now). I also learned that you can apply different materials to each face of your object in Maya, so that when you import the FBX into Unreal, you will have a list of material slots where you can add better materials. This time when I imported into Unreal it looked a lot better. I replaced the brown material I had for the box with a wood sample material and it looked decent. Here's how that looked.
Still a lot of rough edges. The shadows looked pretty messed up both on and under the TV when I built the lighting in Unreal Engine and in general, the TV needs better materials. Clearly I have a lot more learning to do before this becomes indistinguishable from reality. Once I figure out how to make this scene look so fantastic that it brings me to tears, I plan to make a tutorial series on YouTube to teach other people how to do it too. Thanks so much for reading and please let me know if you have any suggestions or questions!