[Mini Tutorial] Camera Crossfade


Here’s a quick tutorial on how to achieve camera crossfade effect for your cinematics.

End result:

First, create a parameter collection, a new material and a render target 2D texture.


  • First, create a parameter collection, a new material and a render target 2D texture.

  • Create a scalar parameter in the parameter collection, and set the render target’s resolution to the resolution you want to render the sequence at.

  • Set your material’s domain to Post Process and Blend Location to Before Tonemapping. Create the material network you see in the screenshot with the collection parameter.

  • Inside your level add the material to the Blendable slot of your camera. And then create a SceneCapture2D actor. This will be used as your second camera, so plug the render target texture you created into this actor.

  • Prepare your Matinee sequence. Create an Event track in one of the groups and set your event key at the keyframe you want the transition to start.

*If you want to use the scenecapture2d camera for more complex animations(not just sliding horizontally, vertically, or just still) then you may want to create a normal camera at the same location and position so that you can use it’s preview window.

  • Finally, call the Matinee into the level BP, set your Timeline as you like and done.

Now i can hear your sighing in disappointment since this isn’t really practical for in-game cinematics because of multiple screen resolutions of the end users. If you have any solutions for that feel free to share with us. Otherwise i can bore you with my utterly stupid workaround ideas. :stuck_out_tongue:

Sample Project: https://drive.google.com/file/d/0B0LlbsIm3HuuU0Q4S0VjQml6OTQ/view?usp=sharing

Very nice!

Nice tutorial, but you know how to do this work on VR?

Cause the VR only render the left eye, and the right eye is like a trail of the last pixel from the left eye, like when you try to repeat a texture and the mode is clamped.
Any idea to do this?

I have no idea, sorry. :\ I have no experience with VR.

Okay, I’ve solved this with another way.

Thanks for the reply

Hello. I’m trying to get this to work with the sequencer but I have a few issues. First of all. In the material, the rendertarget (which i assume is the green texture in the op) the white (full) output cant be connected since the engine complains about converting vector 3 to vector 2, so I chose a single channel instead. Unsure of the result I moved on, but I can’t figure out what the “blendable” slot in the camera is. I’ve been looking through most sub categories now, so I’m hoping I might be able to get some help with one or both issues. Thanks

Not to bring up an old thread but I’m shocked there isn’t support for this in UE4. Surely it’s not too difficult to implement something like this in the Sequencer (although I’m guessing it’s not high on Epic’s priority list). Virtually every film software program from the 90s could do a cross-fade effect. I get UE4 is a game engine, not a film editing software, but the Sequencer is meant to be like a cinematic editor (duh). It just doesn’t make sense to me that I can choose from like 12 different professional virtualized cameras all of which have been customized to render things differently, but yet I can’t cross-fade a clip.

My dilemma: I have a main menu sequence that I wanna loop for like 5 minutes and I want to cross-fade between shots (think like any COD menu screen ever). Right now the only way I see to do this is render and export out every single individual clip I need, import them in a movie editor (heck, iMovie would do), add the cross-fades, export it back out, then re-import it to my game project. That’s a lot of work just to add some cross-fades. And furthermore, I now loose any flexibility or dynamics the Sequencer was suppose to provide that Epic touts (shuffling clips around, rendering real-time, etc). Not to mention now my video is locked into a resolution, which means it’s either A) blurry/cropped on some displays or B) I have to do the above stated process *again *for each different screen resolution I want to support, which is a nightmare.

Anyone see a solution here? I really am out of ideas…

Hi @Staude . Could you please share a screenshot of where you are having the vector error? I’ve just converted the project to 4.18 and everything works as they should. Also, blendable is now under Details panel > Post Process Materials > Array(Add element) > Asset Reference.

@Blakeanator may not be the simplest solution but as a workaround you could build a Lerp hierarchy in a material to crossfade any number of video.

I managed to use that method, but as I am crossfading between different pairs of cameras over the level. I had to do the following:

  1. Make a camera blueprint and add the Crossfade Material as Post Process Material on that camera (you can also use a Post Process Volume with Infinite Extent but that will affect all the cameras, which you may not want; it doesn’t seem to affect the Scene Capture itself though)
  2. Create a unique reusable SceneCapture2D in the level and register its reference in the Level Blueprint, in some accessible place (e.g. the GameMode)
  3. In the blueprint I use to navigate from camera to camera, when starting crossfade, get the unique SceneCapture2D and set its transform (location and rotation) to the target camera.
  4. Use the timeline from the tutorial to crossfade between the current camera and the target camera with the Transition parameter.
  5. At the end of the crossfade, immediately switch to target camera (Set View Target with Blend Time = 0), then reset the Transition parameter to 0. This is important so the camera is now really positioned at the target position, not just visually showing what is there, so the player can interact with the environment with a mouse trace (Get Hit Result Under Cursor).

There are still minor differences between the end of the crossfade and the actual target camera view, see attached screenshots (don’t mind the clouds, they were just moving over time).
Lights and textures appear a bit differently, but overall the effect is good. Since our intention was to mimic Myst-like navigation between fixed PoV and that game used pre-rendered 3D, there was also a gap between the navigation short cinematics and the view on arrival anyway.

I will probably try to add a crossfade between the end of the crossfade and the actual target view to smooth things even more.

@huulong looks like mipmapping isnt working the same for the camera and the scene capture. I dont know the solution but i’ll let you know if i find out anything.