NSC - Filter Array simple

  • 12 February 2024
  • 2 replies

Hello! I try to find a simple way to simulate a filter array. The desire is, that it should be 64 small filters with their own transmission data. It is no problem to simulate 1 or several filters usind Coating.dat - it is already nicely described on Forum. But to simulate manually 64 small filters is not great.. Of course, one option, as always, is DLL. But is there some simple way? (I tried, for example, MEMS - but I can not define transmission (coating) for every cell).




Best answer by MichaelH 12 February 2024, 17:45

View original

2 replies

Userlevel 6
Badge +2

Hi Aliaksei,

I would suggest using a black & white Slide Object.  A value of RGB(0, 0, 0) will block all transmission and a value of RGB(255, 255, 255) will pass all transmission at unity.  

If you need a colored Bayer-type of filter, I would suggest creating 3 configurations for each of the color channels, add a single Rectangular Volume directly behind your Slide object so you can apply a coating to the slide, and offset your Slide object by 1 pixel for each color channel.  Then when you ray trace, make sure to click Trace rather than Clear & Trace in between configurations so you can get the incoherent sum of all 3 color channels.

Note: I would not try to use a PNG file to simulate the actual Bayer filter with colors because a value of RGB(0, 255, 0) might look green but it might not align directly with the green wavelength you selected, so any non-white color in the PNG file will likely lower the transmission for the given wavelength you’re looking at.

Hi Michael,

Hi everyone,

thank you so much for your response! Very nice, now I know probably more than I wanted. I will definetely use it, but little bit later.

Actually, I tried to ask something sligtly different (my fault): I wish to simulate a Fabry-Perot filter array, that consists of 64 small filters, and each has a certain transmision data. I have easily created 64 rectangular volume elements by using “Replicate objects” - see Fig. Now, I see a pretty straightforward but long way to define all coatings:

take all data in Matlab > simplify (main transmission region) by e.g. 10 points > save all 64 simplified tables in appropriate format for Coating.dat > choose in Zemax every filter-cell and manually define a coating by its properties (coat/scatter). Is it ok? Will such system not scary a good zemax user with its simplicity and manual work?

Maybe I have overlooked a simple available Macro example or something else, that define  for example a matrix of filters and its transmission behavior for different wavelengths - does it exist? I love Coating.dat because of its simplicity, so I am searching for something similar but more appropriate for a large array. I know, DLL is always an option..
thanks for any advice!