Download

BSP vs. Models vs. Both (UE4)

Hello. I have a few questions.

I’m working on a project that will require me to build a house, inside and out, to scale. I have blueprints and experience with both 3D programs and BSP based engines.

What I want to know is, should I be building my houses as a model and importing them, as BSP or both? I’m leaning towards both, as my guess is I should do walls and such as BSP and then models for finer details (almost exactly how I would do it in the Source Engine) but I’ve run into some issues.

If I export my BSP walls and import them into 3D Studio Max to model details to scale, re-importing the models results in a model that is far too small. I’ve looked into this issue extensively via Google and cannot get a straight answer.

Finally, on the subject of building with BSP, how the heck does anyone do it?! I’ve been working with BSP since Quake I, and UE4’s BSP tools are either terrible or radically different. Nothing seems to be on a unified grid system, IE I can get down to nudging two BSP blocks at the smallest increments, and they do not line up. I’ve tried using subtractive BSP blocks to cut away at a larger one, but this is both glitchy and inefficient.

Otherwise, I’m loving UE4. Between it, Unity and Cryengine, nothing can match UE4’s easy pipeline from 3DSMAX. Or at least that’ll be my stance once the scale issue is resolved.

Thanks!

Use static meshes instead of BSP, it actually has better performance and you have more control.

Ok, last question then. Do you know of a tutorial that discusses how to create a separate UVW map for lightmaps? That’s the big issue I’ve got with using models. For a big *** house, I like to use tiling textures, but I need an additional UVW map for lightmaps. This is also problematic because if I make a whole house as a model (just walls and roof lets say), my lightmap UV will be a **** nightmare!

Thanks!

For buildings you need to make sure you don’t have too much surface area as a single mesh, each mesh gets only one lightmap so if it’s too big then the lightmap can’t get enough detail. Here’s some info on how to make lightmaps: https://docs.unrealengine.com/latest/INT/Engine/Content/Types/StaticMeshes/LightmapUnwrapping/index.html

Ultimately you get the best results by doing it by hand instead of using some automatic methods.

Well the basic idea being that you whitebox and playtest your level with BSP, then replace what you can with static meshes which offer instancing, batching and other performance enhancing methods. Leaving a few blocks of BSP around for things that need no additional geometric detail like some walls, floors etc…is perfectly fine in moderation. The performance impact is pretty negligable, especially since UE4 does BSP in a much more GPU-friendly fashion that past versions.

The vast majority of Unreal Engine games, including AAA titles, are going to still have a few blocks around even in completed levels. That’s an OK thing just don’t go nuts.

Thanks to both of you for helping me get my head around how much BSP I should be using. It looks like tiling textures will just have to continue to be a no-no. It’s going to be tough figuring out how and where to break things up (such as a huge surface like a exterior wall) but I’ll have to figure it out.

Darthviper107, your link is really helpful, but the gap I’m missing is how to actually set up my UVWs so that the engine understands where to put lightmaps and what is just UV texture data. I had read that UVW channel 0 is reserved for lightmaps, and anything after is materials. I know how to add additional channels of UVWs, I just don’t know how to get it all set up for import. Just like how it took me a while to learn the prefix to a object’s name that makes it a collision object in-engine. I just need to know the rundown of things.

By default the engine will use the second UV channel for lightmaps, if you only have one UV channel then it uses that one. If you add a second UV channel and reimport the mesh then you have to change it to use the second UV channel since it doesn’t automatically change it when a file is updated.
To change what channel it uses, open the static mesh from the content browser and then on the right you can change the Lightmap Coordinate Index to whatever channel you want it to use. By default your materials will use the first UV channel, but you can change whatever channel you want a texture to use with the material editor. And of course you can use tiling textures in your materials.

Thanks, this is exactly what I needed to know!