@classmethod
    def create_generic_tooth_shader(cls):
        shader_name = 'toolbox_generic_tooth_shader#'
        selection = pm.ls(sl=1)

        shader_tree = {
            'type': 'aiStandard',
            'class': 'asShader',
            'attr': {
                'color': [1, 0.909, 0.815],
                'Kd': 0.2,
                'KsColor': [1, 1, 1],
                'Ks': 0.5,
                'specularRoughness': 0.10,
                'specularFresnel': 1,
                'Ksn': 0.05,
                'enableInternalReflections': 0,
                'KsssColor': [1, 1, 1],
                'Ksss': 1,
                'sssRadius': [1, 0.853, 0.68],
                'normalCamera': {
                    'output': 'outNormal',
                    'type': 'bump2d',
                    'class': 'asTexture',
                    'attr': {
                        'bumpDepth': 0.05,
                        'bumpValue': {
                            'output': 'outValue',
                            'type': 'aiNoise',
                            'class': 'asUtility',
                            'attr': {
                                'scaleX': 4,
                                'scaleY': 0.250,
                                'scaleZ': 4,
                            }
                        }
                    }
                }
            }
        }

        shader = auxiliary.create_shader(shader_tree, shader_name)

        for node in selection:
            # assign it to the stand in
            pm.select(node)
            pm.hyperShade(assign=shader)
Server copy an object from a container to another one.
dataset/ETHPy150Open eoyilmaz/anima/anima/env/mayaEnv/toolbox.py/Render.create_generic_tooth_shader--crossover with--dataset/ETHPy150Open runabove/python-runabove/runabove/storage.py/ContainerManager.copy_object