Chrome Ball


The new “Chrome Ball” node supports an alternative method of Multi-angle to Texture photometry. 


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.

4-16 shots of the surface are captured by a fixed-position camera, during the circuit.

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

You can check our video tutorial here.


Photometry 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. 

Top View

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

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 Chrome Ball node has no input pins; instead you simply browse to the input directory path via the properties panel. 

The node controls are...


Sphere or Hemisphere

Shadow Strength

Balance albedo shadows vs. gloss

Normal Gradient Removal

Apply normal-aware gradient removal

Bitmap Output

Material Output

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. 

Upon node execution, the first 16 images in the input folder will be processed in alphabetical order. If there are too few images or if the mask image isn’t present (or not named ‘mask’), the node will trigger an error or produce no result.

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

Use the two settings sliders to adjust your results.

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 analysed 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.