Making your first ship from scratch
Creating a ship for Pioneer, step by step. This step by step tutorial is intended to guide contributors trough the process of modeling, texturing and setting up a ship, and then putting it into Pioneer. It won't cover basic modeling or design questions in depth, but it will be more like a case study on ship creation, from idea to making it into a mod file. Working knowledge of the basic handling of Blender, GIMP and Inkscape, or equivalents is assumed. Note that this article isn't intended to be a tutorial on these tools.
Contents
Software
We will use the following tools:
- Blender - An advanced cross platform Open Source 3D software. If you are new to Blender, the CGCookie basic course will cover the foundations for you.
- GIMP - cross platform 2D raster editor software for creating textures. It's a bit harder to find good basic material for it, but you can try this playlist for example. DIY Graphics also has some videos on GIMP.
- Krita - cross platform painting application which works very nice for texture painting tasks.
- Inkscape - cross platform 2D vector editor for some texture work. The official page has a range of tutorials. DIY Graphics has some tutorials on Inkscape too.
- Model_viewer - the build-in model viewer tool of Pioneer.
You can also use any other program you are familiar with. They need to be able to handle some formats like Collada (.dae) for models, .png and DDS texture format for textures.
Folder structure
It's important to have a good structure for your source materials. It makes life easier both for you and anybody else who needs to work on your creation later. I do it this way for example:
- Ship name/
- /ship.blend - I usually put the .blend file on the main folder of the ship.
- /sketches - I put any drawings and sketches, brief, description to this folder.
- /textures_src - Texture source files, like Inkscape or GIMP project files, and any exported layer or maps such as AO goes here. More on these later.
- /textures - The final texture files go here.
- /preview - Preview renders and WIP-s go here.
It's also useful to have and stick to a naming convention, but more on that later.
Sketching and Brief
This is not really a technical thing, but a good practice when you are working on assets intended into official Pioneer. First step is to visualize any idea before you dive into modeling. It's easier to try different things, proportions, shapes and such, or to get feedback before you sink hours into something that turns out to be a dead end. The nice thing about these is that they don't need to be pretty. You can doodle something with a ball point pen, or put some primitive shapes together in 3D. Checking the silhouettes is also a good idea, since that is what our eyes notice first. You can find a bunch of thumbnail sketches on the dev forums.
For this article, I'll be creating a medium cargo craft from OKB Kaluri called Mola Ramsayi. A larger sister of the Mola Mola. The basic idea is a rounded cone-like shape, with a three-way symmetry along the longitudinal axis. One main point is that Kaluri workhorse crafts have a relatively simplistic and compact build. Also it should look like if it could be a tail-sitter.
The basic structure is quite similar to the Mola Mola, even if the nose is more tapered. OKB Kaluri ships tend to be round with smooth curves and some abrupt shape terminations, like the tail side of this craft, as you can see on the thumbnails bellow. Another typical Kaluri features are the high visibility cockpit area and the heat-sink fins near the engines. The former is a subject of some debate as if Kaluri invented this layout and Mandarava-Csepel Shipworks stole the idea, or vice versa, since the two companies are doing corporate espionage like if it was a sports competition.
Cargo hatches will be on the sides and on the top too, and there will be a docking collar over and back to the nose.
(thumbnail drawings come here)
This painting shows the direction I want to take this ship. At least three times as long as the Mola Mola, which makes it about half the length of the Vatakara, so it will be along the line of the Deneb.
Modeling
Coordinates and transformations
Pioneer uses Y as the longitudinal axis of the ship, X for left-right and Z for up-down. You need to align your ship with this in mind.
The scale of any object should be 1 on all axes to avoid problems and distortions. This is a very important thing, so don't forget to Apply (freeze) it ([ctrl+a > Scale] in Blender, Object mode). You can also clear any object scaling with [alt+s]. Rotation and position can be anything that makes sense while you work on the model, but it should be at 0,0,0 and align with the axes above in the end.
Modeling
Reference images
The first I usually do is setting up reference images in the viewport, so I can see the concept art, or even orthographic views. You can set it up in the right-side panel of the 3D view (N-panel). You can change a lot of things like image opacity, scale and position, and you can also choose the view, where the image is visible. The other image below shows a part of the render settings in the Properties window. I set up the render resolution to match the dimension of the image (702*426 in this case), so it won't get distorted in the Camera view
Modifiers
Modifiers can change an object in certain ways, like mirroring it or smoothing, to name the two most popular one. They can make the modelers life a lot easier in different ways.
They can be found under the icon in the Properties window. For this ship's fuselage I will be using a bit more complex setup at first, because of the trilateral symmetry.
Each modifier has a line of icons, for enabling and disabling them for different modes, like during render, object mode or edit mode. They should be on in object mode if you want to export the model to collada without applying them first.
Let's see what they do:
Mirror
This one will basically halve the amount of work we have to do, because it will mirror everything we do on one side of the mesh, along the origin (pivot) of the object. If the mesh is in correct orientation (see axes above, newly created objects are usually set up correctly), then the default settings are good.
Except for the Clipping option in the second column, which stops vertices from moving to the other side of the model, and stick them on the mirroring plane if they touch it. This is usually very helpful, because it prevents a lot of extrusion and smoothing errors. You want this to be on most of the time.
The thrid column is about texture UV layout. If they are on, the unwraped texture will also get mirrored on the respective axis of the layout. (U for horizontal, V for vertical). They are disabled here, because I will apply all of these modifiers later, and add another Mirror, where U will be enabled (more on this in the Unwraping section).
Array
This one is usually not needed, but it's a big help in this case because of the trilateral symmetry of the fuselage. What it does is repeating the object in any direction, distance and number. Useful for lightposts along a road for example.
In this case, it's set up to repeat the mesh three times (Count), merge the areas where they meet (Merge), and the offset of the repeats are controlled by an empty object, which is rotated 120° on the Y axis (Object offset). This way I only have to model one side of the hull, and it's repeated on the other two, which is very helpful, since I don't have to worry about symmetry at all. And since I'm repeating the already mirrored mesh, I basically have to work on 1/6th of the model.
The Merge option is important here, because I want to have a continuous surface all around. The Distance setting for it governs, how close the vertices need to be to get merged.
SubSurf
This is another very handy modifier when you need to model smooth surfaces, or organic shapes. It subdivides each face into four and smooths them to create curved surfaces. It's very handy because you can have a dense smooth mesh but you don't need handle each and every vertex in it. Although you need to have a quad only mesh most of the time, because triangles and ngons can mess with the subdivision and smoothing in very ugly and unpredictable ways.
The Catmull-Clark method is preferred, because the Simple subdivision just subdivides the faces, but doesn't smooth them.
The Subdivision option sets the number of iterations it does for the viewport and the render. Usually you don't want it to be larger then 1 for the viewport.
Subdividing the UV-s usually a good thing, especially if you are doing organic, but since I will apply the modifier before unwraping the model, it doesn't make much difference for me. The optimal display is helpful if you can't select certain vertices because of the smoothing.
Modifier order
An important thing to note is that the order of the modifiers in the stack counts. A lot sometimes, since each modifier does it's work on the mesh it gets from the modifier above it.
You can move the modifiers up and down in the stack with the little triangle arrows on the upper right corner of each modifier.
In the above case, the smoothing would be much sharper on the three outter edge of the model if the SubSurface would be over the Array modifier in the stack, since it would first smooth the mesh, and it would duplicate it after the smoothing already happened. Array first and then mirroring would give a quite different result too.
Camera setup
Since I don't have ortographic views for this ship, I will set up the render camera to have view on the model similar to the concept image. After I set up the modifiers, I reset the 3D cursor to the 0,0,0 coordinates ([shift+C]), so I can rotate the camera around it, and eyeball the rotation of the rudimentary shape I created with the above modifiers, to match de perspective of the image. I've also imported the Mola Mola model to have a scale reference.
You don't need to bother with this most of the time, especially if you have ortho views for your model. Usually I prefer to work this way, because it's easier for me to work with an image where the craft is in percpective.
Animation
UV unwrap-ing
LODs
Exporting the model
Collada export settings: