Creating a Custom Tileset in Blender (WIP)
This tutorial will show you how to create a simple tileset in Blender with proper collision.
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.
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.
a. Setting up Your Workspace
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.
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.

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

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.

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

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

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

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.

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.

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

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.

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.

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.

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.

Next: Adding Collision
Last updated July 22, 2011
© 2009-2011 Dave Finch

