Navigation: Tutorials and Examples > Backlight Simulation

 

Backlight Simulation

 

Contact Us: fredsupport@photonengr.com

 

 

 

Description


Printed patterns applied to Light Guide Plates (LGP) used for LCD back lighting commonly contain a large number of scattering sites. Creating the individual sites as separate entities leads to extremely inefficient simulations in the context of non-sequential raytracing because searching every object in the database at every intersection slows the raytrace tremendously.  An innovative method developed by Lee, et. al. substitutes the collection of scattering sites with a pattern density function F(x,y) which can quickly be evaluated and leads to a significant increase in raytrace efficiency.

 

The accompanying example file exampleBacklightSimulation.frd can be found in the <install dir>\Resources\Samples\Tutorials & Examples\ directory.

 

 

Implementation


This example illustrates Lee's method to create a hexagonal grid of circular, scattering dots using FRED's Scripted Scatter model.  The pattern density function used here will generate a sinusoidal variation in dot radii across the LGP.  The most innovative aspect of Lee's method is that the dots themselves are virtual; that is to say that none of the dots actually exist until the intersection occurs.  Only in the evaluation of the pattern density function is the size of a dot determined.  The result is a substantial decrease in raytrace time over a model in which the individual dots are created as separate entities. 

 

As with the scripted surface type, the scripted scatter model makes each ray's position available at the time of computation.  These are the variables g_Xpos, g_Ypos and g_Zpos in the scripted scatter model editor window. With the ray coordinates known the routine below can quickly determine in which unit cell the ray is located and based upon a functional dependence of dot radius on location, a final determination is made as to whether the ray intersects the dot's circular area.

 

The script begins with variable declarations and a value for pi:
 

Dim ix#, iy#, Tx#, Ty#
Dim Rmn#, dotRadius#, Xmn#, Ymn#
Dim cc&, rr&, m&, n&
pi = Acos(-1)
 

The nominal dot radius is set along with the sinusoidal period of radius variation in both x- and y-directions:

 

ix = 0.1  'dot diameter
Tx = 0    'period in x-direction
Ty = 24   'period in y-direction
 

The x and y spacing is set for a hexagonal grid:

 

'dots are distributed on a hexagonal grid
dotRadius = ix / 2
iy = ix * Sqr(3) / 2
 

From the grid spacing and ray coordinates, g_Xpos and g_Ypos, indicies are calculated for the nearest row and column to the ray's location:

 

cc = Int(g_Xpos / ix) 'column id
rr = Int(g_Ypos / iy) 'row id
 

The remainder of the routine is a nearest-neighbor calculation designed to aid in determining the closest dot quickly. Based upon column and row index, each of the closest dots are examined in a For loop.

 

'Check 4 nearest dots to see if ray is inside any one of them.
For test = 0 To 3

 Select Case test
  Case 0
     m = cc
     n = rr
  Case 1
     m = cc+1
     n = rr
  Case 2
     m = cc
     n = rr + 1
  Case 3
     m = cc + 1
     n = rr + 1
 End Select

 'dot centers
 If n Mod 2 = 0 Then
           Xmn = m * ix
 Else
           Xmn = m * ix + ix /2
 End If
 Ymn = n * iy
 

Here, the distance is calculated from the ray intersection point to the dot center:

 

'distance from ray to dot center
Rp = Sqr( (Xmn - g_Xpos)^2 + (Ymn - g_Ypos)^2 )
 

The pattern density function is evaluated here to determine the radius of the dot in the neighborhood of the ray location. Lee gives the dot radius as [F(x,y) * ix * iy / p]1/2.  In this case, F(x,y) = √3 ·[1 + cos(2py/Ty)]/2:

 

 'dot radius
 Rmn = Sqr( (1 + Cos( 2*pi*Ymn / Ty) ) * ( ix * iy )/( 2 * pi ) ) * Sqr( Sqr(3) / 2 )
 

If the ray location is inside a dot radius, then the scatter function is defined as Lambertian with a TIS of 100%. If the ray is outside the dot radius, then the scatter function is zero, i.e., no scatter. As soon as the nearest-neighbor calculation is successful, the routine exits:


 'if ray is inside dot then apply Lambertian scatter, exit for loop
 If Rp <= Rmn Then
   g_bsdf=1/pi
   Exit For
 Else
   g_bsdf=0
   Exit For
 End If

Next
 

The scripted scatter model is shown below.

 

 

The LGP used in this example is 12 x 8 x 0.5mm plate of PMMA constructed from six planar surfaces. The Scripted scatter model representing the dot pattern is applied to the bottom surface along with a high reflection coating (R = 0.99).  The coating will reflect all rays which do not intersect a dot. To avoid ray splitting and a geometric increase in the number of rays traced, an Allow All Raytrace control with the Parent Ray Specifier set to Monte-Carlo has been applied to the LGP bottom. The top and two lateral edges are assigned as a bare substrate (Uncoated). A low reflectance coating is applied to the two end surfaces where the illumination enters. The sources at each end are made from emitting cylinders (Random Surface) and enclosed in reflective troughs to recycle light. The backlight design is shown below.

 

 

To obtain the irradiance pattern, an Analysis Surface (green grid) is attached directly to LGP top and 50,000 rays are traced for each source. Evidence of the sinusoidal dot pattern is clearly visible in the irradiance pattern even after smoothing and taking the log. The log plot gives a sense of what the human eye would perceive upon viewing.

 

  

 

 

 

Related Topics


Coatings - Script Coating 

Surface - Implicit Script Surface

 

 

References


Lee, Y., Lim, K., Lee, Y.W., Lee, I.W., 2005, Fast ray-tracing methods for LCD backlight simulation using the characteristics of the pattern, Optical Eng, 44(1), Jan 2005, pg. 014004-1.

 

 

 

 

 

Copyright © Photon Engineering, LLC