How do I bring my world into Unreal? Trying to import road and landscape

Hello! I’m building a 3rd person game, that takes place in a coastal city which consists of several small islands. While deciding on building it with Unreal Engine 5, I’ve sculped a landscape as well as created a road network from splines using Cinema 4D and Houdini. I have also built some hero buildings and other stuff and my master scene is in Cinema 4D.

I am not sure what the best way to go ahead with bringing it into Unreal is, but happy to learn about best practices. Here are some things I’ve tried and considered:

  • Since the world consists of several small islands, it feels a bit wasteful to have all of them as a single large landscape, where most of it is below water and I’m not considering any underwater gameplay.
  • The road network is currently a single mesh. I am considering slicing it up into smaller chunks so that the entire thing doesn’t have to be loaded constantly. The city layout is quite organic with a lof of elevation changes.
  • I tried making a heightmap of the world mesh, and then importing it to unreal, but it’s very challenging to scale the landscape to match 1:1 with my road system.
  • I tried simply bringing all the smaller islands in as separate static meshes instead, and keeping the main core of the island as a landscape. This is maybe doable, but I don’t think it’s possibly to for example procedurally spawn grass or paint layered materials on the static meshes like it is with landscapes.
  • How are people doing this kind of work generally, of importing roads or entire world sections designed in other software?

Never use landscape or the unreal bits and pieces (like the water system) if you can afford not to.

The road you do need to segment out - depending on how organic it looks this is either hard, or it can easily be done by using pre-cut blocks and instancing.

You generally don’t use the grass or layered paint on anything because it’s worthless. Paint things up in your external editor, bring in final textures. for smaller things (particularly the islands which may just fit a single texture) this allows you to better manage rendering resources.

roads are spline points - nothing less, nothing more.
You then populate something along those spine points. be it meshes (low performance) or something else that you place yourself via some custom procedural generation.

Rivers are actually similar but generally speaking it costs so much that there’s no reason to be apprehensive about the cost that deforming a regular mesh adds to it (they aren’t instanced because they all have custom shapes).

1 Like

Thank you! Amazing fast response!

Allright so I’ll bring in all my landscape world bits as separate static meshes. Do you recommend using nanite for these? All my island meshes are below 100K triangles, and the main island is maybe 300K. Also what is the correct way to treat collision in these cases? My meshes are fairly low poly so it makes sense to me to turn them all to Complex collision as simple.

And how can I set up procedural foliage to spawn on my static meshes?

Nanite doesnt seem to be good for much of anything

When you do things right the scene is faster without that.

Never use complex as simple. It leads to super easy glitches.
Make actual convex collision (and give it at least a 10m depth for the islands/terrain).

Procedural foliage can spawn on anytning, event itself. What you are probably asking about is the grass - you use the foliage instead of the landscape grass node.

The end result in terms of scene speed should be definitely better or about the same as for the grass/grass maps since introducing the landscape slows things down considerably.

As far as splitting landscapes up for collision - depends mostly on target hardware and scene setup;

If it can support not occluding large swatches of landscape because your overall tris count is not high, you can then afford to keep the pieces rather large.

I still wouldn’t go above the 1km^2 mark. But you could. And you probably do with merged LOD replacements.

If an island is split into 4 or 5 meshes, you do need to set things up so that from afar the meshes are joined into one

In ue5 you can make custom Data Layers to achieve that (don’t count on the HLODs, they rarely work right).

1 Like