Map editor / scene optimization

For the most part we are currently playing with babylon from a work perspective to build complex visualizations but I was thinking it might be interesting to also try my hand at it from a gaming perspective (instead of unreal or godot), something more browser friendly.

To this end I was wondering about map development.
I was wondering what the community use for map development.
I like blender3d and I know you can export from there as gltf or .babylon but will those be optimized for rendering. For example if I load a map build in blender, is there a way to have it brought into a octree so that the octree will only render what is visible instead of the entire map per frame.

What is the recommended way to build maps with props, triggers, events and base meshes for babylon?
Does babylon manage the scene optimization for rendering performance or is that something you need to do manually?

Hey there! I haven’t built a fully fledged game with Babylon yet, but a ton of people in the community are doing it so hopefully they’ll weight in. :slight_smile: But in the rendering front, I can give some tips. We have an incremental loading system that will be useful to render only the needed parts of a scene: Incremental Loading System | Babylon.js Documentation (babylonjs.com). And for scene optimization, some strategies have to be done manually (as we wouldn’t be able to always make the correct assumptions when optimizing) Optimizing Your Scene | Babylon.js Documentation (babylonjs.com), and there is also the Scene Optimizer who can do some of the work automatically: The Scene Optimizer | Babylon.js Documentation (babylonjs.com)

Hope these help :slight_smile:

Thanks carolhmj, not sure those are what I am talking about but perhaps a good opportunity to be more exact.

When dealing with a map, there is normally a lot of geometry involved.
Progressive loading is great but I think there may be a lot of popping depending on the strategy you follow. Popping effects not making for a great gaming experience.

One way to deal with large meshes is to break the mesh up in a octree where geometry data is specially culled depending on occlusion or frustrum, That means that I need to manage a octree with special data and I can cull entire chunks of the geometry if it is not visible.

So, Babylon has octrees so that is one half of the battle won.
Loading a entire map first and breaking it down into octrees is not memory efficient through.
So somewhere in there you need tooling to cut your map up into octree bits and bobs that you can progressively load as required.

I think that expecting Babylon to deal with all that for you might be a bit much but perhaps there are some people who have solved this problem already so I don’t have to solve it again …

aaaah 3d such fun problem areas :slight_smile:

Maybe use a 3D tile loader (like in this thread)?

Ja I was not aware of tile loaders, this looks interesting, thank you :slight_smile:

1 Like