Introducing Photometric Stereo via Chrome Ball, a handy new way to create original and incredibly photorealistic PBR materials from just about any surface.
This new ArtEngine node automatically generates detailed Albedo and Normal maps by analyzing multiple photos of a static surface – lit from various angles – upon which a chrome ball, or reflective sphere, has been placed.
With this Photometric Stereo technique, you can more quickly capture surfaces, both indoors and out, to create your own high-quality PBR material.
All you need is your camera, tripod, light source, a reflective ball, a dark setting, and of course, ArtEngine.
Set up your scene in low-light conditions, place a chrome ball in the shot, and take four to 16 photos with your fixed camera, repositioning the light each time. Back at your computer, add a mask, import the images into ArtEngine, and execute the node. Crop out the ball, and you’re all done.
In each image, the reflection on the chrome ball is used to estimate the light direction. By analyzing all of the images, ArtEngine can generate a Normal and Albedo map with accurate surface characteristics.
Capturing the subtle and coarse details of real-world surfaces can be quite challenging for artists and technicians looking to increase realism. In fact, this typically requires custom equipment.
By observing an object under different lighting conditions, you can estimate the surface normals. This is known as the Photometric Stereo technique. ArtEngine’s Multi-angle to Texture node supports this technique but requires strict lighting angles, often achieved by using a custom scanning rig.
But now, Photometric Stereo via Chrome Ball offers similar professional results, while making the overall process quicker, cheaper, and more flexible than before.
Here's a more detailed list of what you need to get started:
Select a sphere that is polished and highly reflective. Some options include:
Your light can be handheld. After all, strict lighting angles are no longer expected. Just circuit the scene either clockwise or counterclockwise (or mixed).
Nothing should move during your session, except for you and the light as you reposition it.
Point the light to the center of the surface for each shot and maintain a consistent distance.
Avoid casting shadows from the tripod onto your scene.
To simplify things, keep the light and camera roughly equidistant from the scan center.
During the circuit, maintain about a 45° vertical lighting angle from the scan center or within the illustrated ‘safe zone.’
Hold the light steady for each shutter release.
The darker your unlit scene, the better. Aim for nighttime outdoors or a darkened room. Your own light must be the dominant light source, though some ambient lighting is generally okay (i.e., dusk or moonlight).
Remember, your light must both illuminate the surface and create a distinct reflection point on the sphere for analysis. A bright LED torch without lens banding is recommended. Some torches even let the lens be unscrewed to expose the LED(s), offering a bright, unrefracted light source.
Once set up, the camera should remain rigid and static throughout the session. Use timed intervals or a remote control to release the shutter.
Another best practice is to set your camera exposure so that it has a black response when your light is turned off. Then take photos with the light on.
The camera should be rigidly fixed via tripod (or similar method), to offer enough freedom for illuminating the scene from various directions.
Scan surface area
Larger areas will need stronger illumination. A larger chrome ball might be necessary if the camera distance is increased.
Sphere size (relative)
The image of the sphere in your scans must be clear enough for analysis. Three variables will impact this: Camera distance, image resolution, and the physical size of the sphere. If the sphere itself becomes pixelated, accuracy will decline. For most purposes, the recommended diameter is 2-4 cm. On smooth surfaces, use a washer for stability. Polish off any dirt or smudges when placing your sphere.
Number of scans
A maximum of 16 images can be processed. It is recommended to take at least four, depending on your desired level of realism. It’s totally fine to overlap shots after a circuit.
Once your scanning session is complete and your images are ready, there’s only one more key step needed to process them in ArtEngine.
To perform the analysis, the algorithm requires a simple mask image to indicate the position of the ball. Because the camera, sphere, and surface itself remain static, any one of your input scans can be used to create a black mask with a white disc to indicate the sphere size and location. Your mask must be 100% black and white (no grey tones).
Create this mask in ArtEngine by importing any of your images. Then adjust the Mask Paint brush size (diameter) to cover the ball, ignoring any shadows.
If the sphere is not placed near the scan center, it can appear elongated due to lens distortion. In this case, shift it slightly toward the center. Note that it’s more important to create a simple round disc than to specify some kind of ellipse. Don’t worry about painting in every small detail.
Next, output this mask to the same folder as your scans, with the word ‘mask’ in the file name. ArtEngine will automatically save it as a black and white image. Now you’re prepared to process your images and create your PBR material.
Importing your images
Unlike the standard Multi-Angle to Texture node, where individual images are wired to input pins, the Chrome Ball node lets you input, or browse to your input folder via the node properties panel.
There are three settings available in the properties panel: Mirror Shape, Shadow Strength, and Normal Gradient Removal.
Mirror Shape (drop-down)
This serves to specify whether a sphere or hemisphere was used, which in turn, tells the algorithm if the object was roughly one diameter or one radius high, respectively. Mirror Shape therefore ensures that calculations are accurate. Reflective hemispheres are harder to find/make, but cast less shadows.
Shadow Strength (slider)
When producing an Albedo image with the mirror ball technique, information about the accuracy of its computation is already available. This information can be used to compensate for errors in the Albedo image. Generally, this is a shadow/gloss trade-off. Increasing the shadow strength keeps more shadows, removes gloss – and vice versa. This option will not affect the computation of the Normal, or the basis for the Albedo, so recomputation after changing this value has been optimized (range zero to one).
Normal Gradient Removal (slider)
This applies normal-aware gradient removal to the resulting Normal map (range zero to one). The node can then output as either two separate maps or a single material.
Upon node execution, the first 16 images in the input folder (along with the mask) are processed in alphabetical order. If there are too few images or the mask image isn’t present, the node will trigger an error or produce no result.
Once your material is generated, all of ArtEngine’s power becomes available to you. Just remove the processed Chrome Ball from your material to make it tileable, add variations, adjust blends, and so on.
The most convenient way to remove the processed Chrome Ball is to crop it out (i.e., if/when you crop your material to create a square).
To remove it manually, without cropping, use the Clone Stamp to first remove it from the Albedo map. Then execute the node to automatically remove it from the Normal map.
Alternatively, leverage ArtEngine’s AI-powered Mutation or Seam Removal nodes to replace the area containing the ball with new image data.
Please note that while your images do not need to be square, all of them (including the mask) must have identical dimensions.
We hope that you enjoyed this post, and look forward to seeing the stunning materials you’ll make with Photometric Stereo via Chrome Ball in ArtEngine.
For more, join our community discussion and Q&A on our Discord channel. We’d love to hear your suggestions for refining this technique.