@classmethod
    def create_ea_matte(cls):
        # get the selected objects
        # for each object create a new surface shader with the opacity
        # channel having the opacity of the original shader

        # create a lut for objects that have the same material not to cause
        # multiple materials to be created
        daro = pm.PyNode('defaultArnoldRenderOptions')

        attrs = {
            'AASamples': 4,
            'GIDiffuseSamples': 0,
            'GIGlossySamples': 0,
            'GIRefractionSamples': 0,
            'sssBssrdfSamples': 0,
            'volumeIndirectSamples': 0,

            'GITotalDepth': 0,
            'GIDiffuseDepth': 0,
            'GIGlossyDepth': 0,
            'GIReflectionDepth': 0,
            'GIRefractionDepth': 0,
            'GIVolumeDepth': 0,

            'ignoreTextures': 1,
            'ignoreAtmosphere': 1,
            'ignoreLights': 1,
            'ignoreShadows': 1,
            'ignoreBump': 1,
            'ignoreSss': 1,
        }

        for attr in attrs:
            pm.editRenderLayerAdjustment(daro.attr(attr))
            daro.setAttr(attr, attrs[attr])

        try:
            aov_z = pm.PyNode('aiAOV_Z')
            pm.editRenderLayerAdjustment(aov_z.attr('enabled'))
            aov_z.setAttr('enabled', 0)
        except pm.MayaNodeError:
            pass

        try:
            aov_mv = pm.PyNode('aiAOV_motionvector')
            pm.editRenderLayerAdjustment(aov_mv.attr('enabled'))
            aov_mv.setAttr('enabled', 0)
        except pm.MayaNodeError:
            pass

        dad = pm.PyNode('defaultArnoldDriver')
        pm.editRenderLayerAdjustment(dad.attr('autocrop'))
        dad.setAttr('autocrop', 0)
creates "ebesinin ami" matte shader with opacity for selected
dataset/ETHPy150Open eoyilmaz/anima/anima/env/mayaEnv/toolbox.py/Render.create_ea_matte