The new “Chrome Ball” node supports an alternative method of Multi-angle to Texture photometry.
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.
You can check our video tutorial here.
Usage
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.
Scanning
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, 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... 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 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.
*4K recommended max input size. Reduce image count if VRAM is running out. Our current max input size is 7680x4320.
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 analysed 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 |
Input Path | |
“Input Path” | Browse to the input folder or paste in the path accordingly |
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. |