Tutorial: iso-photographic rendering

This tutorial will guide you through the process of iso-photographic rendering.

What is Iso-Photography ?

An iso-photograph ("iso" formerly "equal to") is a computer simulated image that is virtually equal to a photograph. A photograph and iso-photograph, viewed side by side, cannot be differentiated by an human eye.


An iso-photograph is an objective prediction of the appearance of objects and scenes as they would be captured by a digital camera.

Beyond the magic, taking iso-photographs allows you to make the right decision about the choice of materials for your prototypes. Iso-photographic simulation is also a key step in the validation process of the accuracy of your rendering software. Last but not least, video compositing with iso-photograph renderings is more natural and does not require any adjustment effort.

iso-photograph

photograph

Taking reference pictures

Iso-photography process requires different kinds of reference pictures.

The first kinds are reference pictures used to determine the intrinsic parameters of the camera : the focal length, field of view and distortion :





The second kinds are reference pictures used to determine the camera position :






Calibrate the camera with Predictive Cam (standalone)

Calibrate the camera and export the .intrinsic, .extrinsic and .chessboard files from Predict Cam Standalone

Intrinsic camera properties

In order to find and export the camera intrinsic parameters from a series of photographs with Predictive cam (standalone):


Extrinsic camera properties

In order to find and export the camera extrinsic parameters from a photograph with Predictive cam (standalone):


Import the Predictive Cam Standalone camera in Unity

Once you have exported the camera from Predictive Cam (standalone):

Import the geometries in Unity

To create an iso-photography, you must have all the objects and lights modelized in 3D in your scene.

Import all the corresponding geometries in Unity and place them roughly in the scene you created. Make sure you don't move the camera in the process.

The chessboard used for the camera calibration can be imported differently, especially if you have access to the .chessboard file from Predict Cam Standalone : 

You can also create a chessboard manually with your own geometry and texture, but you must make sure that the origin of your GameObject is placed on a white corner of the chessboard

Place the geometries precisely in the scene

Add the reference image as a backplane

To be able to place the geometries precisely in the scene, import the reference picture and place it as a transparent overlay in front of your camera :

Position the geometries

Once the overlay is ready, move your geometries in the scene to fit precisely their position in the reference picture.

You can change the transparency of the plane by changing the "Color" field on the "Image" component.


When all the geometries are placed precisely, make sure to disable the Canvas GameObject. Otherwise it will be visible when you start the Predictive Engine render.

Set the right materials

Measurement

All materials and objects in the scene shall to be measured to output iso-photographic image of high quality and accuracy:

It is recommended to use measurements that are as close as possible to the true materials used in the scene.

It is strongly recommended to use spectral measurement instead of RGB to gain in accuracy

See the Physics section for more details on spectral rendering.

Association

In Predictive Engine, a material defines the separation between two mediums on each side of the mesh the material is applied on.


When an object is made of multiple parts with different materials, its mesh must be separated into separate sub-meshes such that each sub-mesh is associated with a single material.


In the specific case of a Dielectric of Conductor partially contained within another Dielectric, the surfaces of the meshes should be cut along the change of mediums. For instance, a partially filled glass of water needs 3 materials and sub-meshes for each combination of mediums between air, water and glass: air-water, air-glass, water-glass.

It is the direction of the normal of the surface that indicates the external medium. See the detailed documentation for more details on normals.

Some material require properly defined texture coordinates on the mesh to function as expected.

Set the right lights

Lights are usually built from AreaLight with a specific mesh as a support for the shape of the light source. They need to be positioned and oriented in the same way as their real counterpart and be associated with the correct material.

The measurement of light properties encompasses their spectral and angular distributions. It is of extreme importance that it is done accurately since it has a large impact on the colors and brightness of the rendered scene.

Rendering the iso-photography

The last step before starting the rendering is to define the camera as a Photographic Camera or Bayer Camera and use the measured response curves of the camera sensor for the channel R, G and B. Once your scene is ready, you can start the application to get the Predictive Engine render. Don't forget to set the correct resolution and aspect ratio in the Unity Game tab.