Here will be a short tutorial as well as information regarding the lighting team's workflow for creating high quality cinematic lighting.
Lighting the cinematics uses a very different process to lighting a level for single/multiplayer.
There are even different considerations that need to be taken when lighting for a real-time cinematic, and a pre-rendered one.
Following is the general workflow for creating cinematic lighting, and a few key tricks that the lighting department uses to get the best results.
Also included are a few case studies from cinematics in Ryse.
It is important to follow correct layer naming/structure requirements. It keeps things organized, and easier to work with for you or other people who may need to work on your cinematic.
Example Cinematic Layer Setup:
For Ryse, we unfortunately needed to use a rather convoluted sequence nesting system in Trackview so that multiple people could easily work on the same cinematic simultaneously.
The very base sequences, would be called something like "CIN_Cin2_Shot1" and would be created by the Cinematic Designer and contains basics like camera animations, character animations, and any props that need to appear/animate in a given shot.
Above these "shot" sequences, would be a master camera sequence called "CIN_Cin2_MASTER" which only contains a reference to all the shots, putting them in correct sequence.
Above that is typically the Effects sequence, which contains a reference to the master sequence, and adds particle effect triggers.
Finally, the top sequence in the nest, called "CIN_Cin2_Lighting", contains a reference to the Effects sequence (if it exists, alternatively the MASTER sequence). On top of that it adds all lighting related information which will be explained below.
This is generally a matter of personal preference, but here is how I like to set up each of my sequences so that everything is manageable and allows for easy iteration. Refer to the image above for how it all looks together.
This is an "Event" track which acts as an empty node where I can add keyframes with comments that I can snap to later. I add a keyframe wherever there is a jump cut in the camera. The comment that I add usually just denotes what the shot number is , eg "Part1, Shot03".
The name _NOTES is used so that it stays always at the top of the stack.
It's also important to get the keyframes perfectly on the camera cut. Most of the time, the camera cuts fall on the frame, so if you turn on frame snapping, you can get it exact. When the cut falls between frames, I turn off snapping, and zoom in like crazy until I can place the keyframe between ticks in the scrubber.
I use this folder to contain a lot of general lighting parameters, such as:
I use this folder to contain and control any lights that already exist in the environment. For example if a gameplay light or cubemap is interfering with a specific shot, I can disable it, or move it out of the way temporarily.
I also use this sometimes to contain any environment-specific lights that are not shot specific but can only be turned on for the cinematic.
These folders are used to contain/control shot-specific lights. I enable the lights for the shot, and disable them when the camera cuts.
If you have a _NOTES sequence as outlined above, you can use the magnet snapping tool to ensure the keyframes match up to the camera cuts.
It's important to name the folders something completely different to any entities you add, and also any tracks you add. I personally encountered several bugs when trying to use a folder that's named the same as a track node that you can add.
For example, if you create a folder called "Environment", you will be unable to add an "Environment" track to the sequence.
The basic workflow for how I do a cinematic in trackview is as follows:
Probably the most important thing for cinematic lights (apart from putting it in the right layer) is the naming convention. Again I refer to the CRYENGINE 3 Manual documentation on how to set this up.
For Cinematics, I name my lights by shot. As an example: "l_CIN_Cin2_shot07_mrus_rim_light_1"
The main difference between cinematic lights and gameplay lights are that for pre-rendered cinematics, since performance isn't an issue, you can use as many shadow-casting lights as you want. In fact, unless there is a specific reason, it's best to always enable shadow casting.
SpecularMultiplier should (as in gameplay lights) always be left at 1. However there are edge cases in cinematics and it can be tweaked in the name of getting a better looking shot, but it should be regarded as a last resort, as we should always try to keep consistency in lighting/shading whenever possible.
Projector Textures should be used as much as possible for spotlights. Shadowmap quality from point lights is greatly improved when the ProjectorFOV is as low as possible while still hitting the area you want. Likewise, if you want to soften your shadows a bit, you can increase the ProjectorFOV. Keep in mind though that this will also decrease the accuracy of the shadowmap.
I find that for cinematics, you don't need to use Ambient lights. They tend to weaken contrast and illuminate areas they shouldn't. Instead, I use my cubemap for the shot to be as dark as the deepest shadows that I want, and then add lights to bring up the overall illumination.
Whenever you add a light, and you are editing it (properties, or position), it's good to keep the "active" flag enabled. However once you are done editing the light for the time being, it's good practice to disable the active flag.
This is because the light should be turned on/off in trackview. If lights are off by default, then they won't accidentally render in game, or accidentally interfere with a shot when you thought it was turned off.
Here are two shots from Ryse cinematics with a breakdown of the lighting elements that make up the shots.