Download

Workflow to create a level based on an existing building

Hi everyone,

I’m creating a game taking place in an existing building (I would like my level to be an exact replica of what the building looks like in real life).
So since I’m working with existing geometry, I can’t really use modular assets as the spacing between doors and windows are predetermined and varying greatly.
The building is huge (around 300,000 sq ft).

My question is, how would you guys create that level?

Would you create it as one giant static mesh in blender or 3ds, and then export that monster of a mesh into ue?
I’m afraid the collisions would be a nightmare to figure out.

Would you create one static mesh per room and then snap them together in ue4?

Would you create the level entirely in ue4?

I should specify that I’m a novice, so any advice or input is welcome.

Thanks!
Antoine

The real life size of the building doesn’t matter that much. What matters is the number of polygons/triangles the model you created will be made of. And then materials complexity.
If your plan is having just that single huge building as long as you it won’t be 100Million+ polygons it should be ok on most systems. If you plan to make the game run on mobile platforms then you should avoid having too many polygons. Regardless have 3 to 5 LOD levels for each mesh to improve performance. I don’t think you will need more than 1Million polygons for the whole building with its interiors anyway even if you wanted to retain all the tiny details. You should divide the building per material type (all concrete meshes, all metal meshes, all glass meshes) and for each floor too.

Since yesterday, I tried out Unreal Studio and DataSmith Revit Exporter and it works surprisingly well!
So it looks like I can model the existing building in Revit (all the stairs, walls, doors and windows) and then export that to Unreal and Unreal will create all the meshes automatically.
Once that’s done, I need to change all the walls collisions to “use complex as simple” otherwise my player cannot go through the wall openings, but that’s about it.

Would that be an efficient way to tackle that project? It would definitely be the easiest and fastest way for me to generate the level, but I have no idea if it would impact the performance of the game.

@antoine: youre last idea does not use re-usability of assets like static meshes in unreal and the “complex as simple” collision is the most expensive way to solve that.
I would dissect the whole building in re-usable modules, e.g. floors or rooms that are the same. then model these once as single static meshes including proper UV and collision made in youre 3d program. then import the modules in UEd, set up the materials and build the whole building from the parts and add additional stuff like lightning, ground, surroundings, whatever. If you want to build the lightning, make sure proper lightmaps are applied, if you dont then switch to movable and here you also have the option to use dynamically lights, e.g. let the sun rise/set, have night-lights on and whatever…

@Vollgaser The problem I have is that it’s an old building that has been modified and upgraded many times in the past, so very few interior spaces are alike.
The only way I can think of (for me to use static meshes) is to create very small ones, like for example I could create a 1’ wide piece of wall (so a 1’x10" plane basically), and then snap together 20 of them in a row to create a whole wall.
Same thing for the doors openings (which are just big holes without actual doors), which varies from room to room. I would need quite a few different meshes just to model those doors accurately.
That means I would need to use thousands of times a dozen static meshes, instead of using once hundreds of different meshes.

Would that be more economic?

Create your building model first with whatever software you like. Then split it by floor and material type for example. Like having a mesh of all the inner walls of the first floor, another for the second floor and so on. Then do the same for the outer walls. Have the windows on each floor as a mesh. Have the glass of all windows on each floor as another mesh. Have any railings as another mesh on whatever floor. Have all floors as a single mesh and all ceilings as another (you can have the floors acting as both floor and ceiling just assigning different materials on the faces instead of using two meshes).
If you won’t need destructibles you could use instanced static meshes to lower the draw call when they are the same with no changes.
Yes performance wise it would be even better having a single static mesh for all windows and using instances of it. But it would take more time to re-assemble the building model that way. If you don’t need the compiled game to run on mobile platforms it shouldn’t be a real problem anyway.

Alright, thanks for your reply DarkS474 And Vollgaser!
I think what I’m going to do is create one floor using DarkS474’s input, and another floor using Vollgaser’s input and compare the performance of the two, as well as how long it took me to create the floors.
It should help me benchmark the two processes and figure out which one I like the most.

ok, if you dont have repeated geometry like rooms or floors then build these as mesh/es completely in youre 3d program, similar to what DarkS describe. Dont try to assembe one wall from many pieces as this will give you lighting errors. make the whole wall or walls of a room as one single mesh, that way the lighting will be better. If you got straight geometry in youre walls/ceilings and not organic stuff, then the polycount should be no problem at all. also what you can do is put the different layers in sublevels if thats really required, but i dont think you should get in performance issues even with 3000 or 5000 actors. As benchmark I got a large project 43 GB RAM, 9000 static meshes and still over 60 FPS in 4k resolution with a RTX2080 Ti even with dynamic lightning nand VFX going on.