Lighting Artifacts

Hi there,
I needs some specific advice on eliminating lighting artifacts. I’ve researched the issue and have a general idea what I need to do - generate lightmap UVs - but it seems I’m doing that and still the artifacts persist. So, I need to know how to create primary and secondary UV channels in my modeling software, or in their output model files. I use Silo for hard surface modeling and then paint diffuse, displacement and normals in 3D Coat. I output to OBJ, so I think the most direct approach would be to add a few lines to either the OBJ or the MTL files to indicate that the UVs are to be taken from a secondary UV channel. I have no idea what the text should look like or where it should go.

Artifacts are circled in red. These are not reversed normals and don’t appear until after Build in UE

OK, so the system here won’t allow me to upload a second image showing the LODO Detail settings, but I assure that the Generate Lightmap UVs option is checked and there are 2 UV Channels, although I don’t know if either of these are for the lightmap. They could be for the 3 materials (wood, leather, leather2) on the model. The Leather2 material is referenced as Element 2 and seems to be the one with the problem.

If anyone can help and thinks a screenshot of the LODO Detail is needed, I can try posting as a new comment. I could probably figure things out if someone can share an OBJ/MTL file set with primary and secondary UV channel statements. I really don’t want to have to import FBX files, as they come into UE with no materials applied. But, if this issue can’t be resolved with OBJs, then any suggested work-around would be appreciated.

Thank you.

Hi Tersta,

When you build lighting are you getting and Overlapping UV error at all? This looks like it could possibly be that.

Can you post a screenshot of your UV Layout for your Lightmap channel (Default is typically UV Channel 1). You can you view this in the editor by going to the Static Mesh Editor > Toolbar > Click UV button > Use Drop Down to the right of the toolbar to select the UV channel for the Lightmap.

You can also check to see which UV channel is assigned to the lightmap coordinate index by checking under the Static Mesh Settings tab on the right. This will list the lightmap Resolution that is being used and the coordinate index under the advanced arrow drop down.

Hi Tim,
Yes, I am getting Overlapping UV errors of 8.2% on the ottoman and 6.9% on the chair when I build.

UV Layout for Light Map of Throne-Chair
Light Map Resolution: 512
Light Map Coordinate Index: 1

Any help in fixing this issue inside or outside of UE would be appreciated. I don’t have a clue how to prevent overlapping UVs and I can’t say I’ve dealt with UV channels in the workflow I use. But I’m not opposed to a little manual tweaking of the OBJ/MTL files to resolve the issue before importing.

Thanks, Tim. Your help is appreciated.

It looks like overlapping UV’s are a problem, along with the lightmap being too small.

Really it’s an issue that the mesh being very detailed, you need to remodel it low poly and bake the details to a normal map. With a lower detail mesh it will be much easier to map it efficiently

It doesn’t necessarily mean you need a less detailed mesh, but the UVs for the light maps ideally need less seams and more padding.

It looks like you auto unwrapped, you’re going to want to UV the mesh manually and more efficiently. Less seams, and more spacing in between each island for the lightmap UV.

See, I wouldn’t have thought that was the problem, because the artifacts are showing up on the cushion (poly count: 2240) and it has no detail, but does have its own UV map. There doesn’t seem to be a problem with the wood. The detail on that is normal map. Another reason I wouldn’t have thought detail was the problem is because the simpler ottoman has the higher - 8.2% of UV overlap and just 7,992 poly count, BUT if lightmap resolution is a factor, the ottoman only has a 64 pixel map.

Now, because the cushions don’t have detail, I didn’t link the normal maps in the materials for the cushions. I did for the wood, but not the cushion leather. And when I did, it was really messed up with ‘texture’ and contours I know I didn’t put there. Do you think it’s the lack of an nmap on the leather material that’s causing the artifacts? I’m going to add a flat nmap to the material and see what happens. Also, there are 3 separate color UVs for the chair - 1 for the cushion with the artifacts and 1 for the wood on the chair and 1 for the back and armrests. The ottoman has 2 color UVs, separating leather and wood. Is it possible that that might be causing a problem, in which case combining the UVs would be the solution? What’s the right setting for the lightmap resolution. I thought 512 was enough for the chair and 64 for the ottoman. Should I be looking at 4096 or higher? is there a general rule for setting lightmap resolution?

UV Layout for Light Map of Throne-Ottoman
Light Map Resolution: 64
Light Map Coordinate Index: 1

I’ll try the flat nmap and see if that works. I’ll also see what happens if I assign one leather material and remove that secondary one. I’m not sure why UE imported 2 anyway. There’s only 1 for the chair, so I don’t know why it’s loading it twice.

Thanks for advising darthviper107.


First off - WHAHAHAHA! <— That’s the sound I make when I cry, dude! The thought of manually unwrapping UVs makes me do that. What about the ottoman UV? Lots of padding there, right? Let’s say I actually wanted to manually UV for the light map. Is that something I can do in UE or do I do it in my painting app? I use 3D Coat for color, displacement, nmaps. I could move islands around, if it would solve the problem.

Thanks for the suggestion, sort of. :stuck_out_tongue:

Do you use 3d coat for unwrapping? You could, you just need to remove a lot of those seams.

Yes. Normally I do the hard surface modelling in Silo, which allows projection UVing in 3D space. In Silo, I color-code faces or add texture to whole planes right in there. That’s easy enough for even UV-disabled people like me to do. After that, I bring the model into 3D Coat for displacement and texture painting. I unwrap and let it decide what goes where. HOWEVER, on this model, I didn’t do the prep work and didn’t color-code faces and plane. I assigned one diffuse color to the wood and one to the leather. If I had used textures, I would have had to orient the faces to go with the pattern. I didn’t do it this time and it shows. To be honest, 3DC’s auto-UV did a real hack-job on the cushion - which is where the problems are. The mesh is all scrunched up at the top of the UV map. The chair looks OK, but the cushion is pretty messed up. However, I didn’t try try fix it.

I just attempted marking a seam on the center edge loop. It looks like a cushion now. Just one click to mark it, one to unwrap it and one to apply it…Done. I bet this tiny change will solve the problem.

Before and After MANUALLY marking a UV seam

ZacD, you’re a genius! LOL! I’ll output this version of the ottoman and see how UE likes it. Thanks for coaxing me into doing it. Quite painless, really, but I’m still not enthusiastic about manual UVing. :slight_smile:

With game engines seam placement is really important when it comes to shading and lightmaps. 3dcoat is pretty painless for UVs,

My workflow for 3dcoat UVs is

  1. Clear all seams
  2. Put seams where I definitely need it, keep it to a minimum
  3. Unwrap and look for bad spots, and add seams
  4. If there’s a bad spot where I don’t want a split sometimes I’ll add a split and then merge them together in another application.
  5. I don’t think 3dcoat as edge padding options for UVs so I do that in another application, if you are going to do high resolution light maps like 256-1024 you might not need to add extra padding, but for small stuff, you definitely do.


That sounds like an intelligent work flow. Generally begin with the minimum and reluctantly add detail if and where needed. That’s why I do hard surface modeling in Silo and only displacement/texturing in 3DC. Even the high-detail corkscrew spindles on this model were 20 times more poly-dense when produced as voxels in 3DC. Like you, I go back and forth, getting the detail from 3DC and then doing the housekeeping in Silo, or directly in the MTL files.

3D Coat has a padding option on export of the mode and mapsl. It’s the third option from the bottom on the Export dialog. Is that the same as edge padding? I like the fill holes option. I’ve learned that a base coat with the paint bucket still leaves areas unpainted. I end up doing touch ups in GIMP.

I’m happy to report that the ottoman took a build without UV overlap in UE. I’m working on the chair.

I’m happy to report that the problem is resolved. Very untidy UVs on the cushions are to blame. With them straightened out, the artifacts are gone. I would have uploaded a screenshot, but the forum app won’t take it.

Thanks ZacD, SE_JonF, darthviper107 and Tim Hobson for helping me noodle through this issue. :smiley:

Glad to see you resolved the issue. =)