I finally released a huge project of mine, a fully realized sci-fi themed space shuttle. Not only is it (in my biased opinion) a solid entry into sci-fi shuttlecraft, but it also encapsulates a year’s worth of evolution of skill for me as a modeler. It was modeled in three distinct stages and pushed the boundaries of my capabilities at every stage. There is a ton I learned doing this project alone, and a great deal of it was born out of “this is the best idea I’ll never be stupid enough to do again.”
Stage 1: Initial designs and inspiration
Okay, before I dig in, I want to acknowledge the fact that it looks like a Type 6 Shuttle from Star Trek: The Next Generation. However, this was not the intention. My design stems from a cargo container I had created a few weeks earlier. I thought it’d be neat to have something that works a lot like a train engine that fits into and is compliant with the existing form factor. I can’t deny the inspiration from Star Trek – the Type 6 shuttle is one of my favorite small ship designs ever, I had a 1-inch sized micro machines model of it in my early childhood that was basically like, well, if this was Inception, it’d be my Totem. So yes, it has the same form factor, but it was essentially shaped like this to conform to the 6-sided honeycomb opening the containers offered. I did not have pictures of anything up on my screen while I was making the exterior, and the only time I used a reference from anything was when I was designing interior control schemes, where I referenced the Raptor interior from Battlestar Galactica and technical diagrams of the NASA Space Shuttle and Apollo/Gemini program cockpits, as well as B-52 interior spaces.
Now this is when I was still quite new to modeling, so I made a few critical mistakes that haunted me until the day I put the finishing touches on the last piece of geometry.
The model is slightly non symmetrical. Jesus Christ, I wish I had known about mirror and symmetry modifiers when I started this project. Every additional thing I added had to be hand flipped and placed, usually by a fraction of a unit. This just made everything harder.
The model is made of several component shapes instead of a single lump. I never intended to model an interior, and as such I did not make it easy to do so. I ended up having to make a great deal of modification to the mesh later in the project due to these extra faces and had to create non-ideal breaks in the mesh.
I unwrapped the mesh way way way too early, and unwrapped it to multiple textures. I wasn’t even fully satisfied with the shape when I did the unwrap, and had to make all kinds of painstaking changes and fittings to even the basic model. Weeks of additional detail meshes had to be painstakingly added to the empty spaces fof the uv, and when I made multiple skingroups and edits to the texture, I had to do everything twice because of the dual textures.
I initially marked the model as ‘complete’ in May 2013. It had a 1024×1024 main texture, a 512×512 engine texture, a 512×512 shared texture for the hardpoints on the top and bottom of the frame from the cargo containers, and a 512×512 glass texture that was opaque. It was a static prop with simple bodygroups to toggle the nacelles in up/down position and switch the guns from ‘there’ to ‘not there.’ It looked like this.
Not actually done.
So you ask, how did it get a full interior? Why were the textures upscaled? Why did you rig it? Well, the answer is simple: I was asked to as part of my work for the Cloud Odyssey Machinima. I initially intended to make this and sell it as a background prop for scenes, that how I was using it in my map, just a static object, like a vehicle in Counter Strike or Half-Life 2. When I delivered the model, however, I was asked repeatedly to model an interior among requests for rigging and additional skingroups. I initially hesitated with the interior modeling, I knew that because of all the reasons I listed, it was going to be non-ideal. I couldn’t just split it in half and model half the interior like a sane person, I’d have to do it by hand and model it inverted somehow – not a task I wanted to even attempt. Long story short, I was finally persuaded to do it anyway, and the real fun began.
Stage 2: Interior Modeling and Design
So I had a decent looking model that was poorly made and very low poly, but already fully implemented into the engine. Now, because of my lack of foresight, I had a huge project hat I was terrified to even grapple, but here I was, doing it. Because I couldn’t just split and model and I wasn’t going to scrap my texture work and start over, I had to do it in a very nasty way, I duplicated the mesh and extruded inwards. That provided a base mesh that synced up with the misaligned vertices The following week or two was painful single vertex manipulation and a whole lot of viewport pan and zoom to get a shape that wasn’t completely terrible.
I used two reference objects: f-35 pilot seats from some CoD game (provided by Kali, a model ripping friend) and the citizen bodies from Half Life 2. The rest was just about making it work in a physical and spacial sense. In a separate thread, I also made headway on a fitting replacement chair model that matched the pilot seat’s shape and dimensions.
All I managed to complete in the deadline for the film was a placeholder diffuse for the chair and a mostly modeled interior with unwrap and AO. Worth mentioning, I had to set up a relatively complex lighting environment for the ambient occlusion and lighting, I ended up modifying the lights to be two sided and hollow and placed spotlights plus daylight in a separate ‘baking only’ max file that I used to generate both an AO and a spotlight only ‘illumination’ map. Because the daylight simply didn’t reach to the innermost shapes, most of the interior was pitch black. The final mix in the texture was about 70% opacity on a multiply layer, with an additional 20% screen for the separate lighting bake. It’s enough to get the AO effect without crushing the underlying texture work.
With the client being happy with that and it being a generally grueling experience, once the bakes were done and the model compiled, I essentially dropped the project for other work. Anything beyond this point was to be driven by a sense self-completion. For reference, this was September 2013, about the same time I released the Sci-Fi Citizens and rebooted this blog space.
Phase 3: The Bonus Round
I can only look at wip shots from incomplete projects floating in my dropbox for so long. I ‘rebooted’ the project at the beginning of May with the intention to finish it. I had learned a few things here and there about good workflow, even very simple things, like pivot point manipulation, and I was ready to finish what I started. With the model mostly done, I only made a few small modifications to the exterior this time around, namely adding landing gear and reunwrapping the hardpoint to no longer use a dedicated texture (a shared texture that was used by the container as well, one I completely phased out with modifications to the container right before release). I also added a first aid kid I had modeled, and custom modeled and textured a hand held fire extinguisher for the interior. I added a few physical buttons here and there from another project, and also added lockers to the rear section. Finally, I used a new technique I recently became comfortable with in using 3dsmax splines to generate form fitting pipes around the cockpit, mostly to reduce the empty space and give the interior a bit of pop.
Because there was so much interior space and I wanted things to have a solid pixel density, the interior (not including holograms) is split between three textures: the interior walls, the large interior details, and the small (and post reboot) interior details. In order to maintain consistency, I textured all three using the same layer styles and took great care to make sure the baking environments were as close as possible to being the same. This was particularly difficult given that there was a theoretical 100% light seal in the rear cabin, I had to bake doors separately in closed positions and omit them I think there was a whole week where I ran my computer all day each day doing alternate bakes at high quality to make sure there was as little raycasting noise as possible out of the bakes. Finally, with that said and done, I generated my normals and submaps as well as a second skingroup for the abandoned version. I also took the opportunity to finish the chair.
Remarks on Remarkings
I decided in the final stage of development to push the decals onto a separate texture. Large protions of the texture are completely mirrored, esp. the large engine protrusions where designation markings would be ideal. Additionally, there is some nasty stretching on some of the UV that doesn’t show up with the standard texture but becomes obvious with text. I used a rather unique application of a common practice to get the desired effect. The traditional method to have non-morrored decals on mirrored surfaces is to duplicate the surface mesh, push it out just a fraction of unit, and give it an otherwise transparent texture with a custom UV. I did this with the shuttle, but took it one step further by making four variants that use the same texture, but 1/4th of the UV space. This allows me to have one texture for four markings and the variation be done with bodygroups. Combined with alternate decals for each of the 4 skins, this gives a total of 16 unique and unmirrored slots.
A Holographic Symphony
If I were to equate my holograms to music, I’d consider them a long and unending classical symphony, the same instruments and recurring themes played out over hours for a total effect. Individual sub projects would be movements, and this set in the shuttle would be the tip of a crescendo. It pushes my ability, incorporates previous work but is almost completely custom made for the contextual location and function, touches not only the limits of what photoshop can handle in a single document but also my patience and drive to look at a 2048×2048 map of pixels.
In preparing for this description, I tried to enumerate the number of layers and shapes in the psd, but at a certain point, it simply refuses to expand folders. I know that folder nesting goes down to 5 degrees at some points, and each folder has over 20 layers on average. If pressed for a number of editable layers, though, I’d put an estimate somewhere in the 4 digit range, likely 1000-2000. The holograms for this project just over two months, not including initial research when determining the layout. This only counts the custom graphs and charts made in powerpointas a single layer, there is an additional 8 or so independent graphs with dummy data that I created as filler.
What took so long was the fact that I tried to make the layout ‘functional’ in that if you were actually sitting in a seat, does the interface actually make flying it functional. I did a great deal of research, luckily NASA has volumes of reference materials including old control schemes from early missions. The three user system stems more from my knowledge of military aircraft, I tried to recreate the ‘feel’ of manning a B-52 when designing the roles. There is a great deal of of detail for those that want to look, and they visually pop when taken as a whole. I tried to make it appear both overwhelming at a glance and logically simple in detail. This is the first instance, I believe, of me doing a single layer hologram (I almost always split foreground and background layers for a parallax effect). This is simply due to the complexity and additional size and time that would go into making a second layer. If I had infinite time and patience, I would have added a few dynamic scrolling and rotating layers, but I enjoy my sanity. I would say I didn’t want to get burned out, but I got burned out on it in the first few days.
(Mind you that the above is only the center-most pilot/copliot console – each root folder has similar or more complexity then the expanded one!)
I decided to include the matching cargo container in the release. I had intended to just release it as is, but I realized after comparing it to a model that I had improved dramatically, that it was severely lacking when put up against the shuttle. I ended up making a high poly version and remodeled the details to put everything on one texture. I also shared the hologram texture with the shuttle to increase consistency and reduce the amount of files for the pack. Finally, I figured that if I was going to do all that, I might as well just rig it, so I gave it a skeleton. Because of the texture upscale, combined UVs, and high poly bake, I had to redo almost the entire texture as well.
So basically I remade the cargo container as an addon for the shuttle.
In the process of making this shuttle, I also did some additional modeling to supplement the main model, and I’d like to point that out here as this is really the only place where I’d talk about it. Besides doing the chair top to bottom, and creating arm rests and an alternate base that were unused in the shuttle itself, I also made a spiffy little fire extinguisher that stands on its own as a small detail prop:
Additionally, I had saved the boolean object I used to carve out the side doorway back when I initially made the model, and used the interior stair step in the cabin to model out a perfectly fitted step ladder type thing for posing and hangar scenes.
A few things I didn’t release or finish include a fully modeled interior to the engines, I used a composed orthogonal view in the holograms.
I tried making a high poly version of the shattered glass for baking, but could’t get the effect I wanted with turbosmooth and noise.
I had also conceptualized retractable wings and circular jet like engines, nether of which were good ideas.
Finally, I initially kicked around the idea of making a holographic skingroup, back when the model was simpler. This was not very successful due to overlapping UVs. However, when I culled the dead interior geometry, that problem fixed itself. I made a holographic version of the textures effortlessly using layer comps and because I was diligent with the PSDs, everything survived upscaling and modifications rather elegantly. Since I moved the decals off of the diffuse and onto its own geometry I was further able to provide variation to the texture and was able to do some rather abstract reapplication of the decal markings as shuttle status updates.
I wanted this to be a very solid release for both gmod and SFM, so I took time to implement features that maximized ease of use for both programs. I targeted SFM primarily, fully rigging everything and even doing some simple keyframe animations in max for SFM use, but when it came time to do a release, I wanted to bring that same level of thought to the gmod version. I was worried that I would have to branch the models, and unfortunately, my worries were confirmed. I wanted to have a version for gmod that allowed for the same kinds of options as the SFM users, which meant a complex physics system with joint constraints. Unfortunately, gmod takes joint constraint data and kind of fudges it, so when you say ‘no movement except in the x direction, where it has a limited range of motion, a spawned ragdoll will respond with ‘jello in all directions except in the x direction where it’s free spinning.’ I’ve also never been able to assign custom bone weights, so a complex mesh that had ragdolled components just proved to be undo-able. Instead, I opted for bodygroup city, I made a ‘static’ version that has a fun, fully enterable concave mesh and tons of bodygroup options for basic forms of movement. Furthermore, I offered up all of the moving components as separate bodygroups, so you can, in theory, recreate more complex movement with multiple props.
Given the effort that went into the model, I decided to pull all the stops for this one, and in the same light, provide more of the framework for the universe I’ve built in the process. I initially intended to use this document I had written as an instructional ‘welcome to shuttle training’ type thing – I had formatted the document to look old, and to give it some flair, actually printed it on an old dot-matrix tractor feed printer I have access to at work and scanned it in. I love the feel of it, and even played with the idea of making a video.
When I showed it to one of my friends that does SFM videos, he offered to narrate the whole thing. At this point I had to make it a video. I completed it at breakneck speed – 4 minutes and 30 seconds of SFM video done in 33 hours in a two week window, working in parallel with all of the other media completion and bug testing. The final video is what started this post, feel free to watch it again. A very special thanks to Nigbone for the narration track!
I generated some additional still media as well:
Blooper Reel, a friend of mine that did poses for the Sci-Fi Citizens produced two shots:
Uncle Burbon, an excellent gmod scenebuilder, give me two as well:
Finally, Adam Palmer, them an who commissioned the interior and who is very responsible for making this whole thing possible, gave me an amazing interior shot.
Thanks to everybody that helped with feedback, and you can grab the models now available in the workshop and on my OneDrive. The link to the release thread is here: http://facepunch.com/showthread.php?t=1393228