MayaI've been slowly improving my proficiency with Maya. There are so many different ways to get around the UI (shelf, hotkeys, top menus, marking menus, etc); it can take awhile to try them all and figure out what works best.
Maya's ok I guess. The modeling tools are decent, if a little modal. My biggest problem so far is that it feels like an old app. The UI takes time to learn. It crashes often. Get used to saving before any major changes, adjusting the autosave to every 5 mins or so, and to using the "Increment & Save" feature to litter your drive with "safety" versions. I lost some major work before going into the settings to set up the autosave. Undo/redo are fairly unreliable. It's often that undoing will skip the most recent change, or won't restore things correctly. At that point you're screwed since you have no idea about the state of your scene. Best to reload the latest save. All that stuff adds up to feel like I'm dealing with problems that I shouldn't be.
I'm also still a little sore about missing a useful modifier stack. If you're not familiar with 3dsmax, it has a really nice system called "modifier stacks". It's basically just a stack of edits that you've made to an object. You can go back to any previous edit and continue to tweak its parameters and the object reapplies all following edits and updates immediately. Maya has a really poor facsimile of this in its construction history. Unfortunately, the construction history is a complete mess of cluttered nodes and connections. There's so much complication behind the scenes in Maya that you very frequently have to collapse the construction history to keep things manageable.
The one (big) saving grace for Maya is their scripting system, mel. Everything in Maya is scriptable and the script editor is front and center. The API is mature and pretty easy to use once you figure out mel's quirks. With a little effort, I've been able to get more comfortable setting up custom lossless edits to get me some ways back to 3dsmax's modifier stack.
Aft Balcony & WindowsOne of the more complicated structures on the ship is the set of aft windows & balcony. This is the section at the back with the nicer cabins and officer eating area. It's basically a big thing stuck on the hull; full of skewed windows, curves, and other fancy carpentry. This was apparently the part of the ship that showed off how badass/rich you were. They must've put their best team on constructing it because it was usually extremely intricate.
I knew this would be a pain to model and it took me a while to figure out how to even approach it. The method I used was to model it square, then apply a lattice deformer to get it into the right curved, skewed shape. It felt a little weird skewing windows but if you look at examples on real ships, they all had this wacky skewing going on. I can't imagine trying to construct this stuff in real life.
The last image there shows the manual sectioning. This is necessary because all the curved surfaces make it unsuitable to use normals for edge detection. So instead I need to manually color each separate section where I want edges to appear. Luckily, it's a quick and easy process and it gives me complete control over the edges.
Scripting came to the rescue with the deform step. It's not easy in Maya to quickly enable/disable a deformer without risking corruption. I definitely don't want to manually re-build the deformer each time I tweak the square model. And if you use any instances (like all the windows and bannisters here), forget about trying to do a large deform like this. Only the source object will be deformed in-place; all instances will inherit that deformation and not apply the appropriate one for their position. So I wrote a script that takes my square version, duplicates it, makes all the instances unique, applies the deformer, and collapses the result to create one single mesh that the game can process easily.
Here's how it looks in the game with some temp lighting:
Inside lower deck (dark)
Inside upper deck
Outside on upper balcony
I'm experimenting with a little more dithering range on the lighting. Instead of a hard cut between 0%, 50%, and 100% lit, I use a smoothstep to map 45%->55% to 0%->100%. Looks ok and makes light placement a little more forgiving.
I still need to tweak some things here and there for this aft section; especially where it joins the hull. Once that's done I'll work on the decks some more to get the ship in a "factory finished" state - all major construction done but empty decks and no rigging. From there it'll be ready to add all the machinery, guns, cabins, partitions, and cargo.
ConcessionsAs I work on this ship model, one of my goals is to create an accurate representation of a late 18th century ship. Games that have these kinds of ships usually attempt a very basic representation; the construction, decks and layouts are often completely detached from what a real ship would have. Thief 4 is particularly bad about that. Dark Messiah also has a ship with a surprisingly fps-level-like interior.
I'm trying my best to make the Obra Dinn relatively accurate but also semi-comfortable to navigate in first person. So far things are going well but I've had to make a few concessions. I mentioned the need to play with scale a little bit already. Another issue is with the arced floors.
Most ships had arced floors along the length of the ship to help with strength. The aft balcony was also curved up to match the floors. You might notice in the construction pics above that I don't arc the lower deck floors like this. From a production standpoint this curve makes everything harder. You can't just place an object at a certain Y and expect it to be on the floor. And everything you model has to be manually curved or passed through a deformer. Working with deformers is hard enough in Maya so that's not something I'm crazy about.
I've arced the very top aft deck but probably won't keep it up for the main or lower decks. For the aft windows, I've applied a horizontal outwards curve instead, which is not that typical on real ships. For my case though, it keeps the floor level but also allows me to include curved elements which were very common on these ships.