It’s not a joke. It’s a tool developed by Tangent Animation Studio for belnder to produce a feature film and used by professionals to achieve the very same result you are looking for. Cryptomatte is used in other softwares as well. It’s a default tool in industry sandard app Nuke. If you need help with cryptomatte we can help you. It’s not that complicated, even I figured out how it works the very first time…
Why would you need to parent anything for cryptomatte?
But there is an object ID pass.
Simply divide the output of the indexOB pass by the maximum id you have and hook it up to a color ramp.
You’ll get the same AA problems as in the other 3D packages because object IDs are z buffer passes but it does work if that is not important for you.
@jerzygorskiart
it’s a joke in relation to the idea that it’s a simple way to make puzzlemats. Here’s an example of why… 3ds max 2012 with an old copy of Vray. You drag over all the objects you want to ID and right click on them, go to properties. There you give the ID slot a number. Add VrayObjectID to the render passes and that’s it. When you render, all those objects will be one color. Additionally, you can go to any material and give that a number, then just enable VrayMaterialID in the passes. That’s almost a decade old and it probably worked longer than that.
@Lumpengnom - You don’t necessarily get AA problems in other 3D packages, and if you get AA problems, the masks are useless because now all your edges are going to be jagged in Photoshop when you use those masks. A ten year old version of Vray has the option to turn AA on or off.
As for seed, just add a number to it. Math/add between output of choice and generator node.
I’m still using ObjectID and MatID, only occasionally do I use cryptomatte when the two others fail.
Current Cryptomatte UI in blender ended up in 2.80 but was developed during 2.6,2.7 series.
Now, that Collection concept is settled. It should be improved to use collections, too.
Does Cryptomatte already works outside Blender yet?
It’s horrid to use in Fusion or Nuke, as the rendered files don’t really seem to follow the Cryptomatte specs.
It works in Blender, but the workflow is just… well… it has issues…
@jerzygorskiart: Cryptomatte was developed by Psyop, and quickly became a standard for matting out objects. All renderers support it now. You probably meant that Tangent Animation did the Blender implementation of the Cryptomatte drivers.
Credit where credit is due
I too have struggled a long time with this and for my line of work this inability to offer me flexible masking options is a big disadvantage of Blender. Cryptomatte is technically speaking superior to all other solutions and outputs the best masks, especially working with it INSIDE of Blender works great. But this is the problem: not everybody renders animations and not everybody wants to do post processing in Blender. The tool of choice here is still photoshop for us, especially when you want to do heavier edits than just rebalancing the colors a bit.
I would be satisfied with a traditional clown pass/ID pass that MOST engines can output with a simple click, but so far I have not found a solution that works for me in Blender. And Blenders samey “random”-colors aren’t even my biggest problem. The random color in the material override material only gets randomized PER OBJECT. So objects with several materials get overridden into one solid color block. I import a lot of pretty heavy CAD Objects into Blender to render, the easiest is usually to import them as one object with multiple materials. Splitting them up and putting them into collections would not only be additional work but also would force me to deal with sometimes hundreds of additional objects in a scene. Same applies to stuff we use heavily from the archi packs - doors, windows, etc. They come in one object with multiple materials. If I split them by materials I lose all the parametric editability of them. There is just not a very practical solution currently.
If someone has a suggestion how to achieve random colors per material instead of per object I would be infinitly grateful since it would save me a lot of headaches in my work.
I don’t think it is better or even any good to be honest. It’s just adds sort of more convenient way to render masks manually. That’s really not an elegant solution and it’s quite frustrating to use, but, you can use it if you wish. https://github.com/Martynas-Ziemys/Blender-Scripts/blob/master/MasksAddon.py The idea is to just render the masks as emission shaders and it’s possible to render 3 to one image as RGB and then split them when used. I use it in addition to Cryptomatte for masks that need to be visible through mirrors or refractive objects. I use materials linked to object’s data so the addon links mask materials to object so that original materials are not lost, but I save a copy of the file just for rendering masks so i don’t mess up the original. shift+alt+ctrl+MMB gives me a pie menu. It walks through material slots when assigning so if I need to assign green mask to slot number 5, I just assign green a few times till it’s in the right slot. If I need to assign red to the next slot then it will just understand that the slot needs to be the next one.
Update: I think I better don’t use the Matte output, because I don’t see any alpha in there. The image Output, shows some alpha, so I thinks that is the reason. I will test later on.
I am having a really hard time figuring out how to get a material ID clown pass from blender in a scene that has depth of field.
This is what I have tried and was unsuccessful with:
I can’t use indexMA render pass because it has antialiasing issues. It looks really off, very noisy. Also it’s a pain you have to go an set the material pass index for each material to make it work.
I can’t use the cryptomatte node, because if I want an actual clown pass for all the materials, I’d have to set up a complicated node chain that isolates every material with it’s own cryptomatte node and assigns a color to it, then everything is mixed at the end, tried writing a python script and got it working, but in large scenes compositor crashes due to the amount of nodes.
I can’t use the picker cryptomatte output either because also has antialias issues, and it isn’t really meant for exporting.
I can’t use the view layer → override material trick because it only works for object ids.
The trick some people use by switching to workbench render engine doing a material random viewport render and exporting that does not work when you use dof.
The only thing I have left is to try write a script that replaces every material with a temporary material, I know it’ll work, but this feels way too overkill for something as simple as a material id clown pass.
What am I doing wrong here?
How in the world do I get an actual good looking material id clown pass render that supports depth of field and has no antialias issues?
Well, I’d be very happy to be proven wrong, but clown pass don’t support DOF and antialiasing, since both mixes colors between IDs so when you have say an object A with a red ID next to a obj B with a green ID you get yellow in the edges or in the DOF, which might be the color for object C…
the best solution is to export Cryptomatte passes to your comp app, that way you can extract the masks you need.
Another solution is to do the old school way, you use post processed DOF and motion blur, so nothing is blurred in the first place.
Did you test your generated clown pass from cryptomatte, it’s very likely to fail since you’ll end up with edges issue too…
My use case is concept art, we use clown passes for object ids and material ids to help us be faster in photoshop. It’s a valid workflow and has been used by pretty much everyone for ages. You just use the selection tool and choose a tolerance level, it doesn’t have to be perfect.
The objectid pass I generate (by using view layer and overriding material) is good enough for my use case.
Exporting all the materials individually using cryptomatte is not the best solution because it takes too much time, it has to be quick just like octane, or modo or pretty much any renderer does it out of the box without jumping through hoops. We don’t have time to export 100 material masks one by one, I can’t use a script either because the compositor crashes due to the amount of nodes created. I can’t use “picker” because the output is too low quality.