Home Unreal Engine

Advice for Creating a Light Painting Effect

interpolator
Offline / Send Message
Axi5 interpolator
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

  • Vailias
    Offline / Send Message
    Vailias polycounter lvl 18
    Light painting like this?
    http://vimeo.com/81813571

    What do you have sofar? Its hard to understand visuals from text descriptions.
  • Axi5
    Offline / Send Message
    Axi5 interpolator
    Vailias wrote: »
    Light painting like this?
    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.
  • Vailias
    Offline / Send Message
    Vailias polycounter lvl 18
    Ah ok, so you were trying to do it as a post process effect.

    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
  • Axi5
    Offline / Send Message
    Axi5 interpolator
    Vailias wrote: »
    Ah ok, so you were trying to do it as a post process effect.

    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?
  • Vailias
    Offline / Send Message
    Vailias polycounter lvl 18
    Not that I could find no. Which is about par for the course in game dev. :)

    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.
  • Axi5
    Offline / Send Message
    Axi5 interpolator
    Vailias wrote: »
    Not that I could find no. Which is about par for the course in game dev. :)

    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 :D
Sign In or Register to comment.