While Character Creator 3 produces amazingly high quality for video games by default, you still need to generate lower resolution models for some situations, like when your character is far from the camera. The issue is this: not only it’s a waste of resources to have a very high-resolution model far from the camera (since you can’t see the detail); engines can have a hard time drawing those because triangles are perceived to be so close together the engine wastes resources to draw them.
Using LODs in UE4 is pretty easy (actually, a lot easier than Unity). First, you need to export your character from CC3 using the InstaLOD settings, and generating the amount of LODs you want (the “Keep Original Avatar” is optional, depending on what you want to do).
Then, you import your exported character into UE4, and check the “Import Mesh LODs” box.
After the model is imported, you get your Skeletal Mesh with the LODs you exported (the number of LODs obviously is defined by the number of LODs you exported from CC3). The image below shows the third LOD (the original setting is “Auto”). Another thing you can do to test the LOD is zoom out in the viewport, so you can see how the model changes as you move backwards.
If you checked the “Keep Original Avatar” checkbox, your LOD0 will be the original avatar. This avatar features the full quality skin material and textures, as you can see in the image.
However, as I said before, you will need this avatar depending on your specific needs. If, for example, the character will never show up close to the camera (if it’s a “filler character” for your crowd), you only need to generate the LODs.
You can configure how the LOD switching happens if you create an LOD Settings Asset. To create one, simply click the “Generate Asset” button in the LOD Settings roll down of your Skeletal Mesh, as you see below.
Then, in the LOD Settings Asset you can set the screen size of the object to activate each LOD. In UE4, LODs are controlled by object screen size, not camera distance.
In regular situations this should be fine, but some situations need more control on how the LODs are used. For example, in my current setup, I am using realistic strands-based hair, and the hair will not change depending on the distance. I could, for example, make a copy of my avatar with polygonal hair, and then use it to generate the LODs separately from the high-quality hairless avatar, and then make an Unreal Blueprints script that will switch between the hairless avatar (so I can use realistic hair) to the LODs, so polygon hair is used and system resources are optimized.
Unfortunately, I haven’t found a way to get the current LOD level being used in Blueprints, so all I can do is get the distance between my camera and the character, using Blueprints, and then trigger the hair visibility based on whether or not the distance is enough to trigger the LOD switch. It’s not the best method because it requires some guesswork, but it’s still an option.
Using CC3 LODs in Unreal Engine 4 is pretty easy, and it can be very helpful when optimizing your games. I hope you found this useful.