Advertisment

Visual FX with Openexr 

author-image
PCQ Bureau
New Update

As we saw in the January 2003 issue of PCQuest, computer-generated visual effects are an integral part of almost every movie these days. The demands of the visual effects industry on color is much more than from say, the printing industry. They need richer and a wider range of colors. And they need more fidelity of colors. Existing image formats (8 bit/10 bit) fall way short of quality and color requirements. 

Advertisment

16 bit integer based formats represent color components with values ranging from white to black but even they seem to fall short when it comes to effects such as chrome highlighting or metallic looks.

32 bit floating-point tiff format is an alternative but it provides more precision and dynamic range (contrast) than necessary, leading to an overkill. More importantly, it requires higher investment in infrastructure. Here, movie frames are digitized at 2k pixels or more, creating a very large digital image. So using a 32 bit floating-point format adds an unwanted overhead for both storage and processing. 

Both images are the same image file, with the exposure settings changed on the fly on the image viewer

Advertisment

But visual effects that are today commonly used in films take into consideration out of range data. For example, luminance that can be captured by film negative or HDR (high dynamic range) devices like film scanners and printers. To get more better color reproduction and range in movies without the overheads of 32 bit formats, Industrial Lights and Magic (of Star Wars fame) has introduced the OpenExr image (released as an OpenSource format under the Modified BSD license).

Openexr is a imaging format developed specifically for the VFX industry. This has 16-bit floating point color component format. Because of the lack of an IEEE specification for a 16-bit format, Openexr uses a ‘half’ format that is identical to half data type in NVidia’s Cg graphics language. This 16-bit format has 1 sign bit, 5 exponent bit and 10 mantissa bits. This provides 1024 values per component ( 8 bit formats have only 255 values per color). 

Compatibility to half data type in Nvidia’s Cg graphics language allows the developer to directly process an Openexr image on GeForce Fx, Quadro Fx 3D etc. The format uses lossless image compression algorithms (PIZ, ZIP, RLE) for images to compressed and decompressed repeatedly without loss in detail. 

Advertisment

Openexr also allows for including additional data into the image, camera position, view direction or exposure settings etc. If a particular image viewer does not understand the extra data it can safely ignore it, without missing out on any imageinformation.

Another important feature is the extensibility provided by the C++ programming interface. Different compression codecs can easily be added by using these classes. Two levels of access have been provided, an arbitrary access and a specialized interface for the RGBA channels. Another important feature is that the actual data in the file can be much smaller than the image size. This feature is useful when the artist has to operate on small parts of an image. 

More details at www.openext. net. You will also find the Openexr distribution on this months CD.

Ankit Khare

Advertisment