How to model corner-cube retroreflectors

Corner Cube retroreflectors are commonly used in a wide range of optical systems. This article describes various different ways in which these components can be modeled in OpticStudio. The treatment can be as detailed as the user needs, with effects due to face misalignment, roofline straddling, thin-film coatings, diffraction etc. included as required.

Authored By Mark Nicholson and Kevin Scales


Article Downloads


Corner-cube retroreflectors use three mutually orthogonal reflectors to retro-reflect any ray that lands on it. A flat mirror will only achieve retro-reflection in the specific case where the ray lands at normal incidence. By contrast, the corner cube retroreflector will retro-reflect over a wide range of incident angles. This makes it very useful in applications where precise alignment is difficult to achieve, where vibration is present, or where the retroreflector must be moved, for example.

In this article, we will examine multiple corner-cube retroreflector systems and their setups. Each system is provided as an article attachment.

The perfect retro-reflector

The simplest way to model a retro-reflector is with the Sequential 'Retro-Reflect' surface. This idealized surface is a planar surface which reflects rays back exactly along the incident path, acting as a perfect phase-conjugate mirror. The file 'perfect retro-reflector.zmx' shows such a system:


The retro-reflect surface can be tilted as much as is wished, and the rays will always reflect exactly along the incident direction. There is zero OPD or lateral offset introduced by this mirror. Perfect.

But in reality, such perfection does not exist. Corner cube retroreflectors are made to finite precision, and there can be complicating effects due to the faces not being exactly orthogonal, surface form errors, material inhomogeneity and more. In this article, we will build a complete model of a corner cube retroreflector and examine the effects of these imperfections.

A polygon object model of the corner-cube

The corner-cube retroreflector uses three mutually orthogonal reflectors to retroreflect any ray that lands on it. It is therefore ideal to model this with a polygon object (referred to as a POB object in this article) and hybrid-mode Non-Sequential ray-tracing, as follows:

! CUBE CORNER Retroreflector 
C 0 "Front Face" 
C 1 "Side 1" 
C 2 "Side 2" 
C 3 "Side 3" 

! First define the location of the vertices 
! Front face vertices 
! Local coordinate reference is in the center of the front face 

V 1 12.247448713915890490986420373529 -7.0710678118654752440084436210485 0 
V 2 -12.247448713915890490986420373529 -7.0710678118654752440084436210485 0 
V 3 0 14.142135623730950488016887242097 0 

! Back vertex 

V 4 0 0 10 

! Now define the triangular facets 

! All faces are isreflective = 0 so reflectivity is set 
! by the index of the material and any coatings applied 

! Front 
T 1 2 3 0 0 

T 4 1 2 0 1 
T 4 1 3 0 2 
T 4 2 3 0 3 

See the User's Guide for full details of the POB file syntax. This produces an object like so:


Vertices 1,2,3 and 4 are defined at the stated (x,y,z) coordinates, and they are then formed into a series of four triangles to make up the faces of the object. For example, T 1 2 3 forms the front face from vertices 1, 2, and 3. The syntax is

T vertex1 vertex2 vertex3 isreflective face 

The "isreflective" flag is -1 if the surface absorbs, 1 if the surface reflects, or 0 if the surface refracts. Note using this flag allows some triangles to be reflective, and others to be refractive or absorptive, within the same Polygon Object if desired. In this case, we want all faces to be refractive, and we will add coatings after if needed to provide the desired reflectivity. The value for "face" defines which face the triangle belongs to. In this case, each triangle is a unique face. Coatings and scattering functions are added to the faces, like so:


Note that the 'friendly' names given to the faces in the drop-down list are set by the C 0, C 1 etc. lines in the POB file above. We will leave all faces uncoated for now. When we fire a ray into the corner cube, the ray undergoes three total internal reflections and is retroreflected back along the direction it came in, with a lateral offset:


This file is 'Perfect corner-cube retro-reflector.zmx' in the zip file at the end of this article. Note the .pob objects included in the zip file should be placed in the {Zemax}\Objects folder before opening the file.

The OPD plot shows that no wavefront error is introduced by this component:


and the ray-fan plot shows no angular error between any ray and the chief ray (note that this file is in afocal mode, so the ray-fan plot is in units of milli-radians).


Note also that if the retroreflector is tilted, the rays continue to retroreflect and the OPD remains flat. The return beam is offset with respect to the input beam but is perfectly collinear with it.

Polarization effects

So far, we are looking at a perfect corner-cube retroreflector, and we will go on to look at the effects of imperfect components soon. Before that, let us consider the effects of polarization and thin-film coatings on the perfect corner cube retroreflector.

Rays totally internally reflect at the N-BK7/air interface, and there is a phase change upon total internal reflection (Analyze...Polarization and Surface Physics...Coatings):



In the corner cube, each ray is total internally reflected three times, and the resulting accumulated phase change is, therefore, a function of incident polarization and position on the corner cube aperture (Analyze...Polarization and Surface Physics...Polarization...Polarization Pupil Map):


The incident linear polarization is transformed into a six-segment pattern. This means that even in the case of an "optically perfect" corner cube, there are artifacts imposed on the imaging quality of the beam by this phase rotation.

For most (but not all) Sequential analysis features, the polarization ray trace is only used to determine the transmitted intensity of the ray while accounting for Fresnel, thin film, and bulk absorption effects. The rays are attenuated in intensity and a weighted computation is performed. Polarization phase aberrations and the vectorial nature of polarization are ignored. 

However, some features consider not only transmission, but also the separate orthogonal vector components of the polarized light, and polarization phase aberrations. The Huygens PSF and PSF Cross Section, Huygens MTF, and Encircled Energy using the Huygens PSF all consider the full polarization vector and polarization phase aberrations. These computations work by computing data for the Ex, Ey, and Ez components of the polarized electric field separately, then incoherently summing the results. The polarization phase aberrations induced in each orthogonal component of the electric field are, therefore, considered as any other phase aberration.

For example, if the Huygens PSF calculation is set up as follows, and does NOT consider the effects of polarization (Analyze...Image Quality...PSF...Huygens PSF):


then the point spread function looks exactly as we would expect: an Airy disk in angle space, with a Strehl ratio of 1:


However, checking "Use Polarization" shows a very interesting result:


There are six subsidiary maxima, corresponding to the six regions of polarization phase rotation. The Strehl ratio falls to 0.334. Furthermore, the subsidiary maxima are not exactly six-fold symmetric. This is because the input linear polarization vector bisects the six-fold symmetry of the corner-cube.

Similarly, if we use Physical Optics Propagation (POP) to propagate a TEM0,0 beam through the corner cube and ignore polarization effects, we get exactly what we expect out: a TEM0,0 beam with a constant phase (optical path length) offset:



However, when polarization effects are accounted for:


we see:



All these effects are because of the phase rotation upon total internal reflection. If a coating that has zero phase upon reflection is placed on the end faces, all these effects disappear and the Strehl ratio returns to 1. Equally, if a coating that enhances the phase shift is added, the effects increase. If a quarter-wave MgF2 coating is placed on the retro-reflecting surfaces (and it may be bizarre to put an anti-reflecting coating on a totally-internally reflecting surface, but this is just for demonstration) then the phase on reflection from a single surface becomes:


and the Huygens PSF becomes:


Note that the Strehl ratio has now dropped to 0.280. Note also, however, that the angular range we are talking about is exceedingly small, and the 'beam width' in angle space is only approximately twice the diffraction limit. These polarization effects are real but very sensitive. As we shall see when we start to deform the retro-reflector, manufacturing errors can quickly swamp these sensitive interference effects.

An imperfect corner-cube retroreflector

Now open the file 'Imperfect Corner Cube Retro-Reflector.zmx' which is in the zip file that can be downloaded from the last page of this article. It is identical to the previous file, except a different POB object is used. This polygon object has only one difference to the perfect model: vertex 4 (the apex of the retroreflector) is shifted by just one micron:

! Back vertex 
V 4 0 0 10.001 

Since the wavelength is 0.55 microns, this is almost a 2-wavelength shift. The resulting change in optical performance is dramatic, and instead of the perfectly flat OPD, which we saw before, we now see this strange, non-Seidel aberration:


A typical commercial retroreflector, e.g. from CVI-Melles Griot, is specified to produce less than lambda/4 aberration, which gives you some indication of the tolerances that these devices must be made to.

The spot diagram (remember we are in afocal mode, so this is showing angular error) shows that the beam is being split into six component beams, as does the Huygens PSF. Ignoring the polarization effects from the total internal reflection, the Huygens PSF shows:


Note that the image delta setting has been increased to 0.005 mrad/pixel in order to capture the whole beam. When polarization effects are included, the PSF alters somewhat:


Finally, note that this is just one error: a z-shift of the apex vertex, which leads to a change in apex angle. The apex vertex can be shifted in x and y as well as z, and the (x,y,z) coordinates of the other vertices can be similarly perturbed.

A more detailed model

The POB object approach is ideal for modeling perfect corner cube retroreflectors, and imperfections due to face alignments. However, it is not ideal when things like surface form, chamfers on edges etc. are also desired in the model. For this, OpticStudio's powerful Boolean Object capability may be used.

In the file 'Perfect Corner-Cube retro-reflector Boolean object.zmx', we take the Boolean intersection of the corner cube POB object and a cylindrical volume, like so:



The resulting file traces exactly like the original object (except for a longer path length in glass due to the cylindrical section, but this has no effect on the wavefront). However, it is more extensible in terms of adding defects like chamfers. If the polygon object is replaced with three lens objects or polynomial asphere lens objects, then surface form can be easily added to the model. Gradient index materials can be used to model refractive index inhomogeneity.

CAD objects can also be imported and used in place of the Boolean or POB object if preferred.

A model for rectangular arrays

A similar process can be used to create a retroreflector with a square profile rather than circular. We can use a Rectangular Volume object rather than a Cylinder Volume to intersect our base retroflector. In this section we shall do so, as well as demonstrate Boolean operations to create a retroreflective mirror with free space surrounding the mirror faces rather than solid glass. Finally, we will demonstrate that the square profile reflectors can be arrayed together to create a gap-free grid array of retroreflectors suitable for applications, such as use with a Shack-Hartman sensor or other lenslet array system.

The modified system uses the same Polygon Object PERFECT CORNER CUBE.POB that we used before, but this time there are two of them, offset along the Z axis by 0.01 mm. The file Perfect corner-cube retro-reflector Boolean object square.zmx contains the initial setup for this model. Additionally, the Cylinder Volume object is replaced with a Rectangular Volume object. The Boolean operation applied by the Boolean Native on line 3, ‘b-a’, is performing a logical B AND NOT A operation, taking all of object B and carving out where object A intersects, leaving a thin shell. This is then intersected with the Rectangular Volume exactly as was done with the Cylinder Volume previously. The result is a retro-reflective object with a square profile as viewed along Z, centered with its vertex on the Z axis, albeit with a shape that is less intuitive for most viewers.





The square profile makes this object ideal for working with N x N grids of rays because for any point X, Y, Zi intersected, the ray is retroreflected from -X, -Y, Zf. The initial and final Z points will not generally be the same, but as we have seen, the wavefront remains flat while passing through the corner cube.

The huge advantage for this square profile is that the individual corner cubes can be arrayed into grids suitable for use with a lenslet array, or to retroreflect a large beam without displacing individual rays by much distance. In the file Perfect corner-cube retro-reflector Boolean object 2x2 square array.zmx, we can see that placing four such cubes together creates a 2x2 square of reflectors, two of which are rotated 180 degrees. Adjusting the positions and sizes of the beam and objects, we can obtain this system, displayed here with a 6 x 6 grid of rays:





There are some additional aspects we should consider when using this configuration. The systems here show a Non-Sequential Component with slight offsets in the X and Y direction. Users familiar with Non-Sequential systems in OpticStudio will recall that rays exactly hitting a vertex of a shape with hard corners have indeterminate refraction or reflection. The mathematically perfect corner point has no unique surface normal so its optical properties cannot be calculated. In fully Non-Sequential systems with possibly millions of rays, these few can be discarded, but in this Mixed Mode case we must apply the X and Y offset, or else the Chief Ray for the system will strike the vertex and be lost, rendering many of the Sequential analysis tools unusable.

In this system, the Chief Ray becomes considerably offset after retroreflection. With a single cube, the offset of the Chief Ray is minor, and keeps it close to center, but with the 2x2 or any even numbered array, the offset becomes the diagonal width of a single cube, as we can see by looking at a layout with just one ray:




This has an effect on displays or analyses that center on the Chief Ray, like the Spot Diagram. Below we show the Spot Diagram first centered on the Image surface vertex and then centered on the Chief Ray:





We see two effects here. The circular beam is retroreflected in four quadrants, inverting the circular beam cross-section. This is a real geometric effect. The latter figure shows an offset into the upper right corner. This is the effect of centering on the Chief Ray, which has been shifted to an outer corner of the beam. Footprint diagrams will show the former effect, but a Spot Diagram, with its choice of reference location, may show this artificial offset by default.

While Sequential Mode has options for lenslet arrays via a DLL, Non-Sequential Mode is usually the preferred option for these systems. Object placement with respect to the ray paths is not as strict in Non-Sequential Mode, and there is no designated Chief Ray in this mode, so we do not need to worry about positioning any one ray with respect to object vertices. As such, for the final example we will switch to a fully Non-Sequential Mode model, as found in the file Perfect corner-cube retro-reflector Boolean object square array NSC.zmx.

We have used Array objects to create a 6 x 6 grid of individual retroreflectors. A collimated beam is sent through a lenslet array of real lenses with aberrations present, focused towards the vertices of the retroreflector array, and then reflected back to approximately collimate the beam again prior to being measured by a Detector Rectangle. The final result of this experimental setup is shown below:





We can immediately see that there are some stray light effects, as we would expect, and a few dead spots, but overall we have returned the beam to a decent approximation of its original shape. Of a million rays traced, only 249 are lost.

We can demonstrate again the geometry of retroreflection of a collimated beam if we right-click on the lenslet array object on line 12 and select ‘Ignore and Hide Object’. In this case the beam exactly retroreflects with no other modification. The detector records the result.





A final question to consider here is what happens if the entire array is tilted by some small angle. The symmetry of the system would be broken, and there would not be a perfect (X,Y) -> (-X,-Y) mapping like we see with perfect collimation. Not every ray will intersect the cube exactly three times (one on each face). With the retrofeflector Reference Object value set, we can tilt the Null Object on line 1 by two degrees to show this effect.




Here we can see that in this example, nominally designed to re-capture all reflected rays, tilting does lead to some losses and some structured stray light. Specific applications will have their own geometries and uses that can block or account for these artifacts, but overall the option to have a regular grid of retroreflectors which allows us to keep and use most rays in an array system is a good option. Even the tilted example here has a loss of only 716 rays out of a million, as compared to circular cross section reflectors that would lose over twenty percent of the rays at the corners even before the tilt is applied.

Though the corner cube grid has some of the ray loss and ray indeterminate errors faced by all Non-Sequential object with hard corners, we can see from these examples that there are plenty of options for incorporating retroreflective arrays into an optical system that can make use of it.

Was this article helpful?
4 out of 5 found this helpful



Article is closed for comments.