Looking to write a script to convert vray shaders to redshift shaders

Looking to write a script to convert vray shaders to redshift shaders

film_guy01
Explorer Explorer
4,407 Views
1 Reply
Message 1 of 2

Looking to write a script to convert vray shaders to redshift shaders

film_guy01
Explorer
Explorer
 
 So I've written this script to take all redshift shaders and change the reflection color to black. 
{
    string $m;
    string $ms[] = `ls -type "RedshiftMaterial"`;
    for ($m in $ms)
    {
        setAttr ($m + ".refl_color") -type double3 0 0 0;
    }
}
This was just a test to see if I could write a script that would take all of one attribute from one type of shader and change all of them to a specific value at once. So far, so good.
 
 
Now I've started writing a script that will change all vray shaders to redshift shaders and copy all attributes over. I'm not a savy enough programmer to know if this is a ridiculously difficult task so let me know if it would require pages and pages of code. This is what I've got so far (see below). It takes a vray shader and converts it to a redshift shader, but the name is different and none of the attributes copy over. The attribute names are different on each shader. For instance VRayMtl.color is the same as rsMaterial.diffuse_color. So obviously there would have to be some sort of thing where each attribute would be mapped to a new attribute. I'm kind of stuck that this point though. Even if I had a script that would map a single attribute from a vray shader to the corresponding attribute on a redshift shader I could probably figure it out from there. Would someone be able to point me in the right direction for that?
 
Thanks!
 
{
    string $newMaterialType = "RedshiftMaterial";
    string $nm = `createNode $newMaterialType`;
    string $ms[] = `ls -type "VRayMtl"`;
    string $pa[] = `listAttr -visible -settable -scalar $ms`;
    string $nma[] = `listAttr -visible -settable -scalar $nm`;
    string $ca[] = stringArrayRemove($nma, $pa);
        $ca = stringArrayRemove($ca, $pa);
    delete $nm;
    string $a; string $m; float $v; string $cl[];
    for ($m in $ms)
    {
        $nm = `createNode $newMaterialType`;
        $cl = `listConnections -destination true -plugs true -source false -type shadingEngine $m`;
        connectAttr -f ($nm + ".outColor") ($cl);
        for ($a in $ca)
        {
            $v = `getAttr ($m + "." + $a)`;
            catchQuiet(`setAttr ($nm + "." + $a) $v`);
        }
        delete $m;
    }
};
 
0 Likes
4,408 Views
1 Reply
Reply (1)
Message 2 of 2

773340
Community Visitor
Community Visitor

does not work, only  remove vray materials

0 Likes