Making your first ship from scratch

From PioneerWiki
Revision as of 23:00, 16 March 2016 by Nozmajner (talk | contribs) (Tags: 2.6 blender wiki link)
Jump to: navigation, search

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.

Software

We will use the following tools:

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)

00 med trans 2 s.png

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.

01 axis.png

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

02bgimage01.png 03render size.png

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 Wrench 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.

04 modifiers.png

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

Placing the camera

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:

Exporting.png

Tags

Tags are used by Pioneer to attach in-game elements such as weapon mounts, thruster exhaust jets and camera/view placements to a model.

In blender Empties are used as tag points. These are mesh-less objects that represent an x,y,z coordinate and an orientation. Empties can be one of a number of 'types' - while Pioneer does not care what 'type' the Empty object is , it can be useful to use different empty types to represent different in-game elements. The naming pattern of the empty object however, is critical to how it will be used by Pioneer and must be exact.

Tags: Blender Empties
Game Element Empty Type Object Name Pattern Notes
Linear Thrusters Single Arrow thruster.* The orientation of the arrow determines the orientation of the exhaust animation in-game. The scale of this empty determines the size of the jet.
Camera/view ports Arrows tag_camer_(top|bottom|front|rear|left|right){1} Point the Z (blue) axis in the direction of view. Position the Y (green) axis to determine the view orientation.
Landing point Plain Axes tag_landing This empty represents the lowest coordinate of the ship with gear extended and is used to place the ship on a surface for landing.
Gun mount Single Arrow tag_gunmount.* The orientation of the arrow determines the orientation of the weapon.
Navigation lights Sphear navlight(_red|_green){0,1}.* If the colour of the navigation light is omitted the light is rendered using the default colour and does not blink
Label Arrows label.* This is where the ship's name/ID will be placed. With axis Y (green) pointing up and Z (blue) axis point out, the lettering is read in the direction of the X (red) axis. Try to place and orientate this tag on something flat as it will not align itself to a surface.
  • Empty types are suggestions only

Texturing

Texture channles

Baking

Sketching texture

Inkscape basis

Painting texture

Postprocessing and compositing

Model and Material setup

Stats setup

Making it into a mod

Testing