Código:
global proc cambiaatributo3(string $shaderini, string $atributoini, string $shaderfin, string $atributofin)
{
$conexiones=`listconnections -p 1 ($shaderini+.+$atributoini)`;
If (`size $conexiones`>0)
{
Connectattr -f ($conexiones[0]) ($shaderfin+.+$atributofin) ;
}
Else.
{
$color=`getattr ($shaderini+.+$atributoini)`;
Setattr ($shaderfin+.+$atributofin) -type double3 $color[0] $color[1] $color[2];
}
}
Global proc baseshader(string $shaderini, string $shaderfin)
{
Cambiaatributo3($shaderini,color,$shaderfin,csurface),
Cambiaatributo3($shaderini,transparency,$shaderfin,copacity).
Setattr ($shaderfin+.use_simple_diffuse) 1;
$dif=`getattr ($shaderini+.Diffuse)`;
Setattr ($shaderfin+.cds) $dif, tsetattr ($shaderfin+.use_ambient) 1;
Setattr ($shaderfin+.camb) 1.0;
Cambiaatributo3($shaderini,ambientcolor,$shaderfin,ambient_color), tsetattr ($shaderfin+.use_incandescence) 1;
Setattr ($shaderfin+.cinc) 1.0;
Cambiaatributo3($shaderini,incandescence,$shaderfin,incandescence),
$Bump=`listconnections -p 1 ($shaderini+.normalcamera)`;
If (`size $Bump`>0)
{
Setattr ($shaderfin+.use_normal) 1;
Connectattr -f $Bump[0] ($shaderfin+.input_normal) ;
}
}
Global proc fvshadermegatk()
{
String $nombre;
String $Lambert[],$Phong[],$Blinn;
String $spot[],$directional[],$point;
$dummie=`Polycube -n dummiecube -ch on -o on -w 1.0 -d 1.0 -cuv 4`;
Setattr ($dummie[0]+.miexportgeoshader) 1;
$pass=`shadingnode -asshader p_megatk_pass -n ($dummie[0]+_pass)`.
Connectattr -force ($pass+.message) ($dummie[0]+.migeoshader),
String $sg[];
$Lambert=`ls -et Lambert`;
For ($elemento in $Lambert)
{
If ($elemento.=lambert1)
{
Print (Lambert+$elemento+\n),
$sg=`listconnections -p 0 ($elemento+.outcolor)`;
Setattr ($sg[0]+.miexportmrmaterial) 1;
$nombre=$elemento+_mtk;
$nombre=`shadingnode -asshader p_megatk -n $nombre`;
Connectattr -f ($nombre+.message) ($sg[0]+.mimaterialshader),
Baseshader ($elemento,$nombre),
Setattr ($nombre+.use_phong_specular) 0;
}
}.
$Phong=`ls -et Phong`;
For ($elemento in $Phong)
{
Print (phongs->+$elemento+\n),
$sg=`listconnections -p 0 ($elemento+.outcolor)`;
Setattr ($sg[0]+.miexportmrmaterial) 1;
$nombre=$elemento+_mtk;
$nombre=`shadingnode -asshader p_megatk -n $nombre`;
Connectattr -f ($nombre+.message) ($sg[0]+.mimaterialshader),
Baseshader ($elemento,$nombre),
Setattr ($nombre+.use_blinn_specular) 0;
Setattr ($nombre+.use_phong_specular) 1;
Setattr ($nombre+.p_cs) 1;
Cambiaatributo3($elemento,specularcolor,$nombre,p_specular),
$cp=`getattr ($elemento+.cosinepower)`;
Setattr ($nombre+.p_exponent) $cp;
Setattr ($nombre+.use_reflection) 1;
$cp=`getattr ($elemento+.reflectivity)`;
Setattr ($nombre+.creflect) $cp;
$cp=`getattr ($elemento+.refractions)`;
Setattr ($nombre+.use_refraction) $cp;
If ($cp==1)
{
$cp=`getattr ($elemento+.refractiveindex)`;
Setattr ($nombre+.ior_in_refr) $cp;
$shadow=`shadingnode -asshader mib_shadow_transparency -n ($nombre+shadow)`;
Connectattr -f ($shadow+.message) ($sg[0]+.mishadowshader),
tcambiaatributo3($elemento,color,$shadow,color),
Cambiaatributo3($elemento,transparency,$shadow,transparent),
}
}.
$Blinn=`ls -et Blinn`;
For ($elemento in $Blinn)
{
Print (Blinn->+$elemento+\n),
$sg=`listconnections -p 0 ($elemento+.outcolor)`;
Setattr ($sg[0]+.miexportmrmaterial) 1;
$nombre=$elemento+_mtk;
$nombre=`shadingnode -asshader p_megatk -n $nombre`;
Connectattr -f ($nombre+.message) ($sg[0]+.mimaterialshader),
Baseshader ($elemento,$nombre),
Setattr ($nombre+.use_phong_specular) 0;
Setattr ($nombre+.use_blinn_specular) 1;
Setattr ($nombre+.b_cs) 1;
Cambiaatributo3($elemento,specularcolor,$nombre,b_specular),
$cp=`getattr ($elemento+.eccentricity)`;
Setattr ($nombre+.b_eccentricity) $cp;
$cp=`getattr ($elemento+.specularrollof)`;
Setattr ($nombre+.b_specularrollof) $cp;
Setattr ($nombre+.use_reflection) 1;
$cp=`getattr ($elemento+.reflectivity)`;
Setattr ($nombre+.creflect) $cp;
$cp=`getattr ($elemento+.refractions)`;
Setattr ($nombre+.use_refraction) $cp;
If ($cp==1)
{
$cp=`getattr ($elemento+.refractiveindex)`;
Setattr ($nombre+.ior_in_refr) $cp;
$shadow=`shadingnode -asshader mib_shadow_transparency -n ($nombre+shadow)`;
Connectattr -f ($shadow+.message) ($sg[0]+.mishadowshader),
tcambiaatributo3($elemento,color,$shadow,color),
Cambiaatributo3($elemento,transparency,$shadow,transparent),
}
}.
$spot=`ls -typ spotlight`;
For ($elemento in $spot)
{
$nombre=`shadingnode -asshader p_spottk -n $nombre`;
Connectattr -f ($nombre+.message) ($elemento+.milightshader),
Cambiaatributo3($elemento,color,$nombre,color),
$cp=`getattr ($elemento+.intensity)`;
Setattr ($nombre+.intensity) $cp;
$cp=`getattr ($elemento+.coneangle)`;
Setattr ($nombre+.cone) $cp;
t}.
$directional=`ls -typ directionallight`;
For ($elemento in $directional)
{
$nombre=`shadingnode -asshader p_directtk -n $nombre`;
Connectattr -f ($nombre+.message) ($elemento+.milightshader),
Cambiaatributo3($elemento,color,$nombre,color),
$cp=`getattr ($elemento+.intensity)`;
Setattr ($nombre+.intensity) $cp;
}.
$pointl=`ls -typ pointlight`;
For ($elemento in $pointl)
{
$nombre=`shadingnode -asshader p_pointtk -n $nombre`;
Connectattr -f ($nombre+.message) ($elemento+.milightshader),
Cambiaatributo3($elemento,color,$nombre,color),
$cp=`getattr ($elemento+.intensity)`;
Setattr ($nombre+.intensity) $cp;
}
}
Copiarlo y grabarlo como fvshadermegatk.mel.