Before even thinking about what kind of characters, interactions, and stories you’re going to build, the foundational step is to start by confirming what you’re going to build, and where it’s going to be used. This gives an idea of the performance metrics that you will need to target, which affects how you set up your development environment.
This is also why switching between formats (eg. from desktop to VR) usually involves having to redo a lot of work. Based on best practices, we’ve put together this cheat sheet:
Choosing a version of Unreal Engine
Each version of the engine has its strengths and weaknesses (duh), and you'll need to choose based on the features you'll be using. This is critical to get right now, as upgrading later can cause issues, and downgrading is nearly impossible.
Unreal Engine 5 (5.3):
Lumen, Nanite, and virtual textures were introduced with this version of the engine, making it easier to work with large and dynamic scenes. However, the tradeoff is that there’s a large overhead, which is ok for desktop and consoles, but is an issue with performance limited formats like mobile and VR.
- Nanite: This virtualized geometry system allows you to have basically unlimited triangle counts in a scene, making it so that you don’t have to worry about LODs. However, Nanite is limited to 50,000 unique objects in a scene, and does not work with objects with transparencies
- Lumen: Lumen “just works”, meaning that you won’t have to worry about light baking or light maps, and is especially useful for dynamic scenes.
- An extra note that Nanite and Lumen target 60fps for exterior scenes and 30fps for interior scenes. The standard for VR is 90fps, meaning that the performance isn’t high enough yet, and Lumen is not production ready for VR at the time of writing (Feb 2024)
- Virtual textures: this makes a big different with performance if you have a lot of high resolution textures in your scene, an important consideration when you’re using a lot of Megascans or film quality assets
Unreal Engine 4 (4.27):
This older version is has less features, but is less performance intensive to run, and also less buggy, currently. Specifically for architectural visualization, there’s better support for baked lighting because it works with ray traced reflections for more realistic scenes.
Selecting how the scene is rendered
When selecting how your scene is rendered, it’s important to find the right balance of visual fidelity and compute for your purpose.
- Baked lighting: The most efficient way of rendering a scene, where lighting and shadows are pre-computed and baked into a second texture channel. This method is best used for performance limited formats like VR, but takes time to setup, and any changes mean re-baking the lights.
- Lumen: Unreal’s magic rendering algorithm, it gives the benefits of ray-tracing without needing specialized hardware. When using UE5+ this is the recommended choice, except for performance limited options.
- Lumen software ray-tracing (SWRT) - the default option, prioritizing broader compatibility at the cost of performance and efficiency
- Lumen hardware ray-tracing (HWRT) - requires dedicated hardware (ex. Nvidia’s RTX series) to create more realistic lighting, shadows, and reflections more efficiently
- Path tracing: The no-shortcut approach directly tracing light rays throughout a scene and calculating the light bounces. This is generally used for non-real-time uses like stills or animations
A note that Lumen HWRT is getting close in terms of quality, but the path tracing really shines when there are a lot of translucencies or emissive light sources in a scene
Exporting 3D data from a DCC
We recommend using Datasmith to export spatial data from your digital content creation (DCC) software, as it preserves the most information about a 3D scene, has broad compatibility with most popular digital content creation tools, and includes automated texture optimization upon import.
If you’re using a 3D software that isn’t supported by Datasmith, or your data is in a special format like point clouds, try using standard formats like glTF, glb, or USD, or custom plugins. Everyone has their own preference based on their workflows, and there’s a lot of great advice on Unreal forums and Reddit.
Importing 3D data into Unreal Engine
Unreal Engine has core limitations that can become issues for large scenes with over 50,000 unique objects. Split the scene up through multiple Datasmith exports and assemble each part as a sublevel. Palatial will do this automatically for you.
This is by no means an exhaustive list, but touches on several important considerations when deciding how to setup your Unreal project. It’s important to always have the performance requirements, and the available compute power that you have on hand to decide the best approach to take.