Versions Compared


  • This line was added.
  • This line was removed.
  • Formatting was changed.


Photometric Stereo via Chrome Ball


The new “Chrome Ball” node supports an alternative method of Multi“Multi-angle to Texture photometryTexture” surface capture via photometric stereo


This new node generates a high-quality Albedo and Normal map by analyzing multiple photos of a surface taken with different lighting angles, upon which a reflective sphere was placed.


ArtEngine then uses the reflection in the Chrome Ball to calculate lighting directions and generate a Normal and Albedo map of the scanned surface. 



Photometry Photometric Stereo requires a defined capture method in order to work. With regular MAtT (Multi-Angle to Texture), this typically involves a rigid photometry rig with fixed-position lights. The Chrome Ball method is a more convenient, and flexible approach, not requiring a hardware rig or fixed lighting, and is therefore suitable for outdoor and casual scanning.

Before using the Chrome Ball functionality in ArtEngine you will need to have completed your scanning session and have your images ready for processing.

Scanning using a Chrome Ball

What you need:

  • Camera - with remote or timer release

  • Tripod - plus a bracket/extension if shooting the ground

  • Light - bright hand-held torch / flashlight / flash (LED with no lens banding)

  • Chrome Ball - a reflective sphere (e.g. polished stainless steel or obsidian) 

  • Darkness or low-light (no sunlight)

Sphere size and type:

The image of the sphere in your scans must be clear enough for analysis. Three variables will affect this: Camera distance, image resolution and the physical size of the sphere. If the sphere itself becomes pixelated, accuracy and quality will decline. Recommended diameter is 3-5cm.

Considerations - planning your scanning session...:

  • Your directional light must be the dominant light source, to both illuminate the surface and create a distinct reflection point on the sphere for analysis, so low-light (i.e. dusk or night) is recommended for outdoor capture, or a dark room for indoor capture. If scanning at night, moonlight is generally OK if your own light source is brighter.

  • A good technique is to set your camera exposure to have a black response when your light is off and then take photos with the light on.

  • The camera, surface and Chrome Ball must remain static during the scanning session - only the lighting direction should change per shot.

  • Larger capture areas will need stronger and wider illumination.



Once your camera is firmly positioned and the ball placed in-shot, shine the light at the scan center and take up to 16 photos as you circuit the scene. Spacing need not be exact but you should light the scene evenly from all around. 

Hold the light roughly equidistant from the scan center as you circuit your scene. 

Point the light at the scan center point (where the camera lens is also pointed), not at the chrome ball itself (unless it happens to be centered).

Hold the light steady during each shutter release. 

Avoid casting shadows across your surface, e.g. from the tripod. 

Image Removed
Image Added

Top View

Image Removed
Image Added

Side View

Maintain a vertical lighting angle of around 45° to the scan center or within the ‘safe zone’ illustrated.

One or more circuits may be made during the session and the angles varied.


The light need not be hand-held. It can be repositioned between shots, or a set of fixed-position lights used, as in a rigid photometry rig. 

Processing in ArtEngine:

Once you have your image files ready on your PC, there is one manual step before processing them in ArtEngine. To perform the analysis, the algorithm also needs the position of the ball. As the camera, sphere, and surface itself remained static, one of the scans may be used as a guide to create a solid black mask with a white disc indicating its location and size.

Create and add a mask image...:

Using any one of your scans, create a simple black mask image of the same dimensions, with a white disc placed on the chrome ball, then save this mask image to your scan directory with the other files, with ‘mask’ in the filename. The mask must be pure black and white.


One scan of a set

The mask for that set

Image Removed
Image Added
Image Removed
Image Added

You can create this mask in ArtEngine by importing any one of your images and adjusting the Mask Paint brush size (diameter) to paint a single disc on the ball, then outputting this mask to your scan folder.

The Chrome Ball node and properties panel



The node controls are




Sphere or Hemisphere

Shadow Strength

Balance albedo shadows vs. gloss

Normal Gradient Removal

Apply normal-aware gradient removal

Image Removed
Image Added

Bitmap Output

Material Output

Image Removed
Image Added
Image Removed
Image Added

Executing the node:

Once the images and mask are saved together, add a Chrome Ball node, specify the path in the properties panel, then execute the node. 


If everything is correct, the node will analyse analyze all the images and generate an accurate Albedo and a Normal map as its output.

Use the two settings sliders to adjust your results


.Calibration Config File

As of version 2022.5.1:

We have changed the names on the Multi-Angle To Texture (MAtT) node to match the Chrome Ball node property naming conventions.

You can also use the Chrome Ball node to process images from a custom rig (up to 16 images) using a custom or auto generated calibration config file. Every time a set of images are run through the Chrome Ball node, a calibration config file will be generated in %appdata%\.artomatix as chromeconfig .json. This calibration config file can be used with all future rig captures without needing to have the physical chrome ball present in your photos (avoiding having to draw the mask image) 

When a calibration file is used, the 3 manual properties are disabled as they are set from the file. These values can be changed. The file in %appdata% will be overwritten every single time the nodes are executed and it is recommended to copy the calibration config file to a different location for re-use. The processing times when using a calibration config file are now much quicker than the standard process. 

Similar to right clicking a selection of images for the MAtT node, simply right click a selection of 4 or more maps to connect all inputs automatically. Don’t include the mask in this selection, as there is a separate input pin for the mask. If using our batching output, the batch folders need to have the exact same order and number of images for this to work.

Node Reference

Node category


Node execution style



Input Name

Input Type


No input pin(s). 

Input path is specified

Multiple Bitmaps (3-17)

The input images (bitmaps) and the mask image are


analyzed and an albedo and normal map generated.

Output Type



Generates 2 bitmaps; one albedo and one normal map




Output Type


Outputs an albedo and a normal map to separate pins


Outputs an albedo and a normal map to a material pin

Input Path

“Input Path”

Browse to the input folder or paste in the path accordingly



Indicate the physical mirror used: Sphere or Hemisphere


Mirror is assumed to be one diameter tall


Mirror is assumed to be one radius tall

Shadow Strength

Balance shadows vs. gloss. This option will not affect the computation of the normal or the basis for the albedo so re-computation after changing this value has been optimized, range 0 to 1.

Normal Gradient Removal

Applies normal-aware gradient removal to the resulting normal map, range 0 to 1.