Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 8 Next »



Pic 1: Time-lapse of a full cycle achieved in CRYENGINE

In this tutorial we will be going over the process of creating a day-night cycle using the Environment Editor inside CRYENGINE, which will serve as a good basis for most Earth like lighting scenarios. This will cover setting up a few different times of day as well as the transitions between them, while also staying within the boundaries of physically accurate lighting.

Before we get into the details please keep in mind that all of the parameters in the Environment Editor contribute to the final look of your level and they are all affecting each other. The influence of some of them only becomes apparent when certain conditions are met so creating a polished lighting scenario requires quite a lot of back and forward between different elements. This tutorial is not a step by step workflow, it’s aimed at giving you a better understanding of the system and the things you can achieve by controlling the parameters made available by it.

Helpful Information

It is important to note that CRYENGINE uses two distinct fog models to create atmospheric effects. For high quality results we are using a voxel-based volumetric fog model designed to accurately interact with all entities in your level. Keep in mind that this has a noticeable impact on performance, so as an alternative for the lower end we provide the option to use regular fog. In a nutshell, Volumetric Fog allows lights, cubemaps, and shadow to interact with the global/local atmosphere, whereas regular fog does not. We will be covering both of these options in this tutorial.

As mentioned in the beginning it is important to stay within physically accurate illuminance values when setting up any lighting scenario in order to get the most out of our PBS pipeline, so depending on the result you are trying to achieve, some research might be in order as to what your illuminance values should be. At the same time getting the desired look for your environment is always the highest priority so it takes some fine tuning to achieve something that looks good but still follows real world values.

To open the Environment Editor go to Tools on the main toolbar and select the Environment Editor from the list. The layout of this tool incorporates a number of different elements. On the left side we have the Presets list, under it there are the Sun orientation/angle settings and next to these there’s the list of customizable parameters. On the right side you can find the curve editing tools, the timeline at the top, a visual representation of the selected property under it and at the bottom we have the Start/Current/End time values as well as controls for playing the cycle.

Pic 2: Environment Editor Layout

To change the time of day simply drag the triangle in the timeline to either side. You cannot go beyond the 0 and 1 values since they represent a full 24 hour cycle.

The Environment Editor contains a wide number of advanced parameters that would allow you to fully customize the lighting in your level as well as the appearance of the sky. These parameters are split into logical groups that each control different aspects of your environment.

The curve editor is used to control the transition between different values of the same parameter throughout the day. It will automatically create a key for you at the current time once you change the value.

We won’t be going over all of these parameters as some of them don’t require any changes for the generic earth like scenario we’re aiming for. We will however cover the sections that we are changing to get a better idea of what they control. We will also go through the process of creating smooth transitions as the time of day changes by using the curve editor.


Initial Setup

In this example our goal is to achieve a generic day-night cycle at 45° latitude.

We will begin by opening up our example level day-night_cycle.cry. As you probably noticed the scene is already set up with the cycle, to start from scratch we will have to create a new environment preset. To do that right click on the left side under Presets/File view - > Add -> New and save it as day-night_cycle.xml. To open up an existing preset you will have to select Add -> Existing. Presets are saved in the \gamesdk\libs\environmentpresets folder.

Next we need to set up the Sun direction and the latitude. These values are located under the preset list on the left side of the editor. Set the Sun Direction to 180° so it rises in front of the camera. For the latitude we have to change the NortPole..Equator..Southpole value to 45. These two values are not stored in the environment preset file so you can use the same preset with different settings for orientation and latitude.

The first thing that we need to do before we start setting up our cycle is change the Film curve whitepoint to 4 ( default is 1 ). This can be found under the HDR group in the Environment Editor. We will also be using the new and improved Eye Adaptation mode, to do this open up the console and simply type in r_HDREyeAdaptationMode 1. These 2 values dramatically change the sensitivity to light so they need to be set up properly before changing any of the other parameters.

Pic 3: Location of the Film Curve Whitepoint setting.

Now we are ready to start creating our day-night cycle.


Setting up the Sun

The Sun category contains the settings that affect the color and the intensity of the direct sun light.

Sun Color :

We start off by setting the current time to 12:00 and giving it a slightly yellow tint ( 240, 225, 210 ). This will create a key at that time and update the preview to represent the change we just made. Select the newly created key and set the In/Out tangent to linear.

 This value needs to remain constant throughout the day so we will create another key at 09:00 and assign it the same color. For this one set the In tangent to Zero and the Out to linear. Mirror the result at 15:00.

As it nears Dusk/Dawn the sun color transitions into a saturated orange, to set this up change the current time to 06:00 and assign it the appropriate color ( 170, 84, 0 ) and set both In/out tangents to Zero. Mirror this newly created key at the 18:00 time.

At this point it is worth noting that the Sun parameters are also used to control the Color/Intensity of the light coming from the moon, although the moon doesn’t move throughout the night.

To set this up we create a key at 05:56 and give it a blue tint ( 140, 160, 176 ). To keep this constant over the whole night we need additional keys with the same value at 00:00, 18:04 and 23:59 respectively. Change the In/Out tangents for all of these keys to linear.

If you set this up correctly your preview and curves should look like this:

Pic 4: Screenshot of the Sun Color gradient preview and curves.

Sun intensity ( lux ) :

This property controls the illuminance of the sun and as mentioned previously it is important to keep this close to the physically based value. A quick search on the internet comes up with an average illuminance value of 100000 lux for bright sunlight.

Pic 5: Screenshot from the Wikipedia page containing the Illuminance values chart.

Change the current time to 12:00 and create a key with the value set to 120000. The reason why this is higher than real world values is some of the light gets absorbed by the materials giving them a final lux value that’s considerably smaller than the source. We will get back to this once we set up our Sky Light later on.

Now that we have the basis for our Sun Intensity laid out we can go ahead and set up the rest of the keys for this value.

The intensity of the sun diminishes as it gets closer to the horizon so to achieve that we need to set up a few more keys. Change the time to 08:00 and set the intensity down to 110000, do the same on the opposite side at 16:00.

As we get closer to sunset/sunrise the intensity drops very low. We will now create a key at 06:00 with the value set to 5 and mirror the value at 18:00.

Real world measurements read <1 lux values for moonlight, this number is way too small for the engine to still accurately render shadows coming from the moon, so we will stick with the same constant value of 5 for night time. For that we need to set up keys at 00:00 and 23:59.

Making sure the transitions between your keys are smooth your gradient and curves should look like this:

Pic 6: Screenshot of the Sun Intensity (lux) gradient preview and curves.

Sun Specular multiplier :

As you might have guessed this controls the specular contribution of the sunlight. For any realistic lighting scenario this value should always be kept at 1.






  • No labels