Hey guys,
I've been rattling my head around this all day. I'm in Unreal 4 and I've been trying to use post-process effects and light functions to create a light painting effect on highlights. I'm a student and realise I'm pretty inept at this but I'm really interested and trying to learn.
So far I've done the easy bit, being able to clamp colour ranges I want the effect on, but creating light trails seems far out of my know how. I take it a lerp is needed between two screen space position values of some sort?
I don't want to use particles because I want the effect to be noticeable when the objects are static but the camera pans.
Is this idea even viable for someone with no shader language knowledge? I took a look at some existing blur examples and it's currently a bit over my head with neighbour pixels etc.
That said I really want to learn to create complicated shaders like this so if anyone has any resources to get me started in the right direction that would be awesome too!
Replies
http://vimeo.com/81813571
What do you have sofar? Its hard to understand visuals from text descriptions.
Sorry, I should have included some pictures, but yes that video shows the effect I'm after.
I know it's difficult because photography and real time rendering are two completely different medias.
edit: So far, "programmer art", except I'm not a programmer. So far I've created a post process filter that masks off the highlights in the scene and haven't had much luck with the actual light painting part.
I'm having a tough time trying to get my head around the logic on how to implement it. The material editor doesn't seem to quite have the power I'm after, blueprint does but I'm trying to work out a way of meshing the two.
Just throwing my logic out here, is it possible for me to store my mask for a period of time with lerping between it and the current frame? like this:
http://gyazo.com/dad9f0c7f6aab8bbbd10370e5a7bb445
Or is it possible for me to somehow exploit the motion blur already in UE4 in my post process material?
edit edit: When I was working in the post process material I was hoping there might be a panner trick method to blur with previous frames with screen space although the logic here was flawed.
I'm probably going to get some sleep now, I've been through so much reference and I'm still on square one. At least I've tested the waters and will be back to deal with it tomorrow.
If you're actually wanting to do a light painting effect, specifically light trails, then I'd say fake it with particles. In particular the ribbon effect https://wiki.unrealengine.com/Ribbon_Particle_(Tutorial)
https://docs.unrealengine.com/latest/INT/Engine/Rendering/ParticleSystems/Reference/TypeData/Ribbon/index.html
You can have the emitter(s) trace the path(s) you need before the camera gets in view, and if you set the particle lifetime significantly long you'll get the effect you want.
However, if you need other objects in the scene to be blurred as if they are in motion and you want a sort of bullet time effect all over, that might be a little harder.
Though you may be able to do that via normal motion blur, and allowing the blur to be paused, https://docs.unrealengine.com/latest/INT/Engine/Performance/SystemSettings/index.html
Combined with the ribbon particle approach
That's excellent information thanks. Though I noted I'd not like to use particles I think there isn't much way to avoid it and at least now I know about the ribbon! however that Motion Blur Pause variable seems very interesting, is there any more documentation on it? It seems awfully vague and only accessible through the ini?
Also, RE particles: "I don't want to use particles because I want the effect to be noticeable when the objects are static but the camera pans"
This just means that you need the particles to be persistent and not move or change while the camera is in motion, which should be doable with some combination of particle lifetime and emitter settings.
I thought it would require some weird code/blueprint logic that mirrors camera direction vector or something. Honestly though it's overcomplicated and over my head so I think I just need to rethink the high-level implementation of this kind of aesthetic.
Thanks for all the help man