Soon, we will launch a new and updated customer portal, which is an important step toward providing our customers with one place to learn, interact, and get help.
Learn more.

How to add coatings and scattering functions to non-sequential objects

In Non-Sequential Mode, it is often the case that we need to apply scattering profiles or coatings to specific surfaces on an object. These properties can be defined on any face of a 3D non-sequential object. This article explains the concept of a Face Number in OpticStudio, discusses how these properties can be set in OpticStudio, and reviews some issues that can arise in the process.
Mark Nicholson
CAD Exchange


Non-Sequential volume objects are 3D volumes which define some region of space. There are two major types of objects supported:
  • Parametric objects, like the Standard Lens object. This is defined by parameters like front radius of curvature, back radius of curvature, center thickness and radial aperture. There are a wide range of parametric objects, including hologram, diffractive, cylindrical, biconic and more.
  • Objects defined by data files. These include polygonal objects, tabulated faceted objects, and objects imported from CAD packages via STEP, IGES, SAT or STL formats. These objects may be facted, or have smooth continuous surfaces, or have regions of both faceted and continuous surfaces.
In either case, users need to place thin-film coatings and scattering functions on the surfaces of these objects to obtain the highest accuracy when simulating the propagation of light through them. OpticStudio uses the concept of a "face" to describe a region on the surface of an object to which a thin-film coating or scattering function is applied.

In parametric objects, the definition of a face is usually easy. For example, a standard lens is easily understood as having a front polished face, a rear polished face, and a rough, unpolished cylinder connecting the two polished faces.

When defining an object by a data file, defining a "face" may be more complex. Even a simple faceted mirror may be made up of many facets, which the human observer can clearly see make up a face, even though the mathematical description of that face may be very complex. When complex CAD objects are involved, we may be dealing with many megabytes of data, involving flat, curved, spline etc. segments.

This article describes how faces are defined in general objects to help place coating and scattering functions on that object.

Parametric objects

Consider a simple Standard Lens object. This has three faces (faces are counted starting from zero):

The standard lens object  The Coat Scatter Dialog

For any object, the manual describes the faces of that object, and the coat/scatter tab lists the "friendly names" of the faces. Once you select a face, you can select three different ways for rays to interact with it:

Face Defaults

If you choose Object Default then the reflectivity of the face is defined by the refractive material of the glass entered in the Non-Sequential Component Editor, the refractive material on the other side of the face, any thin-film coating on the face (described later), and the wavelength, polarization and incident angle of the ray that hits the face. Scattering functions can also be applied.

If you choose Reflective, the face behaves as if the optical material was "MIRROR". Rays approaching the face from either side are reflected. Coating and scattering functions can be applied as normal.

If you choose Absorbing then any ray incident on the face is terminated. No coating or scattering function can be applied.

In the rest of this article, it is assumed that Object Default is selected.

Once a face is selected, any coating from the currently loaded coating file can be applied to that face using the Coating drop-down box. OpticStudio incorporates a complete polarization ray tracing and analysis capability. Any input polarization state may be defined. OpticStudio accounts for transmission, reflection, absorption, polarization state, diattenuation, and retardance.
Coatings may be composed of arbitrary layers of arbitrary material, each defined with a complex index of refraction, with full dispersion modeling in the coating materials. Substrates may be glass, metallic, or user defined. Full details are given in the manual, chapter "Polarization Analysis", subsection "Defining Coatings in OpticStudio". OpticStudio can also import coating definitions directly from The Essential MacleodFilm Star and other thin-film coating design packages. OpticStudio automatically reverses the coating layer order if faces go from air to glass then glass to air, so the same coating may be applied on many faces without the need to define “mirror image” coatings.

If the original coating prescription is not available, a TABLE coating of performance data versus wavelength and angle may be used, or an IDEAL coating which simply gives reflection and transmission for all rays at all angles and wavelengths may be used.
With the coating data in place, OpticStudio computes the diattenuation, phase, retardance, reflection, transmission, or absorption of any coating as a function of input polarization, wavelength and angle.

Next, a surface scattering function can be applied. The scattering functions available include Lambertian, Gaussian, ABG, and user-defined.

For example, the front face of the lens is likely to be well polished, and may have a quarter-wave MgF2 coating on it. This coating is called "AR" in the default coating catalog which ships with OpticStudio. To place this coating on Face 1, the front face:

Front face of the lens

Face 0, which is the side face, is likely to be unpolished and uncoated, and so could be entered like so:

Side face

CAD Objects

Volume objects designed in 3D CAD packages such as SolidWorksProEngineer and CATIA can be imported to OpticStudio using a variety of CAD exchange formats. This allows a wide range of objects to be used for optical modeling. However, there are some specific issues in assigning optical properties to the surfaces of such objects.

First, CAD objects are large, often several megabytes of data. Secondly, CAD programs often export data in no discernable order, therefore requiring a phase of work in which the CAD entities that comprise the surface of the object are organized into meaningful faces.

Although much more complex examples exist, for our discussion let’s focus on this CAD representation of lens mount:

mobile phone lens

This object contains 55 separate CAD surfaces, which are the elemental units the CAD program uses to describe the object. Worse, they are not listed in any sequential order, so knowing where CAD surface 45 is gives no clue as to the location of CAD surface 46, for example.

In the case of lens mounts, and most other mechanical components in optical systems, it is often the case that the entire object cannot be represented by the same surface properties. In this example, let’s assume that the inner and side surfaces have low reflection/scattering (perhaps they are black anodized aluminum), and the outer surface is unpolished (perhaps it can be simulated with a Lambertian scatter model). In order to do this, we will need to apply the correct scatter properties to each of the 55 surfaces.

Clearly nobody wants to edit 55 CAD surfaces by hand! Also, other CAD objects can be significantly larger. For this reason, OpticStudio gives you useful options for how to allocate OpticStudio faces to CAD surfaces. This is controlled by the Face Mode property of the Imported object. It has these possible settings:

  • Face Mode = 0: All surfaces are assigned face number 0. The entire object will have just one face. Coating and scatter properties can be assigned to all faces simultaneously.
  • Face Mode = 1: All surfaces whose edges meet along a non-zero length curve, and whose normal vectors along the curve of contact are parallel within a user defined angle tolerance are assigned a common face number. The angle tolerance is defined by the Face Angle (parameter 8). This mode allows control over how finely the faces are numbered. If the Face Angle is set to a large value (such as 180) then all faces that touch will share a common number. Larger Face Angles yield fewer unique faces.
  • Face Mode = 2: All surfaces are uniquely numbered. This mode yields the largest number of unique faces.
  • Face Mode = 3: Retains the face numbers defined in the imported file. Some CAD files, such as those created by OpticStudio, have face numbers already defined. If OpticStudio recognizes the face numbers, they will be used. If OpticStudio does not detect the face numbers, the surfaces will be numbered as for Face Mode = 2.
  • Face Mode = 4: All surfaces on each separate object defined in the CAD file are assigned a common face number. This option is useful for applying one property to all surfaces on each object when more than one object is defined with a single CAD file.

The default import method is Face Mode 2, so that all surfaces are uniquely identified. This allows the most flexibility in custom-designation of object faces, so we will keep this setting. In this case, there are 55 CAD surfaces. However, I only want to use two surface finishes to define the coating/scattering properties: one is well-polished, low scatter, anti-reflection coated, the other is uncoated and highly scattering. To do this, I open the Object Properties for the CAD object, and navigate to the CAD tab. Here, we can see the list of all the CAD surfaces, as well as the Face # that each is currently mapped to, in the Surface to Face Mapping dialog box:

Surface to Face Mapping dialog box

Note that each CAD surface is allocated a unique face number, up to face 50. Before launching the object viewer, we select Viewer Highlights: By Surface. Then, press View Current Object. The Object Viewer opens:

Object Viewer

Just like the other 3D viewers, you can left-click and drag as well as use the mouse spin wheel orient the object view as you wish. Then, back in the Object Properties dialog, I press Select All. All CAD surfaces in the object viewer are now highlighted in both the Surface to Face Mapping and the Object Viewer:

The Surface to Face Mapping and the Object Viewer

I then press the Change to -> button to change all CAD surfaces to be associated with Face 0:

Non-sequential component editor

And last I press Clear All so that no surfaces are highlighted. So now, all surfaces of the object have the same face number. But, I want the unpolished faces to have a different face number: face 1 for example. In the Object Viewer, I just click with the mouse on the object to highlight the desired faces. By clicking with the mouse, I can easily select all the faces that comprise the reflective, unpolished area of the object (in this case, surfaces 11 and 22). This also selects those surfaces in the Surface to Face Mapping window. With these selected, I can again use the Change To -> function to set them to Face 1:

Unpolished faces number

Now, we can see that Face 0 represents all surface excluding the outer surface:

All surface excluding the outer surface

Clicking with the mouse on the Object Viewer on the desired faces can be much easier than selecting the surfaces in the list on the Object Properties > CAD tab! Note that the CAD surfaces selected with the mouse are also highlighted in the Surface to Face Mapping list for convenience. The CAD object still has 55 surfaces, but it now consists of just two faces, to which I can add coating and scattering functions as before. To continue with this example, I could add a Black Anodized scatter model to Face 0 (the inner faces of the object), and perhaps a Lambertian scatter model to Face 1 (the outer face):

Adding scatter models

Other file-based objects

CAD objects are probably the most important, but not the only, file-based objects that OpticStudio supports. OpticStudio also supports polygonal objects and tabulated objects which are defined by datafiles. These are usually faceted objects, although some, like Fresnel objects, are objects of rotation.

For polygon objects, the face data is included in the data file used to create the object. The polygon object is described in detail in the manual, in the section entitled "Non-Sequential Components", in sub-section "Defining Polygon Objects". Each rectangular or triangular facet can be allocated a face number.

For tabulated objects, only one face is allocated to the entire object.


To summarize what has been covered here:
  • CAD objects can be made of many hundreds of CAD surfaces (sections of planes, spheres, splines etc.) and it is not in general feasible to apply coating and scattering functions to individual CAD surfaces
  • We use the concept of a "face" to organize the CAD surfaces into meaningful surface regions
  • A point-and-click interface makes it easy to select CAD segments and allocate them to faces
  • Polygonal objects (*.pob) include the face definition as part of the defining data file
  • Thin-film coatings and scattering functions are then applied to the defined faces