Precisly Create Real Lenses with Geometry Nodes

All the principles are based on a video by zircron45, so if you haven’t seen it yet, watch it first. In his video he creates real lenses based on optical design blueprints and images from other sources.

Me being me, it was not enough, so I decided to bring geometry nodes into this and make a somewhat accurate system, albeit with limitations, that would allow me to create lenses using only patent numbers such as radius, distances, etc.

This could be done with coding, but I think geometry nodes are a simpler solution and can 100% be paired with scripts for presets or simple setup process if needed.

Some of the limitations at this time are:

  1. The housing for the lens is set manually (ideally it should be automatic)
  2. Trimming the lenses to the desired height is unfortunately done with sliders (there is almost no data for this in the patent, so everything is done using blueprint as a rough measurement)
  3. The same for aperture placement.
  4. CA simulation options should also be explored. Cycles failed tests with white noise textures and/or a separate shaders for each color. It produces so much noise already on the second lens element that it’s barely usable (maybe some of you have suggestions for other methods, I know LuxCore handles this a thousand times better, but the point is to do in Cycles.
  5. Need friendlier control over focus, aperture, and other things.
  6. Might be possible to implement aspherical lenses and other stuff.

First lens test

From my observations, the noise patterns are somehow much nicer with this method of camera simulation than with regular digital noise, maybe it’s just a coincidence.

Fisheye lens test


Screenshot 2024-04-26 151835

There is also still a ton to explore with different lenses and many more features to implement.

I will attach the files of my experiment. There are two lenses in the blendfile. I forgot the name of the second one, but one of them is an old Nikkor 6mm fisheye lens.

8 Likes