ZEISS CinCraft LensCore

v1.0.4 - f9ad989c

Support & Feedback

We are committed to providing you with the best support and assistance for our product. If you encounter any issues or have feedback to share, please do not hesitate to contact us at cincraft-virtuallens-feedback.pno@zeiss.com.

To help us address your concerns efficiently, we kindly ask you to prepare a minimal reproducing composition in Nuke. This will enable us to better understand and replicate the issue, ensuring a more effective resolution. Your input is invaluable to us, and we appreciate your cooperation in enhancing the quality of our product.

Introduction

Welcome to LensCore, a cutting-edge tool designed to bring the renowned precision and quality of ZEISS optics into the realm of virtual effects for the cinema industry. Leveraging our rich heritage in optics and lenses, LensCore enables postproduction professionals to accurately simulate the distinctive looks of physical lenses within their digital compositions. Embedded seamlessly into The Foundry’s Nuke software, this tool empowers users to enhance their projects with the authentic characteristics of ZEISS and 3rd party lenses.

A Brief History of ZEISS

ZEISS has been at the forefront of optical innovation since its founding in 1846. With over 130 years of expertise in crafting high-quality lenses, ZEISS has played a pivotal role in advancing optical technologies across various industries, including cinema, photography, and scientific research. Our commitment to precision and excellence has made ZEISS a trusted name worldwide, and LensCore continues this legacy by bringing our expertise in optics to the digital domain.

Features of LensCore

Pinhole rendering of the scene without any lens effects
Scene rendered with the ZEISS DigitalLens Pro

LensCore offers a range of features that simulate the nuanced effects of physical lenses, including:

Prerequisites

Operating Systems

Only 64bit builds

Nuke Compatibility

We offer builds for all actively supported versions of Nuke. Currently these are:

Nuke 14 Nuke 15 Nuke 16 Nuke 17
15.0 16.0 17.0
14.1 15.1 16.1
15.2

OpenCL

Currently the plugin can only run with an OpenCL runtime in version 2.0 (or higher). There are several implementations available for the different operating systems and different hardware configurations.

On linux the available OpenCL devices can be listed by clinfo which can be installed via the package manager.

❯ clinfo --list
Platform #0: Intel(R) CPU Runtime for OpenCL(TM) Applications
 `-- Device #0: 12th Gen Intel(R) Core(TM) i7-12700H
Platform #1: Intel(R) OpenCL Graphics
 `-- Device #0: Intel(R) Iris(R) Xe Graphics
Platform #2: NVIDIA CUDA
 `-- Device #0: NVIDIA GeForce RTX 3050 Ti Laptop GPU

GPU devices

With a GPU-system, the OpenCL runtime typically is packed with the graphics driver. It is highly recommended to run this plugin on a graphics card or an other accelerated OpenCL device. At least 8GB of GPU video memory (VRAM) are recommended for the plugin.

CPU devices

There are OpenCL CPU runtimes available aswell, but be aware that they might be up to x100 slower than a recent GPU for processing (depends on the detailed system spec). Even the variance in OpenCL CPU implementations we observed during testing was huge. On the exact same hardware we measured a difference of up to x10 for different CPU runtime implementations for our lens rendering.

https://www.intel.com/content/www/us/en/developer/articles/tool/opencl-drivers.html#cpu-section

Intel OneAPI for Red Hat Enterprise Linux 9, Rocky Linux 9, Alma Linux 9

The plugin has been tested sucessfully with the Intel OneAPI OpenCL runtime implementation. To install, follow the instructions from Intel:

https://www.intel.com/content/www/us/en/docs/oneapi/installation-guide-linux/2023-0/yum-dnf-zypper.html#GUID-B5018FF2-B9F3-4ADC-9EB6-F99F6BFC7948

First of all import the repository and make it available for dnf or yum.

Installation instructions at the time of writing the documentation, visit the link for the latest instructions by intel.

Afterwards install the necessary components by:

dnf install -y --disablerepo=appstream intel-oneapi-runtime-opencl

to force installation from the intel repository.

pocl

pocl is a CPU implementation packaged by most linux distributions that is not compatible with our plugin.

Install Licenses

The plugin relies on RLM for licensing. You can use node-locked licenses by simply putting them into the plugin’s root dir, or floating licenses by connecting to Nuke’s license server.

In order to change where the license is read from, set the environment variable ZEISS_CINCRAFT_LENSCORE_LICENSES to, e.g. 4101@nuke.license.server. It is possible to give multiple locations as well, e.g. 4101@nuke.license.server:/home/user/licenses/ (use ; on Windows systems).

To install a license on your Nuke license server, place the ZEISS ISV file zeiss.set next to RLM’s foundry.set and upload your .lic files to its licenses path.

Attach ZEISS ISV to an Existing RLM Server

The generic RLM process for adding a new ISV to an already running server is:

  1. Add the new ISV server component (zeiss.set) where the RLM server can find it.
  2. Add ZEISS .lic file(s) to the license path used by the running RLM service.
  3. Trigger a license reread (rlmreread) so RLM picks up new files and starts new ISV servers.
  4. Verify that the ZEISS ISV appears in server status output.

RLM references:

Typical Paths

Windows (Foundry Licensing Utility setup):

Linux (typical RHEL-style setup, adjust to your service definition):

If your deployment differs, follow your rlm startup -c argument and service working directory.

No-Restart Command-Line Procedure

If you prefer no service restart, use rlmreread:

Windows:

cd "C:\Program Files\The Foundry\LicensingTools8.0\bin\RLM"
.\rlmutil.exe rlmreread
.\rlmutil.exe rlmstat -a

Linux:

cd /path/to/rlm/bin
./rlmutil rlmreread
./rlmutil rlmstat -a

Expected result: rlmstat -a shows the ZEISS ISV in the ISV server list with status Running/Yes.

Optional Full Restart Procedure

If reread is not sufficient in your environment:

  1. Restart the RLM service.
  2. Run rlmstat -a again and confirm ZEISS server availability.

Client Configuration Reminder

Clients should point to the RLM server as port@host, for example 4101@nuke.license.server.

For Lenscore, this maps to:

ZEISS_CINCRAFT_LENSCORE_LICENSES=4101@nuke.license.server

Quick Start

The following figure visualizes the minimal usage of the plugin in a Nuke composition.

Example usage of the LensCore plugin in a Nuke composition. The Camera and DeepImage nodes are mandatory, while Kernel and Inpaint Map are optional inputs.

By executing the following steps, a minimal rendered image can be produced using the plugin:

  1. Select a lens in the Lens tab of the node instance
  2. Ensure the Camera’s properties are correctly set. (See Interface → Camera)
  3. Ensure World to meter matches the given input texture.

Selecting the Supreme Prime 50 1.4T with a focus of 1.6 m, a fstop of 1.4f produces the following image.

Unprocessed, pinhole rendered RGBA+depth.Z image, converted with the Nuke-native DeepFromImage node.
Simulated Supreme Prime 50 1.4T lens with all of it’s characteristics.

Interface

Node Inputs

Camera (required)

The following elements are used directly from the given Nuke Camera.

All six camera properties used by the plugin
  1. World to Meters world_to_meters: The plugin has a own world_to_meter knob in it’s user interface. The value of the camera (if present) is used as a default value for the internal one. If different factors are specified, the software will always prioritize it’s internal value.
  2. Focal Length focal: The plugin has an own lens_focal_length knob in it’s user interface. It is only enabled if the selected lens is a Zoom-Lens, that allows to vary the focal length. By default the camera’s value will be linked to the internal one. The software will always read the internal value.
  3. Horizontal Aperture haperture: This value will be used as the simulated horizontal sensor size in [mm]. If the aspect ratio of haperture to vaperture doesn’t match the current format aspect ratio, a warning will be displayed in the plugin.
  4. Vertical Aperture vaperture: This value will be used as the simulated vertical sensor size in [mm]. If the aspect ratio of haperture to vaperture doesn’t match the current format aspect ratio, a warning will be displayed in the plugin.
  5. Focal Distance focal_point: The focal_point in the camera is defined in the scene unit and thus will be converted with the currently active World to Meters factor. It is used to define the focus area of the scene.
  6. Fstop fstop: Defines the current iris f/t-stop setting. The plugin has an additional internal option to select this knob’s unit. If the bounds of the currently selected lens are exceeded, a warning will appear.

DeepImage

The plugin only supports Nuke’s Deep-Workflow. Nevertheless it is not required to render the data with a real deep pass. Oftentimes studios used a layered approach with multiple cuts of a scene in RGBA+Depth. Those can be indivdually converted using the Nuke internal DeepFromImage node and combined using DeepMerge. As the plugin correctly resembles physics through the virtual scene, it is adviced to combine all the data to a single stream before the plugin. Often a single instance of the plugin may be the best option.

Nuke expects the depth.Z pass to be in the unit of 1/z. If the renderer outputs forward values (e.g. meter), an Expression node is required to correct the depth.Z to the correct representation. Using DeepFromImage afterwards will automatically convert the 1/z depth.Z values to a forward representation for deep.front and deep.back.

Expression node to mathematically correct the depth by calculating the reciprocal before feeding it to the DeepFromImage node.

Ensure to use the Expression node either after shuffling the data to depth.Z or do it on the correct color channel that currently holds the scenes depth.

Visualization of the nuke composition workflow to combine multiple depthmaps + RGBA images to a merged DeepImage that can be processed by the plugin

Kernel (optional)

Real world lenses do often induce certain characteristics by manufactoring imperfections that project in the bokeh of the lens. Well known examples are Onion-Rings or other patterns looking like a mixture of swiss cheese and moonscape.

It is extremely important to use this feature only for the shapes and the grain/crater charateristics inside the bokeh. Other characteristics like outline, iris shape, spherical aberration and cateye will be induced in a physically correct manner by the plugin anyhow!

A collection of lens kernel assets from https://www.compositingpro.com/free-lens-kernels

To ensure the kernel texture is not limiting the physical bounds, a best practice is to define no circular pattern, but simply have the full image defined like so:

No kernel active
Example kernel that only fills the internal grain and noise, as other characteristics are induced physically correct by the lens.
Kernel active

The kernel texture will be internally converted to grayscale, so no color is preserved throughout the bokeh. If this is necessary, feel free to reach out to us.

Inpaint Map (optional)

The inpaint map needs to have the exact same format/resolution as the image, otherwise it will fail. The input is only in use when Use Inpainting is enabled.

This optional input allows to partly scale the effect of the inpainting on a per-frame basis. Typical usecases are in combination with Nuke’s RotoPaint knob to either manually enable areas in a black texture, or use it the other way round by using a white texture by default and disabling the parts that shall not be inpainted. The best visualization for the inpainting is the Edge detection visualization, as no lens effects are visible in this mode. Only the red channel of the texture is used by the plugin. The red channel value will be multiplied by the Inpainting intensity field. 0 will fully disable inpainting and also the edge detection in this area. With edge detection turned off also Enhancement/Step 4 is disabled. Values > 0 will scale the inpainting effect accordingly.

Inpaint map texture with 0.0 for black and 1.0 for white
Resulting edge detection visualization
Manual overlay of the inpaint map to the edge visualization

Environment Variables

The plugin provides several environment variables to configure its behavior, particularly useful for guided customer support and internal testing procedures.

Here’s a list of key environment variables:

Environment variable Description
ZEISS_CINCRAFT_LENSCORE_DIR Allows to override the default lens directory. The currently active lens directory can be inspected by hovering on the open_lens_directory button
ZEISS_CINCRAFT_LENSCORE_TELEMETRY_DIR Allows to specify the default telemetry destination directory used by the plugin.

The plugin uses https://www.boost.org/ under the hood - specifically the compute module. It offers environment variables to customize the default OpenCL device used by the system. Table from the source boost/compute/system.hpp.

Environment variable Description
BOOST_COMPUTE_DEFAULT_DEVICE name of the compute device (e.g. “GTX TITAN”)
BOOST_COMPUTE_DEFAULT_DEVICE_TYPE type of the compute device (e.g. “GPU” or “CPU”)
BOOST_COMPUTE_DEFAULT_PLATFORM name of the platform (e.g. “NVIDIA CUDA”)
BOOST_COMPUTE_DEFAULT_VENDOR name of the device vendor (e.g. “NVIDIA”)
BOOST_COMPUTE_DEFAULT_ENFORCE If this is set to “1”, then throw a no_device_found() exception if any of the above environment variables is set, but a matching device was not found.

UI Description

Tab: Main

Overview of the Main tab

Group: Input_properties

Contains 2 elements: World to Meter, Extra Channels

Everything in this group tells the plugin, how to see the world. This currently are the world scale, as well as what additional channels to “see” and work on.

Knobs: World to Meter

world_to_meter, Slider, default: 0.000000

Factor to multiply the world unit with to get meters. Examples: 0.1 for decimeter, 0.01 for centimeter, 0.001 for millimeter

The value to enter is the multiplier needed to transform the image data into meters.

Example: The input data is in cm scale. To transform a centimeter scale to meters, we need to divide the actual number by 100, resulting in a “world to meter” factor of 0.01.

If the value is wrong, render time will increase drastically and the whole image will be in defocus.

Knobs: Extra Channels

input_channels, channelset

Allows to add up to 3 additional channels to the processing. The channels will be treated identical to the RGB colors except for the vignette. RGBA + deep.front will be always used for the effect calculation.

The extra channels option can be used to create matching masks for elements in the defocus chain.

Given the following example of the second chair in the example scene.

The color layer
The alpha mask

The alpha layer shall be used to create a mask to later recolor and finetune some elements of the scene. In this case the second chair. The mask needs to represent occlusion, distortion and lens breathing. All these transformations can be done to the mask alongside the actual lens effect application.

Shuffling the alpha mask to a custom channel
The custom channels are automatically padded with zeros for other depths in the deep comp

With this additional info of the second chair’s alpha channel, we can enable thee extra_channels feature in the plugin:

Extra channel selection in the plugin, up to 3 additional channels can be used

The resulting mask can be used by e.g. ColorCorrect node to manipulate the chair after the lens effects have been applied.

The resulting mask with the correct transformations, occlusion and defocus
Color graded output image by using the resulting mask

Group: Render_quality

Contains 5 elements: Quality Level (GUI), x, Quality Level (Farm), x, Disable rendering optimizations

The lens effect simulation is a complex algorithm. In order to find the best trade-off between quality and speed, the quality level can be tweaked here.

Knobs: Quality Level (GUI)

quality_level, Dropdown, default: Medium

Options: [PreVis, Low, Medium, High, Ultra]

The quality level required. Higher values mean higher computation times in the gui.

This option only applies for Nuke instances with a graphical interface. It will be ignored for headless instances, e.g. on a rendering farm.

In order to get a quick preview or a spotless image, select one of the quality levels PreVis (pre-visualization), Low, Medium, High, Ultra. High and Ultra come with a multiplicator.

Knobs: x

quality_scale, Slider, min: 0.2, max: 5, default: 1.000000

Keeps the settings of the selected quality level, but scales identified elements by the applied factor.

This option only applies for Nuke instances with a graphical interface. It will be ignored for headless instances, e.g. on a rendering farm.

Only applying to quality levels “High” and “Ultra”, the quality scale increases the output quality over the given bounds.

Knobs: Quality Level (Farm)

quality_level_nogui, Dropdown, default: High

Options: [PreVis, Low, Medium, High, Ultra]

The quality level required. Higher values mean higher computation times on the farm.

This option only applies for Nuke instances without a graphical interface. It will be ignored for local instances with a visible UI.

In order to get a quick preview or a spotless image, select one of the quality levels PreVis (pre-visualization), Low, Medium, High, Ultra. High and Ultra come with a multiplicator.

Knobs: x

quality_scale_nogui, Slider, min: 0.2, max: 5, default: 1.000000

Keeps the settings of the selected quality level, but scales identified elements by the applied factor.

This option only applies for Nuke instances without a graphical interface. It will be ignored for local instances with a visible UI.

Knobs: Disable rendering optimizations

disable_adaptive_ray_count, Checkbox, default: 0

Disables ALL performance optimizations. Quality levels still have an effect. WARNING: will be slow! Only use if artifacts cannot be removed otherwise.

Disables all optimizations. This will get rid of all artifacts that are due to optimizations to the lens effect core algorithm.

Important: Only check this box if visual artifacts are present, that cannot be fixed with other means e.g. inpainting. If the malfunction is not a rendering relict of the internal optimizations, uncheck this box again for better performance.

Group: Bounding_box

Contains 2 elements: Show overscan coordinates, Increase Bounding Box by pixels

Knobs: Show overscan coordinates

overscan_visualization, Checkbox, default: 0

The scanned area will be displayed in absolute scene coordinates. Inactive in no-gui mode.

Knobs: Increase Bounding Box by pixels

bounding_box_expansion, Number, default: 0

Adds selected amount of pixels as padding. Image dimensions will grow by 2*value in both width and height.

Big scene with a format of 3000x2000 px, but a reduced bbox to match only the hightlight.
By default the input bbox is preserved, in this case the bbox cannot hold the content of the defocused image and thus will only render the resulting gray color inside the bbox. The viewer displays the edge pixels outside thus the impression of an all gray picture.
By actually increasing the bbox by 120 px, the output plane is big enough to contain the defocused image and the bokeh is displayed correctly.

Group: Feedback

Contains 2 elements: Local telemetry log folder:, Report Issue

Knobs: Local telemetry log folder:

telemetry_folder, FilePicker

If nothing is selected the logging directory can be selected with the environment variable ‘ZEISS_CINCRAFT_LENSCORE_TELEMETRY_DIR’. By default the lens directory will be used as a fallback. Current fallback destination: ZEISS_CINCRAFT_LENSCORE_DIR

Our software collects telemetry data to aid support and further development. Telemetry is entirely opt-in; all collected data is stored locally on the user’s device and requires manual transmission by the customer, ensuring no data exchange occurs by default. This data is strictly unpersonalized, meaning it does not include any personal information or identifiers. Importantly, no sensitive information, such as image content, is collected during the process. We only gather metadata, such as usage patterns, system and feature configurations, to help us understand how our software is being used and identify areas for improvement. Additionally, the data is formatted in a human-readable manner, allowing customers or their IT departments to review and oversee the information before it is sent to ZEISS.

Knobs: Report Issue

provide_feedback_btn, Button

Will open a preconfigured mail in the OS’s default mail program. It will automatically fill the draft with important information. Nothing is sent automatically, user has to always send out the mail manually. All information is copied to the clipboard automatically aswell.

Use this button to get in contact with the ZEISS service. Please follow the instructions in the mail draft to provide as much information about either your feedback or issues. Your insights will help us enhance the plugins functionality and better meet your needs.

Knobs: Clear plugin cache

clear_cache, Button

This plugin utilizes an internal cache to avoid reloading the input image with every call. However, there are instances when Nuke updates the input image without refreshing the previous hash. As a result, the plugin may continue to render using the outdated input image. If you notice that changes in the scene are not reflected in the plugin’s output, click this button to clear all internal caching within the plugin.

Knobs: Open Documentation

open_documentation, Button

Opens local copy of the documentation with the default html tool, probably the browser. The version of the documentation is guaranteed to match the version of the currently loaded plugin.

The button is only visible if a file called LensCore.<VERSION_HASH>.html or documentation.html with the current version hash exists in the nuke plugin path.

Tab: Lens

Overview of the Lens tab

Here, all the configuration about the simulated lens look happens. In the simplest case, just choose a lens, and the effect is applied.

Currently, there are three kinds of lenses provided:

Depending on the selected lens, you will see more or less content on the lens tab.

Knobs: Lenses

lens_dropdown, Dropdown, default: Other (enter path)

Options: [Please select a lens..., Other (enter path)]

Knobs: Lens path

lens_file, FilePicker

Knobs: Presets

preset_dropdown, Dropdown, default: New preset...

Options: [New preset...]

Select a preset here. Presets are stored in ZEISS_CINCRAFT_LENSCORE_DIR as zlp files.

Presets are a simple way to store and share user-created artistic lenses. They are a file representation of how the Artificial Lens has been set up.

Presets are currently stored in the lens dir, but as “.zlp” files. Selecting a preset in the drop down box will automatically apply the preset. Applying a preset will replace all look-relevant values in the Lens tab. Saving a preset will overwrite the file, replacing all stored values.

Knobs: Reset

preset_reset, Button

Revert all changes to the currently selected preset defaults

Knobs:

open_lens_directory_in_explorer, Button

Open the current lens folder specified in environment variable ZEISS_CINCRAFT_LENSCORE_DIR: ZEISS_CINCRAFT_LENSCORE_DIR

The Nuke tooltip will reveal the exact evaluated path of the lens directory folder. If the folder doesn’t exist, it will be created automatically.

Knobs: /

preset_collapse, Button
preset_expand, Button

Hide extra options

More options for presets

Knobs: Save

preset_save, Button

Preset is saved to its file. If it doesn’t yet exist, behaves like save as.

Knobs: Save as

preset_save_as_init, Button

Opens the Save As configuration

Knobs: Scan for presets

preset_refresh_dropdown, Button

Scan for presets in ZEISS_CINCRAFT_LENSCORE_DIR and refresh dropdown

Knobs: Preset name:

preset_name, Text

Will be displayed in dropdown menu.

Currently, names must be unique.

Knobs: Preset description:

preset_description, Text

More detailed description. Not yet displayed except here.

This value is only stored and read from and to his textbox. It currently is not used otherwise.

Knobs: Preset artist:

preset_artist, Text

Preset artist/vendor. Not yet displayed except here.

This value is only stored and read from and to his textbox. It currently is not used otherwise.

Knobs: Filename:

preset_filename, FilePicker

Where to store the preset. Currently only will be found in lens dir: ZEISS_CINCRAFT_LENSCORE_DIR

Currently, all presets MUST be placed in the lens dir for the Plugin to find them.

Knobs: Abort

preset_save_as_cancel, Button

Close the save dialog, do not save.

Knobs: Save

preset_save_as_execute, Button

Executes save as with the given settings. Warns before overwriting a file.

Knobs: Focal length of the lens

lens_focal_length, Slider, min: 1, max: 100, default: 30

The focal length the currently selected lens shall use.

Knobs: Lens design sensor width

lens_design_sensor_width, Slider, min: 1, max: 100, default: 36

The design sensor width of the currently replicated physical lens.

Knobs: Lens design sensor height

lens_design_sensor_height, Slider, min: 1, max: 100, default: 24

The design sensor height of the currently replicated physical lens.

Knobs: Original lens characteristics

original_lens_characteristics, Checkbox, default: 1

Disable to tweak the different lens effects

Knobs: Match scene with lens focal length

match_scene_with_lens_focal_length, Checkbox, default: 1

Disable to enable zoom behavior for lenses

This value is intended to be used when no exactly matching lens is available.

Given a 45 mm rendered scene and a selected 55 mm lens, if the parameter is set, the scene is to rescaled to match the FOV of the lens and no zooming into the scene happens. Unsetting the parameter would cause the 55 mm lens to naturally zoom into the scene.

Group: Bokeh Preview

Contains 3 elements: Preview the bokeh, Use camera data for preview, Preview divider location

Knobs: Preview the bokeh

enable_bokeh_preview, Checkbox, default: 0

Creates a perforation board to preview the currently configured lens effects. Uses generic focus point and wall distances.

This checkbox enables the bokeh preview.

In order to see the behavior of the effect, two black walls with backlights are created: the left wall is placed in front of the focus, the right wall is placed behind the focus. The two walls will be separated by a white line. All together, this will look like a perforated plate over two depths:

Screenshot from bokeh preview in Nuke

The effect is applied to this just like any other scene. All lens effect settings are in place. It is not possible to render this preview in headless mode.

Knobs: Use camera data for preview

bokeh_preview_use_view_data, Checkbox, default: 0

Simulates the behavior with current Camera settings. Can have an effect on maximal possible bokeh sizes.

While only enabling the bokeh preview will create perforated plates specifically to get a bokeh as large as possible, it’s using a fixed focus and f-stop. Using camera data will allow to preview the actual bokeh as it will be seen in the scene.

Knobs: Preview divider location

bokeh_preview_divider_location, Slider, min: 0, max: 1, default: 0.600000

Moves the border between front and back defocus

This slider allows to move the white line (and with it the border between front and back defocus) across the image.

Group: Aperture

Contains 6 elements: Aperture Stop, Number of aperture blades, Aperture blade curvature, Aperture rotation offset, Simulated minimum fstop, Fstop rotation scaling

Knobs: Aperture Stop

stop_type, Dropdown, default: Fstop

Options: [Fstop, Tstop]

Fstop is typically used for CGI renderings. No transmittance losses are taken into account for. Tstop is the default unit for engravings on real lenses.

Allows the use of the Camera node’s f-stop as a t-stop (as it is typically used for real world footage). This option is not available for ZEISS DigitalLens lenses, i.e. ZEISS DigitalLens Lite and ZEISS DigitalLens Pro.

Knobs: Number of aperture blades

num_aperture_blades, Number, default: 0

Sets the number of aperture blades freely.

Use 0 to disable and use no aperture blades. Invalid values will round to the next valid one, e.g. inputs of 1 or 2 will be treated as 3 blades.

Artifcial Lens with num_aperture_blades: 4
Artifcial Lens with num_aperture_blades: 5
Artifcial Lens with num_aperture_blades: 9
Knobs: Aperture blade curvature

aperture_blade_curvature, Slider, default: 0.000000

Sets curvature on the aperture blades. 0 for no curvature, 1 for full circle curvature.

This is treated as an interpolation factor of how close the blades are to a circle. The physical pendant to this feature is the curvature in the aperture fins. With a curvature of 1, the blade effect is fully deactivated independent of the setting in Number of aperture blades. The example images below are rendered with 3 blades.

aperture_blade_curvature of 0.0
aperture_blade_curvature of 0.5
aperture_blade_curvature of 1.0
Knobs: Aperture rotation offset

aperture_rotation_offset, Slider, min: 0, max: 360, default: 0.000000

The rotation offset of the aperture in deg (positive numbers rotate clockwise).

Knobs: Simulated minimum fstop

override_min_fstop, Slider, default: 0.000000

Simulates the minimum fStop. Will impact the interaction between aperture blades and cateye simulation. Should match the physical lens pendant that is simulated. Minimum fstop: 1.0 - set to 0 to use lens default.

This feature is only available for the ZEISS DigitalLens Pro. This allows to define the fStop that corresponds to full the designed cateye shape by using Cateye Bokeh Simulation. The same minimum fStop is used as a starting point for the blade rotation simulation. With increasing fStop, the cateye is less and less visible, as the resulting bokeh is limited by the aperture blades.

The following renders have been made all with the exact same lens settings with the ZEISS DigitalLens Pro with 5 aperture blades and cateye simulation active. The Camera fStop is set to 2.0 for all tests - only the Simulated minimum fStop option is modified in between renderings.

Simulated minimum fStop of 1.0
Simulated minimum fStop of 1.4
Simulated minimum fStop of 2.0
Knobs: Fstop rotation scaling

aperture_fstop_rotation_scaling, Slider, default: 1.000000

The aperture shape rotation is directly related to the selected f-stop. Changing the f-stop results in a dynamic adjustment of the aperture blades’ rotation. This knob controls the scaling of that f-stop-dependent rotation.

A value of 0 disables the fStop dependency on the rotation offset. Negative values will reverse the direction from clockwise to counter-clockwise.