Skip to main content

Making Bulletproof BSP with Blender: Preparing the .blend file

Level Design Article

3. Preparing the .blend file

Index

3.A: Setting an Unreal style grid up in your blend file
3.B: Increasing the draw distance within Blenders 3d viewport
3.C: Placing a bounding box in your 3d space
3.D: The view controls of Walk Navigation
3.E: Making the 65536 bounding box 'hollow'

(3.A)
Setting an Unreal style grid up in your Blend file

Initially, what we're going to need to do is to set up an Unreal style grid, and figure out where to easily reach the grid scaling in case we want to map on a grid spacing of 1, 2, 4, 8, 16, 32 etc. If you look to the right of the Blender interface, you should notice a properties menu with a selection of tabs, switch to the 'Scene properties' tab, circled just past the right of the 3d view. Here you will find the Unit standards that correspond to your .blend file, and change Unit system which is on Metric by default, to None, while the rest is fine to leave on default.

Lastly, take note of the stopwatch symbol at the bottom of the screenshot, which has 'Start' and 'End' directly next to it, for mapping we don't need 'End' to be any higher than 1, in fact if we accidentally tap the spacebar at any point, this might cause some scene complications if we make geometry edits without noticing that our timeline is playing. So change this value from 250 (default) to 1.

Next, look at the magnet icon at the top of your 3d view, enabling this will make sure grid snapping is on, then you'll want to make sure to open up the Snapping drop-down on the icon directly right of it and ensure that Move, Rotate and Scale in the screenshot below are 'on'.

 

Next, we're going to look to the top right of the 3d view where there is a tiny arrow directly next to the 'Overlays' toggle, clicking that arrow will show us some settings, most importantly the grid scale! Change the 'Subdivisions' value from 10 to 1 to prevent it from subdividing our grid.

This screenshot shows that the grid scale is set to the equivalent of 1uu, when working with BSP geometry it's advised to never go lower than this!

A few pixels to the right of this is another dropdown menu, but for viewport shading, make sure to open that at enabled 'Backface Culling' and change the Color display from 'Material' to 'Texture', which will allow solid shading view to display the texture you have set on a surfaces material entry.

We're now very close to actually getting stuck into mapping in Blender.

(3.B)
Increasing the draw distance within Blenders 3d viewport

Finally, below the viewport shading drop-down which you previously opened, and to the right of the widget there is a very small arrow pointing to the left which sits on the lip of the 3d view.

It will open up showing some surplus menus. The tab it's on by default will be important when manipulating geometry. Whatever 3d item is currently selected, whether it's an object, a vertex, an edge or poly: it will tell you it's transformation orientations there. When exporting brushes, you will need to make sure that all transformation orientations are applied (UEd has a similar system with brush scale at least) to the object beforehand.

But for now, click on the view tab, which will open up some other important options.

Clip Start and End define the view distance, (or where it abruptly stops rendering). By default the 'End' value is 1000 which is exactly the same as 1000 unreal units, this kind of distance is tiny for seeing an Unreal map, feel free to raise this to something much higher. I typically raise this value to 65536 (the same extent as an Unreal map). This will still cut off things in the corners of the map when at the opposite ends of it, but should still be ample unless you have a parallax backdrop also. I would also advise raising the Clip Start to 1 to get a bit of depth precision back, but this aspect entirely depends on your computer hardware.

(3.C)
Placing a bounding box in your 3d space

Once we start importing the geometry into UEd we'll be making from within Blender, this method relies on creating an Additive map, which is the voidal inverse of what Unreal has since release, historically done. An Additive Map just means that the map starts as an empty nonsolid void in which you place additives (or in this case, non-solids) in, rather than a standard map that uses a solid void and requires volumetric subtractives to be carved out.

The entire logic to this modus operandi is that everything we create we make as easy and as fool proof for UnrealEd's compiler to digest during the rebuild process, we will be placing Non-solid brushes into the map with not necessarily any volumetricity, imported as non-solid brushes with gaps and holes. This skips any need for complex and sometimes problematic collision calculations which the compiler would otherwise be potentially working out (or in many occasions make mistakes with), for collision we will be using both invisible static meshes that were converted from the original 'visual' non-solid brushes, and once our level nears completion: collision volumes which match the visual geometry for a more robust collision solution. The static mesh world collisions will still remain however, because as far as i know collision volumes don't block light rays.

Additionally, part of the reason we're using Blender to make the map rather than sprinkling UEd with a bunch of vertex edited triangular sheets is not just because this would be slower and arduous, but sadly UnrealEd's brush generators seem to create less stable brushes in comparison.

So now that we're all set up, the first thing we'll do is to delete the 3 starting objects, the Light, default cube and camera, unless you prefer to keep them there for whatever reason. Then, in Object mode, we will create a cube that shall be 65536 in size. To do this, where it says 'Add' near the top left of the 3d view needs to be expanded, then Mesh > Cube.

Once clicking, this item the cube will start existing and we'll have some extra options.

Next we will set the initial size.

Change the 'Size' value to 65536. This will be the exact equivalent of the maximum size an Unreal map can be.

We no longer see the object as it has encapsulated the camera. The purpose of this cube is mostly to stop us from going outside the bounds, so next what we want to do is head to the object properties:

  1. 1. Expand Viewport Visibility
  2. 2. Tick Wireframe and All Edges
  3. 3. Scroll further down the Object Properties menu
  4. 4. Change Display As from Textured to Wire:

(3.D)
The view controls of Walk Navigation

Walk Navigation controls:
W = Move Forward
S = Move Backward
A = Strafe Left
D = Strafe Right
MWheelUP = Increase Speed
MWheelDOWN = Decrease Speed
Q = Fly Downwards
E = Fly Upwards
Left Mouse Button = Confirm Camera Travel and regain control of the mouse
Right Mouse Button = Cancel Camera Travel and teleport back to where you were before activating Walk Navigation

If in the earlier step we set up the Walk Navigation correctly to your desired button (let's just assume you went with middle mouse button), if you now click the middle mouse, you'll be able to move the camera around. You might have noticed as moving the camera that the map bounds you recently set up should be visible.

 

(3.E)
Making the 65536 bounding box 'hollow'

Select the 65536 bounding box again, we'll now need to make it 'hollow' so we also have faces pointing inwards too (this can have a few other undocumented uses also) to make sure that our skybox will have something to be projected onto.

With the cubic bounding box object selected, open the Modifier tab
Then select the 'Solidify' modifier

The modifier will now be added onto the modifier stack and will provide some options.

We'll want to change the thickness from the default value of 0.01 to 256. If the offset remains as -1.0000, this should create inwards facing polygons inside the bounding cube. You might be able to also have the thickness lower but I think '256' is a safe value to keep the player from skipping a tick and falling through collision. The newly generated inward facing polygons will also be our fake backdrop.

Next, apply the modifier by opening the following dropdown menu:
This will make the modifier's effect part of the cube object's real geometry.

At this point you might wish to save this .blend file to use as a template for mapping. To save, go to File > Save (or save as). Now that our bounding box is set up, we can actually start to map.

Making Bulletproof BSP with Blender