Maya Mel

From Antoine Vienne | Wiki
Revision as of 17:12, 6 May 2021 by Walter (talk | contribs) (Select all meshes in a group)
Jump to navigation Jump to search

Contents

Maya Mels Scripts

Octane Render Baking group id - Assign id to multiple objects shapes

// 0 is for Red, 2 for Green, 4 for Blue
// 3, 5 and 6 for Cyan, Magenta and Yellow
// Replace the number "0" by the number of your choice
// Baking group id is also avalaible in Attribute Spreadsheet Editor

for ( $object in `ls -sl -l` ) {
    print($object+"\n");
    setAttr ($object + ".octBakGrId") (0);
}

Maxwell Render - Particles sequence - Force .abc file

//This expression force Maya to reload an Alembic particles file at each frame - there is no other way in Maxwell Render to read a particles sequence in .abc

global int $current_frame;
$current_frame = `currentTime -query`;
print $current_frame;
{
setAttr -type "string" maxwellRFRKParticles1.file ("/YOUR_PATH/YOUR_FILE" + $current_frame + ".abc");
}

Maxwell Render - Specify object ID color

// Specify object ID color

for ( $object in `ls -sl -l` ) {
    print($object+"\n");
    setAttr ($object + ".mxSpecifyObjIdColor") (1);
    setAttr ($object + ".mxObjIdColor") -type "double3" 1 0 0;
}

Redshift - Add blend attribute and set random value for objects selection

// Useful for blending between colors with RedshiftUserDataScalar

for ( $object in `ls -sl -l` ) {
    print($object);
    addAttr -ln "blend" -at double  -min 0 -max 1 -dv 0 $object;
    setAttr ($object + ".blend") (rand(1));
}

Redshift - Set Primary visibility off for selection (layer override)

// Go in right render layer and select objects

for ( $object in `ls -sl -l` ) {
    print($object+"\n");
    setAttr ($object + ".rsEnableVisibilityOverrides") (1);
    editRenderLayerAdjustment ($object + ".rsPrimaryRayVisible");
    setAttr ($object + ".rsPrimaryRayVisible") (0);
}

Convert Motion trail to curve

// Select the motion trail first

{
$selected=`ls -dag -et snapshotShape`;
for ($obj in $selected){
$pts=(getAttr($obj+".pts"));
$size=size($pts);
$curve=`curve -d 1 -p $pts[0] $pts[1] $pts[2] -p $pts[4] $pts[5] $pts[6] -k 0 -k 1`;
for($i=8;$i<$size;$i+=4)
curve -os -a -p $pts[$i] $pts[$i+1] $pts[$i+2] $curve ;
}
}

Quantize keyframes for selection

// Snap keys on frames for objects selection

for ( $object in `ls -sl -l` ) {
    print($object+"\n");
    snapKey $object;
}

Loop image sequence for texture

// On File texture, check Image sequence, and edit expression

file1.frameExtension=((frame%8)+1);

Symmetrize - Duplicate & merge object

// Select half object first

for ( $object in `ls -sl -l` ) {
    print($object+"\n");
    xform -piv 0 0 0 $object;
    duplicate -rr;
    setAttr ($object + ".scaleX") (-1);
    select -add $object ;
    polyPerformAction polyUnite o 0;
    polyMergeVertex  -d 0.0001 -am 1 -ch 1;
    DeleteHistory;
    rename ($object);
}

Mirror object

// Select object first

for ( $object in `ls -sl -l` ) {
    print($object+"\n");
    DeleteHistory;
    makeIdentity -apply true -t 1 -r 1 -s 1 -n 0 -pn 1;
    xform -piv 0 0 0 $object;
    duplicate -rr;
    setAttr ($object + ".scaleX") (-1);
    DeleteHistory;
}

Group each object and rename

// Select objects first

for ( $object in `ls -sl -l` ) {
    string $name = ($object);
    select $object ;
    doGroup 0 1 1;
    rename ($name + "_GRP");
}

Change path in an Attribute

// Here the Attribute is ".filePrefix" - Select objects first

for ( $object in `ls -sl -l` ) {
    string $path = getAttr ($object+".filePrefix");
    $path = `substitute "//OLD/PATH/" $path "//NEW/PATH/"`;
    setAttr -type "string" ($object+".filePrefix") ($path);
}

Change opacity mode on V-Ray shaders

// Select shaders first

for ( $object in `ls -sl -l` ) {
    if (attributeExists("omode",$object)) { //check if attribute exists
        CBunlockAttr ($object+".omode"); //unlock opacity mode
    }
    if (attributeExists("opacityMode",$object)) {
        setAttr ($object+".opacityMode") 1; //set opacity mode in Clip - 0 pour Normal
    }
}

// Alternative
for ( $object in `ls -sl -l` ) {
    if (attributeExists("opacityMode",$object)) {
        setAttr ($object+".opacityMode") -l false; //unlock attribute if locked
    }
    if (attributeExists("opacityMode",$object)) {
        setAttr ($object+".opacityMode") 2; //set opacity mode in Clip - 0 pour Normal
    }
}

Change color space on selected fileTextures

// Useful to automatically convert Quixel Megascans by example from sRGB/Raw to ACES color spaces

string $object_selection[] = (`ls -sl`);
for ($object in $object_selection) {
    if(`getAttr ($object+".cs")` == "sRGB"){
        setAttr ($object + ".cs") -type "string" "Utility - sRGB - Texture";
    }
    if(`getAttr ($object+".cs")` == "Raw"){
        setAttr ($object + ".cs") -type "string" "Utility - Raw";
    }
}

Redshift - custom Tesselation on selected objects

// Select objects first

for ( $object in `ls -sl -l` ) {
    print($object+"\n");
    setAttr ($object + ".rsMinTessellationLength") (0.1);
    setAttr ($object + ".rsMaxTessellationSubdivs") (2);
    setAttr ($object + ".rsOutOfFrustumTessellationFactor") (4);
}

Change color on selected shaders

// Select shaders first
for ( $object in `ls -sl -l` ) {
    print($object+"\n");
    setAttr ($object + ".color") -l false;
    setAttr ($object + ".color") -type "double3" (0.18) (0.18) (0.18);
}

Change Filter Type on selected Files Textures

// Select files textures first - 0 means Off
for ( $object in `ls -sl -l` ) {
    print($object+"\n");
    setAttr ($object + ".filterType") 0;
}

Clean Render Layers

// In MEL
fixRenderLayerOutAdjustmentErrors;

Change Filter Type on selected Files Textures

// Select files textures first - 0 means Off
for ( $object in `ls -sl -l` ) {
    print($object+"\n");
    setAttr ($object + ".filterType") 0;
}

Select by name

// Select objects with "toto"
select -r "toto*";

Display color on shapes

// Select objects
for ( $object in `ls -sl -l` ) {
    print($object+"\n");
    setAttr ($object + ".displayColors") 1;
    setDisplayColorChannelAttribute ($object + ".displayColorChannel");
    polyColorPerVertex -r 1 -g 0 -b 0 -a 1 -cdo;
}

Geometry Constraint on multiple selection

// Select objects to constrain
string $objectBase = "surfaceName";

for ( $object in `ls -sl -l` ) {
    select -cl;
    select $objectBase;
    select -add $object;
    geometryConstraint -weight 1;
    select -r "*Constraint*";
    doDelete;
}

=== Speed up smokes rendering with V-Ray ===
<pre>
// Select smokes first
for ( $object in `ls -sl -l` ) {
    print($object+"\n");
    setAttr ($object + ".rendStep") 160;
    setAttr ($object + ".shadowStep") 400;
}

Set bump multiplier on multiple V-Ray shaders

// Select shaders
for ( $object in `ls -sl -l` ) {
    if (attributeExists("bumpMult",$object)) {
        setAttr ($object + ".bumpMult") -1; //set bump multiplier at -1
    }
}

STOP/START viewport

// As seen on https://www.toadstorm.com/. - Put it in your shelf
paneLayout -e -manage false $gMainPane

paneLayout -e -manage true $gMainPane

Select curves by name

// Select objects first - Replace "toto" by what you are looking for

select `ls -type "nurbsCurve" "*toto*"`;

Noise expression

// Replace "pCube1"

pCube1.translateX=sin(time*20)*0.01*noise(time*10);
pCube1.translateY=sin(time*4)*0.01*noise(time*10);
pCube1.translateZ=sin(time*12)*0.01*noise(time*10);

V-ray - Make curves renderables

// Replace VRayLightMtl1 at the end by your material

$selected=`ls -dag -et curveShape`;
for ($object in $selected){
    // Add V-ray Extra attributes
    vray addAttributesFromGroup $object vray_nurbscurve_renderable 1;
    vrayAddAttr $object vraySeparator_vray_nurbscurve_renderable;
    vrayAddAttr $object vrayNurbsCurveRenderable;
    vrayAddAttr $object vrayNurbsCurveMaterial;
    vrayAddAttr $object vrayNurbsCurveTesselation;
    vrayAddAttr $object vrayNurbsCurveStartWidth;
    vrayAddAttr $object vrayNurbsCurveLockEndWidth;
    vrayAddAttr $object vrayNurbsCurveEndWidth;
    setUITemplate -pst attributeEditorTemplate;
// Activate renderable
setAttr ($object + ".vrayNurbsCurveRenderable") 1;
// Replace VRayLightMtl1 by your material
connectAttr -force VRayLightMtl1.outColor ($object + ".vrayNurbsCurveMaterial");
}

Get object type

// Replace toto with the object whose type you want to know

objectType toto;

Render layer override on specific object type

// Replace "Node" by the object type on which you want to act

$selected=`ls -type "Node"`;
for ($object in $selected){
    // Create layer override on Primary Visibility attribute on current renderLayer
    editRenderLayerAdjustment ($object + ".primaryVisibility");
    // Set Primary Visibility - 0 or 1
    setAttr ($object + ".primaryVisibility") 0;
}

V-ray - Make lights invisible

$selected=`ls -type "VRayLightRectShape"`;
for ($object in $selected){
    setAttr ($object + ".invisible") 1;
}

$selected=`ls -type "VRayLightSphereShape"`;
for ($object in $selected){
    setAttr ($object + ".invisible") 1;
}

$selected=`ls -type "VRayLightDomeShape"`;
for ($object in $selected){
    setAttr ($object + ".invisible") 1;
}

V-ray - Select Rect Light

select `ls -type "VRayLightRectShape"`;

V-ray - Rect Lights - Directional Preview - Always for all

$selected=`ls -type "VRayLightRectShape"`;
for ($object in $selected){
    setAttr ($object + ".directionalPreview") 1;
}

Randomize rotation on selected objects

// As posted on CGTalk by NaughtyNathan
// "just set the vector values to the maximum random x,y,z rotations you want to apply to the selected transforms."

vector $rndRot = << 0,0,90 >>;	// x,y,z rotations
for ($object in `ls -sl -tr`){
    rotate `rand ($rndRot.x)` `rand ($rndRot.y)` `rand ($rndRot.z)` $object;
}

Quit Maya

// Brute force method

$i = `getpid`; //application ID
    system("taskkill /PID "  + $i +" /f");

// In a gentle way

evalDeferred("quit -f");

V-ray - Import list of Alembics through Proxys Import

// List of Alembics files - Replace by the name of your Alembics
string $alembicsParts[] = {"part1","part2","part3"};

// Replace the PATH of your files - Scale by 100 for Houdini Alembics - <frame04> for sequences
for ($alembicsPart in $alembicsParts){
    vrayCreateProxy -node $alembicsPart -existing -dir ("C:/YOURPATH/"+$alembicsPart+".<frame04>.abc") -createProxyNode;
    setAttr ($alembicsPart+"_vraymesh.animType") 1;
    setAttr ($alembicsPart+".scaleZ") 100;
    setAttr ($alembicsPart+".scaleX") 100;
    setAttr ($alembicsPart+".scaleY") 100;
}

V-ray - Change path to VRayMesh for selected proxies

// Change path with your own .vrmesh
$selected=`ls -type "VRayMesh"`;
for ($object in $selected){
    setAttr -type "string" ($object + ".fileName2") "//DISK/PATH/YOUR_VRMESH.vrmesh";
}

// If you want to change Geometry type - 4 for GPU mesh - add following in the loop
//    setAttr ($object + ".geomType") 4;

Delete image planes

// Delete image plane if exists.
$selected=`ls -type "imagePlane"`;
select $selected;
for ($object in $selected){
    doDelete;
}

Merge alembic from set

// Select objects in a set called EXPORT_SET
select -r EXPORT_SET ;
timeControl -edit -forceRedraw $gPlayBackSlider;

// Create list of objects from EXPORT_SET
string $assetParts[] = `ls -sl`;
$assetPartsList = stringArrayToString($assetParts," ");

// Merge alembic with these objects
AbcImport -mode import -connect $assetPartsList "//DISK/PATH/alembic.abc";

Replace animated objects with V-Ray proxies

// First select animated objects to replace
// For each object create a proxy then constrain then bake simulation then delete constraint

for ( $object in `ls -sl -l` ) {
	vrayCreateProxy -node assetName -existing -dir ("//DISK/PATH/your_asset.vrmesh") -createProxyNode;
	select -r $object ;
	select -add assetName ;
	doCreateParentConstraintArgList 1 { "0","0","0","0","0","0","0","0","1","","1" };
	parentConstraint -weight 1;
	bakeResults -simulation true -t "1000:1100" -sampleBy 1 -oversamplingRate 1 -disableImplicitControl true -preserveOutsideKeys true -sparseAnimCurveBake false -removeBakedAttributeFromLayer false -removeBakedAnimFromLayer false -bakeOnOverrideLayer false -minimizeRotation true -controlPoints false -shape true {"assetName"};
	select `ls -type "constraint"`;
	select -add $object ;
	doDelete;
	select -cl  ;
	rename "assetName" $object;
}

Select all meshes in a group

// From cmadsenAniden on forums.autodesk.com
// Replace group1 by the name of your own group

select -r group1 ;
string $selection[] = `ls -sl`;
string $polyGons[] = `filterExpand -sm 12 $selection`;
select -r $polyGons;