Let's talk about BSP

Hi guys. Let’s talk about BSP, the crippled product of UE4.
I’m a fan of BSP. It is a fast tool to block out Levels and I’m more interested in BSP as a construction kit for interior Levels and thanks to the Grid Snapping I can build rooms in a few seconds.
However, there are some heavy problems that exist since the first version. I wonder why

BSP doesn’t have proper Lightmaps. No matter what you do, changing the Lightmap resolution of a BSP surfaces doesn’t change the Resolution. Quite the opposite: the Lightmaps get worse.

Here’s a construction I quickly made.
The Lightmap Resolution of all surfaces is 32 (default).


Here’s the same scene, but this time, the Lightmap Resolution of the Floor of the left room is set to 256:

As you can see, the Lightmap is anything but correct.

In my case, BSPs get converted to Static Meshes (Most of the time the walls).
I admit that I’m a bit lazy here, but BSP Brushes get converted to Static Meshes as if they are to connected to nothing.
For Walls and no visible faces this wastes Lightmap Space (and a Drawcall if the non-visible face has the default texture)

Here’s an example: Imagine that these parts separate Rooms. The Wall with the texture has non visible faces (to the Ground and the adjacent Wall).


However, when converting them to a Static Mesh, the Invisible Faces are there:

As I said, it wastes a lot of Lightmap Space and sometimes may cause Lightbleeding.
I know I can export/import them into a 3D App. but why rely on Third Party Software?

Let’s stay at the non-visible Faces of BSP Brushes.

What, if I simply delete these faces?
Deleting BSP Faces results in an annoying bug that exists from the beginning:
The deleted face creates a space beyond infinity in which additional BSP Faces disappear:

Here, I’m gonna delete the selected Face and see what happens:

POOF, many faces of nearby BSP Brushes disappear and are unselectable (Still selectable in Outliner though)!

This is a hindrance when working in interiors and you want to have the Walls separate of adjacent rooms, because the deleted non-visible faces of one room wall make the room on the other side disappear.

The Flip Face Function of the Edit Mode does the same.

The Clip Brush Function in the Edit Mode does what it says, half at least.
The Flip Normal and Split Functionality don’t have any impact on the result. The Result when applying Clip Brush is always the same.

I’m tempted to switch to Hammer’s Source as my Level Editor with HammUEr importing the Levels. It removes faces that have Hammer’s “NoDraw” Material applied automatically and the Brushes are imported as Static Meshes.

I’m asking myself: Why is the workflow with BSP so broken?
Why don’t BSP Brushes behave like Static Meshes from the beginning with proper Lightmaps and maybe Physic Simulations?
I mean if we can convert them explicitly to Static Meshes, why aren’t they directly converted to Static Meshes at compile time?
I would sacrifice some build time for this.

I know BSP is nowadays used for blocking out only and “everything get’s replaced by static Meshes anyways”, Well, walls are walls and are pretty much just a block/plane what BSP Brushes are.

With BSP the lightmap resolution is the number of units per pixel, so smaller numbers increase the lightmap resolution

Raildex_: I am passionate hater of BSP as it is quite bad. No worry as Geo 2.0 will come soon with features later step by step.

And why not fixing old broken stuff instead of adding new stuff?

As I mentioned, BSP should be converted inplace to Static Meshes. Geo Tools 2.0 will be more inflexible than BSP.
Ever worked with subtractive Brushes? They are awesome. They may be horrible when it comes to Edge Flow etc,
but you have a tunnel which is too narrow or too small? Simply make the subtractive Brush bigger. Ever made a Tunnel in a 3D App that has an arch?
Good luck with Geo 2.0 with that.

Precisely because they are old and broken. Think Unreal Engine 1 old (even though they have changed since the original version). Well BSPs are not really broken since they do work but as you say they have some issues.

The new mesh editor has the possibility of doing everything you want basically, especially since it’s going to have a plugin architecture. By making something new the devs can make sure things fit together with UE4 a lot better and at the same time implement neat modern stuff like opensubdiv.

If you instead wanted to fix BSPs you would have to dive into that code and try to bend it to do whatever you wanted to do which is probably pretty hard. And for sure a waste of time. The mesh editor is not done yet though so in the mean time you should definitely make your meshes in 3D software and there’s no excuse really since stuff like Blender is free. You can block levels in Blender and use Import into level in UE4 to easily update your levels when blocking/polishing and so on.

BSPs are just outdated. Though it’s sort of strange that they’d have such a high rendering cost now, when it’s possible to get 1000 FPS in Unreal 1, which also uses BSP. You’d think by now we’d have a CSG system that has all the advantages of BSP and none of the disadvantages. Right? It’s the future, we have the technology!

That ‘Geo 2.0’ looks like the barest sort of manipulation you can provide without requiring a command line. Another step back, I suppose.

My thoughts exactly. It’s just vertex manipulation with the possibility to to have Subdivision and unstretched UVs. Nothing More.

Just because Unreal 1 used BSP for Level Design doesn’t mean BSP is a bad Level Design tool. All it needs is a make over to make it more performant and correcting the workflow with it.

I’m pretty confident people will build much higher level stuff on top of the new geo 2.0 mesh stuff given time. I know thats not much comfort in the meantime but I struggle to imagine the old BSP system getting any love from Epic.

Hey there! Thank you all for the feedback about BSPs and level design with UE4. Geometry 2.0 is not an exact replacement for BSP yet, but going forward you can expect to see it become a robust and fully featured tool that will overtake BSP in usability and performance. I see mentions of subtractive workflows not being there and that’s something I can make sure is requested to Fricker. We’d like to hear more about what features you’d like to see built and improved in order for it to meet your expectations of a great level block-out tool.

1 Like

Hey , thank you for your reply.
Subtractive / CSG operations are indeed important in my opinion and I hope we can get them in the new Geo Tools.

Here’s a little List I don’t want to miss:

  • As mentioned CSG Operations like Add/Subtract/Intersection
  • Grid Snapping
  • Cut Tool like we know it from 3Ds Max: You basically can cut Edges into a polygon either from Vertices or from Edges (See attachement)
  • “Swift Loop” Tool, which adds an Edge Loop along existing Edges
  • Weld/Separate Vertices
  • Tesselate single Faces
  • Delete Faces / Flip Faces (wihtout any disadvantages)
  • Basic UV Mapping? Not necessary but having the ability to create UV Maps directly in UE is surely beneficial Especially when it comes to the resulting Lightmap. Maybe implement a “smart” Lightmap tool which automatically adjusts the Lightmap to the best result? (Packed with enough space between Islands, Pixel aligned UVs, )

The thing is, BSP is superior when it comes to fast changes. I can simply move/resize the subtractive Brushes and I can instantly measure it.
Different with a Vertex Manipulation tool where I have to model it, measure it and for changes I probably have to redo the whole thing. Geo Tools 2.0 will probably not be suitable for Blocking out.

For me, basic UV mapping is most critical, biggest frustration and headache. Try to add/edit/resize/rotate texture even on simple wall or mesh in general, I exported my mesh from Blender to find out baking goes wrong and everything is wrong.

From now on i only learn bare modelling without headaches of UV, in future i just add and edit uv-s with Geo 2.0 where i can see how it matches with texture. I know very complex models still need 3D software but basic world creation should be doable with Geo 2.0