As discussed in my industry research post many studios expect their junior artists to be able to demonstrate an understanding of LOD’s in their work. This is not something I have considered before, and appears to be a further refinement to the standard low and high poly baking I have practised for the past two years.
:: What is meant by LOD ::
LOD’s, standing for Level of Detail is used across almost all modern game titles. Allowing environments to be as high quality as possible while the player camera is in sight of the assets while reducing the world engines workload when the player isn’t looking. The balance you need to strike with using LOD’s is making sure that the draw distance between the various fidelity models is distant enough that the player doesn’t notice the models changing.
LOD stands for level of detail, and it’s the process of making less detailed versions of your models that are viewed when they’re further away from the camera.
Denham, T (n.d.)
See below a screenshot of a very simple model shape with both a high and low poly variant (Fig.1). Its easy to see why a game engine would struggle to run a programme smoothly if it is left to try to support entirely high poly environments. While at the same time forcing the finished models to always be as low poly as possible does force a cap on a games graphical fidelity.
LOD’s are meant to provide a good compromise between creating artistic assets of as high a quality as possible while ensuring the game engine can run smoothly. When properly implemented the player should not be able to tell anything is actually happening with the assets, being met with the highest quality versions when viewing them. Occasionally the player can see the change though, which is called ‘pop in’ (Fig.2). This is something that is to be avoided, and no doubt an aspect of a game that is thoroughly tested.
The below video (DIGA Hub, 2021) does a great job showing how the distances are calculated by game engines (In this case Unity). This naturally requires many different models to implement. Which is an entirely different modelling process to what I have come to know through my studies.
Implementing LOD’s into my environments will entirely change my current workflow. Which currently goes ‘Low Poly to High Poly to texturing then rendering.’ However instead of simply creating one low poly model with one high poly counterpart I will have to create multiple low poly models, each being a lower resolution than the previous. This then poses the question of which model do you UV unwrap, and therefore take into substance for texturing?
The below video (Game Dev Academy, 2015) also discusses how LOD is used to keep game engines running smoothly by reducing the workload. It also mentions how LOD models are paired into LOD groups. They show how when designing an environment the amount of LOD models required correlates to how far the player should be able to see an asset before they disappear from the world.
This means that depending on the draw distance we are working for with our game the more LOD models we need, stretching to lower tri counts. For a large asset the player should be able to see for a long distance such as a building we might want to create four or five LOD models, until it is the most basic of shapes. However for a smaller asset such as a car you might only need three LOD models before the engine can simply delete the asset from view.
:: Nanites in Unreal Engine 5 ::
With the creation of Unreal Engine 5 a new process of modelling has been introduced called ‘Nanites’. This is an automated process that allows Unreal engine to create low poly mesh models from a user imported mesh dynamically. In theory bypassing the need to create multiple lower tri count meshes. This should achieve the same outcome as LOD’s, shrinking the workload of a game on its engine while making it so that the asset mesh created by the artist can be as high poly as is required without restriction.
This above video (Unreal Engine, 2021) shows how to implement nanite in unreal. Which is as easy as telling the engine to create a nanite mesh for whatever model asset we import into the engine. The engine can then use this mesh created by nanite and dynamically change the tri count depending on the players distance to the object.
The video also shows how the engine creates a nanite proxy mesh, which is an extremely low poly version of the model. This proxy mesh model can then be used for things such as activating complex collision on an object and is the low poly version of a model should the game be ported onto a platform that doesn’t support nanite such as mobile.
:: Does Nanite spell the end for LOD? ::
The purpose of my major project is to ensure that when I leave my university education I am fully equipped to be competitive in the games industry. A large part of that is making sure that I have modern knowledge of the software’s used in the industry currently. For example, there is little point in me learning Unreal Engine 4 now that its predecessor has been released. Studios using Unreal Engine may still use version 4 for whatever project is currently in development but after that the latest version will be what I am expected to know.
Understanding Nanite is only ever going to be a plus, but there are downsides to the software that I need to understand. There’s a lot of discussion around Nanite and LOD at the moment amongst the online game developers community. Such as the below twitter thread from Delaney King, a Senior Technical Artist who has worked at many different studios.
In the thread, they discuss how using nanite changes how you create assets. For example, they talk about how you are texturing and unwrapping the high poly version of your assets, which can prove to be an issue for storage outside of the game engine. ‘Nanite can be a pain in the neck to author, as you have to unwrap and texture dense models. This is something to consider when you work with remote artists and factor into your archive storage and hardware.’ (Delaney, K (2022)).
I wanted to make sure I gathered what the opinion of the game dev community regarding nanite. So, I talked with a Senior Prop Artist at Ubisoft. There comments echo those shown in the twitter thread above. They talked about how not all engines or platforms use nanite and that to show an understanding of LOD in my work will be a big benefit when looking for roles in the industry.
They also talk about how you don’t need to create LOD’s for all the assets within a scene. Only the ones you would want the player to see from far away. In fact, for the purposes of renders LOD’s are not actually necessary at all. Its something that is supplementary, which I can show by having the LOD group of certain prop assets shown next to each other. Displaying the wireframes to show the lowering detail. But given how the environment I create will never be played is not actually a benefit beyond simply showing my knowledge of the method.
:: Summary ::
With this post I have researched what is meant by LOD’s and how I can implement the practise into my own work. I have discussed why I should do this with a contact in the industry and have discussed the benefits and negatives to using nanites in unreal engine 5. I will aim to create LOD groups for the hero assets I make for my environment, but I won’t necessarily show these or implement them for the purposes of gathering environment renders. Rather showing the various lower detail models side by side in a separate render.
:: References ::
Denham, T (n.d.). ‘What is LOD (Level of Detail) in 3D Modeling?’ [Online Article]. Available online: https://conceptartempire.com/3d-lod-level-of-detail/ [Accessed 28/10/2022]
DIGA Hub (2021). ‘Create Level of Detail (LOD) for Model in Unity and Maya’ [YouTube Video] Available online: https://www.youtube.com/watch?v=sZCqFtYOFw4&ab_channel=DIGAHub [Accessed 26/11/2022]
Game Dev Academy (2015). ‘What is LOD? (Level of Detail & LOD Groups)’. [YouTube Video]. Available online: https://www.youtube.com/watch?v=mIkIMgEVnX0&ab_channel=GameDevAcademy [Accessed 28/10/2022]
King, D (2022). ‘DM question: does nanite make lods go away? Nanite is a method of lodding and rendering dense geo on Unreal Engine 5. It’s easy to use, you just load the model and check on nanite and it does the work for you.’ [Twitter]. Available online: https://twitter.com/delaneykingrox/status/1595642676673908742 [Accessed 30/11/2022].
Red Dot Games (2021). ‘Car Mechanic Simulator 2021’. [Video Game]. Available online: https://store.steampowered.com/app/1190000/Car_Mechanic_Simulator_2021/ [Accessed 28/10/2022]
Unreal Engine (2021). ‘Nanite in UE5: The End of Polycounts? | Unreal Engine’ [YouTube Video]. Available online: https://www.youtube.com/watch?v=xUUSsXswyZM&ab_channel=UnrealEngine [Accessed 30/11/2022]