Sunday, June 5, 2016

Millennium Falcon 3D Model Part 3

Revised cockpit: May 20, 2016

Right on the heels of a rather hectic semester, including passing the PhD qualifying exam, I present version 2 of the Millennium Falcon cockpit. Most of the modifications are based on the earlier CAVE2 virtual reality tests which exposed some scaling issues with the model as well as experience gained by modeling such a detailed space with angled panels.

Opposed to the original model where the cockpit walls were modeled at that angle, the new version are actually separate panels rotated into that position. This made it much easier to place switches, buttons, and lights using the panel's local coordinates.

Also since the original model I've found two major reference sources that have vastly improved the detail in this model:

  • Joshua Maruska's Millennium Falcon model
    • Used his cockpit walls as scale and detail reference
    • Also for the captain and nav seats.
    • My Nav seats used his as a reference as the originals had far too many polygons for my use.
    • The Captain's seats are currently his. Haven't decided if I'll model my own or keep them
  • The Force Awakens 360 Panoramas
    • These have been immensely helpful for getting the details of the cockpit and especially the main cockpit console

Completed side wall panels: May 23, 2016

Cockpit console: May 26, 2016

In a change of pace from 3D modeling, I worked on finishing the turret interaction I had started on in January and implement the wand controls so that I could test this in CAVE2. As a testament to the development of the CAVE2 Simulator most of the interaction was tested using the simulator augmented with a Kinect for hand and head tracking. This translated to directly running on CAVE2 without any sensitivity adjustment to the controls.

This was one of two CAVE2 Unity demos using a new version of my cluster sync code. Details and probably a video in the next update.

Cockpit console: June 4, 2016

Wednesday, May 4, 2016

Thursday, February 18, 2016

Millennium Falcon 3D Model Part 2

For this modeling project, I'm continuing to use the Blender Project Timer extension to keep track of how many hours I've actively spent modeling this thing - although I won't be able to track the time spend working with the model in Unity.

AG-2G quad laser cannon: Jan 3, 2016
Passenger ramp door: Jan 3, 2016

Putting the pieces together: Jan 4, 2016

I suppose I'll also mention I typically have my Star Wars soundtracks on loop while I'm modeling. If I really want to be inspired, I'll be sure to jump to either 'Follow Me' or 'The Falcon' tracks from The Force Awakens.

Finishing up the starboard panels: Jan 8, 2016
Detailing up the starboard panels: Jan 9, 2016
Replacing the previously mirrored textures on the port side: Jan. 9, 2016
Millennium Falcon Cockpit after 33 hours: Jan. 9, 2016
Entrance corridor lighting test: Jan 9, 2016
Turret ladder: Jan 10, 2016

Landing Gears: Jan 10, 2016

Passenger Lounge: Jan 10, 2016
With the addition of the passenger lounge, I'm really beginning to tackle the usual challenges of modeling the Millennium Falcon - the interior sets are too large to fit in the exterior ship model. At least with the original film Enterprise I didn't have to worry about that too much (The one exception being the Klingon bridge from The Motion Picture redressed to be the Enterprise torpedo bay). Although the 2009 Star Trek monstrosity of a starship is worse mess in terms of scaling.

Passenger boarding ramp: Jan 10, 2016
The boarding ramp is still a bit of a mess. The ramp is steeper than it should be, but if I made it any more level, I wouldn't be able to fit the corridor around the turret column.

Nearly complete cockpit wall detail - 42 hours: Jan 12, 2016
Starting the dashboard: Jan 13, 2016
Control levers: Jan 13, 2016

By this point I was having some doubts of how I was modeling the dashboard. Unlike the cockpit and exterior shape, I was having difficulty finding the dimensions of the console. After some visual testing in CAVE2, I eventually found an existing accurate 1:1 scale model of the dashboard which was commonly used for physical 1:1 scale replicas of the Millennium Falcon cockpit.

Turret testing: Jan 15, 2016
I took a break from modeling for a bit while I was mulling over the potential scaling issue with the interior cockpit. Using some of the same code from my previous starfighter tests, I also refined the targeting computer display which my X-Wing used.

Starboard docking port: Jan 22, 2016
There's been some debate over what these things on the side of the Falcon are. Typically listed as either docking ports or the escape pods. I went with docking ports for multiple reasons: 1) Several escape pods were jettisoned before the Falcon was captured by the Death Star in A New Hope and the exterior looks the same. 2) The Ghost in Star Wars: Rebels typically docks in space using similar looking attachments. 3) I managed to design the interior of the passenger ramp to work as a corridor to the docking port. 4) Later found out The Force Awakens Incredible Cross-Sections also labels them docking ports. Although the YT-1300 is known for its customization options so they could be either depending on the configuration.

Lounge progress: Jan 23, 2016

Rough mapping of the remaining interior space: Jan 23, 2016

More on the revision of the cockpit scaling in part 3.

Thursday, February 11, 2016

That's No Moon Part 3

Part 3 contains less new modeling and more testing in CAVE2. Some basic wand interaction was added to open some of the blast doors and extend the bridge across the chasm.

First test in CAVE2: Dec. 15, 2015

With The Force Awakens approaching, I pulled some of the models from my Stormtrooper shooting test and made a few photos for my Facebook cover photo and profile picture. Literally took these shots right before leaving for the Alder After Dark Side event. I also added multiple weapons selectable using the DPad - and E-11 Blaster Rifle, DL-44 Heavy Pistol, and my lightsaber.

DL-44 in action: Dec. 17, 2015

I wrote the lightsaber blade script in Unity years ago, but this might actually be the first time I'm wielding my lightsaber design in CAVE2 (a Kenobi/Katarn hybrid).

The lighting scheme used for the corridors in this shot was inspired by the season 1 finale of Star Wars Rebels 'Fires Across the Galaxy' where the Ghost crew boards an Imperial Star Destroyer temporarily disabled and running on emergency power.

I'm still working out synchronization issues in CAVE2 preventing me from making a proper video of this. Probably due to the tighter space than the test scene in the previously mentioned video, the stormtroopers get out of sync much faster in this environment.

I've run some smaller tests and showed that it is not the Nav Meshes de-synchronizing, but rather somewhere in the combat/aiming scripts. Sadly the most stable version of this game is the one where I disable strormtroopers shooting back. Just of one many things I hope I'll tackle by part 4 which may be delayed due to the semester kicking into gear.

Friday, February 5, 2016

Millennium Falcon 3D Model

Over the past few years of demoing my 1:1 scale of The Motion Picture/Wrath of Khan Starship Enterprise in EVL's CAVE2(TM), I've been ask more than a few times "what about the Millennium Falcon?"

Arguably X-Wing Alliance remains one of my favorite games because you spend part of the game as a young pilot working in a family business where you get to fly a more stock version of the YT-1300.

When Star Wars Galaxies: Jump to Lightspeed came out in 2004, you bet the first piloting profession I would take would be neutral pilot (Character was from Corellia, so naturally CorSec Squadron) because the YT-1300 was one of the Master Pilot ships.

Maiden flight of the Nevvere Eagle (2005)
SWG YT-1300 (2005)
Last flight of the Nevvere Eagle (Dec. 2011)
Antron Nevvere's final logout (2003-2011)
I've been tempted to write a post reflecting on SWG. Pulling these screenshots brought out a lot of memories. There was a forum post where player were discussing where their character's 'final resting place' would be. For my original character it was on his YT-1300. For my second (Jedi unlock) slot character which also was my final logout from Galaxies, it was the place I wandered aimlessly back in the day before vehicles and players had mapped the planets. Hoping for some clue to unlocking the mysteries of the Force (which ironically I do consider part of the downfall of SWG).

Elder Jedi Artius Nimoro's final moments at the Dantooine Jedi Temple Ruins (2005-2011)

Anyway, so 2015 rolls around and I've just seen The Force Awakens. The first moment in the film that got cheers in the audience (I think the largest cheer of the night), was the reveal of the Millennium Falcon on Jakku. I'll admit I was close to tears and simultaneously wincing seeing the Falcon's engines powering up followed by dragging along the desert. Still felt the same way watching it the second time a week later in IMAX.

So after that second viewing, during winter break:

The Beginning: Dec. 23, 2015

So like most of my previous modeling projects, there's plenty of screencaps, Google searches, blueprints, studio set diagrams, and other reference materials I'm using to build this.

Interior Corridors: Dec. 29, 2015

Cockpit Panels: Dec. 30, 2015
Rear Starboard Panels: Dec. 31, 2015
Starboard Panels: Jan. 2, 2016

Working on the cockpit panels was similar to the Enterprise bridge panels. however this time around I was modeling far more details where the Enterprise was more textured. Intention is to allow more flexibility when animating the lights in addition to just having more 3D meshes to see in CAVE2 (which Enterprise pre-dates).

More progress on the Falcon and That's No Moon Part 3 coming soon.

Thursday, January 7, 2016

Looking Back at Fleet Commander

It's been a little over six years since I started doing research at the Electronic Visualization Laboratory (EVL) at the University of Illinois at Chicago and the first major project I did would eventually be known as Fleet Commander.

With Star Wars: Episode VII out and EVL's Cyber-Commons touch wall again configured in a way that would make it easier to bring this back, I thought I'd look back at the project that eventually led me to graduate school.

While there have been several iterations on different touch devices, the most famous is the 20-foot touch wall version (video above). Not only did it set the tone as I finished undergrad and continue to grad school, but those wall radial menus and touch gestures would eventually figure into my Master's thesis.

Fleet Commander basically started with the following points in mind:
  • I had just taken Video Game Design (Spring 2009) creating a Foosball game for a multi-touch table
  • I wanted to originally create a strategy game for the class - team decided otherwise
  • I'm employed under the Research Experience Undergraduate program to continue development of multi-touch applications on the TacTile system
  • and well Star Wars!
    • The first project for the video game design class was to create a bug squish-like game for a multi-touch table so naturally I turned it into an asteroid smash game with an 'asteroid chase' Easter egg complete with a TIE Fighter.
Asteroid Smash (2009) - Honestly surprised that 1) I still had the source code on my laptop in 2015 and 2) was able to get it running in a few minutes


I remember sketching out the original draft of 'Planetary Defender' - fleets above fighter for control of the planet below where the player would have both the ground base and the fleet at their disposal. Maybe a bit ambitious for a single fourth year computer science undergraduate with a semester of video game design (Zooball) and one software design project (text-based go-here, pick up item, unlock door type game).

Fleet Commander would eventually be the result of 'phase one' of the game which focused on just the space battle component.

Planetary Defender Concept Art
(Honestly I'm starting to regret not keeping the original capital ships I drew in Paint)

The core idea behind Fleet Commander wasn't the ships or even the gameplay, but the user interface. I've basically built my entire grad school career on user interfaces and human-computer interaction. At least that was the idea to justify this as an undergraduate research project.

Keep in mind this was 2009 (Angry Birds wouldn't be a thing until the end of the year) and I was thinking: I have the 52" touch screen, 100+ touches, no distinct user identity, no 'correct' orientation on the table, and how to fit a strategy game with touch clicks and drags (no keyboards or right-clicking).

A group of us that built TacTile and/or took the game class in 2009 would eventually publish Design Guidelines for Multiplayer Video Games on Multi-touch Displays.

Building The Fleet

Development at a Glance

  • 7 months total development time
    • Spanning summer 2009 to July 2010
    • Mostly during the academic year (My senior year in college)
    • Small updates through 2013
  • 1 developer (me)
  • ~13,000 lines of Processing / Java code
    • Spread across 31+ classes
  • 100+ images
  • 49 sound files
  • 1 3D object (Sphere for the Death Star with 3 layers of textures - surface, light, and shadow)
  • Originally designed for a TacTile, the first multi-touch HD (1920 by 1080) resolution LCD table using Frustrated Total Internal Reflection (FTIR)
  • Ported to the Cyber-Commons multi-touch wall using a completely different touch system
    • ~20-foot wide PQLabs multi-touch overlay (Largest one ever built at that time)
    • Wrote the Omicron Input Abstraction Library to manage this
    • Updated to support a linear array of speakers located above the wall
    • Using a resolution of 8160 by 2304


The primary purpose of Fleet Commander was to design a native multi-user, multi-touch strategy game. But it also served as a test bed to really explore all those data structures, software design techniques, and algorithms I had read about or was casually mentioned in class.

I really went all out with the object-oriented design. Basically every object that needed to interact using touch was derived from the same 'Touch Object' class. Everything from the ships, buttons, fighters, and superweapons all had the same base class. The Mon Calamari Cruiser, Imperial Star Destroyer, Corellian Corvette, and the Carrack Light Cruiser all derived from the Capital Ship class.

All the fighters flying around are controlled using a basic flocking algorithm, well maybe just the follow aspect. I don't think I really wrote a good implementation of a flocking algorithm until my third attempt - which was for a project for the GPU programming class (and yes if you look really closely, that is the A-Wing sprite I drew for Starfighter Battles Part III.

The aiming mechanic does use a look-ahead method by calculating the velocity vector of the target and the speed of the laser - classic shooting game physics. Again first time I really implemented this kind of AI behavior.


Radial menus and multi-touch widgets and gestures make up the bulk of the user interface. Buttons are multi-touch aware and track multiple simultaneous touch points. Touch drags are used to position objects - even using all five fingers to launch 5 ships at a time (although a bit difficult to perform). Capital ships can even attack specific targets using a press-drag-to-target or using two fingers to do a ray cast.

As I've already mentioned the techniques here basically setup the basis of my master's degree. The user interface design would appear in my master's thesis as well as the SAGE2™ Scalable Amplified Group Environment.


Basically all the audio was (obviously) lifted from Star Wars games (If you must know: Shadows of the Empire, X-Wing Alliance, and Empire at War). As someone on YouTube mentioned, there are Star Trek: The Next Generation computer interface beeps in there.

Keep in mind this was written in Java on Linux in 2009. Anyone who has worked with JavaSound in Linux at the time knows how much of a pain it was to get a working sound card driver. Even then you started running into issues with file types, bit rates, and all that fun stuff.

The final solution was to stream sound events to an external SuperCollider server which would handle all the audio work. This also had the advantage to allow us to localize sound effects across the seven speakers along the top of the Cyber-Commons wall.

The one part of the sound manager that I was particularly proud of was the Dynamic Music Manager which basically played/looped/switched music files based on the state of the game. The notable cues were 'Rebel/Empire enters first', 'Ion Cannon/Death Star fires', and 'The Trench Run'.

While filled with sounds and music copyright of Lucasfilm, how I pulled them all together really added to the overall feel of the game. Really going to miss that if I ever end up pulling the Star Wars theme out of it.

The Video

Making of

So we've had Fleet Commander running on TacTile and the Cyber-Commons wall for quite a while and at some point my academic adviser said we should make a quick video of it. Not sure exactly what prompted this - maybe as just as an example of multi-user interaction on the touch wall that was more complex than just the paint app.

I think we shot this video rather fast. Got as many students that happen to be in the lab that day and got them in front of the wall to play it. Fairly sure more than half of the people in the video had never actually played the game before.

If I remember correctly, the final dolly shot was done with our resident video expert sitting on a wheeled chair being push by our audio expert. I know there's a picture of that - will have to find that someday.


I believe my academic adviser did a quick edit and threw it on youtube and sent it to Kokatu. I believe the intention was to get it out there and let people knit pick every detail out of it. I think after a couple of weeks it was at 500,000 views.

I think it was the next day I got two separate emails: one from Lucasfilm and another from the creative director as Lucasarts. Both essentially expressed interest in it and asked if I wanted to come down to San Francisco and talk about it.

By chance I was already flying to San Francisco on EVL related business to demo our SAGE software so I was able to stop by and have a look at the Letterman Digital Arts Center where Lucasfilm and LucasArts operated.

Yoda statue outside the Letterman Digital Arts Center in the Presidio, San Francisco.
Really cool to see so many matte paintings and props ILM had done over the years. Maybe if I wasn't just starting graduate school (and after the fact Disney acquiring and shutting down LucasArts the following year) maybe it could have been interesting to work there. With the new ILMxLabs in 2015 and the fact I've been doing virtual reality since 2012 who knows?

Things I Would Have Done Differently


As I mentioned in the concept section, I'm staring to miss the original artwork I had done in Paint for the capital ships. I think I just wanted it to look better - especially when corners would start breaking off. That was a bit of a pain in itself since I had to make and align multiple images by manually specifying coordinates to make that work in Processing.

The big part where I got lazy was trying to draw my own space stations - as so many have pointed out on YouTube, I screen grabbed from Empire at War. I'm a Computer Science student and not an artist - although this was a few years before I would start The Enterprise. Even now I'm not sure I'd have the 2D/texturing skills to pull off something that looks good. A majority of Enterprise is just material colors and not textured (The Bridge being the one major exception).

And really, would I want to stick with similar artwork I've been tossing out since 2002?

Star Wars: Starfighter Battles III (2002) - Written in Klik & Play

Unfortunately the Empire at War art was really recognizable and had a bad tendency to overshadow the project. But I really wanted to get a space station in there that wasn't the Death Star. Besides where in the original trilogy did you see a space station that wasn't the Death Star? I suppose there are plenty of examples that have popped up in the X-Wing series of games, but Empire at War did have a distinctive design for the Alliance and Imperial space stations.

The Video

Honestly I've never been crazy about the 'famous' Fleet Commander video despite 775k views as of 11/16/2015. It was such a quickly shot video with next to no editing. My academic adviser at the time really wanted to get it out there as quickly as possible knowing that everyone would nit-pick the hell out of it. I was probably only one of two people in the video that had ever played the thing before.

In particular I feel bad for one particular student in the video since she always got flack in the video. She's since graduated and gone on to better things and probably never looked back at the video (Thank the Force). But maybe I'm just reading into it too much.

As previously mentioned there were plenty of good things that came out of that experience, but still.