Creating a Custom Tileset in Blender (WIP)

This tutorial will show you how to create a simple tileset in Blender with proper collision.

Caveat: This is the method I used to create my Temple Tileset, which is my first tileset. Because this is my first set, there may be problems with this procedure which I haven't uncovered yet, and there may be (and probably are) better and faster ways of doing it. Nevertheless, since I couldn't find a complete Blender tutorial on the subject, I thought I'd go ahead and write this tutorial anyway. Hope it helps.

Requirements

In order to create tilesets for Oblivion, you are going to need to install quite a few things. LHammonds has put up a great page for getting set up with Blender for Oblivion modding, so instead of repeating his excellent instructions here, I'm just going to point you to his page at -> TESNexus: Blender. Don't worry about all of the different version numbers for all of the different packages; just install the latest stable versions of each and you should be good to go for this tutorial. We're not going to be doing anything too fancy.

By the time you're done installing everything, you should have copies of Python, Blender, PyFFI, the Blender Nif Scripts, and NifSkope. Of course, it should go without saying that you need to have Oblivion and the Construction Set installed before beginning. It would also be a good idea to unpack the stock textures and meshes, so if you haven't done so already, get yourself a BSA unpacker. We will be using vanilla textures in this tutorial, so you will have to be able to access them unless you have some of your own already, and, of course, viewing the vanilla meshes in Blender is always a great way to learn how the pros do things.

Terminology: Vanilla is a general modding term used to refer to the original, unmodded version of a game or the game's original art assets.

In addition to the software requirements, you are going to need to know the basics of moving around in Blender, splitting windows, and switching between modes. Although I will be providing detailed instructions for most of the steps in this tutorial, a basic grounding in these things will be very helpful as there may be details that I skip over or forget to include. You should be able to pick up everything you need to know for this tutorial by working through the first few chapters of Blender: Noob to Pro. You should be good to go by the end of the Modeling a Simple Person tutorial.

What is a Tileset?

Presumably, if you're reading this tutorial, you already know what a tileset is, but I'm going to discuss a bit of terminology anyways.

A tileset is a collection of static meshes that are designed to be assembled together to form complete, interior architectures. No piece can stand on its own but must be combined with other pieces in order to create a complete unit. They are a little like Lego™ blocks in the way they are used, but they are more complex and 'complete': instead of individual bricks, they consist of things like walls, hallways, doorframes, and staircases.

Tilesets are different from other kinds of static architectural meshes (like the interior and exterior meshes used for houses, towers, etc., which are complete units in their own right) because they allow for a great deal of flexibility and scope but require some effort to assemble. Static architectural meshes, on the other hand, are designed to be used as-is 'out-of-the-box' but are inflexible and tend to be small in scope. It is important to understand that there is no theoretical reason why a static architectural mesh--like a small house--couldn't be designed in the form of a tileset, or a tileset--like a dungeon--designed as a single static mesh, but there are practical reasons to choose between them. When designing your own architecture, it is important to understand its place in the game and how it will be used: for a small dungeon, like a shrine consisting of only a couple of rooms, it is probably easier to design it as a single piece; on the other hand, if you want to reuse the same theme and textures in several different locations, it may be better to design a small tileset instead of creating each mesh by hand. There is no hard and fast line separating the two types of meshes, so you will have to decide on a case by case basis how to proceed.

1. Creating Your First Tile

Now that we have that out of the way, we can get down to business. The first piece we're going to create is a basic wall piece. By 'wall piece' I mean a section of wall with a section of floor and ceiling attached. If you've ever used the tilesets that come with Oblivion (and I assume that you have) then you know what I mean. This wall piece will have a different texture for each of the floor, wall, and ceiling so that you can see how to apply multiple materials to a single mesh in Blender.

We will also be creating custom collision for this piece and applying Havok materials suited to each texture. The first example, the Creepy Crypt tileset, will show you how to build a tile with a single collision material. The procedure used to create tiles with multiple materials will follow a little later, (in the Fancy Mansion tileset,) as this is something of an advanced topic. By the end of this tutorial you will know 80% of everything you need to know about creating tilesets. The rest is mostly just about adding in detail, which will depend on your own ingenuity and imagination.

Terminology: Creating models for games can be confusing until you get to know what all the fancy terms mean. One term that really confused me at first was the word 'material'. A material (at least in the Gamebryo engine) can mean one of two things: the visible characteristics of the surface of an object when looking at its visible mesh or the physical characteristics of its collision mesh, which is invisible, but which is responsible for blocking arrows or giving the player something to stand on. The visible mesh's material characteristics include its color and transparency, and its apparent hardness, wetness, and roughness. All of these characteristics are controlled by textures (which you can think of as image files for now). The invisible, collision mesh's material characteristics include things like whether or not it blocks movement (so you can't walk through it), how it sounds when you walk on it or hit it with a weapon, and what kind of debris (particles) it emits when you hit it (eg. dust, wood splinters, stone chips, etc.). In this tutorial, I will try to make a clear distinction between the two types of materials when explaining how to do things, but keep in mind that these characteristics are all closely related and all contribute to the realism and immersion of your tilesets.

a. Setting up Your Workspace

Acronyms: This tutorial uses the standard acronyms employed by the Blender community. LMB = Left Mouse Button, RMB = Right Mouse Button, MMB = Middle Mouse Button, etc.

The first thing you need to do is fire up Blender and start a new scene. If you have the default setup that comes with Blender, your scene will likely include a basic box object, a lamp, and a camera. You don't need the lamp or camera to create tilesets, so you can safely delete them by selecting each with the RMB and pressing XKEY or DELETE. You can also delete the default box if you wish, though for this particular tutorial you will be starting with a basic box mesh so it really doesn't matter whether you use this one or create a new one. If you want, you can press CTRL-U to save your new settings. The next time you start up Blender you will have a clean slate without all the clutter. If you ever want to restore the default settings, you can easily do so by selecting 'Load Factory Settings' from the File menu. Just remember to press CTRL-U again to save the new settings.

Blender's default workspace

Before you start adding any new objects, you will also want to make sure that your cursor is located in the center of the grid. This is important because when you add new objects to your scene, Blender creates them wherever your cursor is currently located. If your object is not centered properly at the 0 coordinate (0 X, 0 Y, 0 Z), it will be difficult to manipulate in the Construction Set. There are times when you will want to offset your coordinates somewhat, but it should never be done unintentionally.

To quickly center the cursor, place your mouse cursor over the 3d view panel and press SHIFT-C. This will automatically position the 3d cursor at the zero coordinate and center the view. You can do this manually, as well, by clicking as close to the center of the grid as possible with the LMB, pressing SHIFT-S to pull up the snap-to-grid menu and selecting 'Cursor->Grid' from the menu. If you do it this way, you will have to check your cursor from a couple of perspectives to make sure that it is lined up properly. The easiest way to do this is by pressing 7, 1, and 3 on the NUMPAD (not from the row of keys above the letters) and making sure it is lined up properly along each axis.

Blender's snap to grid menu

Problem centering cursor: If you have your 3d transform manipulator on (the little cursor with a red, green, and blue arrow) and you have an object selected in the center of the grid, you may find that you can't center the cursor manually. Blender will highlight the object instead. If this happens, simply use SHIFT-C to center it automatically or deselect the object by pressing AKEY and then center it. If you want to get rid of the manipulator, press CTRL-SPACE and choose 'Enable/Disable' from the menu or click the pointing finger button on the menu bar.

b. Adding a Box

If you are using a blank setup, press SPACE and select 'Add->Mesh->Cube' to add a basic cube to your scene. A basic cube 2 Blender units (BU) in each dimension will appear on the screen.

Adding an object to the scene

A basic cube

If you are using the default cube, make sure that you are in Object mode by checking the second drop-down box on the menu bar at the bottom of the 3d window. If you are in a different mode, you can change to Object mode either by selecting it from the menu or by pressing the TAB button.

Object and Edit modes: Before adding any objects in Blender, make sure you are in the right mode. Objects that you add when in Object mode are treated as separate objects by Blender, and can be selected and edited separately. The objects that you add when in Edit mode (things like cubes, spheres, etc.) are actually meshes and treated as part of the mesh that you are currently editing, not as separate objects. Parts of meshes can be selected and separated into different objects in Edit mode by pressing PKEY->'Selected', a technique we will come to a little later. Think of Object mode as a 'car dealership' mode, where you wander around and look at the finished cars, and Edit mode as 'garage mode', where you get under-the-hood and tweak the car until it looks and runs as good as you can make it. They have different uses in Blender.

c. Scaling the Box

Oblivion uses fairly standard sizes for its tiles and it is strongly recommended that you do the same. Using standard sizes is the only way you can ensure that your tiles will line up properly when placing them in the construction set and will make your life much, much easier. This goes for all three dimensions: width/x, length/y, and height/z. The size of the tiles should be based on powers of two: 256 game units (GU) for narrow pieces, and 512 GU for wide pieces is a good standard, though you could go larger or smaller for special purpose pieces if you wanted. Obviously, you don't want your surfaces to be perfectly square (at least for most projects) so it will be necessary to adjust these sizes to the particular tileset you are working on but it is a good idea to adhere strictly to these dimensions as the actual outer limits of the tile so that everything lines up properly.

Converting between Oblivion and Blender Units: GU = Game Units. BU = Blender Units. Blender units are 10x the size of standard Oblivion game units. When sizing your boxes, simply move the decimal place one position to the left to determine the correct size for your tile. In other words, if you want to make a box 256 GU across, you need to make it 25.6 BU. Studio Max units are the same as GU, so there is no need to make any conversion when you are using Max.

To scale your box, make sure you are in Object mode, then select your box with the RMB or by pressing AKEY, which is like an on/off switch which selects/deselects everything in the scene. When your box is selected, it should be outlined in pink. If you still have a lamp and camera in your scene and you use the AKEY to select everything, these will be highlighted as well. We don't want that, so either delete them or manually select the box with the RMB a second time. This will automatically deselect the other objects.

Selecting multiple objects: To select multiple objects in Blender, select the first object with the RMB, then hold down the SHIFT key and continue to add additional objects by clicking on them with the RMB. To remove an object that was selected by accident, simply reselect it with the RMB while continuing to hold down the SHIFT key. (You may have to click twice.) There are other ways to do this, which you can discover by reading the Blender wikibook, Noob to Pro.

With your box selected, press the NKEY. This will bring up the Transform Properties dialog box. To get your tiles to meet the exact dimensions you need, you are going to edit the object data directly using this dialog instead of scaling your object manually.

The Transform Properties dialog box

Click on the default numbers in the DimX, DimY, and DimZ text fields in the lower right of the dialog box and change them to 25.6. When you click on the numbers, they should turn pink. Type in the new dimension and press ENTER to apply it. (You can also adjust the number by pressing on the little arrows. Feel free to play around with the widget to see how it works, just don't change anything but the DimX/Y/Z fields.) You should see your box change in size dynamically as you adjust these numbers.

Editing the transform properties

When you are done, press CTRL-A and apply 'Scale and Rotation to ObData'. This is important, because the NIF format (the format used for mesh files in Oblivion) does not support non-uniform scaling and you will have problems exporting your mesh if you forget to do this. Once you've applied scale and rotation, the ScaleX, ScaleY, and ScaleZ fields in the Transform Properties box should all say 1.000. (The screenshot below shows both the CTRL-A menu and the correct values after applying them. I just wanted to kill two birds with one stone in this image.)

Applying scale and rotation to object data

When you are done changing the scale and applying the changes, you can press the NKEY to close the dialog box. You are ready to move on to the next step.

A correctly scaled box

d. Inverting the Normals, or: Turning your Box Inside Out

Since we want to create the interior of the box, we need some way to tell Blender, and ultimately Oblivion, which side of each face to render (draw). We do this by explicitly setting the normals to point inward. For our purposes, a normal is simply the direction that a surface faces; if you are feeling mathematically inclined, you can look it up on MathWorld for a more formal definition.

If your cube is not selected, select it now with the RMB or by pressing the AKEY. Switch to Edit mode by selecting it from the drop down list on the menu bar or by pressing the TAB key. Your cube should now be lavender with yellow edges and vertices. As an experiment, I'm going to show you how to look at the normals in Blender. In the buttons panel at the bottom of the screen you will see a number of widgets with various buttons and values. Use the scroll wheel on your mouse to scroll to the 'Mesh Tools More' widget to the right. There should be a button called 'Draw Normals' in the upper left area of the widget. Select it. If you look at your cube now, you will see very tiny cyan lines at the center of each polygon pointing away from your mesh. You may need to zoom in on your mesh to see them because they are very small. What we need to do is turn them around so that they point in the opposite direction.

Normals in Blender

To invert your normals, press CTRL-SHIFT-N. A small menu will pop up asking if you want to 'Recalculate Normals Inside'. Click it.

Recalculating normals inside

If your draw mode is set to Solid, then it will look like the normals have simply disappeared. Change your draw type to Wireframe by selecting it from the drop down box with the little cube image inside of it. It's beside the box that should say Edit Mode at the moment. Alternately, you can switch between Solid mode and Wireframe mode by pressing the ZKEY.

Changing the draw type

Your cube should now be transparent and you should be able to see the normal line inside the box. If you forget to recalculate your normals inside, all of your textures will appear on the outside of the box, which isn't what you want for a tileset.

The normals are now pointing inside the cube

A cube with correct normals

e. Saving your Tile

Now would be a good time to save your tile. Oblivion's engine expects to find certain files in certain places, so I recommend that you keep to the default directory structure as much as possible. Personally, I recommend that you create a folder for your mod inside each of the main directories inside the default Data directory (ie. Data\Meshes\CreepyCryptTileset\, Data\Textures\CreepyCryptTileset\, etc.) It might also be a good idea to mirror Bethesda's own folder layout inside your folders. Keeping to the default directory structure will help you remember where Bethesda stores their files and make it easier for you and people using your mod to find things and replace or delete them, if necessary. (You can see how I've set up my own file structure in some of the imagePages.)

A workable file structure for modding

Once you have your folders set up, go to the File menu on the top navigation bar or press CTRL-W and save your file. To save yourself some repetition, you can use the basic cube we've created as a template for your remaining tiles for the first half of this tutorial by giving your file a suitably generic name, like 'defaultCube.blend' or 'tileTemplate.blend'. Once you have that, you can just open it in Blender and use Save As... to save it as a new file specific to the tile you're currently working on and go from there. (In the image below, the 'P' button is used to move up to the 'parent' directory.)

Blender's save dialog

When naming your tiles, try to take advantage of the scheme that Bethesda used to name theirs. By using abbreviations of larger words and stringing them together in a logical fashion you can help yourself and other modders using your tileset find things quickly and efficiently. For example, for the CreepyCrypt tileset, you might start all of your tiles with an abbreviation that represents your mod (eg. 'cc', 'crpy', 'crypt', etc.) followed by an abbreviation that represents a sub-style in which a modder might be working (eg. 'N' for narrow, 'W' for wide, or 'Sm' for small, etc.) followed by a word representing the individual piece (eg. 'hall', 'room', 'wall', 'floor', 'exit', etc.). If you are providing alternate tiles serving the same function, but with different looks, you could also append a version number like '01', '02', etc.; just make sure that you use the same version number for all of the matching tiles. I'll illustrate this concept with an example.

Say you are working on a narrow hall piece for the CreepyCrypt tileset. You could give your first tile a name like 'cryptNhall01'. If you then decided to create another narrow hall piece with a different look (a more crumbled look, for example), you could call it 'cryptNhall02'. Any other pieces which interface directly with this piece should use the same version number so that the textures tile properly, so you would need a 'cryptNhallCurve01' and a cryptNhallCurve02' to create a bend in the hall that works for both styles. Keep that in mind when you decide to start making multiple versions of the same pieces: it means you will have to duplicate entire sub-regions of your set.

Another useful naming convention is to provide unit sizes when tiles that serve the same function come in multiple sizes. For example: in order to get your tiles to line up properly, you may find that you need to provide hall tiles of different lengths. You can see this in some of the stock tilesets where Bethesda added 'fix' pieces to account for these kinds of discrepancies. You can build greater versatility (but also possibly greater complexity) into your tileset by providing users with these kinds of tiles. If you do, you will want to make this information immediately available by a quick inspection of the tile name, giving them names like 'cryptWhall256' or 'cryptWhall512' where the number apppended to the end of the name relays the number of game units (GU) the tile uses.

For the piece we are working on now, which is a wall piece in a small room, you could give it a name like 'testSmRoomWall' or something similar. Once you have it saved, move on to the next part.

f. Shaping the Box

We now want to shape, or model, our cube so that it can serve a purpose. Right now, it's just a closed box with no means of getting in or out. Not very useful. What we need to do is get rid of some of the polygons to turn it into a true wall tile. Keep in mind that the process I am going to show you is a simplified one suitable for a first tileset while you are still learning. Once you actually get around to creating a real tileset you are going to have to be a little more sophisticated with your modeling; but we'll come to that.

First of all, make sure you have the correct file loaded in Blender. Select your cube and switch to Edit mode if you are not in it already. Switch to positive y orthographic view (front view) by pressing NUM1 (1 on the number pad, not the 1 above the Tab/Q key). Deselect your cube by pressing the AKEY (so that it is grey and black). Switch to Face Select Mode by pressing the little triangle on the 3d window's menu bar.

Face select mode

Now click on the center of the polygon with the RMB. It should highlight with a stiple pattern and yellow edges. Now press the XKEY or DELETE key. A context menu will pop up. Select 'Faces' and click with the LMB or press ENTER.

Deleting the face

The face is now deleted, though it may not look any different until you rotate your view. If your normals have been inverted properly, you should now be looking inside a box.

Rotating your view: To rotate in Blender, press and hold the MMB and drag the mouse.

Looking inside the box

To finish shaping the wall mesh, we need to delete two more sides. Press the NUM1 key to return to positive y orthographic view. Using the same method, select the polygon in the middle and delete it. Your mesh should now look like a hollow rectangular tube. Switch to negative x orthographic view (side view) by pressing the NUM3 key. Now delete the side polygon. Your mesh should now look like the image below.

The shaped wall mesh

Next: Adding Collision

Top: Tutorials portal page

Last updated July 22, 2011

© 2009-2011 Dave Finch