thanks for reading! As a beginner I started working with emissive materials and found a strange behavior of them when being applied to different kind of actors.
I have a box with an emissive material on only one side. This box illuminates a sphere and a cylinder. Now when the camera is at the side of the whole scene, the emissive light works nicely. But when moving the camera behind the box, the emissive light seems to be switched off when the actor is a brush, but not if the actor is a mesh. Please have a look at the attached clips:
After having converted the box from brush into a static mesh, this behaviour changes:
Is this a bug, or is there something I don’t know?
This isn’t a bug. BSP brushes don’t generate distance fields, and aren’t visible to hardware raytracing. Effectively they are invisible to Lumen as soon as they go offscreen.
Every time you encounter an issue with Lumen you should always first check the Lumen scene debug views to make sure your meshes are represented in it.
If you are a beginner, as you say, then I recommend you just forget BSP exists. It’s there mainly for backwards compatibility, but the primary tool for quick level blockout these days is unreal’s built in modeling toolset. It will allow you to create much more complex geometry than BSP, much faster, in much more intuitive way, and you can do much more with the result since it’s a true static mesh asset.
BSP has all the drawbacks and pretty much no benefits compared to the modeling tools
Boom! Alright, thank you for helping at such beginners level! I really appreciate that very much.
Actually until now I did not realize there are THREE kind of 3D objects used for building things, so it is “basic shape”, “BSP brush” and “static mesh”, right? I am happy I can kick one of these.
But, however, still I have to competing “systems” then: I can create a sphere via “modeling” and also via “basic shape”. Please tell me, that I should drop “basic shape” too, so I can focus on a single, modern and reliable thing, then?
Also thanks for reminding me to get used to use the inbuilt visualization tools.
Unreal has a bunch of geometry types, but basic shapes isn’t one of them. Unreal doesn’t have a primitive object type, like you would find in a regular 3D modeling package; the “Basic Shapes” are just standard static meshes and you can use them just fine with Lumen.
Landscapes are also a geometry type, they don’t have distance fields but they do work with lumen using a heightfield representation in the Lumen scene.
Some other geometry types:
Spline Meshes
Skeletal Meshes
Geometry Collections
Procedurally generated geometry
Virtual Heightfield Meshes
None of these will have a distance field representation
As far as I know though, most (all?) of these geometry types WILL be visible to hardware raytracing and so if you’re willing to use hardware raytracing with Lumen, you should be able to get good results out of them (at a high cost).
In general, if it is visible in the Lumen scene then it is fine to use. If it is not visible in the Lumen scene then it will only bounce light from screen traces. For some types of geometry (skeletal meshes, mainly) the lack of lumen representation is just unavoidable if you want to use software mode (unless you make a game with no skeletal meshes…)
Basic shapes are just static meshes like any other. If you create a basic shape, you will find out it’s just a static mesh actor like any other. You can see it uses regular static mesh asset:
And if you click the browser button next to it, it will bring you to the Engine folder where the mesh is stored:
The reason you don’t see the basic shape meshes anywhere in your project by default is that the internal essential assets bundled with the engine are stored in the Engine content directory, which is hidden by default as it’s not a part of your project. But basic shapes are just references to a mesh asset, like any other.
Just be careful not to modify anything in the Engine folder, as it may have consequences in your other projects. If you ever modified any Engine asset by accident, you can run verify tool in the Epic launcher for the affected UE version:
Which should fix that for you.
If you want to modify something from the internal engine assets, just make a copy of it into your project’s content folder.
The only way to do this is by disabling screen traces and unsetting the “affects distance field lighting” checkbox in the actors properties. If you don’t disable screen traces then it will still be picked up by Lumen when the object is in view.
Could please tell me what “disable screen traces” means? I can’t find such option neither for the object nor the material?
I am still not happy with the “emissive material” on a mesh as a visual representation of my light source.
Even when setting the shader mode to “unlit” and unchecking “affect distance field lighting”, it stills emits a certain amount of light.
Could you imagine to have a look what I am doing wrong? I attached a simple cube and the material I tried to use. When putting this in a empty project, the cube still emits light?
I have to say, as a beginner, I am really astonished how hard it is to make visible light sources.
Disabling screen traces is done by command line or by adding the line to your projects scalability ini file.
r.Lumen.ScreenProbeGather.ScreenTraces 0
In order to get the setting to persist when you play in standalone you will have to run the command from blueprint or add it to your projects scalability ini file.
Jesus! There are so many places to change things, I am already overwhelmed by all the checkboxes and changeable values. I really forgot to look at the command line options. Ok, so then I will try again!
Why is it, that options are only available at command line level? Because UE once was built with rock solid command line tools? I am starting with UE5, as a beginner, just wondering…
Because there’s hundreds of them, and you are not supposed to touch them. Disabling screen traces will significantly reduce lumen’s quality. These are internal parameters, mostly for debugging. They are not supposed to be touched by the users.
All in all I was searching for a way to get emissive material that does not affect the world. Now it seems there is a very easy way for that: Just set the emissive materials blend mode to “opaque”, thats it.