Cryptomatte vs. OpenEXR/Id

05 May 2016

Cryptomatte

The first time I have heard about Cryptomatte was last year just after SIGGRAPH. I think Psyop published a SIGGRAPH poster last year, but it disappeared from their web site. Anyway there is still a video available on Vimeo:

Update

Jonah Friedman just provided a link for the SIGGRAPH poster.

OpenEXR/Id

Recently it was brought to my attention that Guerilla Render (version 1.4.0b35) published a similar idea and made their implementation available to the public by making it open source:

Arnold

So basically that left us with a Nuke plugin which (thanks to OpenFX) can be used for Natron as well. We also found some example files which we immediately could try with the plugins. The next step was to develop an Arnold output driver to create images like that ourselves during rendering. Here some very early screenshots (from interacting with those images within Nuke):

.

I used the alWriteIds shader from Anders Langlands alShaders with one of my .ass test scene files (Arnold’s native scene description file format):

...
options
{
...
 outputs 11 1 STRING
...
  "id.shapeName POINTER filter shape_names" 
  "id.shapeName1 FLOAT filter shape_names" 
  "id.shapeName2 FLOAT filter shape_names" 
...
}
...
driver_deepexrid
{
 name shape_names
 filename "cafe_scene1.exrid" 
}
...
alWriteIds
{
 name MAred_porcelain_ids
 passthrough MAred_porcelain
 string "Shape Node Name" 
}

standard
{
 name MAred_porcelain
...
}
...

In your favourite text editor you can search and replace all Shape Node Name strings from the previous example by Shader Node Name and the resulting image will contain shader names instead (of shape names):

.

I hope one or the other will be a standard soon, so more renderers will support writing out IDs in such a way that it can be used in (various) compositing applications.