values: asim => 0.0
values: asim => 360.0
insert group into exampleGroup.content;
In Listing 4-5, each of the three shapes, rect , circle, and triangle are created with a DistantLight
applied. Each DistantLight has its elevation set to 45.0 and its azimuth bound to the variable azim . All
three shapes are added to a group that has a DropShadow applied. The DropShadow has its offsetX and
offsetY properties bound to a simple trigonometric function that converts the angle of the azim to an x
and y offset.
The animation anim changes the value of azim from 0.0 to 360.0 and back again; this causes each
DistantLight to appear to rotate around each object, while the DropShadow is drawn on the opposite side.
The examples shown here just touch on what is possible with animated lights. For instance, each light
also allows a color to be set or a texture to be used. There is much to explore with lighting, not only with
static lights but animated ones as well. Imagine an application, for example, where pressing a button
lights up other nearby controls, or where default choices are highlighted by a flickering light.
Once again, designers need to keep in mind the graphics capabilities of the platform they're working
on. This in turn will allow their applications to make the most of the platform they run on, whether
JavaFX or another.
It is also important to consider that applying a lighting effect is not a cheap operation. Though the
implementation of JavaFX is opaque, you can assume that each lighting effect requires JavaFX to
rasterize each node the effect is applied to. Platforms where hardware acceleration is present will
mitigate this performance issue, but too many lights on a less capable machine will prevent the
application from working properly.
This chapter explored the basics of lighting in JavaFX and showed how lights can be animated to amplify
the 3D effect they produce when motionless. Distant light is useful when lighting from a general
direction is required, while point and spot lights bring the lights into the scene. Finally, this chapter
looked at combining shadows with lights to complete the 3D illusion.