Tutorial

How to Better Import, Optimize, and Set Up Complex Assets in Unreal Engine

Using Unreal Engine to create immersive and highly realistic environments is an incredible way to bring people together to design, make decisions, and create new connections. If you have a 3D model of a space (including CAD, BIM, and rendering models), we've put together this cheat sheet to help you prepare and setup your models to build these experiences, faster.

Step 1: Project Set Up

The foundational step is to plan out what you’re going to build, and where it’s going to be used. This gives you an idea of the performance metrics that you will need to target, which affects how you set up your development environment. For a deep dive, see this blog.

When starting a new project, pick a template project designed for what you’re building as the important settings will be set up already.

  • Which version of Unreal Engine: Each version of the engine has its strengths and weaknesses, and you’ll need to choose based on which features you’re using. This is critical as upgrading later can cause issues, and downgrading is nearly impossible.
  • How your scene is rendered: Choose between baked lighting, software ray-traced (SWRT) Lumen, hardware ray-traced (HWRT) Lumen, and path tracing based on performance budgets.
  • Choosing the engine build: source builds give you access to dedicated multiplayer servers and pre-release features but will take up significant disk space (100GB). Launcher builds are standard versions that are more compact (30GB).
  • Exporting 3D data: We recommend using Datasmith to export data from your 3D software as it preserves the most information about a 3D scene and has broad compatibility with most popular digital content creation tools.
  • Importing 3D data: Unreal Engine has core limitations that can become issues for large scenes with over 50k unique objects. Split the scene up through multiple Datasmith exports and assemble each part as a sublevel. Palatial will do this automatically for you.

Step 2: Optimizing Performance

Optimization should always be at the back of your mind so that you can create efficient projects that run smoothly and deliver the best performance. When starting a new project in Unreal Engine, it’s typical to pick a template project designed for what you’re trying to build as the important settings will be setup already.

This 3dsMax model was imported with very high lighting complexity. Palatial was used to optimize the scene and increase frame rates from 10fps to 60fps.

  • Reduce draw calls: Unique objects and materials in a scene will lead to high draw calls and low responsiveness. Merging meshes, replace duplicates meshes and materials, and set up ISM/HISM instancing to improve responsiveness.
  • Nanite: Enable Nanite for all objects that support it, as triangle count no longer needs to be considered. Translucent objects are not supported - you will need to reduce triangle counts and setup LODs on these.
  • Reducing lighting complexity: Adjust light attenuation to reduce overlap, replace many smaller lights with a few larger areas lights, and turn off cast shadows on dim lights when not needed.
  • Textures: Use virtual textures to render only visible parts, saving video memory. If this wasn’t done on import, this will need to be enabled manually, and all materials that use textures will need their sampler types updated.
  • Materials: We recommend checking your scene for duplicate materials and to sparingly use animated, translucent or 4k+ textured materials such as those from Megascans.

Step 3: Fixing Import Issues

You might find missing materials or textures that don’t quite look right when your model is brought into Unreal engine. There could be several reasons depending on the 3D modeling software and render engine your model was built in.

  • Unsupported materials from 3dsMax to Unreal Engine: Currently, Sub-surface-scattering, Multi-coat, Displacement, Texture Randomizer, Ray-Tracing switcher, and Front Back color material nodes are not supported.
  • Partially supported materials from 3dsMax to Unreal Engine: Certain types of nodes, like the noise node, don’t correctly translated properties over properly. Check out this doc for more info.
  • Fixing unsupported materials from Rhino to Unreal Engine: If using world coordinate space (WCS) or object coordinate space (OCS) texture mapping, the scale will not translate properly into Unreal. To solve this, convert the materials into a box map.
  • Exporting xrefs from 3dsMax to Unreal Engine: Make sure the “include xrefs” box is checked in the Datasmith toolbar and that all referenced files are accessible. If content uses plugins like Vray, Corona, Railclone, Forestpack, make sure that they have active licenses.

Step 4: Fixing Visual Errors

Once all the 3D data is in place, the next order of business is to fine tune your geometries, lights, and materials to meet visual expectations.

  • Overexposed lighting: The quick and dirty fixes are to change the sun brightness, or change the light units. Preferably, adjust the light intensities by creating a script or Dataprep function to add a multiplier to all lights.
  • Light bleeding: If you can see light coming through a wall when it shouldn’t be, it means that the geometry is too thin (<10cm) or planar, or the lumen settings are too low. An easy solution is to create rectangular geometry to block light out.
  • Emissive materials: Do not use emissive materials to light a space. The brightness of emissive materials do not affect lighting, only bloom, and overly bright emissives cause a lot of noise in lumen scenes.
  • Inverted normals: If an entire object is flipped, use modelling mode > normals > invert normals. If only part of the object is flipped use modelling mode > normals > unify normals or, select the individual triangles and flip them.

Step 5: Scene Dressing

Now it’s time to bring your environment to life with the spicy details. It’s like creating your own mini world - set dressing is more an art than a science and everyone has their own approach.

The Ultra Dynamic Sky plugin is great for simulating views around the clock.

Some suggestions:

  • Adding a sky: Ultra Dynamic Sky is easy to use, flexible, and adds a dynamic sky system complete with customizable weather and time of day.
  • Adding details and decals: Nothing is quite perfect in the real world, and adding grunge or imperfections helps with realism. Using decal materials is one way to do this.
  • Adding photorealistic context: Cesium is a plugin that streams in 3D data directly from Google Maps, and is an easy way to bring in realistic context.

Creating an Unreal Engine project from an existing scene can take hours to days depending on the complexity, but tools like Palatial can help you automate 80% of this process. This way, you can spend your time fine tuning the immersive details and bring your visualization to the next level, faster.

References

Ultra Dynamic Sky PluginDecal MaterialsCesium for Unreal Quickstart

You might also like

Tutorial
De-mystifying how to setup your Unreal Engine project
Tutorial
Optimizing performance for imported scenes in Unreal Engine

You might also like

Tutorial
De-mystifying how to setup your Unreal Engine project

Do you build immersive experiences?

If you want to test Palatial, we want to hear your feedback. Let's find some time in the calendar and get this party started.