Baked Lighting Variation Between Static Meshes

Resurrecting old thread. But this really is a problem for modular building construction. A grouping hint for static meshes would be a life saver.

Yep better solutions would be appreciated. It seems each method has some heavy trade-offs.

Any news or future on this subject? We’re starting a game project and hoped to go for modular design. However we have to consider other approaches if nothing new comes up. At least using fully dynamic lighting is not an option for us.

Unfortunately we have not gotten a chance to work on a artist specified merging implementation, sorry. So the only things you can do are try to jack up the solver quality while lowering the smoothing, or try to hide the object seams. Here at Epic we are relying on increasing the solver quality for games like UT. We’re not happy with this state.

In terms of “lighting as a group”… There seems to be something in the engine that does that.
Although, as said, it does not what we are all looking for. So it must be something different.

However, I cannot find any decumentation about that feature. And the CTRL+ALT detail help is rather short :slight_smile:

So, although it probably related to something else, Im still curious…
What is the “light-*attachments-as-group” thing about?
I mean, I read the overal tooltip, but I dont really understand it :o

Yeah sorry for the poor documentation on that, it’s for dynamic lighting only. Basically you set that on the root component that other things are attached to (character body, with a hat and a weapon attached) and the renderer will now cast just one dynamic shadow from all 3 objects in the case of a Stationary light. I need to update the stationary light page with that info.

A solution to this issue would be much appreciated as in it’s current state I feel it eliminates a lot of basic modular approaches to level design, especially in clean environments where you can’t cover things up with noise or detail. Creating my clean floor plates with occasional detail in a scifi environment is no fun with this issue, even higher quality values for Indirect lighting + smoothing doesn’t eradicate the issue fully and having seams only in corners is just not all that practical in designing modular pieces.

Any chance of something improving in this regard in one of the upcoming releases? alternatively a proper dynamic only solution would be great but as ue4 is currently lacking a finalized GI solution usable for interiors I find it’s currently not a good idea to disable lightmass altogether. Makes it a bit of a gamble commiting to a modular system in the hope of this being fixed down the road. Looking forward to what you guys can come up with in that regard!

The vast majority of cases where this is an issue are where there is poor use of modular design in the first place–building something simple out of many objects is inefficient. You increase draw calls and save hardly any memory.

Hmm… Except for this edge case where you have a large object and still want some texture details, like a wall, 300 units high but 25000 units long.
Unless you split the UVs into multiple material elements (and incurring the drawcall penalty as well).
Making the UVs overlap is also an option but might be difficult to tweak right…

it’s not really about saving memory in our case. for small indies I`d say it’s more often about saving the most valuable resource: time. having a modular set means it’s easier to rearrange and create more content quickly. relying on a grid system helps placing objects faster and having a reliable way of making sure to avoid map errors like gaps and z fighting issues. as mentioned above texture space is another factor in this equation. draw calls when handled correctly (mostly by keeping the per object drawcall count low) are not that big a deal. If you have an interior set like alien isolation has for example you have so much occluding geometry and limitede visablity that you can easily get away with 2000 single rendered objects with 5-10 drawcalls each).

a very simple example would be a semi-clean floor in a 12x12 meters room with 9 floor tiles, each 4x4 meters. all of these floor tiles have some different details within (without the details reaching to the borders of the tile so that the illusion of a seamless flat floor is created inbetween the plates - instead of accentuating the edges resulting in a checker board look). you could instead just create a 12x12 tile with multiple textures and export it as that to get rid of the lighting issues but that means that any variation would have to be saved uniquely as well instead of just rearranging the floor tiles. if you multiply that problem over an entire game it becomes an issue for a small team

I said most cases–people have been told to use modular workflow, but they try to make their floors and walls that way and that’s not a good way of doing it. In any case, it’s not difficult to scale your UV’s correctly if needed.

I totally agree. currently you have to have a very particular style in your geometry and or texturing to make modular design of walls and flooring work. But thats exactly why it would be great if lightmass would be improved upon in that regard. personally Id even prefer a dynamic lighting solution as Im not fond of having to manually tweak lightmaps (time costs again). especially with hard surface objects containing small details being super needy of clean lightmaps -the ability to skip lightmaps altogether would be awesome. but either way I`d be happy about any kind of improvement

Maybe a solution would be if you could group meshes that need to be rendered on the same thread, I doubt there would be any issue with that.

yeah that would work from a user perspective (no idea if that would be feasible to implement) and wouldn’t cause too much additional hazzle. I`d take that as a solution :slight_smile: (and would secretly continue hoping for a basic dynamic gi solution suitable for interiors as that would save even more time skipping manual lightmap uv creation as well as lighting calculation while enabling possibilities to dynamically switch lights and not get poor results… but enough derailing of this thread… ;))

A full dynamic GI solution will come eventually, sure they can probably improve the solutions a little that are out there right now, but it’s mostly just waiting for hardware to improve.

Whammy thanks for resurrecting this thread. I have tried adjusting lighting variables, but still having issues with seams between rooms, it’s really noticeable especially when the light bounces off the mustard coloured walls.

I guess until a proper solution is established i’ll be merging rooms and upping the lightmap resolution.

It depends on the situation. There are certain parts that won’t work as well with a modular workflow–like walls/ceiling/floor. Luckily those are very simple so if you can keep a flat surface as a single mesh without splitting it up then you will get good results. Walls can be split at the corners, floors can be split if there is a flooring change. Most of the time what people try to use it for is stuff that doesn’t benefit from modular construction anyway–floors and ceilings are usually very very simple. The only issue there is that you might not get enough detail in your lightmap even at the highest resolution which would require you to split it up.

We’ve found 2 solutions that gives us 100% seamless effect.

  1. Merge planar elements to one mesh. In engine (you can try hlod), or with your 3d software
  2. Static Lighting level scale=0.1 (+indirect lighting quality=2, indirect lighting smoothness=0.6) - when you have enough time to wait.
    Good lightmass uvs are also very important - uv shells should be snapped to grid, enough padding etc.

Thank you, will try this approach.

I’ve done Step 2 in every which way and still got the same results. Though it was less seams and less bleeding, it was still noticeable when looking for it.

I temporarily made my Directional Light and Sky Light Movable instead of Stationary and it seems to help, because of Dynamic Lighting and all, but will try to find a way to combine meshes that don’t really need to be modular. A sidewalk that is two blocks long doesn’t have to be individual pieces and just one single piece. Or even the walls, baseboard, and crown of a bedroom could be a single mesh instead of it being modular.

I come from the Source engine and methods there won’t work with UE and UE methods won’t work with that.

I wonder if Naughty Dog’s method would work in this case. Check out page 8 and 9 here:
http://miciwan.com/SIGGRAPH2013/Lighting%20Technology%20of%20The%20Last%20Of%20Us.pdf
This seems to be about seams within the same staticmesh, but I wonder if the same could be applied to neighboring meshes. I guess it could be hard to determine what light differences are legit and which ones are accidental. A light difference at the edge, where the floor meets the wall would make sense, whereas a light difference between two flat planes like in the example of OP wouldn’t make sense. I guess you could check for neighboring meshes, compare the distance to other verts to see if they are less than 0.5uu a part and if they have the same normal direction, the the lightmap pixels should be averaged.

Interesting solution of averaging the lightmap edges. So how could this actually be done?