Chrome Ball
Photometric Stereo via Chrome Ball
The new “Chrome Ball” node supports an alternative method of “Multi-angle to Texture” surface capture via photometric stereo.
Description
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.
Usage
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.
Capture:
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. Note: 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.
Example:
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.
The Chrome Ball node and properties panel:
The node controls are: Mirror 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 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 | Material |
Node execution style | Manual |
Pins
Input Name | Input Type | Description |
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 | Description |
Bitmap(s) | Generates 2 bitmaps; one albedo and one normal map |
Properties
Property/Setting | Description |
Output Type | |
“Bitmap” | Outputs an albedo and a normal map to separate pins |
“Material” | Outputs an albedo and a normal map to a material pin |
Mirror | |
“Mirror” | Indicate the physical mirror used: Sphere or Hemisphere |
Sphere | Mirror is assumed to be one diameter tall |
Hemisphere | 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. |