Reflections can be a tricky 3D graphics device to employ but with Three.js they can be accomplished quite easily using a Cube Camera, a unique camera that allows us to utilize cube mapping. In computer graphics, cube mapping is a method of environment mapping that uses the six faces of a cube as the map shape. The environment is projected onto the sides of a cube and stored as six square textures, or unfolded into six regions of a single texture. 

The Cube Camera for Three.js will provide us these six perspective cameras and will display what each camera sees onto any object in which we place it. As expected, it will fit well on all default three-dimensional shapes provided by the core Three.js library. In this example, I use a few spheres, a rectangle, and a cone. I also add a reflection to the plane I use as the floor so that lights and the cube map (background image) are reflected.

To see the full code click on the "JS" tab in the Threejs reflections example below. There are also some really neat examples on the Three.js example pages. Here is one of my favorites, though they achieve the reflection effect a little differently.

(You can inspect the Three.js code for this example by clicking on the JS tab in the Codepen demo below.)

See the Pen Reflections by Bryan Jones (@bartuc) on CodePen.