Bad Apple  Bad AppleBad Apple
 Maps Drivel

Completed maps

The Junkyard









Bad Apple

All about mapobjects

What is a mapobject?

A mapobject (also called map model or misc_model) is a textured triangle-mesh model, used to decorate Quake 3 maps, created in an external 3D application such as 3DS Max, Maya or Milkshape. Examples of mapobjects in Quake 3 maps include the Major and Visor statues on Q3DM1, the floating skull camera behind the railgun platform on Q3DM17, and the ubiquitous teleporter model that can be found on many of the maps.

Placing a mapobject in your level

This is one pretty easy. In one of Radiant's 2D views, right-click and select misc_model on the misc menu. A dialogue box should pop up asking you to pick a model. Check that the file type dropdown corresponds with a valid Quake 3 model type (such as md3, or ASE if you are compiling with Q3map2). Navigate through the folders in your baseq3/models/mapobjects to find the model that you want to use. You should be able to see your model now. You'll probably want to move it around a bit and get it into just the right position before deselecting it.

Some people like to draw out a simple brush before right-clicking to make their misc_model, with that brush still selected. If you do this then the misc_model will be placed so that its origin is where the centre of the brush was. This process does destroy the selected brush, so don't use one that is already part of your map!

Note that some models might show up in wireframe or with the 'texture not found' or 'shader image missing' images in Radiant. This doesn't necessarily mean that they are broken, they might well work fine in game.

Changing the facing of your models

If you are using GtkRadiant 1.5.0 or later, you can just rotate the misc_model using the free rotation tool, and the program will figure out the angles for you. However, in most older versions of Radiant, you cannot simply rotate the model if you want to change the direction it faces, and in fact trying to do this can cause all sorts of nasty problems. Instead, you must apply an angle key using the Entities dialogue box (On the N key). You can either pick one of the preset angles using the compass selector buttons or enter an inbetween value manually by filling in the key angle and the desired value.

If you don't want the facing of your object to be limited to rotation about the Z-axis, then you have to use the angles key, which is a bit more complicated. So, what do pitch, roll and yaw mean? Well, these are terms derived from aviation where they are used to describe an aircraft's heading. In Quake 3 terms though, you can think in the following terms: Pitch is rotation around the model's X axis. Yaw is rotation about it's Z axis (the rotation you would get by using the 'angle' key instead). Finally, Roll is rotation about the Y axis. The key thing to understand is that these values are not relative to the world - that wouldn't mean anything helpful - they are really relative to the mapobject. Try low values in each of the three axes in turn until you get the idea of what happens. You could also try imagining the mapobject as an aircraft, as this will make the terms make a good deal more sense for some people.

Very old versions of Radiant like Q3Radiant 187, 192, 202, 200f and early GtkRadiant builds do not support the angles key at all. Also, some 1.2.x versions of GtkRadiant read the angles values in the wrong order and do notdisplay the model in the right orientation. Try to use at least a 1.3.x build and preferably 1.4.0 or 1.5.0. The angles key also requires later versions of Q3map2 to function.


If you compile your map at this point you will find that you can walk right through. This is because at the time Quake 3 was originally written, per-polygon collision was considered to be too expensive in terms of the raw computing power needed, so collision based on brush volumes was used instead. Since models don't have solid voolumes of their own you have to add them to the map somehow. There are two ways of doing this.

1. Manually placing collison brushes. In the vast majority of cases, this is by far the best way to get your models to behave as solids. Simply place one or more brushes textured with the common/weaponclip shader to enclose the model, and shape them using your preferred techniques so that they roughly coincide with the shapes of the bits of the object that would block weapons fire. Surround this with a simpler common/clip shader to stop players and bots getting snagged on it. If that shape is still more complex than the bots really need, you might want to add yet another brush, textured in common/botclip, outside that, especially if the common/clip brushes have a lot of non-axial faces. This all might sound like a bit of a drag, but you don't need to be absolutley precise with these brushes, just near enough for it to look right in-game. The sample maps that come with your Radiant install have fairly good examples of the level of precision that will seem acceptable when playing the map.

2. Use Q3map2's automated clipping. This automatically generates a set of clip brushes for the model at compile time. Before I tell you how to use this, I'm going to tell you that you really shouldn't use it, unless you're absolutely sure you know what you are doing. Why? Well, although using autoclipping is as simple as adding a line to a shader or adding a setting, it does really bloat your map. This is because it doesn't create a small set of nice regular clip brushes like the ones you would make manually, it makes one little weaponclip brush for every single triangle on the model. So if you use it for a model with fine detailing on it, you're almost certainly using far more brushes than are needed to get an acceptable result. If you have many instances of a complex model in your map and they are all autoclipped you are going to run into compiler limitations pretty quickly.

Now that the dire warnings are out of the way, how does it work? There are two ways in which you can activate automated clipping for a model. The first is to open your model's shader and add the line q3map_clipmodel to the header (the bit before the first texture stage that has all the other q3map_ and qer_ directives in it). The second method will be easier for most and is probably preferable. Select your misc_model and open the Entities dialogue. Add the key spawnflags and give it a value of 2. From now on when you compile the model will be autoclipped.

Lightmapped models

Another feature that was added to Q3map2 was the ability to add lightmaps to models. By default, models are vertex lit, unlike geometry made from patch meshes or brush faces which gets lightmapped. Applying lightmapping to models is useful in some cases. To have a lightmap generated for a model, add a spawnflags value of 4 in the Entities dialogue. (Note that if you already have a spawnflags value entered for autoclipping on the model, then you need to add the numbers for 'lightmap this' and 'autoclip this' together, and use spawnflags: 6)

In many cases, lightmapping a model instead of allowing it to just be vertex lit won't actually significantly improve its appearance. This is because the density of the vertices on many of these models is quite high, so they are just as close together as the lightmap texels would be. Generally it is only worth lightmapping a model if it has large triangles, for example if you have made a rock outcrop in a 3D application for your map. There is not much point in lightmapping any of the standard models that come with Quake 3, as they all have pretty good vertex density.

Scaling models

It is possible to scale models up or down by entering the modelscale key in the Entities dialogue. The default scale is 1. Entering a larger number will make the object bigger - e.g. a value of 2.0 will double the height, width and depth of the misc_model. Entering a smaller number will reduce its size - e.g. a value of 0.5 will halve the height, width and depth of the mapmodel.

It is also possible to apply a different scale along each axis using the modelscale_vec key with values for X Y Z axis scales, seperated by spaces. For example, "modelscale_vec" with a value of "0.5 0.5 2.0" would make a mapmodel be half as wide and deep but twice as tall as its default.

Be aware that older versions of Radiant do not show scaling of models in the viewport.

Using custom map models

A 'custom' model is any model that is not part of the original game, just as non-standard textures are referred to as custom texures, and any map that you make yourself is a custom map. Many individual mappers and modellers offer mapobjects that they have made for download, and some sites have compiled libraries of models produced by many different authors. As a general rule, stick to custom models that have been made specifically for Quake 3 engine games. Custom models for other games are usually more trouble than they are worth to convert. Models found on general 3D sites are not usually a good idea to use: Not only will you often have to convert the model to a format that is compatible with the Q3 toolchain, but also they will usually heve been built with offline rendering in mind, and their meshes will be far too complicated to use as realtime game models. Finally, do not steal content from other games: This is illegal and is frowned on by most mappers.

Most custom map models include a readme file which will detail any special instructions that may apply to specific models, and list the credits for the model's creation. Be sure to read these files before you try to use a model. Also, remember that it is common courtesy to include credit for custom models in your map's readme file when you distribute it, as it is for any custom content.

Some models will come as just a zip archive full of the components that make up the model such as textures. Generally, you will need to extract this into baseq3 to be able to use the model. Make certain that you preserve the paths in the zip when you extract them, or the model won't work.

Some models will come as a zip that contains a pk3 with all the content in the right places. These can be used just by placing the pk3 in your baseq3 folder. Radiant is quite capable of loading models from inside pk3 files, however, the dialogue box that is used for picking models does not let you browse within them. You can get around this by entering the path manually in the Entities dialogue (key model with a value that is equal to the path to the model starting from the models folder, e.g. "models/mapobjects/chains.md3"). If you want to be able to select the models from Radiant's file browser, you will need to extract either just the model itself, or all of the pk3 file's contents, into your baseq3 folder using Winzip or a similar application just as if the model had come in a zip with no pk3 inside. Again, be certain that you preserve the paths in the pk3 when you extract them, or the model will not work. Generally I would recommend that you only extract the model, and leave all the other stuff inside the pk3 in your baseq3, for the sake of tidiness.

A few models may be in the form of a zip archive that includes all the required bits, but without saved folder names. In this case, you're probably going to have to look in the readme file to find out what to do.

If the model includes a shader file, be sure to add an entry for it in shaderlist.txt.

Map compiling notes

One last thing to know about misc_models is that they do not continue to be entities in the compiled map: What happens is that the compiler takes all of the triangles that makes up the model and writes them into the BSP. This is handy because it means that you don't need to include custom models with your map when you distribute it (although you will need to include their textures and shaders). It does however mean that if you make changes to a model you have made yourself, you will need to recompile the map to see them in game. Similarly, if you change any settings on the entity you will need to recompile to see them, just like any other entity change in a Q3 map.

The 'missing' models

On forums you will often find people asking about certain models that they can see being used in Quake 3's levels, but which they cannot find to add into their own maps. As noted above, when you compile a map any misc_models get 'baked' into the BSP so many of the models id used to make Quake 3's levels cannot be found in the game's pk3 files. Some of these models were included in the editing media that id released with Radiant, however, they didn't release all of them. There were two reasons for this. First, they didn't want the sample download to be too huge, so only the models that were actually required for the sample maps, and a few finished models that had ended up being cut from the game were included. Second, they wanted to encourage people to make their own custom models.

So in short, if you can't find it yourself, it probably isn't there. Luckily, copies of most of the missing models have been made by members of the mapping community and these can be used instead. Look for them on your favorite sites.

Copyright 2001-2011 Tom Waters -

Bad Apple is not intended for readers under 18 years of age, goats, emus, flukes, capybara, users of CSG subtract, or people who like the name Gary.