Light has a large part to play in creating a scene that is convincingly 3D. Reflective highlights add dynamism to surfaces and define contours of meshes. Shadows provide depth cues and models should ideally pick up self-cast shadows from other parts of the mesh as well as having shadows cast below or behind them.
Unfortunately, applying all the following lighting effects may slow down your application's performance, so take what is most useful from the following to determine how to best light a scene.
Point and spot lights emit light from a specific 3D point, while directional lights do not. This makes spot and point lights feel more spatial as their intensities fall off over distance, and the shadows they create expand over distance.
Position these lights so they make useful shadows. Also, experiment with the
rangevariable on the light component to accentuate falloff and to produce a good gradient of lighting / shading.
Well-placed shadows describe the spatial relationships between objects, which describes their relative depths. While scenes lit from the direction of the viewer will be bright, they will also appear flatter. Use multiple lights from interesting dynamic angles whenever possible.
While many scenes cannot reasonably justify moving lights without distracting from the experience, a moving light is a powerful way to help the viewer's eye explore the scene. One great way to move lights is through user input, as the Froggo demo shows when the user waves their hand in front of the Looking Glass (if a Leap Motion is connected).
By default, lights used to shade a scene will also be lights used to drop shadows on a backdrop. This presents a number of challenges: how do you drop a shadow onto a backdrop without flattening the scene? How do you get dynamic side lights that don't wash out shadows?
Separating the lights into two separate systems allows the scene to produce both simultaneously. To accomplish this in Unity:
- 1.Use dynamic side lighting that has shadows disabled
- 2.Copy a shadow-casting mesh of the subject and disabling the mesh renderer (making it invisible)
- 3.Add a light from the front that casts a shadow using the invisible mesh onto the backdrop, making sure that this light is set to ignore the visible mesh
Lightmapping and offline light / shadow preparation should be used when possible for static meshes and lighting conditions. This will reduce render costs while improving overall visual quality.
If application performance allows, lights should use soft shadows.
Unity Quality Settings
Unity’s lighting and shadow system behaves best within a specific range. This default range looks best with a HoloPlay Capture object set to about 3 units in size. If models are imported much smaller or much larger, it may make sense to scale them to meet the HoloPlay Capture for lighting and shadow fidelity.
If you are stuck at a much larger or smaller scale, you can always go into “Quality Settings” and adjust the “Shadow Distance” to make it better scale to your scene.
Viewers of 3D Looking Glass content are always subconsciously trying to determine where the content physically lives. When possible, light the content as if it were in the physical space of the 3D Looking Glass to create a strong perceptual link between the digital and the physical worlds.
All Looking Glasses edge lighting that illuminate the front and back of the Looking Glass. Scenes should be built with these in mind.
If the developer is aware of the real-world lighting conditions under which the scene will be viewed (at a conference or event you are running, for example), matching in-Looking-Glass lighting with real-world lighting can enhance the illusion.
A more ambitious approach is to use a fisheye webcam to pick up light and use that as a lighting feature. Draw the webcam feed onto the skybox, then add a reflection probe to your model so that it picks up ambient light -- audience members will see silhouettes of themselves reflected onto your scene.