Psyop / Cryptomatte

Cryptomatte Nuke plugin, Fusion plugin, sample images, and specification
BSD 3-Clause "New" or "Revised" License
637 stars 152 forks source link

Question about hashes and manifests #15

Closed vkoylazov closed 7 years ago

vkoylazov commented 7 years ago

Hello,

There is something that is puzzling me in the Nuke plugin implementation. From what I can see, whenever a name is specified in the "Matte List" knob, the plugin directly computes the hash for the name and tries to match the resulting ID with the image data. Wouldn't it make more sense to look up the hash in the manifest, if one is provided? And directly compute a hash only if there is no manifest? This would allow other hashing mechanisms to be implemented without modifying the plugin in any way, or other IDs that are normally generated by the renderer to be used.

Best regards, Vlado

jonahfriedman commented 7 years ago

We did this for robustness reasons. It we did this we'd have to re-parse the manifest and build the extraction expression on every frame. An early version did use the IDs from the manifest, and what would happen is if you changed your "matte list" on a frame where something was hidden, then that object wouldn't be included in the matte on later frames.

To make what you're suggesting robust we would need to re-parse the manifest and rebuild the extraction on every frame, or perhaps something else. There may be other ways as well, such as creating a different string in the matte list when the hash and the manifest disagree similar to the <> syntax for raw IDs. However there's no getting away from it that if we don't know how the matte was computed, we can't know that it will stay the same from frame to frame. Can I suggest that we take this to the Cryptomatte e-mail list?

vkoylazov commented 7 years ago

Ok, I will post on the mailing list after I think some more about this.

Best regards, Vlado