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 of 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.

Authored By Mark Nicholson


When simulating the propagation of light in Non-Sequential mode, it is imperative that each object have accurate coating and scattering definitions to obtain the highest amount of accuracy during analysis. OpticStudio provides the user with this ability with object "faces". Users have the ability to render 3D volumes that are pre-loaded into the program (parametric objects) or imported manually (CAD data files). These 3D objects have face numbers assigned to various surfaces that enable the user to individually edit coating and scattering data.

In this article, we discuss how to place coating and scattering functions on a face and show how those faces are defined for both object types.

Parametric objects

Parametric objects, like the Standard Lens object, are 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. In parametric objects, the definition of a face is usually straightforward. 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.

Consider the following 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 Help Files describe 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.


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 is defined as "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 any number of 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 in-program Help Files: The Setup Tab...Editors Group (Setup Tab)...Non-Sequential Component Editor...Object Properties (Non-Sequential component editor)...Coat/Scatter. 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.


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


CAD Objects

Effective December 31, 2021, SOLIDWORKS integrations with Zemax products are deprecated and will not be available in future software releases of OpticsBuilder or OpticStudio. Learn more.

CAD objects are a type of file-based object and include objects imported from CAD packages via STEP, IGES, SAT or STL formats. These objects may be faceted, or have smooth continuous surfaces, or have regions of both faceted and continuous surfaces. When defining an object by a data file, defining a "face" is generally 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.

Volume objects designed in 3D CAD packages such Creo Parametric 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.

That said, there are several factors to consider when working with CAD objects in OpticStudio. First, CAD objects are large files (often several megabytes of data). More CAD objects and more complex CAD objects in a given system will, inherently, increase calculation times. Second, CAD programs often export data in non-discernable orders. This can require 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 a lens mount.


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.

Note: This part has 55 CAD surfaces but only 50 faces may define for a single object. Any beyond 50 will default to a Face 0 definition. 

In this case, 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:


Before launching the Object Viewer, we select Viewer Highlights: By Surface. Then, press View Current Object.


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


Select Change to -> to change all CAD surfaces to be associated with Face 0.


Last, select Clear All so that no surfaces are highlighted. Now all surfaces of the object have the same face number. However, 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 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, use the Change To -> function to set them to Face 1.


Now, we can see that Face 0 represents 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 in Object Properties...CAD. 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).


Other file-based objects

While CAD objects are probably the most important, they are not the only file-based objects that OpticStudio supports. OpticStudio also supports polygonal objects and tabulated objects which are defined by data files. 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 OpticStudio's in-program Help Files: The Setup Tab...Editors Group (Setup Tab)...Non-Sequential Component Editor...Non-Sequential Geometry Objects...Polygon Object. Each rectangular or triangular facet can be allocated a face number. For tabulated objects, only one face is allocated to the entire object.


Was this article helpful?
8 out of 11 found this helpful



Please sign in to leave a comment.