<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>http://antoinevienne.fr/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Walter</id>
	<title>Antoine Vienne | Wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="http://antoinevienne.fr/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Walter"/>
	<link rel="alternate" type="text/html" href="http://antoinevienne.fr/wiki/index.php?title=Special:Contributions/Walter"/>
	<updated>2026-04-28T22:29:18Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.32.2</generator>
	<entry>
		<id>http://antoinevienne.fr/wiki/index.php?title=Houdini_learning&amp;diff=282</id>
		<title>Houdini learning</title>
		<link rel="alternate" type="text/html" href="http://antoinevienne.fr/wiki/index.php?title=Houdini_learning&amp;diff=282"/>
		<updated>2025-08-06T14:14:27Z</updated>

		<summary type="html">&lt;p&gt;Walter: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Houdini learning=&lt;br /&gt;
=== Center Pivot ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// In Pivot Translate in a Transform node&lt;br /&gt;
&lt;br /&gt;
centroid(0,0)&lt;br /&gt;
centroid(0,1)&lt;br /&gt;
centroid(0,2)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Delete by Connectivity attribute ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// In a Delete node, in Group (by example)&lt;br /&gt;
&lt;br /&gt;
@class=7777&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Increase Volume Density ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// In a volumewrangle&lt;br /&gt;
&lt;br /&gt;
@density *= 10;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Substract any VDB by another VDB ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// In a volumewrangle&lt;br /&gt;
&lt;br /&gt;
if (volumesample(1,&amp;quot;surface&amp;quot;,@P)&amp;lt;0)@density=0;&lt;br /&gt;
&lt;br /&gt;
//inverse:&lt;br /&gt;
&lt;br /&gt;
if (volumesample(1,&amp;quot;surface&amp;quot;,@P)&amp;gt;0)@density=0;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Get bound &amp;amp; centroid ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// In a null object&lt;br /&gt;
&lt;br /&gt;
bbox(opinputpath('.',0),D_XSIZE)&lt;br /&gt;
bbox(opinputpath('.',0),D_YSIZE)&lt;br /&gt;
bbox(opinputpath('.',0),D_ZSIZE)&lt;br /&gt;
&lt;br /&gt;
centroid(opinputpath('.',0),D_X)&lt;br /&gt;
centroid(opinputpath('.',0),D_Y)&lt;br /&gt;
centroid(opinputpath('.',0),D_Z)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== UVs ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// In this order : uvautoseam - uvflatten - uvlayout&lt;br /&gt;
In uvflatten : Seams = seams&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Kill emission on a smoke source after frame 300 ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
if (@Frame&amp;gt;300) @density = 0;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Attribfrommap - Use UDIMs images ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Replace 1001 by &amp;lt;UDIM&amp;gt; and check UDIM Filename Expansion&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Attribwrangle - Udim number on primitives attributes ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// In a wrangle set on Primitives&lt;br /&gt;
vector uv = primuv(0, &amp;quot;uv&amp;quot;, @primnum, set(0.5, 0.5, 0));&lt;br /&gt;
i@udim = 1001 + int(uv.x) + int(uv.y)*10;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Place at World center, scale et re-transform for export ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// In a transform translates&lt;br /&gt;
-centroid(0,0) -centroid(0,1) -centroid(0,2)&lt;br /&gt;
// In a transform Uniform scale&lt;br /&gt;
(bbox(&amp;quot;/obj/neigeSol/timeshift1/&amp;quot;, D_ZSIZE))/(bbox(&amp;quot;/obj/neigeSol/transform_centerWorld/&amp;quot;, D_ZSIZE))&lt;br /&gt;
&lt;br /&gt;
// At end, in a transform Uniform scale&lt;br /&gt;
1/((bbox(&amp;quot;/obj/neigeSol/timeshift1/&amp;quot;, D_ZSIZE))/(bbox(&amp;quot;/obj/neigeSol/transform_centerWorld/&amp;quot;, D_ZSIZE)))&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Misc Attr Wrangle expressions ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Delete by color&lt;br /&gt;
if (@Cd.x&amp;lt;chf(&amp;quot;seuilColor&amp;quot;))removepoint(0,@ptnum,1);&lt;br /&gt;
&lt;br /&gt;
// Set random pscale&lt;br /&gt;
@pscale = fit01(pow(rand(@ptnum), ch(&amp;quot;power&amp;quot;)), ch(&amp;quot;pscale_min&amp;quot;), ch(&amp;quot;pscale_max&amp;quot;));&lt;br /&gt;
&lt;br /&gt;
// Udim attr for each Udim&lt;br /&gt;
vector uv = primuv(0, &amp;quot;uv&amp;quot;, @primnum, set(0.5, 0.5, 0));&lt;br /&gt;
i@udim = 1001 + int(uv.x) + int(uv.y)*10;&lt;br /&gt;
// Next, with a Delete SOP: Group: @udim=$F - Pattern mode !*&lt;br /&gt;
&lt;br /&gt;
// Set pscale Min/Max&lt;br /&gt;
@pscale = fit01(pow(rand(@ptnum), ch(&amp;quot;power&amp;quot;)), ch(&amp;quot;pscale_min&amp;quot;), ch(&amp;quot;pscale_max&amp;quot;));&lt;br /&gt;
&lt;br /&gt;
// Remove small parts - In a Foreach connected piece loop&lt;br /&gt;
@size = (getbbox_size(0).x+getbbox_size(0).y+getbbox_size(0).z);&lt;br /&gt;
&lt;br /&gt;
if(@size &amp;lt; chf(&amp;quot;taille&amp;quot;))&lt;br /&gt;
removepoint(geoself(), @ptnum,1);&lt;br /&gt;
&lt;br /&gt;
// Set @variant integer for Copytopoints (change objects number)&lt;br /&gt;
i@variant =floor(rand(@id)*3);&lt;br /&gt;
&lt;br /&gt;
//// Get position difference between two objects, and match animation&lt;br /&gt;
// On Rest pose object:&lt;br /&gt;
v@fixe = 0;&lt;br /&gt;
@fixe.x = getbbox_center(0).x;&lt;br /&gt;
@fixe.y = getbbox_center(0).y;&lt;br /&gt;
@fixe.z = getbbox_center(0).z;&lt;br /&gt;
// On animated object:&lt;br /&gt;
v@anim = 0;&lt;br /&gt;
@anim.x = getbbox_center(0).x;&lt;br /&gt;
@anim.y = getbbox_center(0).y;&lt;br /&gt;
@anim.z = getbbox_center(0).z;&lt;br /&gt;
// After two previous AttrWrangles:&lt;br /&gt;
v@anim_offset = point(0, 'fixe', 1) - point(1, 'anim', 1);&lt;br /&gt;
// To match animation:&lt;br /&gt;
@P = point(0, &amp;quot;P&amp;quot;, @ptnum) + point(1, 'anim_offset', 1);&lt;br /&gt;
&lt;br /&gt;
//// Blend shape through a mask attribute - Posted by Cudarsjanis on Odforce&lt;br /&gt;
// Geo with mask attribute in first input, blend shape in second&lt;br /&gt;
v@P=lerp(v@P, point(1,'P',@ptnum), f@mask*ch('blend'));&lt;br /&gt;
&lt;br /&gt;
//// Set a fixed normal attribute&lt;br /&gt;
v@z = set(0,1,0);&lt;br /&gt;
&lt;br /&gt;
//// Place at world center&lt;br /&gt;
v@P -= getbbox_center(0);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Delete small pieces ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// As seen on Sidefx forum, posted by paulboiii&lt;br /&gt;
// First create a measure SOP, set to per piece&lt;br /&gt;
&lt;br /&gt;
// Then, in an attribwrangle set on primitives&lt;br /&gt;
float threshold = chf(&amp;quot;Size_Threshold&amp;quot;);&lt;br /&gt;
if ( f@area &amp;lt; threshold ) removeprim(0,@primnum,1);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Attribute Wrangle - Copy attribute from second input ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// With same number of points on both inputs - From Bonsak on Sidefx.com&lt;br /&gt;
&lt;br /&gt;
// Copy P from second input&lt;br /&gt;
@P = v@opinput1_P;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Bounding-box - Position Reference color ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// As seen on https://houdinihelp.ru/ref/expression_cookbook.html&lt;br /&gt;
&lt;br /&gt;
// In an attribwrangle set on primitives&lt;br /&gt;
@Cd.r = relbbox(0,@P).x;&lt;br /&gt;
@Cd.g = relbbox(0,@P).y;&lt;br /&gt;
@Cd.b = relbbox(0,@P).z;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Group by uv.y ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Thanks to https://vfxbrain.wordpress.com/2019/06/14/vex-snippets-2/&lt;br /&gt;
&lt;br /&gt;
// In an attribwrangle set on points&lt;br /&gt;
if(@uv.y&amp;lt;chf(&amp;quot;seuil&amp;quot;)) @group_base = 1;&lt;br /&gt;
&lt;br /&gt;
// ALTERNATIVE&lt;br /&gt;
@uv.x&amp;lt;0.2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Specify attribute value for one point ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
if (@ptnum == 322) f@mask=1;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Pscale by Bbox Y ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
//set pscale first&lt;br /&gt;
&lt;br /&gt;
f@bboxY = relbbox(0,@P).y;&lt;br /&gt;
@pscale *= chramp(&amp;quot;rampBbox&amp;quot;,@bboxY)*4 ;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Delete primitives by height ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
if ( @P.y&amp;lt;chf(&amp;quot;seuil&amp;quot;) ) removeprim(0,@primnum,1);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Falloff geometry ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Get camOrigin&lt;br /&gt;
&lt;br /&gt;
vector pt0 = point(1,'P',0);&lt;br /&gt;
v@raydir = normalize(  pt0 - @P )*-1;&lt;br /&gt;
&lt;br /&gt;
@falloff = dot(v@raydir, @N);&lt;br /&gt;
&lt;br /&gt;
// Promote raydir in Primitives&lt;br /&gt;
&lt;br /&gt;
if ( f@falloff&amp;gt;chf(&amp;quot;seuil&amp;quot;) ) removeprim(0,@primnum,1);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Labs Maps Baker - Bake with UDIMs ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Add %(UDIM)d in the file path - don't need to check Output UDIMs&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Gets the digits from node name===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Add `padzero(3,opdigits(&amp;quot;.&amp;quot;))`&lt;br /&gt;
// Add `padzero(3,opdigits(&amp;quot;..&amp;quot;))` for previous node padding&lt;br /&gt;
// padzero(3,opdigits(&amp;quot;.&amp;quot;)) without hscript&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Self-shadows in Mantra===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Add by example * ^RENDER_ground in Shadow Mask of every of your lights to exclude self-shadows&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Search and replace in VEX ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// To remove ShapeDeformed from Maya Alembics by example, in an Attribute Wrangle in Primitives&lt;br /&gt;
&lt;br /&gt;
string path = @path;&lt;br /&gt;
s@path = re_replace(r&amp;quot;Deformed&amp;quot;, &amp;quot;&amp;quot;, path);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Get only shape name from Maya alembic path ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Attribwrangle on Primitives&lt;br /&gt;
&lt;br /&gt;
s@last_split = split(s@path, &amp;quot;/&amp;quot;)[-1];&lt;br /&gt;
s@last_split = split(s@last_split, &amp;quot;:&amp;quot;)[-1];&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Ray dir (this one works) ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Attribwrangle on Points, camera on second input&lt;br /&gt;
&lt;br /&gt;
vector pt0 = point(1,'P',0);&lt;br /&gt;
v@raydir = normalize(pt0 - @P );&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Substract density on volume VDB near some points ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Thanks to Quentin Rossetto&lt;br /&gt;
// Volumewrangle under volume/Vdb, points on second input - Set the Max distance&lt;br /&gt;
&lt;br /&gt;
vector vpos = @P;&lt;br /&gt;
&lt;br /&gt;
int npt = nearpoint(1, vpos);&lt;br /&gt;
vector nptp = point(1,&amp;quot;P&amp;quot;,npt);&lt;br /&gt;
&lt;br /&gt;
float distance = distance(vpos, nptp);&lt;br /&gt;
distance = fit(distance, chf(&amp;quot;minDistance&amp;quot;), chf(&amp;quot;maxDistance&amp;quot;),0,1);&lt;br /&gt;
&lt;br /&gt;
@density *= chramp(&amp;quot;fade&amp;quot;,distance);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Walter</name></author>
		
	</entry>
	<entry>
		<id>http://antoinevienne.fr/wiki/index.php?title=Houdini_learning&amp;diff=281</id>
		<title>Houdini learning</title>
		<link rel="alternate" type="text/html" href="http://antoinevienne.fr/wiki/index.php?title=Houdini_learning&amp;diff=281"/>
		<updated>2025-05-30T19:00:53Z</updated>

		<summary type="html">&lt;p&gt;Walter: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Houdini learning=&lt;br /&gt;
=== Center Pivot ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// In Pivot Translate in a Transform node&lt;br /&gt;
&lt;br /&gt;
centroid(0,0)&lt;br /&gt;
centroid(0,1)&lt;br /&gt;
centroid(0,2)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Delete by Connectivity attribute ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// In a Delete node, in Group (by example)&lt;br /&gt;
&lt;br /&gt;
@class=7777&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Increase Volume Density ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// In a volumewrangle&lt;br /&gt;
&lt;br /&gt;
@density *= 10;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Substract any VDB by another VDB ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// In a volumewrangle&lt;br /&gt;
&lt;br /&gt;
if (volumesample(1,&amp;quot;surface&amp;quot;,@P)&amp;lt;0)@density=0;&lt;br /&gt;
&lt;br /&gt;
//inverse:&lt;br /&gt;
&lt;br /&gt;
if (volumesample(1,&amp;quot;surface&amp;quot;,@P)&amp;gt;0)@density=0;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Get bound &amp;amp; centroid ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// In a null object&lt;br /&gt;
&lt;br /&gt;
bbox(opinputpath('.',0),D_XSIZE)&lt;br /&gt;
bbox(opinputpath('.',0),D_YSIZE)&lt;br /&gt;
bbox(opinputpath('.',0),D_ZSIZE)&lt;br /&gt;
&lt;br /&gt;
centroid(opinputpath('.',0),D_X)&lt;br /&gt;
centroid(opinputpath('.',0),D_Y)&lt;br /&gt;
centroid(opinputpath('.',0),D_Z)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== UVs ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// In this order : uvautoseam - uvflatten - uvlayout&lt;br /&gt;
In uvflatten : Seams = seams&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Kill emission on a smoke source after frame 300 ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
if (@Frame&amp;gt;300) @density = 0;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Attribfrommap - Use UDIMs images ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Replace 1001 by &amp;lt;UDIM&amp;gt; and check UDIM Filename Expansion&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Attribwrangle - Udim number on primitives attributes ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// In a wrangle set on Primitives&lt;br /&gt;
vector uv = primuv(0, &amp;quot;uv&amp;quot;, @primnum, set(0.5, 0.5, 0));&lt;br /&gt;
i@udim = 1001 + int(uv.x) + int(uv.y)*10;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Place at World center, scale et re-transform for export ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// In a transform translates&lt;br /&gt;
-centroid(0,0) -centroid(0,1) -centroid(0,2)&lt;br /&gt;
// In a transform Uniform scale&lt;br /&gt;
(bbox(&amp;quot;/obj/neigeSol/timeshift1/&amp;quot;, D_ZSIZE))/(bbox(&amp;quot;/obj/neigeSol/transform_centerWorld/&amp;quot;, D_ZSIZE))&lt;br /&gt;
&lt;br /&gt;
// At end, in a transform Uniform scale&lt;br /&gt;
1/((bbox(&amp;quot;/obj/neigeSol/timeshift1/&amp;quot;, D_ZSIZE))/(bbox(&amp;quot;/obj/neigeSol/transform_centerWorld/&amp;quot;, D_ZSIZE)))&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Misc Attr Wrangle expressions ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Delete by color&lt;br /&gt;
if (@Cd.x&amp;lt;chf(&amp;quot;seuilColor&amp;quot;))removepoint(0,@ptnum,1);&lt;br /&gt;
&lt;br /&gt;
// Set random pscale&lt;br /&gt;
@pscale = fit01(pow(rand(@ptnum), ch(&amp;quot;power&amp;quot;)), ch(&amp;quot;pscale_min&amp;quot;), ch(&amp;quot;pscale_max&amp;quot;));&lt;br /&gt;
&lt;br /&gt;
// Udim attr for each Udim&lt;br /&gt;
vector uv = primuv(0, &amp;quot;uv&amp;quot;, @primnum, set(0.5, 0.5, 0));&lt;br /&gt;
i@udim = 1001 + int(uv.x) + int(uv.y)*10;&lt;br /&gt;
// Next, with a Delete SOP: Group: @udim=$F - Pattern mode !*&lt;br /&gt;
&lt;br /&gt;
// Set pscale Min/Max&lt;br /&gt;
@pscale = fit01(pow(rand(@ptnum), ch(&amp;quot;power&amp;quot;)), ch(&amp;quot;pscale_min&amp;quot;), ch(&amp;quot;pscale_max&amp;quot;));&lt;br /&gt;
&lt;br /&gt;
// Remove small parts - In a Foreach connected piece loop&lt;br /&gt;
@size = (getbbox_size(0).x+getbbox_size(0).y+getbbox_size(0).z);&lt;br /&gt;
&lt;br /&gt;
if(@size &amp;lt; chf(&amp;quot;taille&amp;quot;))&lt;br /&gt;
removepoint(geoself(), @ptnum,1);&lt;br /&gt;
&lt;br /&gt;
// Set @variant integer for Copytopoints (change objects number)&lt;br /&gt;
i@variant =floor(rand(@id)*3);&lt;br /&gt;
&lt;br /&gt;
//// Get position difference between two objects, and match animation&lt;br /&gt;
// On Rest pose object:&lt;br /&gt;
v@fixe = 0;&lt;br /&gt;
@fixe.x = getbbox_center(0).x;&lt;br /&gt;
@fixe.y = getbbox_center(0).y;&lt;br /&gt;
@fixe.z = getbbox_center(0).z;&lt;br /&gt;
// On animated object:&lt;br /&gt;
v@anim = 0;&lt;br /&gt;
@anim.x = getbbox_center(0).x;&lt;br /&gt;
@anim.y = getbbox_center(0).y;&lt;br /&gt;
@anim.z = getbbox_center(0).z;&lt;br /&gt;
// After two previous AttrWrangles:&lt;br /&gt;
v@anim_offset = point(0, 'fixe', 1) - point(1, 'anim', 1);&lt;br /&gt;
// To match animation:&lt;br /&gt;
@P = point(0, &amp;quot;P&amp;quot;, @ptnum) + point(1, 'anim_offset', 1);&lt;br /&gt;
&lt;br /&gt;
//// Blend shape through a mask attribute - Posted by Cudarsjanis on Odforce&lt;br /&gt;
// Geo with mask attribute in first input, blend shape in second&lt;br /&gt;
v@P=lerp(v@P, point(1,'P',@ptnum), f@mask*ch('blend'));&lt;br /&gt;
&lt;br /&gt;
//// Set a fixed normal attribute&lt;br /&gt;
v@z = set(0,1,0);&lt;br /&gt;
&lt;br /&gt;
//// Place at world center&lt;br /&gt;
v@P -= getbbox_center(0);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Delete small pieces ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// As seen on Sidefx forum, posted by paulboiii&lt;br /&gt;
// First create a measure SOP, set to per piece&lt;br /&gt;
&lt;br /&gt;
// Then, in an attribwrangle set on primitives&lt;br /&gt;
float threshold = chf(&amp;quot;Size_Threshold&amp;quot;);&lt;br /&gt;
if ( f@area &amp;lt; threshold ) removeprim(0,@primnum,1);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Attribute Wrangle - Copy attribute from second input ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// With same number of points on both inputs - From Bonsak on Sidefx.com&lt;br /&gt;
&lt;br /&gt;
// Copy P from second input&lt;br /&gt;
@P = v@opinput1_P;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Bounding-box - Position Reference color ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// As seen on https://houdinihelp.ru/ref/expression_cookbook.html&lt;br /&gt;
&lt;br /&gt;
// In an attribwrangle set on primitives&lt;br /&gt;
@Cd.r = relbbox(0,@P).x;&lt;br /&gt;
@Cd.g = relbbox(0,@P).y;&lt;br /&gt;
@Cd.b = relbbox(0,@P).z;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Group by uv.y ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Thanks to https://vfxbrain.wordpress.com/2019/06/14/vex-snippets-2/&lt;br /&gt;
&lt;br /&gt;
// In an attribwrangle set on points&lt;br /&gt;
if(@uv.y&amp;lt;chf(&amp;quot;seuil&amp;quot;)) @group_base = 1;&lt;br /&gt;
&lt;br /&gt;
// ALTERNATIVE&lt;br /&gt;
@uv.x&amp;lt;0.2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Specify attribute value for one point ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
if (@ptnum == 322) f@mask=1;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Pscale by Bbox Y ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
//set pscale first&lt;br /&gt;
&lt;br /&gt;
f@bboxY = relbbox(0,@P).y;&lt;br /&gt;
@pscale *= chramp(&amp;quot;rampBbox&amp;quot;,@bboxY)*4 ;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Delete primitives by height ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
if ( @P.y&amp;lt;chf(&amp;quot;seuil&amp;quot;) ) removeprim(0,@primnum,1);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Falloff geometry ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Get camOrigin&lt;br /&gt;
&lt;br /&gt;
vector pt0 = point(1,'P',0);&lt;br /&gt;
v@raydir = normalize(  pt0 - @P )*-1;&lt;br /&gt;
&lt;br /&gt;
@falloff = dot(v@raydir, @N);&lt;br /&gt;
&lt;br /&gt;
// Promote raydir in Primitives&lt;br /&gt;
&lt;br /&gt;
if ( f@falloff&amp;gt;chf(&amp;quot;seuil&amp;quot;) ) removeprim(0,@primnum,1);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Labs Maps Baker - Bake with UDIMs ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Add %(UDIM)d in the file path - don't need to check Output UDIMs&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Gets the digits from node name===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Add `padzero(3,opdigits(&amp;quot;.&amp;quot;))`&lt;br /&gt;
// Add `padzero(3,opdigits(&amp;quot;..&amp;quot;))` for previous node padding&lt;br /&gt;
// padzero(3,opdigits(&amp;quot;.&amp;quot;)) without hscript&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Self-shadows in Mantra===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Add by example * ^RENDER_ground in Shadow Mask of every of your lights to exclude self-shadows&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Search and replace in VEX ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// To remove ShapeDeformed from Maya Alembics by example, in an Attribute Wrangle in Primitives&lt;br /&gt;
&lt;br /&gt;
string path = @path;&lt;br /&gt;
s@path = re_replace(r&amp;quot;Deformed&amp;quot;, &amp;quot;&amp;quot;, path);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Get only shape name from Maya alembic path ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Attribwrangle on Primitives&lt;br /&gt;
&lt;br /&gt;
s@last_split = split(s@path, &amp;quot;/&amp;quot;)[-1];&lt;br /&gt;
s@last_split = split(s@last_split, &amp;quot;:&amp;quot;)[-1];&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Ray dir (this one works) ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Attribwrangle on Points, camera on second input&lt;br /&gt;
&lt;br /&gt;
vector pt0 = point(1,'P',0);&lt;br /&gt;
v@raydir = normalize(pt0 - @P );&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Walter</name></author>
		
	</entry>
	<entry>
		<id>http://antoinevienne.fr/wiki/index.php?title=Houdini_learning&amp;diff=280</id>
		<title>Houdini learning</title>
		<link rel="alternate" type="text/html" href="http://antoinevienne.fr/wiki/index.php?title=Houdini_learning&amp;diff=280"/>
		<updated>2025-04-17T10:04:15Z</updated>

		<summary type="html">&lt;p&gt;Walter: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Houdini learning=&lt;br /&gt;
=== Center Pivot ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// In Pivot Translate in a Transform node&lt;br /&gt;
&lt;br /&gt;
centroid(0,0)&lt;br /&gt;
centroid(0,1)&lt;br /&gt;
centroid(0,2)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Delete by Connectivity attribute ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// In a Delete node, in Group (by example)&lt;br /&gt;
&lt;br /&gt;
@class=7777&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Increase Volume Density ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// In a volumewrangle&lt;br /&gt;
&lt;br /&gt;
@density *= 10;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Substract any VDB by another VDB ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// In a volumewrangle&lt;br /&gt;
&lt;br /&gt;
if (volumesample(1,&amp;quot;surface&amp;quot;,@P)&amp;lt;0)@density=0;&lt;br /&gt;
&lt;br /&gt;
//inverse:&lt;br /&gt;
&lt;br /&gt;
if (volumesample(1,&amp;quot;surface&amp;quot;,@P)&amp;gt;0)@density=0;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Get bound &amp;amp; centroid ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// In a null object&lt;br /&gt;
&lt;br /&gt;
bbox(opinputpath('.',0),D_XSIZE)&lt;br /&gt;
bbox(opinputpath('.',0),D_YSIZE)&lt;br /&gt;
bbox(opinputpath('.',0),D_ZSIZE)&lt;br /&gt;
&lt;br /&gt;
centroid(opinputpath('.',0),D_X)&lt;br /&gt;
centroid(opinputpath('.',0),D_Y)&lt;br /&gt;
centroid(opinputpath('.',0),D_Z)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== UVs ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// In this order : uvautoseam - uvflatten - uvlayout&lt;br /&gt;
In uvflatten : Seams = seams&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Kill emission on a smoke source after frame 300 ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
if (@Frame&amp;gt;300) @density = 0;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Attribfrommap - Use UDIMs images ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Replace 1001 by &amp;lt;UDIM&amp;gt; and check UDIM Filename Expansion&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Attribwrangle - Udim number on primitives attributes ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// In a wrangle set on Primitives&lt;br /&gt;
vector uv = primuv(0, &amp;quot;uv&amp;quot;, @primnum, set(0.5, 0.5, 0));&lt;br /&gt;
i@udim = 1001 + int(uv.x) + int(uv.y)*10;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Place at World center, scale et re-transform for export ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// In a transform translates&lt;br /&gt;
-centroid(0,0) -centroid(0,1) -centroid(0,2)&lt;br /&gt;
// In a transform Uniform scale&lt;br /&gt;
(bbox(&amp;quot;/obj/neigeSol/timeshift1/&amp;quot;, D_ZSIZE))/(bbox(&amp;quot;/obj/neigeSol/transform_centerWorld/&amp;quot;, D_ZSIZE))&lt;br /&gt;
&lt;br /&gt;
// At end, in a transform Uniform scale&lt;br /&gt;
1/((bbox(&amp;quot;/obj/neigeSol/timeshift1/&amp;quot;, D_ZSIZE))/(bbox(&amp;quot;/obj/neigeSol/transform_centerWorld/&amp;quot;, D_ZSIZE)))&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Misc Attr Wrangle expressions ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Delete by color&lt;br /&gt;
if (@Cd.x&amp;lt;chf(&amp;quot;seuilColor&amp;quot;))removepoint(0,@ptnum,1);&lt;br /&gt;
&lt;br /&gt;
// Set random pscale&lt;br /&gt;
@pscale = fit01(pow(rand(@ptnum), ch(&amp;quot;power&amp;quot;)), ch(&amp;quot;pscale_min&amp;quot;), ch(&amp;quot;pscale_max&amp;quot;));&lt;br /&gt;
&lt;br /&gt;
// Udim attr for each Udim&lt;br /&gt;
vector uv = primuv(0, &amp;quot;uv&amp;quot;, @primnum, set(0.5, 0.5, 0));&lt;br /&gt;
i@udim = 1001 + int(uv.x) + int(uv.y)*10;&lt;br /&gt;
// Next, with a Delete SOP: Group: @udim=$F - Pattern mode !*&lt;br /&gt;
&lt;br /&gt;
// Set pscale Min/Max&lt;br /&gt;
@pscale = fit01(pow(rand(@ptnum), ch(&amp;quot;power&amp;quot;)), ch(&amp;quot;pscale_min&amp;quot;), ch(&amp;quot;pscale_max&amp;quot;));&lt;br /&gt;
&lt;br /&gt;
// Remove small parts - In a Foreach connected piece loop&lt;br /&gt;
@size = (getbbox_size(0).x+getbbox_size(0).y+getbbox_size(0).z);&lt;br /&gt;
&lt;br /&gt;
if(@size &amp;lt; chf(&amp;quot;taille&amp;quot;))&lt;br /&gt;
removepoint(geoself(), @ptnum,1);&lt;br /&gt;
&lt;br /&gt;
// Set @variant integer for Copytopoints (change objects number)&lt;br /&gt;
i@variant =floor(rand(@id)*3);&lt;br /&gt;
&lt;br /&gt;
//// Get position difference between two objects, and match animation&lt;br /&gt;
// On Rest pose object:&lt;br /&gt;
v@fixe = 0;&lt;br /&gt;
@fixe.x = getbbox_center(0).x;&lt;br /&gt;
@fixe.y = getbbox_center(0).y;&lt;br /&gt;
@fixe.z = getbbox_center(0).z;&lt;br /&gt;
// On animated object:&lt;br /&gt;
v@anim = 0;&lt;br /&gt;
@anim.x = getbbox_center(0).x;&lt;br /&gt;
@anim.y = getbbox_center(0).y;&lt;br /&gt;
@anim.z = getbbox_center(0).z;&lt;br /&gt;
// After two previous AttrWrangles:&lt;br /&gt;
v@anim_offset = point(0, 'fixe', 1) - point(1, 'anim', 1);&lt;br /&gt;
// To match animation:&lt;br /&gt;
@P = point(0, &amp;quot;P&amp;quot;, @ptnum) + point(1, 'anim_offset', 1);&lt;br /&gt;
&lt;br /&gt;
//// Blend shape through a mask attribute - Posted by Cudarsjanis on Odforce&lt;br /&gt;
// Geo with mask attribute in first input, blend shape in second&lt;br /&gt;
v@P=lerp(v@P, point(1,'P',@ptnum), f@mask*ch('blend'));&lt;br /&gt;
&lt;br /&gt;
//// Set a fixed normal attribute&lt;br /&gt;
v@z = set(0,1,0);&lt;br /&gt;
&lt;br /&gt;
//// Place at world center&lt;br /&gt;
v@P -= getbbox_center(0);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Delete small pieces ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// As seen on Sidefx forum, posted by paulboiii&lt;br /&gt;
// First create a measure SOP, set to per piece&lt;br /&gt;
&lt;br /&gt;
// Then, in an attribwrangle set on primitives&lt;br /&gt;
float threshold = chf(&amp;quot;Size_Threshold&amp;quot;);&lt;br /&gt;
if ( f@area &amp;lt; threshold ) removeprim(0,@primnum,1);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Attribute Wrangle - Copy attribute from second input ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// With same number of points on both inputs - From Bonsak on Sidefx.com&lt;br /&gt;
&lt;br /&gt;
// Copy P from second input&lt;br /&gt;
@P = v@opinput1_P;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Bounding-box - Position Reference color ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// As seen on https://houdinihelp.ru/ref/expression_cookbook.html&lt;br /&gt;
&lt;br /&gt;
// In an attribwrangle set on primitives&lt;br /&gt;
@Cd.r = relbbox(0,@P).x;&lt;br /&gt;
@Cd.g = relbbox(0,@P).y;&lt;br /&gt;
@Cd.b = relbbox(0,@P).z;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Group by uv.y ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Thanks to https://vfxbrain.wordpress.com/2019/06/14/vex-snippets-2/&lt;br /&gt;
&lt;br /&gt;
// In an attribwrangle set on points&lt;br /&gt;
if(@uv.y&amp;lt;chf(&amp;quot;seuil&amp;quot;)) @group_base = 1;&lt;br /&gt;
&lt;br /&gt;
// ALTERNATIVE&lt;br /&gt;
@uv.x&amp;lt;0.2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Specify attribute value for one point ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
if (@ptnum == 322) f@mask=1;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Pscale by Bbox Y ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
//set pscale first&lt;br /&gt;
&lt;br /&gt;
f@bboxY = relbbox(0,@P).y;&lt;br /&gt;
@pscale *= chramp(&amp;quot;rampBbox&amp;quot;,@bboxY)*4 ;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Delete primitives by height ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
if ( @P.y&amp;lt;chf(&amp;quot;seuil&amp;quot;) ) removeprim(0,@primnum,1);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Falloff geometry ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Get camOrigin&lt;br /&gt;
&lt;br /&gt;
vector pt0 = point(1,'P',0);&lt;br /&gt;
v@raydir = normalize(  pt0 - @P )*-1;&lt;br /&gt;
&lt;br /&gt;
@falloff = dot(v@raydir, @N);&lt;br /&gt;
&lt;br /&gt;
// Promote raydir in Primitives&lt;br /&gt;
&lt;br /&gt;
if ( f@falloff&amp;gt;chf(&amp;quot;seuil&amp;quot;) ) removeprim(0,@primnum,1);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Labs Maps Baker - Bake with UDIMs ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Add %(UDIM)d in the file path - don't need to check Output UDIMs&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Gets the digits from node name===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Add `padzero(3,opdigits(&amp;quot;.&amp;quot;))`&lt;br /&gt;
// Add `padzero(3,opdigits(&amp;quot;..&amp;quot;))` for previous node padding&lt;br /&gt;
// padzero(3,opdigits(&amp;quot;.&amp;quot;)) without hscript&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Self-shadows in Mantra===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Add by example * ^RENDER_ground in Shadow Mask of every of your lights to exclude self-shadows&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Search and replace in VEX ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// To remove ShapeDeformed from Maya Alembics by example, in an Attribute Wrangle in Primitives&lt;br /&gt;
&lt;br /&gt;
string path = @path;&lt;br /&gt;
s@path = re_replace(r&amp;quot;Deformed&amp;quot;, &amp;quot;&amp;quot;, path);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Get only shape name from Maya alembic path ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Attribwrangle on Primitives&lt;br /&gt;
&lt;br /&gt;
s@last_split = split(s@path, &amp;quot;/&amp;quot;)[-1];&lt;br /&gt;
s@last_split = split(s@last_split, &amp;quot;:&amp;quot;)[-1];&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Walter</name></author>
		
	</entry>
	<entry>
		<id>http://antoinevienne.fr/wiki/index.php?title=Windows_directories&amp;diff=279</id>
		<title>Windows directories</title>
		<link rel="alternate" type="text/html" href="http://antoinevienne.fr/wiki/index.php?title=Windows_directories&amp;diff=279"/>
		<updated>2025-01-20T23:34:41Z</updated>

		<summary type="html">&lt;p&gt;Walter: Created page with &amp;quot;=Windows= === Create directories=== &amp;lt;pre&amp;gt; set projectName=Toto  set disk=D:\  set list=shot_001 shot_002 shot_003     // NO CHANGES BELOW  set projectFolder=%disk%%projectName...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Windows=&lt;br /&gt;
=== Create directories===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
set projectName=Toto&lt;br /&gt;
&lt;br /&gt;
set disk=D:\&lt;br /&gt;
&lt;br /&gt;
set list=shot_001 shot_002 shot_003&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
// NO CHANGES BELOW&lt;br /&gt;
&lt;br /&gt;
set projectFolder=%disk%%projectName%&lt;br /&gt;
&lt;br /&gt;
mkdir %projectFolder%&lt;br /&gt;
&lt;br /&gt;
(for %%a in (%list%) do ( &lt;br /&gt;
   mkdir %projectFolder%\%%a&lt;br /&gt;
   mkdir %projectFolder%\%%a\compo&lt;br /&gt;
   mkdir %projectFolder%\%%a\compo\in&lt;br /&gt;
   mkdir %projectFolder%\%%a\compo\work&lt;br /&gt;
   mkdir %projectFolder%\%%a\compo\out&lt;br /&gt;
   mkdir %projectFolder%\%%a\3d&lt;br /&gt;
   mkdir %projectFolder%\%%a\3d\in&lt;br /&gt;
   mkdir %projectFolder%\%%a\3d\work&lt;br /&gt;
   mkdir %projectFolder%\%%a\3d\out&lt;br /&gt;
   mkdir %projectFolder%\%%a\labo&lt;br /&gt;
   mkdir %projectFolder%\%%a\track&lt;br /&gt;
))&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Walter</name></author>
		
	</entry>
	<entry>
		<id>http://antoinevienne.fr/wiki/index.php?title=Main_Page&amp;diff=278</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="http://antoinevienne.fr/wiki/index.php?title=Main_Page&amp;diff=278"/>
		<updated>2025-01-20T23:34:01Z</updated>

		<summary type="html">&lt;p&gt;Walter: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* '''Maya'''&lt;br /&gt;
** [[Maya Mel|Mel Scripts]]&lt;br /&gt;
** [[Maya Python|Python Scripts]]&lt;br /&gt;
** [[Maya Batch Render|.bat Batch Render Scripts]]&lt;br /&gt;
** [[Maya Misc|Misc]]&lt;br /&gt;
** [[Maya tmp|tmp Scripts]]&lt;br /&gt;
&lt;br /&gt;
* '''Nuke'''&lt;br /&gt;
** [[Nuke Python|Python Scripts]]&lt;br /&gt;
** [[Nuke Gizmos|Custom Gizmos]]&lt;br /&gt;
** [[Nuke Misc|Misc]]&lt;br /&gt;
** [[Nuke Batch Render|.bat Batch Render Scripts]]&lt;br /&gt;
** [[Nuke tmp|tmp Scripts]]&lt;br /&gt;
&lt;br /&gt;
* '''Houdini'''&lt;br /&gt;
** [[Houdini Env|Install third party renderer]]&lt;br /&gt;
** [[Houdini learning|tmp stuff]]&lt;br /&gt;
&lt;br /&gt;
* '''Isadora'''&lt;br /&gt;
** [[Isadora learning|tmp stuff]]&lt;br /&gt;
&lt;br /&gt;
* '''TouchDesigner'''&lt;br /&gt;
** [[TouchDesigner learning|tmp stuff]]&lt;br /&gt;
&lt;br /&gt;
* '''Windows'''&lt;br /&gt;
** [[Windows|Convert with FFmpeg]]&lt;br /&gt;
** [[Windows directories|Create Project directories]]&lt;br /&gt;
&lt;br /&gt;
* '''Reality Capture'''&lt;br /&gt;
** [[Reality Capture|Batch process]]&lt;/div&gt;</summary>
		<author><name>Walter</name></author>
		
	</entry>
	<entry>
		<id>http://antoinevienne.fr/wiki/index.php?title=Main_Page&amp;diff=277</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="http://antoinevienne.fr/wiki/index.php?title=Main_Page&amp;diff=277"/>
		<updated>2025-01-20T23:33:51Z</updated>

		<summary type="html">&lt;p&gt;Walter: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* '''Maya'''&lt;br /&gt;
** [[Maya Mel|Mel Scripts]]&lt;br /&gt;
** [[Maya Python|Python Scripts]]&lt;br /&gt;
** [[Maya Batch Render|.bat Batch Render Scripts]]&lt;br /&gt;
** [[Maya Misc|Misc]]&lt;br /&gt;
** [[Maya tmp|tmp Scripts]]&lt;br /&gt;
&lt;br /&gt;
* '''Nuke'''&lt;br /&gt;
** [[Nuke Python|Python Scripts]]&lt;br /&gt;
** [[Nuke Gizmos|Custom Gizmos]]&lt;br /&gt;
** [[Nuke Misc|Misc]]&lt;br /&gt;
** [[Nuke Batch Render|.bat Batch Render Scripts]]&lt;br /&gt;
** [[Nuke tmp|tmp Scripts]]&lt;br /&gt;
&lt;br /&gt;
* '''Houdini'''&lt;br /&gt;
** [[Houdini Env|Install third party renderer]]&lt;br /&gt;
** [[Houdini learning|tmp stuff]]&lt;br /&gt;
&lt;br /&gt;
* '''Isadora'''&lt;br /&gt;
** [[Isadora learning|tmp stuff]]&lt;br /&gt;
&lt;br /&gt;
* '''TouchDesigner'''&lt;br /&gt;
** [[TouchDesigner learning|tmp stuff]]&lt;br /&gt;
&lt;br /&gt;
* '''Windows'''&lt;br /&gt;
** [[Windows FFmpeg|Convert with FFmpeg]]&lt;br /&gt;
** [[Windows directories|Create Project directories]]&lt;br /&gt;
&lt;br /&gt;
* '''Reality Capture'''&lt;br /&gt;
** [[Reality Capture|Batch process]]&lt;/div&gt;</summary>
		<author><name>Walter</name></author>
		
	</entry>
	<entry>
		<id>http://antoinevienne.fr/wiki/index.php?title=Main_Page&amp;diff=276</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="http://antoinevienne.fr/wiki/index.php?title=Main_Page&amp;diff=276"/>
		<updated>2025-01-20T23:33:10Z</updated>

		<summary type="html">&lt;p&gt;Walter: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* '''Maya'''&lt;br /&gt;
** [[Maya Mel|Mel Scripts]]&lt;br /&gt;
** [[Maya Python|Python Scripts]]&lt;br /&gt;
** [[Maya Batch Render|.bat Batch Render Scripts]]&lt;br /&gt;
** [[Maya Misc|Misc]]&lt;br /&gt;
** [[Maya tmp|tmp Scripts]]&lt;br /&gt;
&lt;br /&gt;
* '''Nuke'''&lt;br /&gt;
** [[Nuke Python|Python Scripts]]&lt;br /&gt;
** [[Nuke Gizmos|Custom Gizmos]]&lt;br /&gt;
** [[Nuke Misc|Misc]]&lt;br /&gt;
** [[Nuke Batch Render|.bat Batch Render Scripts]]&lt;br /&gt;
** [[Nuke tmp|tmp Scripts]]&lt;br /&gt;
&lt;br /&gt;
* '''Houdini'''&lt;br /&gt;
** [[Houdini Env|Install third party renderer]]&lt;br /&gt;
** [[Houdini learning|tmp stuff]]&lt;br /&gt;
&lt;br /&gt;
* '''Isadora'''&lt;br /&gt;
** [[Isadora learning|tmp stuff]]&lt;br /&gt;
&lt;br /&gt;
* '''TouchDesigner'''&lt;br /&gt;
** [[TouchDesigner learning|tmp stuff]]&lt;br /&gt;
&lt;br /&gt;
* '''Windows'''&lt;br /&gt;
** [[Windows|Convert with FFmpeg]]&lt;br /&gt;
** [[Windows|Create Project directories]]&lt;br /&gt;
&lt;br /&gt;
* '''Reality Capture'''&lt;br /&gt;
** [[Reality Capture|Batch process]]&lt;/div&gt;</summary>
		<author><name>Walter</name></author>
		
	</entry>
	<entry>
		<id>http://antoinevienne.fr/wiki/index.php?title=Maya_Mel&amp;diff=275</id>
		<title>Maya Mel</title>
		<link rel="alternate" type="text/html" href="http://antoinevienne.fr/wiki/index.php?title=Maya_Mel&amp;diff=275"/>
		<updated>2024-10-17T13:08:32Z</updated>

		<summary type="html">&lt;p&gt;Walter: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Maya Mels Scripts=&lt;br /&gt;
=== Octane Render Baking group id - Assign id to multiple objects shapes ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// 0 is for Red, 2 for Green, 4 for Blue&lt;br /&gt;
// 3, 5 and 6 for Cyan, Magenta and Yellow&lt;br /&gt;
// Replace the number &amp;quot;0&amp;quot; by the number of your choice&lt;br /&gt;
// Baking group id is also avalaible in Attribute Spreadsheet Editor&lt;br /&gt;
&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    print($object+&amp;quot;\n&amp;quot;);&lt;br /&gt;
    setAttr ($object + &amp;quot;.octBakGrId&amp;quot;) (0);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Maxwell Render - Particles sequence - Force .abc file ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
//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&lt;br /&gt;
&lt;br /&gt;
global int $current_frame;&lt;br /&gt;
$current_frame = `currentTime -query`;&lt;br /&gt;
print $current_frame;&lt;br /&gt;
{&lt;br /&gt;
setAttr -type &amp;quot;string&amp;quot; maxwellRFRKParticles1.file (&amp;quot;/YOUR_PATH/YOUR_FILE&amp;quot; + $current_frame + &amp;quot;.abc&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Maxwell Render - Specify object ID color ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Specify object ID color&lt;br /&gt;
&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    print($object+&amp;quot;\n&amp;quot;);&lt;br /&gt;
    setAttr ($object + &amp;quot;.mxSpecifyObjIdColor&amp;quot;) (1);&lt;br /&gt;
    setAttr ($object + &amp;quot;.mxObjIdColor&amp;quot;) -type &amp;quot;double3&amp;quot; 1 0 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Redshift - Add blend attribute and set random value for objects selection ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Useful for blending between colors with RedshiftUserDataScalar&lt;br /&gt;
&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    print($object);&lt;br /&gt;
    addAttr -ln &amp;quot;blend&amp;quot; -at double  -min 0 -max 1 -dv 0 $object;&lt;br /&gt;
    setAttr ($object + &amp;quot;.blend&amp;quot;) (rand(1));&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Redshift - Set Primary visibility off for selection (layer override) ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Go in right render layer and select objects&lt;br /&gt;
&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    print($object+&amp;quot;\n&amp;quot;);&lt;br /&gt;
    setAttr ($object + &amp;quot;.rsEnableVisibilityOverrides&amp;quot;) (1);&lt;br /&gt;
    editRenderLayerAdjustment ($object + &amp;quot;.rsPrimaryRayVisible&amp;quot;);&lt;br /&gt;
    setAttr ($object + &amp;quot;.rsPrimaryRayVisible&amp;quot;) (0);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Convert Motion trail to curve ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select the motion trail first&lt;br /&gt;
&lt;br /&gt;
{&lt;br /&gt;
$selected=`ls -dag -et snapshotShape`;&lt;br /&gt;
for ($obj in $selected){&lt;br /&gt;
$pts=(getAttr($obj+&amp;quot;.pts&amp;quot;));&lt;br /&gt;
$size=size($pts);&lt;br /&gt;
$curve=`curve -d 1 -p $pts[0] $pts[1] $pts[2] -p $pts[4] $pts[5] $pts[6] -k 0 -k 1`;&lt;br /&gt;
for($i=8;$i&amp;lt;$size;$i+=4)&lt;br /&gt;
curve -os -a -p $pts[$i] $pts[$i+1] $pts[$i+2] $curve ;&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Quantize keyframes for selection ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Snap keys on frames for objects selection&lt;br /&gt;
&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    print($object+&amp;quot;\n&amp;quot;);&lt;br /&gt;
    snapKey $object;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Loop image sequence for texture ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// On File texture, check Image sequence, and edit expression&lt;br /&gt;
&lt;br /&gt;
file1.frameExtension=((frame%8)+1);&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Symmetrize - Duplicate &amp;amp; merge object ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select half object first&lt;br /&gt;
&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    print($object+&amp;quot;\n&amp;quot;);&lt;br /&gt;
    xform -piv 0 0 0 $object;&lt;br /&gt;
    duplicate -rr;&lt;br /&gt;
    setAttr ($object + &amp;quot;.scaleX&amp;quot;) (-1);&lt;br /&gt;
    select -add $object ;&lt;br /&gt;
    polyPerformAction polyUnite o 0;&lt;br /&gt;
    polyMergeVertex  -d 0.0001 -am 1 -ch 1;&lt;br /&gt;
    DeleteHistory;&lt;br /&gt;
    rename ($object);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Mirror object ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select object first&lt;br /&gt;
&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    print($object+&amp;quot;\n&amp;quot;);&lt;br /&gt;
    DeleteHistory;&lt;br /&gt;
    makeIdentity -apply true -t 1 -r 1 -s 1 -n 0 -pn 1;&lt;br /&gt;
    xform -piv 0 0 0 $object;&lt;br /&gt;
    duplicate -rr;&lt;br /&gt;
    setAttr ($object + &amp;quot;.scaleX&amp;quot;) (-1);&lt;br /&gt;
    DeleteHistory;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Group each object and rename ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select objects first&lt;br /&gt;
&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    string $name = ($object);&lt;br /&gt;
    select $object ;&lt;br /&gt;
    doGroup 0 1 1;&lt;br /&gt;
    rename ($name + &amp;quot;_GRP&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Change path in an Attribute ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Here the Attribute is &amp;quot;.filePrefix&amp;quot; - Select objects first&lt;br /&gt;
&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    string $path = getAttr ($object+&amp;quot;.filePrefix&amp;quot;);&lt;br /&gt;
    $path = `substitute &amp;quot;//OLD/PATH/&amp;quot; $path &amp;quot;//NEW/PATH/&amp;quot;`;&lt;br /&gt;
    setAttr -type &amp;quot;string&amp;quot; ($object+&amp;quot;.filePrefix&amp;quot;) ($path);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Change opacity mode on V-Ray shaders ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select shaders first&lt;br /&gt;
&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    if (attributeExists(&amp;quot;omode&amp;quot;,$object)) { //check if attribute exists&lt;br /&gt;
        CBunlockAttr ($object+&amp;quot;.omode&amp;quot;); //unlock opacity mode&lt;br /&gt;
    }&lt;br /&gt;
    if (attributeExists(&amp;quot;opacityMode&amp;quot;,$object)) {&lt;br /&gt;
        setAttr ($object+&amp;quot;.opacityMode&amp;quot;) 1; //set opacity mode in Clip - 0 pour Normal&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// Alternative&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    if (attributeExists(&amp;quot;opacityMode&amp;quot;,$object)) {&lt;br /&gt;
        setAttr ($object+&amp;quot;.opacityMode&amp;quot;) -l false; //unlock attribute if locked&lt;br /&gt;
    }&lt;br /&gt;
    if (attributeExists(&amp;quot;opacityMode&amp;quot;,$object)) {&lt;br /&gt;
        setAttr ($object+&amp;quot;.opacityMode&amp;quot;) 2; //set opacity mode in Clip - 0 pour Normal&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Change color space on selected fileTextures ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Useful to automatically convert Quixel Megascans by example from sRGB/Raw to ACES color spaces&lt;br /&gt;
&lt;br /&gt;
string $object_selection[] = (`ls -sl`);&lt;br /&gt;
for ($object in $object_selection) {&lt;br /&gt;
    if(`getAttr ($object+&amp;quot;.cs&amp;quot;)` == &amp;quot;sRGB&amp;quot;){&lt;br /&gt;
        setAttr ($object + &amp;quot;.cs&amp;quot;) -type &amp;quot;string&amp;quot; &amp;quot;Utility - sRGB - Texture&amp;quot;;&lt;br /&gt;
    }&lt;br /&gt;
    if(`getAttr ($object+&amp;quot;.cs&amp;quot;)` == &amp;quot;Raw&amp;quot;){&lt;br /&gt;
        setAttr ($object + &amp;quot;.cs&amp;quot;) -type &amp;quot;string&amp;quot; &amp;quot;Utility - Raw&amp;quot;;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Redshift - custom Tesselation on selected objects ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select objects first&lt;br /&gt;
&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    print($object+&amp;quot;\n&amp;quot;);&lt;br /&gt;
    setAttr ($object + &amp;quot;.rsMinTessellationLength&amp;quot;) (0.1);&lt;br /&gt;
    setAttr ($object + &amp;quot;.rsMaxTessellationSubdivs&amp;quot;) (2);&lt;br /&gt;
    setAttr ($object + &amp;quot;.rsOutOfFrustumTessellationFactor&amp;quot;) (4);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Change color on selected shaders ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select shaders first&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    print($object+&amp;quot;\n&amp;quot;);&lt;br /&gt;
    setAttr ($object + &amp;quot;.color&amp;quot;) -l false;&lt;br /&gt;
    setAttr ($object + &amp;quot;.color&amp;quot;) -type &amp;quot;double3&amp;quot; (0.18) (0.18) (0.18);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Change Filter Type on selected Files Textures ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select files textures first - 0 means Off&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    print($object+&amp;quot;\n&amp;quot;);&lt;br /&gt;
    setAttr ($object + &amp;quot;.filterType&amp;quot;) 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Clean Render Layers ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// In MEL&lt;br /&gt;
fixRenderLayerOutAdjustmentErrors;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Change Filter Type on selected Files Textures ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select files textures first - 0 means Off&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    print($object+&amp;quot;\n&amp;quot;);&lt;br /&gt;
    setAttr ($object + &amp;quot;.filterType&amp;quot;) 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Select by name ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select objects with &amp;quot;toto&amp;quot;&lt;br /&gt;
select -r &amp;quot;toto*&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Display color on shapes ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select objects&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    print($object+&amp;quot;\n&amp;quot;);&lt;br /&gt;
    setAttr ($object + &amp;quot;.displayColors&amp;quot;) 1;&lt;br /&gt;
    setDisplayColorChannelAttribute ($object + &amp;quot;.displayColorChannel&amp;quot;);&lt;br /&gt;
    polyColorPerVertex -r 1 -g 0 -b 0 -a 1 -cdo;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Geometry Constraint on multiple selection ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select objects to constrain&lt;br /&gt;
string $objectBase = &amp;quot;surfaceName&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    select -cl;&lt;br /&gt;
    select $objectBase;&lt;br /&gt;
    select -add $object;&lt;br /&gt;
    geometryConstraint -weight 1;&lt;br /&gt;
    select -r &amp;quot;*Constraint*&amp;quot;;&lt;br /&gt;
    doDelete;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
=== Speed up smokes rendering with V-Ray ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select smokes first&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    print($object+&amp;quot;\n&amp;quot;);&lt;br /&gt;
    setAttr ($object + &amp;quot;.rendStep&amp;quot;) 160;&lt;br /&gt;
    setAttr ($object + &amp;quot;.shadowStep&amp;quot;) 400;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Set bump multiplier on multiple V-Ray shaders ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select shaders&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    if (attributeExists(&amp;quot;bumpMult&amp;quot;,$object)) {&lt;br /&gt;
        setAttr ($object + &amp;quot;.bumpMult&amp;quot;) -1; //set bump multiplier at -1&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== STOP/START viewport ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// As seen on https://www.toadstorm.com/. - Put it in your shelf&lt;br /&gt;
paneLayout -e -manage false $gMainPane&lt;br /&gt;
&lt;br /&gt;
paneLayout -e -manage true $gMainPane&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Select curves by name ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select objects first - Replace &amp;quot;toto&amp;quot; by what you are looking for&lt;br /&gt;
&lt;br /&gt;
select `ls -type &amp;quot;nurbsCurve&amp;quot; &amp;quot;*toto*&amp;quot;`;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Noise expression ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Replace &amp;quot;pCube1&amp;quot;&lt;br /&gt;
&lt;br /&gt;
pCube1.translateX=sin(time*20)*0.01*noise(time*10);&lt;br /&gt;
pCube1.translateY=sin(time*4)*0.01*noise(time*10);&lt;br /&gt;
pCube1.translateZ=sin(time*12)*0.01*noise(time*10);&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== V-ray - Make curves renderables ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Replace VRayLightMtl1 at the end by your material&lt;br /&gt;
&lt;br /&gt;
$selected=`ls -dag -et curveShape`;&lt;br /&gt;
for ($object in $selected){&lt;br /&gt;
    // Add V-ray Extra attributes&lt;br /&gt;
    vray addAttributesFromGroup $object vray_nurbscurve_renderable 1;&lt;br /&gt;
    vrayAddAttr $object vraySeparator_vray_nurbscurve_renderable;&lt;br /&gt;
    vrayAddAttr $object vrayNurbsCurveRenderable;&lt;br /&gt;
    vrayAddAttr $object vrayNurbsCurveMaterial;&lt;br /&gt;
    vrayAddAttr $object vrayNurbsCurveTesselation;&lt;br /&gt;
    vrayAddAttr $object vrayNurbsCurveStartWidth;&lt;br /&gt;
    vrayAddAttr $object vrayNurbsCurveLockEndWidth;&lt;br /&gt;
    vrayAddAttr $object vrayNurbsCurveEndWidth;&lt;br /&gt;
    setUITemplate -pst attributeEditorTemplate;&lt;br /&gt;
// Activate renderable&lt;br /&gt;
setAttr ($object + &amp;quot;.vrayNurbsCurveRenderable&amp;quot;) 1;&lt;br /&gt;
// Replace VRayLightMtl1 by your material&lt;br /&gt;
connectAttr -force VRayLightMtl1.outColor ($object + &amp;quot;.vrayNurbsCurveMaterial&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Get object type ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Replace toto with the object whose type you want to know&lt;br /&gt;
&lt;br /&gt;
objectType toto;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Render layer override on specific object type ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Replace &amp;quot;Node&amp;quot; by the object type on which you want to act&lt;br /&gt;
&lt;br /&gt;
$selected=`ls -type &amp;quot;Node&amp;quot;`;&lt;br /&gt;
for ($object in $selected){&lt;br /&gt;
    // Create layer override on Primary Visibility attribute on current renderLayer&lt;br /&gt;
    editRenderLayerAdjustment ($object + &amp;quot;.primaryVisibility&amp;quot;);&lt;br /&gt;
    // Set Primary Visibility - 0 or 1&lt;br /&gt;
    setAttr ($object + &amp;quot;.primaryVisibility&amp;quot;) 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== V-ray - Make lights invisible ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$selected=`ls -type &amp;quot;VRayLightRectShape&amp;quot;`;&lt;br /&gt;
for ($object in $selected){&lt;br /&gt;
    setAttr ($object + &amp;quot;.invisible&amp;quot;) 1;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
$selected=`ls -type &amp;quot;VRayLightSphereShape&amp;quot;`;&lt;br /&gt;
for ($object in $selected){&lt;br /&gt;
    setAttr ($object + &amp;quot;.invisible&amp;quot;) 1;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
$selected=`ls -type &amp;quot;VRayLightDomeShape&amp;quot;`;&lt;br /&gt;
for ($object in $selected){&lt;br /&gt;
    setAttr ($object + &amp;quot;.invisible&amp;quot;) 1;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== V-ray - Select Rect Light ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
select `ls -type &amp;quot;VRayLightRectShape&amp;quot;`;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== V-ray - Rect Lights - Directional Preview - Always for all ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$selected=`ls -type &amp;quot;VRayLightRectShape&amp;quot;`;&lt;br /&gt;
for ($object in $selected){&lt;br /&gt;
    setAttr ($object + &amp;quot;.directionalPreview&amp;quot;) 1;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Randomize rotation on selected objects ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// As posted on CGTalk by NaughtyNathan&lt;br /&gt;
// &amp;quot;just set the vector values to the maximum random x,y,z rotations you want to apply to the selected transforms.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
vector $rndRot = &amp;lt;&amp;lt; 0,0,90 &amp;gt;&amp;gt;;	// x,y,z rotations&lt;br /&gt;
for ($object in `ls -sl -tr`){&lt;br /&gt;
    rotate `rand ($rndRot.x)` `rand ($rndRot.y)` `rand ($rndRot.z)` $object;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Quit Maya ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Brute force method&lt;br /&gt;
&lt;br /&gt;
$i = `getpid`; //application ID&lt;br /&gt;
    system(&amp;quot;taskkill /PID &amp;quot;  + $i +&amp;quot; /f&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
// In a gentle way&lt;br /&gt;
&lt;br /&gt;
evalDeferred(&amp;quot;quit -f&amp;quot;);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== V-ray - Import list of Alembics through Proxys Import ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// List of Alembics files - Replace by the name of your Alembics&lt;br /&gt;
string $alembicsParts[] = {&amp;quot;part1&amp;quot;,&amp;quot;part2&amp;quot;,&amp;quot;part3&amp;quot;};&lt;br /&gt;
&lt;br /&gt;
// Replace the PATH of your files - Scale by 100 for Houdini Alembics - &amp;lt;frame04&amp;gt; for sequences&lt;br /&gt;
for ($alembicsPart in $alembicsParts){&lt;br /&gt;
    vrayCreateProxy -node $alembicsPart -existing -dir (&amp;quot;C:/YOURPATH/&amp;quot;+$alembicsPart+&amp;quot;.&amp;lt;frame04&amp;gt;.abc&amp;quot;) -createProxyNode;&lt;br /&gt;
    setAttr ($alembicsPart+&amp;quot;_vraymesh.animType&amp;quot;) 1;&lt;br /&gt;
    setAttr ($alembicsPart+&amp;quot;.scaleZ&amp;quot;) 100;&lt;br /&gt;
    setAttr ($alembicsPart+&amp;quot;.scaleX&amp;quot;) 100;&lt;br /&gt;
    setAttr ($alembicsPart+&amp;quot;.scaleY&amp;quot;) 100;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== V-ray - Change path to VRayMesh for selected proxies ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Change path with your own .vrmesh&lt;br /&gt;
$selected=`ls -type &amp;quot;VRayMesh&amp;quot;`;&lt;br /&gt;
for ($object in $selected){&lt;br /&gt;
    setAttr -type &amp;quot;string&amp;quot; ($object + &amp;quot;.fileName2&amp;quot;) &amp;quot;//DISK/PATH/YOUR_VRMESH.vrmesh&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// If you want to change Geometry type - 4 for GPU mesh - add following in the loop&lt;br /&gt;
//    setAttr ($object + &amp;quot;.geomType&amp;quot;) 4;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Delete image planes ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Delete image plane if exists.&lt;br /&gt;
$selected=`ls -type &amp;quot;imagePlane&amp;quot;`;&lt;br /&gt;
select $selected;&lt;br /&gt;
for ($object in $selected){&lt;br /&gt;
    doDelete;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Merge alembic from set ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select objects in a set called EXPORT_SET&lt;br /&gt;
select -r EXPORT_SET ;&lt;br /&gt;
timeControl -edit -forceRedraw $gPlayBackSlider;&lt;br /&gt;
&lt;br /&gt;
// Create list of objects from EXPORT_SET&lt;br /&gt;
string $assetParts[] = `ls -sl`;&lt;br /&gt;
$assetPartsList = stringArrayToString($assetParts,&amp;quot; &amp;quot;);&lt;br /&gt;
&lt;br /&gt;
// Merge alembic with these objects&lt;br /&gt;
AbcImport -mode import -connect $assetPartsList &amp;quot;//DISK/PATH/alembic.abc&amp;quot;;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Create Texture reference ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// CREATE TEXTURE REFERENCE ON EXPORT SET&lt;br /&gt;
&lt;br /&gt;
select -r YOUR_GROUP ;&lt;br /&gt;
CreateTextureReferenceObject;&lt;br /&gt;
select -cl  ;&lt;br /&gt;
&lt;br /&gt;
// REMOVE REFERENCE OBJECTS FROM EXPORT SET&lt;br /&gt;
select -r YOUR_GROUP_reference ;&lt;br /&gt;
string $selection[] = `ls -sl`;&lt;br /&gt;
string $polyGons[] = `filterExpand -sm 12 $selection`;&lt;br /&gt;
select -r $polyGons;&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    sets -rm EXPORT_SET $object;&lt;br /&gt;
}&lt;br /&gt;
select -cl  ;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Replace animated objects with V-Ray proxies ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// First select animated objects to replace&lt;br /&gt;
// For each object create a proxy then constrain then bake simulation then delete constraint&lt;br /&gt;
&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
	vrayCreateProxy -node assetName -existing -dir (&amp;quot;//DISK/PATH/your_asset.vrmesh&amp;quot;) -createProxyNode;&lt;br /&gt;
	select -r $object ;&lt;br /&gt;
	select -add assetName ;&lt;br /&gt;
	doCreateParentConstraintArgList 1 { &amp;quot;0&amp;quot;,&amp;quot;0&amp;quot;,&amp;quot;0&amp;quot;,&amp;quot;0&amp;quot;,&amp;quot;0&amp;quot;,&amp;quot;0&amp;quot;,&amp;quot;0&amp;quot;,&amp;quot;0&amp;quot;,&amp;quot;1&amp;quot;,&amp;quot;&amp;quot;,&amp;quot;1&amp;quot; };&lt;br /&gt;
	parentConstraint -weight 1;&lt;br /&gt;
	bakeResults -simulation true -t &amp;quot;1000:1100&amp;quot; -sampleBy 1 -oversamplingRate 1 -disableImplicitControl true -preserveOutsideKeys true -sparseAnimCurveBake false -removeBakedAttributeFromLayer false -removeBakedAnimFromLayer false -bakeOnOverrideLayer false -minimizeRotation true -controlPoints false -shape true {&amp;quot;assetName&amp;quot;};&lt;br /&gt;
	select `ls -type &amp;quot;constraint&amp;quot;`;&lt;br /&gt;
	select -add $object ;&lt;br /&gt;
	doDelete;&lt;br /&gt;
	select -cl  ;&lt;br /&gt;
	rename &amp;quot;assetName&amp;quot; $object;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Select all meshes in a group ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// From cmadsenAniden on forums.autodesk.com&lt;br /&gt;
// Replace group1 by the name of your own group&lt;br /&gt;
&lt;br /&gt;
select -r group1 ;&lt;br /&gt;
string $selection[] = `ls -sl`;&lt;br /&gt;
string $polyGons[] = `filterExpand -sm 12 $selection`;&lt;br /&gt;
select -r $polyGons;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Select shot camera ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// CREATE VARIABLE FOR SHOT CAMERA AND SELECT IT&lt;br /&gt;
&lt;br /&gt;
select `ls -type &amp;quot;camera&amp;quot;`;&lt;br /&gt;
select -d sideShape frontShape topShape perspShape;&lt;br /&gt;
$camerashot = `ls -sl`;&lt;br /&gt;
string $shotcamera = $camerashot[0];&lt;br /&gt;
print $shotcamera;&lt;br /&gt;
select $shotcamera;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Get list of frames with keys on all transform objects ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$selected=`ls -dag -et transform`;&lt;br /&gt;
&lt;br /&gt;
float $arrathy[] = `keyframe -query $selected`;&lt;br /&gt;
&lt;br /&gt;
float $sorted[] = python(&amp;quot;import pymel.core as pm; list(set((pm.getMelGlobal(\&amp;quot;float[]\&amp;quot;, \&amp;quot;$arrathy\&amp;quot;))))&amp;quot;);&lt;br /&gt;
print $sorted;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== MULTI SNAP ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Replace a list of objects by another with bake of animation. Replace FSTART and FEND with your own padding.&lt;br /&gt;
&lt;br /&gt;
///////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
///////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
/*&lt;br /&gt;
Type the command MS() in MEL form to open UI.&lt;br /&gt;
*/&lt;br /&gt;
///////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
///////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
source &amp;quot;generateChannelMenu.mel&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
global proc MS ()&lt;br /&gt;
{&lt;br /&gt;
     global string $sourceObjects;&lt;br /&gt;
     global string $destinationObjects;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    // If the window exists already, delete it.&lt;br /&gt;
    if (`window -exists multiSnapWindow`)&lt;br /&gt;
    {&lt;br /&gt;
        deleteUI multiSnapWindow;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    // Build the window.&lt;br /&gt;
    global string $man_window;&lt;br /&gt;
    string $man_window = `window -title &amp;quot; MULTI SNAP&amp;quot; -sizeable 0 -w 300 multiSnapWindow`;&lt;br /&gt;
    frameLayout -label &amp;quot;Snap source objects on destination objects.&amp;quot;;&lt;br /&gt;
    rowLayout -width 540 -nc 2 -cw4 10 20 20 100;&lt;br /&gt;
    // Source objects section&lt;br /&gt;
    frameLayout -label &amp;quot;Source objects&amp;quot;;&lt;br /&gt;
    $sourceObjects = `textScrollList -width 600 -height 300`;&lt;br /&gt;
    rowLayout -width 240 -nc 2 -cw2 120 120;&lt;br /&gt;
    button -label &amp;quot;Add selected&amp;quot; -command &amp;quot;MS_addObjects ();&amp;quot; -width 120;&lt;br /&gt;
    button -label &amp;quot;Remove selected&amp;quot; -command &amp;quot;MS_removeObjects ();&amp;quot; -width 120;&lt;br /&gt;
    setParent ..;&lt;br /&gt;
    rowLayout -width 240 -nc 2 -cw2 120 120;&lt;br /&gt;
    button -label &amp;quot;Remove All&amp;quot; -command &amp;quot;MS_clearObjects ();&amp;quot; -width 240;&lt;br /&gt;
    setParent ..;&lt;br /&gt;
    setParent ..;&lt;br /&gt;
    rowLayout -nc 3;&lt;br /&gt;
    button -label &amp;quot;Create&amp;quot; -command &amp;quot;VRAYCONNECDO() &amp;quot; -width 140 -align center;&lt;br /&gt;
    button -label &amp;quot;Close&amp;quot; -command &amp;quot;DAC_CloseUI() &amp;quot; -width 140 -align center;&lt;br /&gt;
    setParent ..;&lt;br /&gt;
    setParent ..;&lt;br /&gt;
    // Destination objects section&lt;br /&gt;
    frameLayout -label &amp;quot;Destination objects&amp;quot;;&lt;br /&gt;
    $destinationObjects = `textScrollList -width 600 -height 300`;&lt;br /&gt;
    rowLayout -width 240 -nc 2 -cw2 120 120;&lt;br /&gt;
    button -label &amp;quot;Add selected&amp;quot; -command &amp;quot;MS_addMM ();&amp;quot; -width 120;&lt;br /&gt;
    button -label &amp;quot;Remove selected&amp;quot; -command &amp;quot;MS_removeMM ();&amp;quot; -width 120;&lt;br /&gt;
    setParent ..;&lt;br /&gt;
    setParent ..;&lt;br /&gt;
    rowLayout -nc 3;&lt;br /&gt;
    button -label &amp;quot;SNAP IT&amp;quot; -command &amp;quot;VRAYCONNECDO() &amp;quot; -width 140 -align center;&lt;br /&gt;
    button -label &amp;quot;Close&amp;quot; -command &amp;quot;DAC_CloseUI() &amp;quot; -width 140 -align center;&lt;br /&gt;
    setParent ..;&lt;br /&gt;
    setParent ..;&lt;br /&gt;
&lt;br /&gt;
// Show the window.&lt;br /&gt;
showWindow multiSnapWindow;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
global proc string[] getShaders(string $from)&lt;br /&gt;
{&lt;br /&gt;
// get the shapes from the input&lt;br /&gt;
string $shapes[] = ls(&amp;quot;-o&amp;quot;, &amp;quot;-dag&amp;quot;, &amp;quot;-s&amp;quot;, $from);&lt;br /&gt;
// give me the connected &amp;quot;shadingEngines&amp;quot;&lt;br /&gt;
string $shadingEngines[] = listConnections(&amp;quot;-type&amp;quot;,&amp;quot;shadingEngine&amp;quot;, $shapes);&lt;br /&gt;
// list the connected materials (shaders) from that&lt;br /&gt;
string $materials[] = ls(&amp;quot;-mat&amp;quot;, listConnections($shadingEngines));&lt;br /&gt;
// remove duplicate occurrences.&lt;br /&gt;
return (stringArrayRemoveDuplicates($materials));&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
//Add selected objects to list.&lt;br /&gt;
global proc MS_addObjects ()&lt;br /&gt;
{&lt;br /&gt;
      global string $sourceObjects;&lt;br /&gt;
      string $selectedshapes[] = `ls -sl -l`;&lt;br /&gt;
      //print $selectedshapes;&lt;br /&gt;
      int $count = 0;&lt;br /&gt;
&lt;br /&gt;
if ($selectedshapes[0] != &amp;quot;&amp;quot;)&lt;br /&gt;
{&lt;br /&gt;
   for ($i in $selectedshapes)&lt;br /&gt;
   {&lt;br /&gt;
     $count ++;&lt;br /&gt;
     textScrollList -edit -append $i $sourceObjects;&lt;br /&gt;
   }&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
//Add selected objects to list.&lt;br /&gt;
global proc MS_addMM ()&lt;br /&gt;
{&lt;br /&gt;
      global string $destinationObjects;&lt;br /&gt;
      string $selectedshapes[] = `ls -sl -l`;&lt;br /&gt;
      //print $selectedshapes;&lt;br /&gt;
      int $count = 0;&lt;br /&gt;
&lt;br /&gt;
if ($selectedshapes[0] != &amp;quot;&amp;quot;)&lt;br /&gt;
{&lt;br /&gt;
   for ($i in $selectedshapes)&lt;br /&gt;
   {&lt;br /&gt;
     $count ++;&lt;br /&gt;
     textScrollList -edit -append $i $destinationObjects;&lt;br /&gt;
   }&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// Clear objects from list.&lt;br /&gt;
global proc MS_clearObjects ()&lt;br /&gt;
{&lt;br /&gt;
    global string $sourceObjects;&lt;br /&gt;
textScrollList -e -ra $sourceObjects;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// Remove selected object from list.&lt;br /&gt;
global proc MS_removeObjects ()&lt;br /&gt;
{&lt;br /&gt;
   global string $sourceObjects;&lt;br /&gt;
&lt;br /&gt;
    int $index [] = `textScrollList -query -selectIndexedItem $sourceObjects`;&lt;br /&gt;
    if ($index [0] != 0)&lt;br /&gt;
    {&lt;br /&gt;
        textScrollList -edit -removeIndexedItem $index [0] $sourceObjects;&lt;br /&gt;
    }&lt;br /&gt;
   global string $sourceObjects;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
global proc VRAYCONNECDO()&lt;br /&gt;
{&lt;br /&gt;
    // UI Elements&lt;br /&gt;
global string $sourceObjects;&lt;br /&gt;
global string $destinationObjects;&lt;br /&gt;
// Define user selected objects&lt;br /&gt;
string $selected_objects[] = `textScrollList -query -allItems $sourceObjects`;&lt;br /&gt;
string $meshMaterial[] = `textScrollList -query -allItems $destinationObjects`;&lt;br /&gt;
int $i = 0;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
// SET PADDING&lt;br /&gt;
string $FSTART = &amp;quot;1&amp;quot;;&lt;br /&gt;
string $FEND = &amp;quot;100&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
print $FSTART;&lt;br /&gt;
print $FEND;&lt;br /&gt;
&lt;br /&gt;
string $PADDING = $FSTART + &amp;quot;:&amp;quot; + $FEND;&lt;br /&gt;
&lt;br /&gt;
//Progress bar&lt;br /&gt;
global string $gMainProgressBar;&lt;br /&gt;
&lt;br /&gt;
// Start the progress bar and adjust its max value for this operation.&lt;br /&gt;
    int $steps = size($selected_objects);&lt;br /&gt;
    progressBar -edit -beginProgress -isInterruptable true -status &amp;quot;Connecting shaders to mesh material ...&amp;quot; -maxValue $steps $gMainProgressBar;&lt;br /&gt;
 &lt;br /&gt;
for ($i = 0; $i &amp;lt; size($selected_objects); $i ++)&lt;br /&gt;
{&lt;br /&gt;
        parentConstraint -n parentConstraintMS $selected_objects[$i] $meshMaterial[$i];&lt;br /&gt;
        select -r $meshMaterial[$i] ;&lt;br /&gt;
        bakeResults -simulation true -t $PADDING -sampleBy 1 -oversamplingRate 1 -disableImplicitControl true -preserveOutsideKeys true -sparseAnimCurveBake false -removeBakedAttributeFromLayer false -removeBakedAnimFromLayer false -bakeOnOverrideLayer false -minimizeRotation true -controlPoints false -shape true {$meshMaterial[$i]};&lt;br /&gt;
        select -cl  ;&lt;br /&gt;
        select -r &amp;quot;*parentConstraintMS*&amp;quot;;&lt;br /&gt;
        doDelete;&lt;br /&gt;
// Update the progress bar.&lt;br /&gt;
progressBar -edit -step 1 $gMainProgressBar;&lt;br /&gt;
}&lt;br /&gt;
// End the progress.&lt;br /&gt;
progressBar -edit -endProgress $gMainProgressBar;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Delete hidden objects ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select objects&lt;br /&gt;
&lt;br /&gt;
for ( $object in `ls -sl` ) {&lt;br /&gt;
    $vis = getAttr ($object+&amp;quot;.visibility&amp;quot;);&lt;br /&gt;
    if ($vis == 0){&lt;br /&gt;
        select -r $object ;&lt;br /&gt;
        doDelete ;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== V-Ray - BAKE MATERIALS ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Made to work also with mayabatch.exe&lt;br /&gt;
&lt;br /&gt;
////////////////////////////////////////////&lt;br /&gt;
// BAKE VRAY CUSTOM VARIABLES&lt;br /&gt;
////////////////////////////////////////////&lt;br /&gt;
&lt;br /&gt;
// ASSET PATH&lt;br /&gt;
string $assetFileType = &amp;quot;mayaBinary&amp;quot;;&lt;br /&gt;
string $assetPath = &amp;quot;C:/YOUR_PATH/YOUR_SURFACING_ASSET.mb&amp;quot;;&lt;br /&gt;
string $assetName = &amp;quot;ASSET_NAME&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
// LIGHT RIG PATH&lt;br /&gt;
string $lightRigFileType = &amp;quot;mayaAscii&amp;quot;;&lt;br /&gt;
string $lightRigPath = &amp;quot;C:/YOUR_PATH/YOUR_LIGHT_RIG.mb&amp;quot;;&lt;br /&gt;
string $lightRigName = &amp;quot;DAY_LIGHTING&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
// BAKED TEXTURES PATH&lt;br /&gt;
string $bakedTexturesPath = (&amp;quot;C:/YOUR_PATH/BAKED_TEXTURES/&amp;quot; + $assetName + &amp;quot;_&amp;quot; + $lightRigName + &amp;quot;_Bake&amp;quot;);&lt;br /&gt;
print $bakedTexturesPath;&lt;br /&gt;
&lt;br /&gt;
// SET RESOLUTION FOR BAKED MAPS&lt;br /&gt;
$resWidth = 4096;&lt;br /&gt;
$resHeight = $resWidth;&lt;br /&gt;
&lt;br /&gt;
// COLOR SPACE FOR FILE TEXTURES&lt;br /&gt;
string $fileColorSpace = &amp;quot;ACES - ACEScg&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
////////////////////////////////////////////&lt;br /&gt;
// END OF CUSTOM VARIABLES&lt;br /&gt;
////////////////////////////////////////////&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
////////////////////////////////////////////&lt;br /&gt;
// RENDER SETTINGS&lt;br /&gt;
&lt;br /&gt;
// Set File Name Prefix&lt;br /&gt;
setAttr -type &amp;quot;string&amp;quot; vraySettings.fileNamePrefix &amp;quot;&amp;lt;Scene&amp;gt;/&amp;lt;Layer&amp;gt;/&amp;lt;Camera&amp;gt;_&amp;lt;Layer&amp;gt;_&amp;lt;Scene&amp;gt;&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
// Set resolution&lt;br /&gt;
$resWidthHalf = $resWidth/2;&lt;br /&gt;
$resHeightHalf = $resHeight/2;&lt;br /&gt;
setAttr &amp;quot;vraySettings.width&amp;quot; $resWidthHalf;&lt;br /&gt;
setAttr &amp;quot;vraySettings.height&amp;quot; $resHeightHalf;&lt;br /&gt;
&lt;br /&gt;
// Set Persp camera renderable&lt;br /&gt;
setAttr &amp;quot;perspShape.renderable&amp;quot; 1;&lt;br /&gt;
&lt;br /&gt;
// Set Image format&lt;br /&gt;
setAttr -type &amp;quot;string&amp;quot; &amp;quot;vraySettings.imageFormatStr&amp;quot; &amp;quot;exr (multichannel)&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
// Set Animation type on Standard&lt;br /&gt;
setAttr &amp;quot;vraySettings.animType&amp;quot; 0;&lt;br /&gt;
setAttr &amp;quot;vraySettings.animBatchOnly&amp;quot; 1;&lt;br /&gt;
&lt;br /&gt;
// Sampler type Bucket&lt;br /&gt;
setAttr &amp;quot;vraySettings.samplerType&amp;quot; 4;&lt;br /&gt;
&lt;br /&gt;
// Min Shading Rate&lt;br /&gt;
//setAttr &amp;quot;vraySettings.minShadeRate&amp;quot; 4;&lt;br /&gt;
setAttr &amp;quot;vraySettings.minShadeRate&amp;quot; 7;&lt;br /&gt;
&lt;br /&gt;
// Buckets subdivs&lt;br /&gt;
//setAttr &amp;quot;vraySettings.dmcMinSubdivs&amp;quot; 1;&lt;br /&gt;
//setAttr &amp;quot;vraySettings.dmcMaxSubdivs&amp;quot; 8;&lt;br /&gt;
//setAttr &amp;quot;vraySettings.dmcThreshold&amp;quot; 0.1;&lt;br /&gt;
setAttr &amp;quot;vraySettings.dmcMinSubdivs&amp;quot; 1;&lt;br /&gt;
setAttr &amp;quot;vraySettings.dmcMaxSubdivs&amp;quot; 15;&lt;br /&gt;
setAttr &amp;quot;vraySettings.dmcThreshold&amp;quot; 0.01;&lt;br /&gt;
&lt;br /&gt;
// Color mapping Linear&lt;br /&gt;
setAttr &amp;quot;vraySettings.cmap_type&amp;quot; 0;&lt;br /&gt;
&lt;br /&gt;
// GI on&lt;br /&gt;
setAttr &amp;quot;vraySettings.giOn&amp;quot; 1;&lt;br /&gt;
//setAttr &amp;quot;vraySettings.subdivs&amp;quot; 400;&lt;br /&gt;
setAttr &amp;quot;vraySettings.subdivs&amp;quot; 1000;&lt;br /&gt;
&lt;br /&gt;
// Max subdivs&lt;br /&gt;
setAttr &amp;quot;vraySettings.ddisplac_maxSubdivs&amp;quot; 16;&lt;br /&gt;
&lt;br /&gt;
// Cache geometry and bitmaps&lt;br /&gt;
setAttr &amp;quot;vraySettings.globopt_cache_geom_plugins&amp;quot; 1;&lt;br /&gt;
setAttr &amp;quot;vraySettings.globopt_cache_bitmaps&amp;quot; 1;&lt;br /&gt;
&lt;br /&gt;
// Dynamic memory limit&lt;br /&gt;
setAttr &amp;quot;vraySettings.sys_rayc_dynMemLimit&amp;quot; 0;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
////////////////////////////////////////////&lt;br /&gt;
// IMPORT&lt;br /&gt;
&lt;br /&gt;
// IMPORT LIGHT RIG&lt;br /&gt;
file -import -type $lightRigFileType  -ignoreVersion -mergeNamespacesOnClash false -rpr &amp;quot;:&amp;quot; -options &amp;quot;v=0;&amp;quot; $lightRigPath;&lt;br /&gt;
&lt;br /&gt;
// IMPORT ASSET&lt;br /&gt;
file -import -type $assetFileType  -ignoreVersion -mergeNamespacesOnClash false -rpr &amp;quot;:&amp;quot; -options &amp;quot;v=0;&amp;quot; $assetPath;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
// CREATE SETS&lt;br /&gt;
select `ls -type &amp;quot;mesh&amp;quot;`;&lt;br /&gt;
sets -name &amp;quot;assetOriginal_Set&amp;quot; ;&lt;br /&gt;
duplicate -rr;&lt;br /&gt;
group -w -n (&amp;quot;GRP_&amp;quot; + $assetName + &amp;quot;_BAKE_&amp;quot; + `toupper $lightRigName`);&lt;br /&gt;
sets -name &amp;quot;assetBaked_Set&amp;quot; ;&lt;br /&gt;
&lt;br /&gt;
// REMOVE BAKED PARTS FROM ORIGINAL PARTS SET&lt;br /&gt;
select -r assetBaked_Set ;&lt;br /&gt;
string $selection[] = `ls -sl`;&lt;br /&gt;
string $polyGons[] = `filterExpand -sm 12 $selection`;&lt;br /&gt;
select -r $polyGons;&lt;br /&gt;
pickWalk -d down;&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    sets -rm assetOriginal_Set $object;&lt;br /&gt;
}&lt;br /&gt;
select -cl  ;&lt;br /&gt;
&lt;br /&gt;
// DELETE HIDDEN OBJECTS&lt;br /&gt;
select -r assetBaked_Set ;&lt;br /&gt;
string $selection[] = `ls -sl`;&lt;br /&gt;
string $polyGons[] = `filterExpand -sm 12 $selection`;&lt;br /&gt;
select -r $polyGons;&lt;br /&gt;
for ( $object in `ls -sl` ) {&lt;br /&gt;
    $vis = getAttr ($object+&amp;quot;.visibility&amp;quot;);&lt;br /&gt;
    if ($vis == 0){&lt;br /&gt;
        select -r $object ;&lt;br /&gt;
        doDelete ;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
select -cl  ;&lt;br /&gt;
&lt;br /&gt;
// fixShapeName - Thanks to Pinkwerks&lt;br /&gt;
global proc&lt;br /&gt;
fixShapeName()&lt;br /&gt;
{&lt;br /&gt;
    string $me = &amp;quot;fixShapeName&amp;quot;;&lt;br /&gt;
    string $shape;&lt;br /&gt;
    string $newShapeName;&lt;br /&gt;
    string $parent;&lt;br /&gt;
    string $tmpA[];&lt;br /&gt;
	string $selectedShapes[] = `ls -sl -l`;&lt;br /&gt;
    int $sizeOfShapes = `size $selectedShapes`;&lt;br /&gt;
&lt;br /&gt;
    if ( $sizeOfShapes == 0 )&lt;br /&gt;
    	error($me + &amp;quot; : Nothing shapes to process!&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
    for ( $shape in $selectedShapes )&lt;br /&gt;
    {&lt;br /&gt;
    	$tmpA = `listRelatives -p $shape`;&lt;br /&gt;
		$parent = $tmpA[0];&lt;br /&gt;
		$newShapeName = ($parent + &amp;quot;Shape&amp;quot;);&lt;br /&gt;
		rename $shape $newShapeName;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// APPLY FIXSHAPENAME TO BAKED ASSET PARTS&lt;br /&gt;
select -r assetBaked_Set ;&lt;br /&gt;
string $selection[] = `ls -sl`;&lt;br /&gt;
string $polyGons[] = `filterExpand -sm 12 $selection`;&lt;br /&gt;
select -r $polyGons;&lt;br /&gt;
pickWalk -d down;&lt;br /&gt;
fixShapeName();&lt;br /&gt;
select -cl  ;&lt;br /&gt;
&lt;br /&gt;
// DELETE OBJECTS WITHOUT UVS&lt;br /&gt;
select -r assetBaked_Set ;&lt;br /&gt;
string $selection[] = `ls -sl`;&lt;br /&gt;
string $polyGons[] = `filterExpand -sm 12 $selection`;&lt;br /&gt;
select -r $polyGons;&lt;br /&gt;
for ( $object in `ls -sl` ) {&lt;br /&gt;
    int $vertexCount[] = `polyEvaluate -uv $object`;&lt;br /&gt;
    print $vertexCount;&lt;br /&gt;
    string $uvCount = $vertexCount[0];&lt;br /&gt;
    if ($uvCount == 0){&lt;br /&gt;
        select -r $object ;&lt;br /&gt;
        doDelete ;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// CREATE VRAY BAKE OPTIONS&lt;br /&gt;
createNode &amp;quot;VRayBakeOptions&amp;quot; -n &amp;quot;vrayBakeOptions&amp;quot;;&lt;br /&gt;
select -r assetBaked_Set ;&lt;br /&gt;
string $selection[] = `ls -sl`;&lt;br /&gt;
string $polyGons[] = `filterExpand -sm 12 $selection`;&lt;br /&gt;
select -r $polyGons;&lt;br /&gt;
$selected=`ls -sl`;&lt;br /&gt;
for ($object in $selected){&lt;br /&gt;
    sets -edit -forceElement  vrayBakeOptions $object ;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// HIDE ORIGINAL ASSET&lt;br /&gt;
select -r assetOriginal_Set ;&lt;br /&gt;
pickWalk -d up;&lt;br /&gt;
hide `ls -sl`;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
// BAKE VRAY OPTIONS&lt;br /&gt;
setAttr &amp;quot;vrayBakeOptions.udimBaking&amp;quot; 1;&lt;br /&gt;
setAttr &amp;quot;vrayBakeOptions.resolutionX&amp;quot; $resWidth;&lt;br /&gt;
&lt;br /&gt;
optionVar -intValue &amp;quot;vrayBakeType&amp;quot; 2;&lt;br /&gt;
optionVar -intValue &amp;quot;vraySkipNodesWithoutBakeOptions&amp;quot; 1;&lt;br /&gt;
optionVar -intValue &amp;quot;vrayAssignBakedTextures&amp;quot; 1;&lt;br /&gt;
optionVar -stringValue &amp;quot;vrayBakeOutputPath&amp;quot; $bakedTexturesPath;&lt;br /&gt;
optionVar -intValue &amp;quot;vrayBakeProjectionBaking&amp;quot; 0;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
// GO BAKE GO&lt;br /&gt;
select -cl  ;&lt;br /&gt;
select -r assetBaked_Set ;&lt;br /&gt;
string $selection[] = `ls -sl`;&lt;br /&gt;
string $polyGons[] = `filterExpand -sm 12 $selection`;&lt;br /&gt;
select -r $polyGons;&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    vrayStartBake;&lt;br /&gt;
}&lt;br /&gt;
select -cl  ;&lt;br /&gt;
&lt;br /&gt;
// UV TILING UDIM AND ACES CG FOR FILES&lt;br /&gt;
for ( $object in `ls -type &amp;quot;file&amp;quot;` ) {&lt;br /&gt;
    setAttr ($object + &amp;quot;.filterType&amp;quot;) 0;&lt;br /&gt;
    setAttr ($object + &amp;quot;.uvTilingMode&amp;quot;) 3;&lt;br /&gt;
    setAttr ($object + &amp;quot;.cs&amp;quot;) -type &amp;quot;string&amp;quot; $fileColorSpace;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// CONNECT SHADERS&lt;br /&gt;
select -cl  ;&lt;br /&gt;
select -r assetBaked_Set ;&lt;br /&gt;
string $selection[] = `ls -sl`;&lt;br /&gt;
string $polyGons[] = `filterExpand -sm 12 $selection`;&lt;br /&gt;
for ( $object in $polyGons ) {&lt;br /&gt;
    string $shadingGroupName = ($object + &amp;quot;Shape_bakedmtlSG&amp;quot;);&lt;br /&gt;
    sets -e -forceElement $shadingGroupName $object;&lt;br /&gt;
}&lt;br /&gt;
select -cl  ;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
///////////////////////////////////&lt;br /&gt;
// SAVE&lt;br /&gt;
file -rename (&amp;quot;C:/YOUR_PATH/BAKED_ASSETS/&amp;quot; + $assetName + &amp;quot;_&amp;quot; + $lightRigName + &amp;quot;_BAKE_DEBUG.mb&amp;quot;);&lt;br /&gt;
file -f -save;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Arnold - Set all Standins display on Bouding box ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$selected=`ls -type &amp;quot;aiStandIn&amp;quot;`;&lt;br /&gt;
for ($object in $selected){&lt;br /&gt;
    setAttr ($object + &amp;quot;.mode&amp;quot;) 0;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Arnold - Set all Standins display on Point cloud ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$selected=`ls -type &amp;quot;aiStandIn&amp;quot;`;&lt;br /&gt;
for ($object in $selected){&lt;br /&gt;
    setAttr ($object + &amp;quot;.mode&amp;quot;) 4;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Alembic - Loop animation on all nodes ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$selected=`ls -type &amp;quot;AlembicNode&amp;quot;`;&lt;br /&gt;
for ($object in $selected){&lt;br /&gt;
    setAttr ($object + &amp;quot;.cycleType&amp;quot;) 1;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Mental Ray nodes error - Delete Mayatomr plugin ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
unknownPlugin -remove &amp;quot;Mayatomr&amp;quot;;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Delete Unknown nodes ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
select -r `ls -type unknown`;&lt;br /&gt;
delete;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Write text ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
string $exampleFileName = ( &amp;quot;D:/yolo.bat&amp;quot; );&lt;br /&gt;
string $linesToWrite[] = {&lt;br /&gt;
    &amp;quot;youpi&amp;quot;,&lt;br /&gt;
    &amp;quot;youhou&amp;quot;&lt;br /&gt;
    };&lt;br /&gt;
int $result = fwriteAllLines($exampleFileName,$linesToWrite);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Point Lock No Attach on selected follicles ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    setAttr ($object + &amp;quot;.pointLock&amp;quot;) 0;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Convert .ma cameras from Reality Capture into .abc files ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// List of assets&lt;br /&gt;
string $fileParts[] = {&amp;quot;asset_001&amp;quot;, &amp;quot;asset_002&amp;quot;};&lt;br /&gt;
&lt;br /&gt;
// Replace the PATH of your files&lt;br /&gt;
for ($filePart in $fileParts){&lt;br /&gt;
	string $fileName = $filePart + &amp;quot;_cam&amp;quot;;&lt;br /&gt;
	string $filePath = &amp;quot;//DISK/PATH/&amp;quot; + $filePart + &amp;quot;/&amp;quot; + $filePart +&amp;quot;_cam.ma&amp;quot;;&lt;br /&gt;
	file -import -type &amp;quot;mayaAscii&amp;quot;  -ignoreVersion -ra true -mergeNamespacesOnClash false -rpr $fileName -options &amp;quot;v=0;p=17;f=0&amp;quot;  -pr  -importFrameRate true  -importTimeRange &amp;quot;override&amp;quot; $filePath;&lt;br /&gt;
	select -cl;&lt;br /&gt;
	select `ls -type &amp;quot;imagePlane&amp;quot;`;&lt;br /&gt;
	pickWalk -d up;&lt;br /&gt;
	doDelete;&lt;br /&gt;
	select `ls -type &amp;quot;camera&amp;quot;`;&lt;br /&gt;
	pickWalk -d up;	&lt;br /&gt;
	string $abcPath = &amp;quot;//DISK/PATH/&amp;quot; + $filePart + &amp;quot;/&amp;quot; + $filePart +&amp;quot;_cam.abc&amp;quot;;&lt;br /&gt;
	string $abcExp = &amp;quot;-frameRange 1 1 -uvWrite -worldSpace -dataFormat ogawa -root |* -file &amp;quot; + $abcPath;&lt;br /&gt;
	AbcExport -j $abcExp;&lt;br /&gt;
	select -all;&lt;br /&gt;
	doDelete;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Combine objects ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select objects&lt;br /&gt;
&lt;br /&gt;
polyPerformAction polyUnite o 0; &lt;br /&gt;
DeleteHistory;&lt;br /&gt;
FreezeTransformations;&lt;br /&gt;
makeIdentity -apply true -t 1 -r 1 -s 1 -n 0 -pn 1;&lt;br /&gt;
CenterPivot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Unitize UVs (one square UV by face) ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select objects&lt;br /&gt;
&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    select -r ($object+&amp;quot;.e[*]&amp;quot;);&lt;br /&gt;
    hilite ($object+&amp;quot;.e[*]&amp;quot;) ;&lt;br /&gt;
    polyMapCut -ch 1 ($object+&amp;quot;.e[*]&amp;quot;);&lt;br /&gt;
    polyForceUV -unitize $object;&lt;br /&gt;
    select $object;&lt;br /&gt;
    DeleteHistory;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== ONE-CLICK Unfold UVs ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select seams edges first&lt;br /&gt;
&lt;br /&gt;
invertSelection;&lt;br /&gt;
string $selectedEdges [] = `ls -sl`;&lt;br /&gt;
&lt;br /&gt;
string $selectedObject [] = `ls -selection -objectsOnly`;&lt;br /&gt;
&lt;br /&gt;
select -r ($selectedObject[0]+&amp;quot;.e[*]&amp;quot;);&lt;br /&gt;
hilite ($selectedObject[0]+&amp;quot;.e[*]&amp;quot;) ;&lt;br /&gt;
polyMapCut -ch 1 ($selectedObject[0]+&amp;quot;.e[*]&amp;quot;);&lt;br /&gt;
polyForceUV -unitize $selectedObject[0];&lt;br /&gt;
&lt;br /&gt;
select $selectedObject[0];&lt;br /&gt;
polyMapSewMove -nf 10 -lps 0 -ch 1 $selectedEdges;&lt;br /&gt;
select -r ($selectedObject[0]+&amp;quot;.map[*]&amp;quot;);&lt;br /&gt;
u3dUnfold -ite 1 -p 0 -bi 1 -tf 1 -ms 1024 -rs 0 ($selectedObject[0]+&amp;quot;.map[*]&amp;quot;);&lt;br /&gt;
u3dLayout -res 256 -scl 1 -spc 0.001 -mar 0.01 -box 0 1 0 1 $selectedObject[0];&lt;br /&gt;
select $selectedObject[0];&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Create Texture Reference on all shapes from a group ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select top group first&lt;br /&gt;
&lt;br /&gt;
string $selection[] = `ls -sl`;&lt;br /&gt;
string $polyGons[] = `filterExpand -sm 12 $selection`;&lt;br /&gt;
&lt;br /&gt;
for ($i = 0; $i &amp;lt; size($polyGons); $i ++)&lt;br /&gt;
{&lt;br /&gt;
    select -r $polyGons[$i] ;&lt;br /&gt;
    CreateTextureReferenceObject;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
select -r $selection;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Search and select by name ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// If you want to select every object containing &amp;quot;tree&amp;quot;&lt;br /&gt;
// From NaughtyNathan on CGTalk&lt;br /&gt;
&lt;br /&gt;
select -r &amp;quot;*tree*&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
// And if you want to select only transforms containing &amp;quot;tree&amp;quot;&lt;br /&gt;
&lt;br /&gt;
select `ls -type &amp;quot;transform&amp;quot; &amp;quot;*tree*&amp;quot;`;&lt;br /&gt;
&lt;br /&gt;
// And if you are using namespace, you need:&lt;br /&gt;
&lt;br /&gt;
select -r `ls -r 1 &amp;quot;*tree*&amp;quot;`;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Search and select UI ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
window -t &amp;quot;Search and Select&amp;quot;;&lt;br /&gt;
columnLayout;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
frameLayout -mh 10 -mw 10 -l &amp;quot;&amp;quot; ;&lt;br /&gt;
&lt;br /&gt;
textField  -text TOTO -w 200 &amp;quot;requestTransform&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
proc searchSelectTransform() {&lt;br /&gt;
    string $what = (&amp;quot;*&amp;quot; + `textField -q -text &amp;quot;requestTransform&amp;quot;` + &amp;quot;*&amp;quot;);&lt;br /&gt;
    select -r `ls -type &amp;quot;transform&amp;quot; -r 1 $what`;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
button -label &amp;quot;Search and select Transforms&amp;quot; -command &amp;quot;searchSelectTransform&amp;quot;;&lt;br /&gt;
setParent..;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
frameLayout -mh 10 -mw 10 -l &amp;quot;&amp;quot; ;&lt;br /&gt;
&lt;br /&gt;
textField  -text TOTO -w 200 &amp;quot;requestShape&amp;quot;;&lt;br /&gt;
		&lt;br /&gt;
proc searchSelectShape() {&lt;br /&gt;
    string $what = (&amp;quot;*&amp;quot; + `textField -q -text &amp;quot;requestShape&amp;quot;` + &amp;quot;*&amp;quot;);&lt;br /&gt;
    select -r `ls -type &amp;quot;shape&amp;quot; -r 1 $what`;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
button -label &amp;quot;Search and select Shapes&amp;quot; -command &amp;quot;searchSelectShape&amp;quot;;&lt;br /&gt;
setParent..;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
frameLayout -mh 10 -mw 10 -l &amp;quot;&amp;quot; ;&lt;br /&gt;
&lt;br /&gt;
textField  -text TOTO -w 200 &amp;quot;requestAny&amp;quot;;&lt;br /&gt;
		&lt;br /&gt;
proc searchSelectAny() {&lt;br /&gt;
    string $what = (&amp;quot;*&amp;quot; + `textField -q -text &amp;quot;requestAny&amp;quot;` + &amp;quot;*&amp;quot;);&lt;br /&gt;
    select -r `ls -r 1 $what`;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
button -label &amp;quot;Search and select any type&amp;quot; -command &amp;quot;searchSelectAny&amp;quot;;&lt;br /&gt;
setParent..;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
frameLayout -mh 10 -mw 10 -l &amp;quot;&amp;quot; ;&lt;br /&gt;
&lt;br /&gt;
textField  -text TOTO -w 200 &amp;quot;requestCtrls&amp;quot;;&lt;br /&gt;
		&lt;br /&gt;
proc searchSelectCtrls() {&lt;br /&gt;
    string $what = (&amp;quot;*&amp;quot; + `textField -q -text &amp;quot;requestCtrls&amp;quot;` + &amp;quot;*&amp;quot;);&lt;br /&gt;
    select -r `ls -type &amp;quot;nurbsCurve&amp;quot; -r 1 $what`;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
button -label &amp;quot;Search and select Ctrls&amp;quot; -command &amp;quot;searchSelectCtrls&amp;quot;;&lt;br /&gt;
setParent..;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
frameLayout -mh 10 -mw 10 -l &amp;quot;&amp;quot; ;&lt;br /&gt;
&lt;br /&gt;
textField  -text TOTO -w 200 &amp;quot;requestJoints&amp;quot;;&lt;br /&gt;
		&lt;br /&gt;
proc searchSelectJoints() {&lt;br /&gt;
    string $what = (&amp;quot;*&amp;quot; + `textField -q -text &amp;quot;requestJoints&amp;quot;` + &amp;quot;*&amp;quot;);&lt;br /&gt;
    select -r `ls -type &amp;quot;joint&amp;quot; -r 1 $what`;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
button -label &amp;quot;Search and select Joints&amp;quot; -command &amp;quot;searchSelectJoints&amp;quot;;&lt;br /&gt;
setParent..;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
showWindow;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Constrain Parent and Scale on a selection of objects ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select objects&lt;br /&gt;
&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    select -r pCube1 ;&lt;br /&gt;
    select -add $object ;&lt;br /&gt;
    doCreateParentConstraintArgList 1 { &amp;quot;1&amp;quot;,&amp;quot;0&amp;quot;,&amp;quot;0&amp;quot;,&amp;quot;0&amp;quot;,&amp;quot;0&amp;quot;,&amp;quot;0&amp;quot;,&amp;quot;0&amp;quot;,&amp;quot;0&amp;quot;,&amp;quot;1&amp;quot;,&amp;quot;&amp;quot;,&amp;quot;1&amp;quot; };&lt;br /&gt;
    parentConstraint -mo -weight 1;&lt;br /&gt;
    doCreateScaleConstraintArgList 1 { &amp;quot;0&amp;quot;,&amp;quot;1&amp;quot;,&amp;quot;1&amp;quot;,&amp;quot;1&amp;quot;,&amp;quot;0&amp;quot;,&amp;quot;0&amp;quot;,&amp;quot;0&amp;quot;,&amp;quot;1&amp;quot;,&amp;quot;&amp;quot;,&amp;quot;1&amp;quot; };&lt;br /&gt;
    scaleConstraint -offset 1 1 1 -weight 1;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== All ASS Arnold proxies in bounding box ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
select `ls -type &amp;quot;aiStandIn&amp;quot;`;&lt;br /&gt;
&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    setAttr ($object + &amp;quot;.mode&amp;quot;) (0);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Replace Gpu Cache by Alembic Geometry ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
for ( $gpuNode in `ls -sl -l` ) {&lt;br /&gt;
    string $path = getAttr ($gpuNode+&amp;quot;.cacheFileName&amp;quot;);&lt;br /&gt;
    AbcImport -reparent $gpuNode -mode import $path;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Walter</name></author>
		
	</entry>
	<entry>
		<id>http://antoinevienne.fr/wiki/index.php?title=Maya_Mel&amp;diff=274</id>
		<title>Maya Mel</title>
		<link rel="alternate" type="text/html" href="http://antoinevienne.fr/wiki/index.php?title=Maya_Mel&amp;diff=274"/>
		<updated>2024-09-25T18:51:21Z</updated>

		<summary type="html">&lt;p&gt;Walter: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Maya Mels Scripts=&lt;br /&gt;
=== Octane Render Baking group id - Assign id to multiple objects shapes ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// 0 is for Red, 2 for Green, 4 for Blue&lt;br /&gt;
// 3, 5 and 6 for Cyan, Magenta and Yellow&lt;br /&gt;
// Replace the number &amp;quot;0&amp;quot; by the number of your choice&lt;br /&gt;
// Baking group id is also avalaible in Attribute Spreadsheet Editor&lt;br /&gt;
&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    print($object+&amp;quot;\n&amp;quot;);&lt;br /&gt;
    setAttr ($object + &amp;quot;.octBakGrId&amp;quot;) (0);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Maxwell Render - Particles sequence - Force .abc file ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
//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&lt;br /&gt;
&lt;br /&gt;
global int $current_frame;&lt;br /&gt;
$current_frame = `currentTime -query`;&lt;br /&gt;
print $current_frame;&lt;br /&gt;
{&lt;br /&gt;
setAttr -type &amp;quot;string&amp;quot; maxwellRFRKParticles1.file (&amp;quot;/YOUR_PATH/YOUR_FILE&amp;quot; + $current_frame + &amp;quot;.abc&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Maxwell Render - Specify object ID color ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Specify object ID color&lt;br /&gt;
&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    print($object+&amp;quot;\n&amp;quot;);&lt;br /&gt;
    setAttr ($object + &amp;quot;.mxSpecifyObjIdColor&amp;quot;) (1);&lt;br /&gt;
    setAttr ($object + &amp;quot;.mxObjIdColor&amp;quot;) -type &amp;quot;double3&amp;quot; 1 0 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Redshift - Add blend attribute and set random value for objects selection ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Useful for blending between colors with RedshiftUserDataScalar&lt;br /&gt;
&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    print($object);&lt;br /&gt;
    addAttr -ln &amp;quot;blend&amp;quot; -at double  -min 0 -max 1 -dv 0 $object;&lt;br /&gt;
    setAttr ($object + &amp;quot;.blend&amp;quot;) (rand(1));&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Redshift - Set Primary visibility off for selection (layer override) ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Go in right render layer and select objects&lt;br /&gt;
&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    print($object+&amp;quot;\n&amp;quot;);&lt;br /&gt;
    setAttr ($object + &amp;quot;.rsEnableVisibilityOverrides&amp;quot;) (1);&lt;br /&gt;
    editRenderLayerAdjustment ($object + &amp;quot;.rsPrimaryRayVisible&amp;quot;);&lt;br /&gt;
    setAttr ($object + &amp;quot;.rsPrimaryRayVisible&amp;quot;) (0);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Convert Motion trail to curve ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select the motion trail first&lt;br /&gt;
&lt;br /&gt;
{&lt;br /&gt;
$selected=`ls -dag -et snapshotShape`;&lt;br /&gt;
for ($obj in $selected){&lt;br /&gt;
$pts=(getAttr($obj+&amp;quot;.pts&amp;quot;));&lt;br /&gt;
$size=size($pts);&lt;br /&gt;
$curve=`curve -d 1 -p $pts[0] $pts[1] $pts[2] -p $pts[4] $pts[5] $pts[6] -k 0 -k 1`;&lt;br /&gt;
for($i=8;$i&amp;lt;$size;$i+=4)&lt;br /&gt;
curve -os -a -p $pts[$i] $pts[$i+1] $pts[$i+2] $curve ;&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Quantize keyframes for selection ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Snap keys on frames for objects selection&lt;br /&gt;
&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    print($object+&amp;quot;\n&amp;quot;);&lt;br /&gt;
    snapKey $object;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Loop image sequence for texture ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// On File texture, check Image sequence, and edit expression&lt;br /&gt;
&lt;br /&gt;
file1.frameExtension=((frame%8)+1);&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Symmetrize - Duplicate &amp;amp; merge object ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select half object first&lt;br /&gt;
&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    print($object+&amp;quot;\n&amp;quot;);&lt;br /&gt;
    xform -piv 0 0 0 $object;&lt;br /&gt;
    duplicate -rr;&lt;br /&gt;
    setAttr ($object + &amp;quot;.scaleX&amp;quot;) (-1);&lt;br /&gt;
    select -add $object ;&lt;br /&gt;
    polyPerformAction polyUnite o 0;&lt;br /&gt;
    polyMergeVertex  -d 0.0001 -am 1 -ch 1;&lt;br /&gt;
    DeleteHistory;&lt;br /&gt;
    rename ($object);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Mirror object ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select object first&lt;br /&gt;
&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    print($object+&amp;quot;\n&amp;quot;);&lt;br /&gt;
    DeleteHistory;&lt;br /&gt;
    makeIdentity -apply true -t 1 -r 1 -s 1 -n 0 -pn 1;&lt;br /&gt;
    xform -piv 0 0 0 $object;&lt;br /&gt;
    duplicate -rr;&lt;br /&gt;
    setAttr ($object + &amp;quot;.scaleX&amp;quot;) (-1);&lt;br /&gt;
    DeleteHistory;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Group each object and rename ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select objects first&lt;br /&gt;
&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    string $name = ($object);&lt;br /&gt;
    select $object ;&lt;br /&gt;
    doGroup 0 1 1;&lt;br /&gt;
    rename ($name + &amp;quot;_GRP&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Change path in an Attribute ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Here the Attribute is &amp;quot;.filePrefix&amp;quot; - Select objects first&lt;br /&gt;
&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    string $path = getAttr ($object+&amp;quot;.filePrefix&amp;quot;);&lt;br /&gt;
    $path = `substitute &amp;quot;//OLD/PATH/&amp;quot; $path &amp;quot;//NEW/PATH/&amp;quot;`;&lt;br /&gt;
    setAttr -type &amp;quot;string&amp;quot; ($object+&amp;quot;.filePrefix&amp;quot;) ($path);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Change opacity mode on V-Ray shaders ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select shaders first&lt;br /&gt;
&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    if (attributeExists(&amp;quot;omode&amp;quot;,$object)) { //check if attribute exists&lt;br /&gt;
        CBunlockAttr ($object+&amp;quot;.omode&amp;quot;); //unlock opacity mode&lt;br /&gt;
    }&lt;br /&gt;
    if (attributeExists(&amp;quot;opacityMode&amp;quot;,$object)) {&lt;br /&gt;
        setAttr ($object+&amp;quot;.opacityMode&amp;quot;) 1; //set opacity mode in Clip - 0 pour Normal&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// Alternative&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    if (attributeExists(&amp;quot;opacityMode&amp;quot;,$object)) {&lt;br /&gt;
        setAttr ($object+&amp;quot;.opacityMode&amp;quot;) -l false; //unlock attribute if locked&lt;br /&gt;
    }&lt;br /&gt;
    if (attributeExists(&amp;quot;opacityMode&amp;quot;,$object)) {&lt;br /&gt;
        setAttr ($object+&amp;quot;.opacityMode&amp;quot;) 2; //set opacity mode in Clip - 0 pour Normal&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Change color space on selected fileTextures ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Useful to automatically convert Quixel Megascans by example from sRGB/Raw to ACES color spaces&lt;br /&gt;
&lt;br /&gt;
string $object_selection[] = (`ls -sl`);&lt;br /&gt;
for ($object in $object_selection) {&lt;br /&gt;
    if(`getAttr ($object+&amp;quot;.cs&amp;quot;)` == &amp;quot;sRGB&amp;quot;){&lt;br /&gt;
        setAttr ($object + &amp;quot;.cs&amp;quot;) -type &amp;quot;string&amp;quot; &amp;quot;Utility - sRGB - Texture&amp;quot;;&lt;br /&gt;
    }&lt;br /&gt;
    if(`getAttr ($object+&amp;quot;.cs&amp;quot;)` == &amp;quot;Raw&amp;quot;){&lt;br /&gt;
        setAttr ($object + &amp;quot;.cs&amp;quot;) -type &amp;quot;string&amp;quot; &amp;quot;Utility - Raw&amp;quot;;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Redshift - custom Tesselation on selected objects ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select objects first&lt;br /&gt;
&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    print($object+&amp;quot;\n&amp;quot;);&lt;br /&gt;
    setAttr ($object + &amp;quot;.rsMinTessellationLength&amp;quot;) (0.1);&lt;br /&gt;
    setAttr ($object + &amp;quot;.rsMaxTessellationSubdivs&amp;quot;) (2);&lt;br /&gt;
    setAttr ($object + &amp;quot;.rsOutOfFrustumTessellationFactor&amp;quot;) (4);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Change color on selected shaders ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select shaders first&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    print($object+&amp;quot;\n&amp;quot;);&lt;br /&gt;
    setAttr ($object + &amp;quot;.color&amp;quot;) -l false;&lt;br /&gt;
    setAttr ($object + &amp;quot;.color&amp;quot;) -type &amp;quot;double3&amp;quot; (0.18) (0.18) (0.18);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Change Filter Type on selected Files Textures ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select files textures first - 0 means Off&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    print($object+&amp;quot;\n&amp;quot;);&lt;br /&gt;
    setAttr ($object + &amp;quot;.filterType&amp;quot;) 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Clean Render Layers ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// In MEL&lt;br /&gt;
fixRenderLayerOutAdjustmentErrors;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Change Filter Type on selected Files Textures ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select files textures first - 0 means Off&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    print($object+&amp;quot;\n&amp;quot;);&lt;br /&gt;
    setAttr ($object + &amp;quot;.filterType&amp;quot;) 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Select by name ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select objects with &amp;quot;toto&amp;quot;&lt;br /&gt;
select -r &amp;quot;toto*&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Display color on shapes ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select objects&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    print($object+&amp;quot;\n&amp;quot;);&lt;br /&gt;
    setAttr ($object + &amp;quot;.displayColors&amp;quot;) 1;&lt;br /&gt;
    setDisplayColorChannelAttribute ($object + &amp;quot;.displayColorChannel&amp;quot;);&lt;br /&gt;
    polyColorPerVertex -r 1 -g 0 -b 0 -a 1 -cdo;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Geometry Constraint on multiple selection ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select objects to constrain&lt;br /&gt;
string $objectBase = &amp;quot;surfaceName&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    select -cl;&lt;br /&gt;
    select $objectBase;&lt;br /&gt;
    select -add $object;&lt;br /&gt;
    geometryConstraint -weight 1;&lt;br /&gt;
    select -r &amp;quot;*Constraint*&amp;quot;;&lt;br /&gt;
    doDelete;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
=== Speed up smokes rendering with V-Ray ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select smokes first&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    print($object+&amp;quot;\n&amp;quot;);&lt;br /&gt;
    setAttr ($object + &amp;quot;.rendStep&amp;quot;) 160;&lt;br /&gt;
    setAttr ($object + &amp;quot;.shadowStep&amp;quot;) 400;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Set bump multiplier on multiple V-Ray shaders ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select shaders&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    if (attributeExists(&amp;quot;bumpMult&amp;quot;,$object)) {&lt;br /&gt;
        setAttr ($object + &amp;quot;.bumpMult&amp;quot;) -1; //set bump multiplier at -1&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== STOP/START viewport ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// As seen on https://www.toadstorm.com/. - Put it in your shelf&lt;br /&gt;
paneLayout -e -manage false $gMainPane&lt;br /&gt;
&lt;br /&gt;
paneLayout -e -manage true $gMainPane&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Select curves by name ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select objects first - Replace &amp;quot;toto&amp;quot; by what you are looking for&lt;br /&gt;
&lt;br /&gt;
select `ls -type &amp;quot;nurbsCurve&amp;quot; &amp;quot;*toto*&amp;quot;`;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Noise expression ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Replace &amp;quot;pCube1&amp;quot;&lt;br /&gt;
&lt;br /&gt;
pCube1.translateX=sin(time*20)*0.01*noise(time*10);&lt;br /&gt;
pCube1.translateY=sin(time*4)*0.01*noise(time*10);&lt;br /&gt;
pCube1.translateZ=sin(time*12)*0.01*noise(time*10);&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== V-ray - Make curves renderables ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Replace VRayLightMtl1 at the end by your material&lt;br /&gt;
&lt;br /&gt;
$selected=`ls -dag -et curveShape`;&lt;br /&gt;
for ($object in $selected){&lt;br /&gt;
    // Add V-ray Extra attributes&lt;br /&gt;
    vray addAttributesFromGroup $object vray_nurbscurve_renderable 1;&lt;br /&gt;
    vrayAddAttr $object vraySeparator_vray_nurbscurve_renderable;&lt;br /&gt;
    vrayAddAttr $object vrayNurbsCurveRenderable;&lt;br /&gt;
    vrayAddAttr $object vrayNurbsCurveMaterial;&lt;br /&gt;
    vrayAddAttr $object vrayNurbsCurveTesselation;&lt;br /&gt;
    vrayAddAttr $object vrayNurbsCurveStartWidth;&lt;br /&gt;
    vrayAddAttr $object vrayNurbsCurveLockEndWidth;&lt;br /&gt;
    vrayAddAttr $object vrayNurbsCurveEndWidth;&lt;br /&gt;
    setUITemplate -pst attributeEditorTemplate;&lt;br /&gt;
// Activate renderable&lt;br /&gt;
setAttr ($object + &amp;quot;.vrayNurbsCurveRenderable&amp;quot;) 1;&lt;br /&gt;
// Replace VRayLightMtl1 by your material&lt;br /&gt;
connectAttr -force VRayLightMtl1.outColor ($object + &amp;quot;.vrayNurbsCurveMaterial&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Get object type ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Replace toto with the object whose type you want to know&lt;br /&gt;
&lt;br /&gt;
objectType toto;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Render layer override on specific object type ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Replace &amp;quot;Node&amp;quot; by the object type on which you want to act&lt;br /&gt;
&lt;br /&gt;
$selected=`ls -type &amp;quot;Node&amp;quot;`;&lt;br /&gt;
for ($object in $selected){&lt;br /&gt;
    // Create layer override on Primary Visibility attribute on current renderLayer&lt;br /&gt;
    editRenderLayerAdjustment ($object + &amp;quot;.primaryVisibility&amp;quot;);&lt;br /&gt;
    // Set Primary Visibility - 0 or 1&lt;br /&gt;
    setAttr ($object + &amp;quot;.primaryVisibility&amp;quot;) 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== V-ray - Make lights invisible ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$selected=`ls -type &amp;quot;VRayLightRectShape&amp;quot;`;&lt;br /&gt;
for ($object in $selected){&lt;br /&gt;
    setAttr ($object + &amp;quot;.invisible&amp;quot;) 1;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
$selected=`ls -type &amp;quot;VRayLightSphereShape&amp;quot;`;&lt;br /&gt;
for ($object in $selected){&lt;br /&gt;
    setAttr ($object + &amp;quot;.invisible&amp;quot;) 1;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
$selected=`ls -type &amp;quot;VRayLightDomeShape&amp;quot;`;&lt;br /&gt;
for ($object in $selected){&lt;br /&gt;
    setAttr ($object + &amp;quot;.invisible&amp;quot;) 1;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== V-ray - Select Rect Light ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
select `ls -type &amp;quot;VRayLightRectShape&amp;quot;`;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== V-ray - Rect Lights - Directional Preview - Always for all ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$selected=`ls -type &amp;quot;VRayLightRectShape&amp;quot;`;&lt;br /&gt;
for ($object in $selected){&lt;br /&gt;
    setAttr ($object + &amp;quot;.directionalPreview&amp;quot;) 1;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Randomize rotation on selected objects ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// As posted on CGTalk by NaughtyNathan&lt;br /&gt;
// &amp;quot;just set the vector values to the maximum random x,y,z rotations you want to apply to the selected transforms.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
vector $rndRot = &amp;lt;&amp;lt; 0,0,90 &amp;gt;&amp;gt;;	// x,y,z rotations&lt;br /&gt;
for ($object in `ls -sl -tr`){&lt;br /&gt;
    rotate `rand ($rndRot.x)` `rand ($rndRot.y)` `rand ($rndRot.z)` $object;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Quit Maya ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Brute force method&lt;br /&gt;
&lt;br /&gt;
$i = `getpid`; //application ID&lt;br /&gt;
    system(&amp;quot;taskkill /PID &amp;quot;  + $i +&amp;quot; /f&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
// In a gentle way&lt;br /&gt;
&lt;br /&gt;
evalDeferred(&amp;quot;quit -f&amp;quot;);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== V-ray - Import list of Alembics through Proxys Import ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// List of Alembics files - Replace by the name of your Alembics&lt;br /&gt;
string $alembicsParts[] = {&amp;quot;part1&amp;quot;,&amp;quot;part2&amp;quot;,&amp;quot;part3&amp;quot;};&lt;br /&gt;
&lt;br /&gt;
// Replace the PATH of your files - Scale by 100 for Houdini Alembics - &amp;lt;frame04&amp;gt; for sequences&lt;br /&gt;
for ($alembicsPart in $alembicsParts){&lt;br /&gt;
    vrayCreateProxy -node $alembicsPart -existing -dir (&amp;quot;C:/YOURPATH/&amp;quot;+$alembicsPart+&amp;quot;.&amp;lt;frame04&amp;gt;.abc&amp;quot;) -createProxyNode;&lt;br /&gt;
    setAttr ($alembicsPart+&amp;quot;_vraymesh.animType&amp;quot;) 1;&lt;br /&gt;
    setAttr ($alembicsPart+&amp;quot;.scaleZ&amp;quot;) 100;&lt;br /&gt;
    setAttr ($alembicsPart+&amp;quot;.scaleX&amp;quot;) 100;&lt;br /&gt;
    setAttr ($alembicsPart+&amp;quot;.scaleY&amp;quot;) 100;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== V-ray - Change path to VRayMesh for selected proxies ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Change path with your own .vrmesh&lt;br /&gt;
$selected=`ls -type &amp;quot;VRayMesh&amp;quot;`;&lt;br /&gt;
for ($object in $selected){&lt;br /&gt;
    setAttr -type &amp;quot;string&amp;quot; ($object + &amp;quot;.fileName2&amp;quot;) &amp;quot;//DISK/PATH/YOUR_VRMESH.vrmesh&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// If you want to change Geometry type - 4 for GPU mesh - add following in the loop&lt;br /&gt;
//    setAttr ($object + &amp;quot;.geomType&amp;quot;) 4;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Delete image planes ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Delete image plane if exists.&lt;br /&gt;
$selected=`ls -type &amp;quot;imagePlane&amp;quot;`;&lt;br /&gt;
select $selected;&lt;br /&gt;
for ($object in $selected){&lt;br /&gt;
    doDelete;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Merge alembic from set ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select objects in a set called EXPORT_SET&lt;br /&gt;
select -r EXPORT_SET ;&lt;br /&gt;
timeControl -edit -forceRedraw $gPlayBackSlider;&lt;br /&gt;
&lt;br /&gt;
// Create list of objects from EXPORT_SET&lt;br /&gt;
string $assetParts[] = `ls -sl`;&lt;br /&gt;
$assetPartsList = stringArrayToString($assetParts,&amp;quot; &amp;quot;);&lt;br /&gt;
&lt;br /&gt;
// Merge alembic with these objects&lt;br /&gt;
AbcImport -mode import -connect $assetPartsList &amp;quot;//DISK/PATH/alembic.abc&amp;quot;;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Create Texture reference ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// CREATE TEXTURE REFERENCE ON EXPORT SET&lt;br /&gt;
&lt;br /&gt;
select -r YOUR_GROUP ;&lt;br /&gt;
CreateTextureReferenceObject;&lt;br /&gt;
select -cl  ;&lt;br /&gt;
&lt;br /&gt;
// REMOVE REFERENCE OBJECTS FROM EXPORT SET&lt;br /&gt;
select -r YOUR_GROUP_reference ;&lt;br /&gt;
string $selection[] = `ls -sl`;&lt;br /&gt;
string $polyGons[] = `filterExpand -sm 12 $selection`;&lt;br /&gt;
select -r $polyGons;&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    sets -rm EXPORT_SET $object;&lt;br /&gt;
}&lt;br /&gt;
select -cl  ;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Replace animated objects with V-Ray proxies ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// First select animated objects to replace&lt;br /&gt;
// For each object create a proxy then constrain then bake simulation then delete constraint&lt;br /&gt;
&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
	vrayCreateProxy -node assetName -existing -dir (&amp;quot;//DISK/PATH/your_asset.vrmesh&amp;quot;) -createProxyNode;&lt;br /&gt;
	select -r $object ;&lt;br /&gt;
	select -add assetName ;&lt;br /&gt;
	doCreateParentConstraintArgList 1 { &amp;quot;0&amp;quot;,&amp;quot;0&amp;quot;,&amp;quot;0&amp;quot;,&amp;quot;0&amp;quot;,&amp;quot;0&amp;quot;,&amp;quot;0&amp;quot;,&amp;quot;0&amp;quot;,&amp;quot;0&amp;quot;,&amp;quot;1&amp;quot;,&amp;quot;&amp;quot;,&amp;quot;1&amp;quot; };&lt;br /&gt;
	parentConstraint -weight 1;&lt;br /&gt;
	bakeResults -simulation true -t &amp;quot;1000:1100&amp;quot; -sampleBy 1 -oversamplingRate 1 -disableImplicitControl true -preserveOutsideKeys true -sparseAnimCurveBake false -removeBakedAttributeFromLayer false -removeBakedAnimFromLayer false -bakeOnOverrideLayer false -minimizeRotation true -controlPoints false -shape true {&amp;quot;assetName&amp;quot;};&lt;br /&gt;
	select `ls -type &amp;quot;constraint&amp;quot;`;&lt;br /&gt;
	select -add $object ;&lt;br /&gt;
	doDelete;&lt;br /&gt;
	select -cl  ;&lt;br /&gt;
	rename &amp;quot;assetName&amp;quot; $object;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Select all meshes in a group ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// From cmadsenAniden on forums.autodesk.com&lt;br /&gt;
// Replace group1 by the name of your own group&lt;br /&gt;
&lt;br /&gt;
select -r group1 ;&lt;br /&gt;
string $selection[] = `ls -sl`;&lt;br /&gt;
string $polyGons[] = `filterExpand -sm 12 $selection`;&lt;br /&gt;
select -r $polyGons;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Select shot camera ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// CREATE VARIABLE FOR SHOT CAMERA AND SELECT IT&lt;br /&gt;
&lt;br /&gt;
select `ls -type &amp;quot;camera&amp;quot;`;&lt;br /&gt;
select -d sideShape frontShape topShape perspShape;&lt;br /&gt;
$camerashot = `ls -sl`;&lt;br /&gt;
string $shotcamera = $camerashot[0];&lt;br /&gt;
print $shotcamera;&lt;br /&gt;
select $shotcamera;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Get list of frames with keys on all transform objects ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$selected=`ls -dag -et transform`;&lt;br /&gt;
&lt;br /&gt;
float $arrathy[] = `keyframe -query $selected`;&lt;br /&gt;
&lt;br /&gt;
float $sorted[] = python(&amp;quot;import pymel.core as pm; list(set((pm.getMelGlobal(\&amp;quot;float[]\&amp;quot;, \&amp;quot;$arrathy\&amp;quot;))))&amp;quot;);&lt;br /&gt;
print $sorted;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== MULTI SNAP ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Replace a list of objects by another with bake of animation. Replace FSTART and FEND with your own padding.&lt;br /&gt;
&lt;br /&gt;
///////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
///////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
/*&lt;br /&gt;
Type the command MS() in MEL form to open UI.&lt;br /&gt;
*/&lt;br /&gt;
///////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
///////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
source &amp;quot;generateChannelMenu.mel&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
global proc MS ()&lt;br /&gt;
{&lt;br /&gt;
     global string $sourceObjects;&lt;br /&gt;
     global string $destinationObjects;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    // If the window exists already, delete it.&lt;br /&gt;
    if (`window -exists multiSnapWindow`)&lt;br /&gt;
    {&lt;br /&gt;
        deleteUI multiSnapWindow;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    // Build the window.&lt;br /&gt;
    global string $man_window;&lt;br /&gt;
    string $man_window = `window -title &amp;quot; MULTI SNAP&amp;quot; -sizeable 0 -w 300 multiSnapWindow`;&lt;br /&gt;
    frameLayout -label &amp;quot;Snap source objects on destination objects.&amp;quot;;&lt;br /&gt;
    rowLayout -width 540 -nc 2 -cw4 10 20 20 100;&lt;br /&gt;
    // Source objects section&lt;br /&gt;
    frameLayout -label &amp;quot;Source objects&amp;quot;;&lt;br /&gt;
    $sourceObjects = `textScrollList -width 600 -height 300`;&lt;br /&gt;
    rowLayout -width 240 -nc 2 -cw2 120 120;&lt;br /&gt;
    button -label &amp;quot;Add selected&amp;quot; -command &amp;quot;MS_addObjects ();&amp;quot; -width 120;&lt;br /&gt;
    button -label &amp;quot;Remove selected&amp;quot; -command &amp;quot;MS_removeObjects ();&amp;quot; -width 120;&lt;br /&gt;
    setParent ..;&lt;br /&gt;
    rowLayout -width 240 -nc 2 -cw2 120 120;&lt;br /&gt;
    button -label &amp;quot;Remove All&amp;quot; -command &amp;quot;MS_clearObjects ();&amp;quot; -width 240;&lt;br /&gt;
    setParent ..;&lt;br /&gt;
    setParent ..;&lt;br /&gt;
    rowLayout -nc 3;&lt;br /&gt;
    button -label &amp;quot;Create&amp;quot; -command &amp;quot;VRAYCONNECDO() &amp;quot; -width 140 -align center;&lt;br /&gt;
    button -label &amp;quot;Close&amp;quot; -command &amp;quot;DAC_CloseUI() &amp;quot; -width 140 -align center;&lt;br /&gt;
    setParent ..;&lt;br /&gt;
    setParent ..;&lt;br /&gt;
    // Destination objects section&lt;br /&gt;
    frameLayout -label &amp;quot;Destination objects&amp;quot;;&lt;br /&gt;
    $destinationObjects = `textScrollList -width 600 -height 300`;&lt;br /&gt;
    rowLayout -width 240 -nc 2 -cw2 120 120;&lt;br /&gt;
    button -label &amp;quot;Add selected&amp;quot; -command &amp;quot;MS_addMM ();&amp;quot; -width 120;&lt;br /&gt;
    button -label &amp;quot;Remove selected&amp;quot; -command &amp;quot;MS_removeMM ();&amp;quot; -width 120;&lt;br /&gt;
    setParent ..;&lt;br /&gt;
    setParent ..;&lt;br /&gt;
    rowLayout -nc 3;&lt;br /&gt;
    button -label &amp;quot;SNAP IT&amp;quot; -command &amp;quot;VRAYCONNECDO() &amp;quot; -width 140 -align center;&lt;br /&gt;
    button -label &amp;quot;Close&amp;quot; -command &amp;quot;DAC_CloseUI() &amp;quot; -width 140 -align center;&lt;br /&gt;
    setParent ..;&lt;br /&gt;
    setParent ..;&lt;br /&gt;
&lt;br /&gt;
// Show the window.&lt;br /&gt;
showWindow multiSnapWindow;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
global proc string[] getShaders(string $from)&lt;br /&gt;
{&lt;br /&gt;
// get the shapes from the input&lt;br /&gt;
string $shapes[] = ls(&amp;quot;-o&amp;quot;, &amp;quot;-dag&amp;quot;, &amp;quot;-s&amp;quot;, $from);&lt;br /&gt;
// give me the connected &amp;quot;shadingEngines&amp;quot;&lt;br /&gt;
string $shadingEngines[] = listConnections(&amp;quot;-type&amp;quot;,&amp;quot;shadingEngine&amp;quot;, $shapes);&lt;br /&gt;
// list the connected materials (shaders) from that&lt;br /&gt;
string $materials[] = ls(&amp;quot;-mat&amp;quot;, listConnections($shadingEngines));&lt;br /&gt;
// remove duplicate occurrences.&lt;br /&gt;
return (stringArrayRemoveDuplicates($materials));&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
//Add selected objects to list.&lt;br /&gt;
global proc MS_addObjects ()&lt;br /&gt;
{&lt;br /&gt;
      global string $sourceObjects;&lt;br /&gt;
      string $selectedshapes[] = `ls -sl -l`;&lt;br /&gt;
      //print $selectedshapes;&lt;br /&gt;
      int $count = 0;&lt;br /&gt;
&lt;br /&gt;
if ($selectedshapes[0] != &amp;quot;&amp;quot;)&lt;br /&gt;
{&lt;br /&gt;
   for ($i in $selectedshapes)&lt;br /&gt;
   {&lt;br /&gt;
     $count ++;&lt;br /&gt;
     textScrollList -edit -append $i $sourceObjects;&lt;br /&gt;
   }&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
//Add selected objects to list.&lt;br /&gt;
global proc MS_addMM ()&lt;br /&gt;
{&lt;br /&gt;
      global string $destinationObjects;&lt;br /&gt;
      string $selectedshapes[] = `ls -sl -l`;&lt;br /&gt;
      //print $selectedshapes;&lt;br /&gt;
      int $count = 0;&lt;br /&gt;
&lt;br /&gt;
if ($selectedshapes[0] != &amp;quot;&amp;quot;)&lt;br /&gt;
{&lt;br /&gt;
   for ($i in $selectedshapes)&lt;br /&gt;
   {&lt;br /&gt;
     $count ++;&lt;br /&gt;
     textScrollList -edit -append $i $destinationObjects;&lt;br /&gt;
   }&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// Clear objects from list.&lt;br /&gt;
global proc MS_clearObjects ()&lt;br /&gt;
{&lt;br /&gt;
    global string $sourceObjects;&lt;br /&gt;
textScrollList -e -ra $sourceObjects;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// Remove selected object from list.&lt;br /&gt;
global proc MS_removeObjects ()&lt;br /&gt;
{&lt;br /&gt;
   global string $sourceObjects;&lt;br /&gt;
&lt;br /&gt;
    int $index [] = `textScrollList -query -selectIndexedItem $sourceObjects`;&lt;br /&gt;
    if ($index [0] != 0)&lt;br /&gt;
    {&lt;br /&gt;
        textScrollList -edit -removeIndexedItem $index [0] $sourceObjects;&lt;br /&gt;
    }&lt;br /&gt;
   global string $sourceObjects;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
global proc VRAYCONNECDO()&lt;br /&gt;
{&lt;br /&gt;
    // UI Elements&lt;br /&gt;
global string $sourceObjects;&lt;br /&gt;
global string $destinationObjects;&lt;br /&gt;
// Define user selected objects&lt;br /&gt;
string $selected_objects[] = `textScrollList -query -allItems $sourceObjects`;&lt;br /&gt;
string $meshMaterial[] = `textScrollList -query -allItems $destinationObjects`;&lt;br /&gt;
int $i = 0;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
// SET PADDING&lt;br /&gt;
string $FSTART = &amp;quot;1&amp;quot;;&lt;br /&gt;
string $FEND = &amp;quot;100&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
print $FSTART;&lt;br /&gt;
print $FEND;&lt;br /&gt;
&lt;br /&gt;
string $PADDING = $FSTART + &amp;quot;:&amp;quot; + $FEND;&lt;br /&gt;
&lt;br /&gt;
//Progress bar&lt;br /&gt;
global string $gMainProgressBar;&lt;br /&gt;
&lt;br /&gt;
// Start the progress bar and adjust its max value for this operation.&lt;br /&gt;
    int $steps = size($selected_objects);&lt;br /&gt;
    progressBar -edit -beginProgress -isInterruptable true -status &amp;quot;Connecting shaders to mesh material ...&amp;quot; -maxValue $steps $gMainProgressBar;&lt;br /&gt;
 &lt;br /&gt;
for ($i = 0; $i &amp;lt; size($selected_objects); $i ++)&lt;br /&gt;
{&lt;br /&gt;
        parentConstraint -n parentConstraintMS $selected_objects[$i] $meshMaterial[$i];&lt;br /&gt;
        select -r $meshMaterial[$i] ;&lt;br /&gt;
        bakeResults -simulation true -t $PADDING -sampleBy 1 -oversamplingRate 1 -disableImplicitControl true -preserveOutsideKeys true -sparseAnimCurveBake false -removeBakedAttributeFromLayer false -removeBakedAnimFromLayer false -bakeOnOverrideLayer false -minimizeRotation true -controlPoints false -shape true {$meshMaterial[$i]};&lt;br /&gt;
        select -cl  ;&lt;br /&gt;
        select -r &amp;quot;*parentConstraintMS*&amp;quot;;&lt;br /&gt;
        doDelete;&lt;br /&gt;
// Update the progress bar.&lt;br /&gt;
progressBar -edit -step 1 $gMainProgressBar;&lt;br /&gt;
}&lt;br /&gt;
// End the progress.&lt;br /&gt;
progressBar -edit -endProgress $gMainProgressBar;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Delete hidden objects ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select objects&lt;br /&gt;
&lt;br /&gt;
for ( $object in `ls -sl` ) {&lt;br /&gt;
    $vis = getAttr ($object+&amp;quot;.visibility&amp;quot;);&lt;br /&gt;
    if ($vis == 0){&lt;br /&gt;
        select -r $object ;&lt;br /&gt;
        doDelete ;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== V-Ray - BAKE MATERIALS ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Made to work also with mayabatch.exe&lt;br /&gt;
&lt;br /&gt;
////////////////////////////////////////////&lt;br /&gt;
// BAKE VRAY CUSTOM VARIABLES&lt;br /&gt;
////////////////////////////////////////////&lt;br /&gt;
&lt;br /&gt;
// ASSET PATH&lt;br /&gt;
string $assetFileType = &amp;quot;mayaBinary&amp;quot;;&lt;br /&gt;
string $assetPath = &amp;quot;C:/YOUR_PATH/YOUR_SURFACING_ASSET.mb&amp;quot;;&lt;br /&gt;
string $assetName = &amp;quot;ASSET_NAME&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
// LIGHT RIG PATH&lt;br /&gt;
string $lightRigFileType = &amp;quot;mayaAscii&amp;quot;;&lt;br /&gt;
string $lightRigPath = &amp;quot;C:/YOUR_PATH/YOUR_LIGHT_RIG.mb&amp;quot;;&lt;br /&gt;
string $lightRigName = &amp;quot;DAY_LIGHTING&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
// BAKED TEXTURES PATH&lt;br /&gt;
string $bakedTexturesPath = (&amp;quot;C:/YOUR_PATH/BAKED_TEXTURES/&amp;quot; + $assetName + &amp;quot;_&amp;quot; + $lightRigName + &amp;quot;_Bake&amp;quot;);&lt;br /&gt;
print $bakedTexturesPath;&lt;br /&gt;
&lt;br /&gt;
// SET RESOLUTION FOR BAKED MAPS&lt;br /&gt;
$resWidth = 4096;&lt;br /&gt;
$resHeight = $resWidth;&lt;br /&gt;
&lt;br /&gt;
// COLOR SPACE FOR FILE TEXTURES&lt;br /&gt;
string $fileColorSpace = &amp;quot;ACES - ACEScg&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
////////////////////////////////////////////&lt;br /&gt;
// END OF CUSTOM VARIABLES&lt;br /&gt;
////////////////////////////////////////////&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
////////////////////////////////////////////&lt;br /&gt;
// RENDER SETTINGS&lt;br /&gt;
&lt;br /&gt;
// Set File Name Prefix&lt;br /&gt;
setAttr -type &amp;quot;string&amp;quot; vraySettings.fileNamePrefix &amp;quot;&amp;lt;Scene&amp;gt;/&amp;lt;Layer&amp;gt;/&amp;lt;Camera&amp;gt;_&amp;lt;Layer&amp;gt;_&amp;lt;Scene&amp;gt;&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
// Set resolution&lt;br /&gt;
$resWidthHalf = $resWidth/2;&lt;br /&gt;
$resHeightHalf = $resHeight/2;&lt;br /&gt;
setAttr &amp;quot;vraySettings.width&amp;quot; $resWidthHalf;&lt;br /&gt;
setAttr &amp;quot;vraySettings.height&amp;quot; $resHeightHalf;&lt;br /&gt;
&lt;br /&gt;
// Set Persp camera renderable&lt;br /&gt;
setAttr &amp;quot;perspShape.renderable&amp;quot; 1;&lt;br /&gt;
&lt;br /&gt;
// Set Image format&lt;br /&gt;
setAttr -type &amp;quot;string&amp;quot; &amp;quot;vraySettings.imageFormatStr&amp;quot; &amp;quot;exr (multichannel)&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
// Set Animation type on Standard&lt;br /&gt;
setAttr &amp;quot;vraySettings.animType&amp;quot; 0;&lt;br /&gt;
setAttr &amp;quot;vraySettings.animBatchOnly&amp;quot; 1;&lt;br /&gt;
&lt;br /&gt;
// Sampler type Bucket&lt;br /&gt;
setAttr &amp;quot;vraySettings.samplerType&amp;quot; 4;&lt;br /&gt;
&lt;br /&gt;
// Min Shading Rate&lt;br /&gt;
//setAttr &amp;quot;vraySettings.minShadeRate&amp;quot; 4;&lt;br /&gt;
setAttr &amp;quot;vraySettings.minShadeRate&amp;quot; 7;&lt;br /&gt;
&lt;br /&gt;
// Buckets subdivs&lt;br /&gt;
//setAttr &amp;quot;vraySettings.dmcMinSubdivs&amp;quot; 1;&lt;br /&gt;
//setAttr &amp;quot;vraySettings.dmcMaxSubdivs&amp;quot; 8;&lt;br /&gt;
//setAttr &amp;quot;vraySettings.dmcThreshold&amp;quot; 0.1;&lt;br /&gt;
setAttr &amp;quot;vraySettings.dmcMinSubdivs&amp;quot; 1;&lt;br /&gt;
setAttr &amp;quot;vraySettings.dmcMaxSubdivs&amp;quot; 15;&lt;br /&gt;
setAttr &amp;quot;vraySettings.dmcThreshold&amp;quot; 0.01;&lt;br /&gt;
&lt;br /&gt;
// Color mapping Linear&lt;br /&gt;
setAttr &amp;quot;vraySettings.cmap_type&amp;quot; 0;&lt;br /&gt;
&lt;br /&gt;
// GI on&lt;br /&gt;
setAttr &amp;quot;vraySettings.giOn&amp;quot; 1;&lt;br /&gt;
//setAttr &amp;quot;vraySettings.subdivs&amp;quot; 400;&lt;br /&gt;
setAttr &amp;quot;vraySettings.subdivs&amp;quot; 1000;&lt;br /&gt;
&lt;br /&gt;
// Max subdivs&lt;br /&gt;
setAttr &amp;quot;vraySettings.ddisplac_maxSubdivs&amp;quot; 16;&lt;br /&gt;
&lt;br /&gt;
// Cache geometry and bitmaps&lt;br /&gt;
setAttr &amp;quot;vraySettings.globopt_cache_geom_plugins&amp;quot; 1;&lt;br /&gt;
setAttr &amp;quot;vraySettings.globopt_cache_bitmaps&amp;quot; 1;&lt;br /&gt;
&lt;br /&gt;
// Dynamic memory limit&lt;br /&gt;
setAttr &amp;quot;vraySettings.sys_rayc_dynMemLimit&amp;quot; 0;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
////////////////////////////////////////////&lt;br /&gt;
// IMPORT&lt;br /&gt;
&lt;br /&gt;
// IMPORT LIGHT RIG&lt;br /&gt;
file -import -type $lightRigFileType  -ignoreVersion -mergeNamespacesOnClash false -rpr &amp;quot;:&amp;quot; -options &amp;quot;v=0;&amp;quot; $lightRigPath;&lt;br /&gt;
&lt;br /&gt;
// IMPORT ASSET&lt;br /&gt;
file -import -type $assetFileType  -ignoreVersion -mergeNamespacesOnClash false -rpr &amp;quot;:&amp;quot; -options &amp;quot;v=0;&amp;quot; $assetPath;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
// CREATE SETS&lt;br /&gt;
select `ls -type &amp;quot;mesh&amp;quot;`;&lt;br /&gt;
sets -name &amp;quot;assetOriginal_Set&amp;quot; ;&lt;br /&gt;
duplicate -rr;&lt;br /&gt;
group -w -n (&amp;quot;GRP_&amp;quot; + $assetName + &amp;quot;_BAKE_&amp;quot; + `toupper $lightRigName`);&lt;br /&gt;
sets -name &amp;quot;assetBaked_Set&amp;quot; ;&lt;br /&gt;
&lt;br /&gt;
// REMOVE BAKED PARTS FROM ORIGINAL PARTS SET&lt;br /&gt;
select -r assetBaked_Set ;&lt;br /&gt;
string $selection[] = `ls -sl`;&lt;br /&gt;
string $polyGons[] = `filterExpand -sm 12 $selection`;&lt;br /&gt;
select -r $polyGons;&lt;br /&gt;
pickWalk -d down;&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    sets -rm assetOriginal_Set $object;&lt;br /&gt;
}&lt;br /&gt;
select -cl  ;&lt;br /&gt;
&lt;br /&gt;
// DELETE HIDDEN OBJECTS&lt;br /&gt;
select -r assetBaked_Set ;&lt;br /&gt;
string $selection[] = `ls -sl`;&lt;br /&gt;
string $polyGons[] = `filterExpand -sm 12 $selection`;&lt;br /&gt;
select -r $polyGons;&lt;br /&gt;
for ( $object in `ls -sl` ) {&lt;br /&gt;
    $vis = getAttr ($object+&amp;quot;.visibility&amp;quot;);&lt;br /&gt;
    if ($vis == 0){&lt;br /&gt;
        select -r $object ;&lt;br /&gt;
        doDelete ;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
select -cl  ;&lt;br /&gt;
&lt;br /&gt;
// fixShapeName - Thanks to Pinkwerks&lt;br /&gt;
global proc&lt;br /&gt;
fixShapeName()&lt;br /&gt;
{&lt;br /&gt;
    string $me = &amp;quot;fixShapeName&amp;quot;;&lt;br /&gt;
    string $shape;&lt;br /&gt;
    string $newShapeName;&lt;br /&gt;
    string $parent;&lt;br /&gt;
    string $tmpA[];&lt;br /&gt;
	string $selectedShapes[] = `ls -sl -l`;&lt;br /&gt;
    int $sizeOfShapes = `size $selectedShapes`;&lt;br /&gt;
&lt;br /&gt;
    if ( $sizeOfShapes == 0 )&lt;br /&gt;
    	error($me + &amp;quot; : Nothing shapes to process!&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
    for ( $shape in $selectedShapes )&lt;br /&gt;
    {&lt;br /&gt;
    	$tmpA = `listRelatives -p $shape`;&lt;br /&gt;
		$parent = $tmpA[0];&lt;br /&gt;
		$newShapeName = ($parent + &amp;quot;Shape&amp;quot;);&lt;br /&gt;
		rename $shape $newShapeName;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// APPLY FIXSHAPENAME TO BAKED ASSET PARTS&lt;br /&gt;
select -r assetBaked_Set ;&lt;br /&gt;
string $selection[] = `ls -sl`;&lt;br /&gt;
string $polyGons[] = `filterExpand -sm 12 $selection`;&lt;br /&gt;
select -r $polyGons;&lt;br /&gt;
pickWalk -d down;&lt;br /&gt;
fixShapeName();&lt;br /&gt;
select -cl  ;&lt;br /&gt;
&lt;br /&gt;
// DELETE OBJECTS WITHOUT UVS&lt;br /&gt;
select -r assetBaked_Set ;&lt;br /&gt;
string $selection[] = `ls -sl`;&lt;br /&gt;
string $polyGons[] = `filterExpand -sm 12 $selection`;&lt;br /&gt;
select -r $polyGons;&lt;br /&gt;
for ( $object in `ls -sl` ) {&lt;br /&gt;
    int $vertexCount[] = `polyEvaluate -uv $object`;&lt;br /&gt;
    print $vertexCount;&lt;br /&gt;
    string $uvCount = $vertexCount[0];&lt;br /&gt;
    if ($uvCount == 0){&lt;br /&gt;
        select -r $object ;&lt;br /&gt;
        doDelete ;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// CREATE VRAY BAKE OPTIONS&lt;br /&gt;
createNode &amp;quot;VRayBakeOptions&amp;quot; -n &amp;quot;vrayBakeOptions&amp;quot;;&lt;br /&gt;
select -r assetBaked_Set ;&lt;br /&gt;
string $selection[] = `ls -sl`;&lt;br /&gt;
string $polyGons[] = `filterExpand -sm 12 $selection`;&lt;br /&gt;
select -r $polyGons;&lt;br /&gt;
$selected=`ls -sl`;&lt;br /&gt;
for ($object in $selected){&lt;br /&gt;
    sets -edit -forceElement  vrayBakeOptions $object ;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// HIDE ORIGINAL ASSET&lt;br /&gt;
select -r assetOriginal_Set ;&lt;br /&gt;
pickWalk -d up;&lt;br /&gt;
hide `ls -sl`;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
// BAKE VRAY OPTIONS&lt;br /&gt;
setAttr &amp;quot;vrayBakeOptions.udimBaking&amp;quot; 1;&lt;br /&gt;
setAttr &amp;quot;vrayBakeOptions.resolutionX&amp;quot; $resWidth;&lt;br /&gt;
&lt;br /&gt;
optionVar -intValue &amp;quot;vrayBakeType&amp;quot; 2;&lt;br /&gt;
optionVar -intValue &amp;quot;vraySkipNodesWithoutBakeOptions&amp;quot; 1;&lt;br /&gt;
optionVar -intValue &amp;quot;vrayAssignBakedTextures&amp;quot; 1;&lt;br /&gt;
optionVar -stringValue &amp;quot;vrayBakeOutputPath&amp;quot; $bakedTexturesPath;&lt;br /&gt;
optionVar -intValue &amp;quot;vrayBakeProjectionBaking&amp;quot; 0;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
// GO BAKE GO&lt;br /&gt;
select -cl  ;&lt;br /&gt;
select -r assetBaked_Set ;&lt;br /&gt;
string $selection[] = `ls -sl`;&lt;br /&gt;
string $polyGons[] = `filterExpand -sm 12 $selection`;&lt;br /&gt;
select -r $polyGons;&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    vrayStartBake;&lt;br /&gt;
}&lt;br /&gt;
select -cl  ;&lt;br /&gt;
&lt;br /&gt;
// UV TILING UDIM AND ACES CG FOR FILES&lt;br /&gt;
for ( $object in `ls -type &amp;quot;file&amp;quot;` ) {&lt;br /&gt;
    setAttr ($object + &amp;quot;.filterType&amp;quot;) 0;&lt;br /&gt;
    setAttr ($object + &amp;quot;.uvTilingMode&amp;quot;) 3;&lt;br /&gt;
    setAttr ($object + &amp;quot;.cs&amp;quot;) -type &amp;quot;string&amp;quot; $fileColorSpace;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// CONNECT SHADERS&lt;br /&gt;
select -cl  ;&lt;br /&gt;
select -r assetBaked_Set ;&lt;br /&gt;
string $selection[] = `ls -sl`;&lt;br /&gt;
string $polyGons[] = `filterExpand -sm 12 $selection`;&lt;br /&gt;
for ( $object in $polyGons ) {&lt;br /&gt;
    string $shadingGroupName = ($object + &amp;quot;Shape_bakedmtlSG&amp;quot;);&lt;br /&gt;
    sets -e -forceElement $shadingGroupName $object;&lt;br /&gt;
}&lt;br /&gt;
select -cl  ;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
///////////////////////////////////&lt;br /&gt;
// SAVE&lt;br /&gt;
file -rename (&amp;quot;C:/YOUR_PATH/BAKED_ASSETS/&amp;quot; + $assetName + &amp;quot;_&amp;quot; + $lightRigName + &amp;quot;_BAKE_DEBUG.mb&amp;quot;);&lt;br /&gt;
file -f -save;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Arnold - Set all Standins display on Bouding box ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$selected=`ls -type &amp;quot;aiStandIn&amp;quot;`;&lt;br /&gt;
for ($object in $selected){&lt;br /&gt;
    setAttr ($object + &amp;quot;.mode&amp;quot;) 0;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Arnold - Set all Standins display on Point cloud ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$selected=`ls -type &amp;quot;aiStandIn&amp;quot;`;&lt;br /&gt;
for ($object in $selected){&lt;br /&gt;
    setAttr ($object + &amp;quot;.mode&amp;quot;) 4;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Alembic - Loop animation on all nodes ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$selected=`ls -type &amp;quot;AlembicNode&amp;quot;`;&lt;br /&gt;
for ($object in $selected){&lt;br /&gt;
    setAttr ($object + &amp;quot;.cycleType&amp;quot;) 1;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Mental Ray nodes error - Delete Mayatomr plugin ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
unknownPlugin -remove &amp;quot;Mayatomr&amp;quot;;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Delete Unknown nodes ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
select -r `ls -type unknown`;&lt;br /&gt;
delete;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Write text ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
string $exampleFileName = ( &amp;quot;D:/yolo.bat&amp;quot; );&lt;br /&gt;
string $linesToWrite[] = {&lt;br /&gt;
    &amp;quot;youpi&amp;quot;,&lt;br /&gt;
    &amp;quot;youhou&amp;quot;&lt;br /&gt;
    };&lt;br /&gt;
int $result = fwriteAllLines($exampleFileName,$linesToWrite);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Point Lock No Attach on selected follicles ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    setAttr ($object + &amp;quot;.pointLock&amp;quot;) 0;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Convert .ma cameras from Reality Capture into .abc files ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// List of assets&lt;br /&gt;
string $fileParts[] = {&amp;quot;asset_001&amp;quot;, &amp;quot;asset_002&amp;quot;};&lt;br /&gt;
&lt;br /&gt;
// Replace the PATH of your files&lt;br /&gt;
for ($filePart in $fileParts){&lt;br /&gt;
	string $fileName = $filePart + &amp;quot;_cam&amp;quot;;&lt;br /&gt;
	string $filePath = &amp;quot;//DISK/PATH/&amp;quot; + $filePart + &amp;quot;/&amp;quot; + $filePart +&amp;quot;_cam.ma&amp;quot;;&lt;br /&gt;
	file -import -type &amp;quot;mayaAscii&amp;quot;  -ignoreVersion -ra true -mergeNamespacesOnClash false -rpr $fileName -options &amp;quot;v=0;p=17;f=0&amp;quot;  -pr  -importFrameRate true  -importTimeRange &amp;quot;override&amp;quot; $filePath;&lt;br /&gt;
	select -cl;&lt;br /&gt;
	select `ls -type &amp;quot;imagePlane&amp;quot;`;&lt;br /&gt;
	pickWalk -d up;&lt;br /&gt;
	doDelete;&lt;br /&gt;
	select `ls -type &amp;quot;camera&amp;quot;`;&lt;br /&gt;
	pickWalk -d up;	&lt;br /&gt;
	string $abcPath = &amp;quot;//DISK/PATH/&amp;quot; + $filePart + &amp;quot;/&amp;quot; + $filePart +&amp;quot;_cam.abc&amp;quot;;&lt;br /&gt;
	string $abcExp = &amp;quot;-frameRange 1 1 -uvWrite -worldSpace -dataFormat ogawa -root |* -file &amp;quot; + $abcPath;&lt;br /&gt;
	AbcExport -j $abcExp;&lt;br /&gt;
	select -all;&lt;br /&gt;
	doDelete;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Combine objects ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select objects&lt;br /&gt;
&lt;br /&gt;
polyPerformAction polyUnite o 0; &lt;br /&gt;
DeleteHistory;&lt;br /&gt;
FreezeTransformations;&lt;br /&gt;
makeIdentity -apply true -t 1 -r 1 -s 1 -n 0 -pn 1;&lt;br /&gt;
CenterPivot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Unitize UVs (one square UV by face) ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select objects&lt;br /&gt;
&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    select -r ($object+&amp;quot;.e[*]&amp;quot;);&lt;br /&gt;
    hilite ($object+&amp;quot;.e[*]&amp;quot;) ;&lt;br /&gt;
    polyMapCut -ch 1 ($object+&amp;quot;.e[*]&amp;quot;);&lt;br /&gt;
    polyForceUV -unitize $object;&lt;br /&gt;
    select $object;&lt;br /&gt;
    DeleteHistory;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== ONE-CLICK Unfold UVs ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select seams edges first&lt;br /&gt;
&lt;br /&gt;
invertSelection;&lt;br /&gt;
string $selectedEdges [] = `ls -sl`;&lt;br /&gt;
&lt;br /&gt;
string $selectedObject [] = `ls -selection -objectsOnly`;&lt;br /&gt;
&lt;br /&gt;
select -r ($selectedObject[0]+&amp;quot;.e[*]&amp;quot;);&lt;br /&gt;
hilite ($selectedObject[0]+&amp;quot;.e[*]&amp;quot;) ;&lt;br /&gt;
polyMapCut -ch 1 ($selectedObject[0]+&amp;quot;.e[*]&amp;quot;);&lt;br /&gt;
polyForceUV -unitize $selectedObject[0];&lt;br /&gt;
&lt;br /&gt;
select $selectedObject[0];&lt;br /&gt;
polyMapSewMove -nf 10 -lps 0 -ch 1 $selectedEdges;&lt;br /&gt;
select -r ($selectedObject[0]+&amp;quot;.map[*]&amp;quot;);&lt;br /&gt;
u3dUnfold -ite 1 -p 0 -bi 1 -tf 1 -ms 1024 -rs 0 ($selectedObject[0]+&amp;quot;.map[*]&amp;quot;);&lt;br /&gt;
u3dLayout -res 256 -scl 1 -spc 0.001 -mar 0.01 -box 0 1 0 1 $selectedObject[0];&lt;br /&gt;
select $selectedObject[0];&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Create Texture Reference on all shapes from a group ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select top group first&lt;br /&gt;
&lt;br /&gt;
string $selection[] = `ls -sl`;&lt;br /&gt;
string $polyGons[] = `filterExpand -sm 12 $selection`;&lt;br /&gt;
&lt;br /&gt;
for ($i = 0; $i &amp;lt; size($polyGons); $i ++)&lt;br /&gt;
{&lt;br /&gt;
    select -r $polyGons[$i] ;&lt;br /&gt;
    CreateTextureReferenceObject;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
select -r $selection;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Search and select by name ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// If you want to select every object containing &amp;quot;tree&amp;quot;&lt;br /&gt;
// From NaughtyNathan on CGTalk&lt;br /&gt;
&lt;br /&gt;
select -r &amp;quot;*tree*&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
// And if you want to select only transforms containing &amp;quot;tree&amp;quot;&lt;br /&gt;
&lt;br /&gt;
select `ls -type &amp;quot;transform&amp;quot; &amp;quot;*tree*&amp;quot;`;&lt;br /&gt;
&lt;br /&gt;
// And if you are using namespace, you need:&lt;br /&gt;
&lt;br /&gt;
select -r `ls -r 1 &amp;quot;*tree*&amp;quot;`;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Search and select UI ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
window -t &amp;quot;Search and Select&amp;quot;;&lt;br /&gt;
columnLayout;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
frameLayout -mh 10 -mw 10 -l &amp;quot;&amp;quot; ;&lt;br /&gt;
&lt;br /&gt;
textField  -text TOTO -w 200 &amp;quot;requestTransform&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
proc searchSelectTransform() {&lt;br /&gt;
    string $what = (&amp;quot;*&amp;quot; + `textField -q -text &amp;quot;requestTransform&amp;quot;` + &amp;quot;*&amp;quot;);&lt;br /&gt;
    select -r `ls -type &amp;quot;transform&amp;quot; -r 1 $what`;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
button -label &amp;quot;Search and select Transforms&amp;quot; -command &amp;quot;searchSelectTransform&amp;quot;;&lt;br /&gt;
setParent..;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
frameLayout -mh 10 -mw 10 -l &amp;quot;&amp;quot; ;&lt;br /&gt;
&lt;br /&gt;
textField  -text TOTO -w 200 &amp;quot;requestShape&amp;quot;;&lt;br /&gt;
		&lt;br /&gt;
proc searchSelectShape() {&lt;br /&gt;
    string $what = (&amp;quot;*&amp;quot; + `textField -q -text &amp;quot;requestShape&amp;quot;` + &amp;quot;*&amp;quot;);&lt;br /&gt;
    select -r `ls -type &amp;quot;shape&amp;quot; -r 1 $what`;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
button -label &amp;quot;Search and select Shapes&amp;quot; -command &amp;quot;searchSelectShape&amp;quot;;&lt;br /&gt;
setParent..;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
frameLayout -mh 10 -mw 10 -l &amp;quot;&amp;quot; ;&lt;br /&gt;
&lt;br /&gt;
textField  -text TOTO -w 200 &amp;quot;requestAny&amp;quot;;&lt;br /&gt;
		&lt;br /&gt;
proc searchSelectAny() {&lt;br /&gt;
    string $what = (&amp;quot;*&amp;quot; + `textField -q -text &amp;quot;requestAny&amp;quot;` + &amp;quot;*&amp;quot;);&lt;br /&gt;
    select -r `ls -r 1 $what`;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
button -label &amp;quot;Search and select any type&amp;quot; -command &amp;quot;searchSelectAny&amp;quot;;&lt;br /&gt;
setParent..;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
frameLayout -mh 10 -mw 10 -l &amp;quot;&amp;quot; ;&lt;br /&gt;
&lt;br /&gt;
textField  -text TOTO -w 200 &amp;quot;requestCtrls&amp;quot;;&lt;br /&gt;
		&lt;br /&gt;
proc searchSelectCtrls() {&lt;br /&gt;
    string $what = (&amp;quot;*&amp;quot; + `textField -q -text &amp;quot;requestCtrls&amp;quot;` + &amp;quot;*&amp;quot;);&lt;br /&gt;
    select -r `ls -type &amp;quot;nurbsCurve&amp;quot; -r 1 $what`;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
button -label &amp;quot;Search and select Ctrls&amp;quot; -command &amp;quot;searchSelectCtrls&amp;quot;;&lt;br /&gt;
setParent..;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
frameLayout -mh 10 -mw 10 -l &amp;quot;&amp;quot; ;&lt;br /&gt;
&lt;br /&gt;
textField  -text TOTO -w 200 &amp;quot;requestJoints&amp;quot;;&lt;br /&gt;
		&lt;br /&gt;
proc searchSelectJoints() {&lt;br /&gt;
    string $what = (&amp;quot;*&amp;quot; + `textField -q -text &amp;quot;requestJoints&amp;quot;` + &amp;quot;*&amp;quot;);&lt;br /&gt;
    select -r `ls -type &amp;quot;joint&amp;quot; -r 1 $what`;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
button -label &amp;quot;Search and select Joints&amp;quot; -command &amp;quot;searchSelectJoints&amp;quot;;&lt;br /&gt;
setParent..;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
showWindow;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Constrain Parent and Scale on a selection of objects ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select objects&lt;br /&gt;
&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    select -r pCube1 ;&lt;br /&gt;
    select -add $object ;&lt;br /&gt;
    doCreateParentConstraintArgList 1 { &amp;quot;1&amp;quot;,&amp;quot;0&amp;quot;,&amp;quot;0&amp;quot;,&amp;quot;0&amp;quot;,&amp;quot;0&amp;quot;,&amp;quot;0&amp;quot;,&amp;quot;0&amp;quot;,&amp;quot;0&amp;quot;,&amp;quot;1&amp;quot;,&amp;quot;&amp;quot;,&amp;quot;1&amp;quot; };&lt;br /&gt;
    parentConstraint -mo -weight 1;&lt;br /&gt;
    doCreateScaleConstraintArgList 1 { &amp;quot;0&amp;quot;,&amp;quot;1&amp;quot;,&amp;quot;1&amp;quot;,&amp;quot;1&amp;quot;,&amp;quot;0&amp;quot;,&amp;quot;0&amp;quot;,&amp;quot;0&amp;quot;,&amp;quot;1&amp;quot;,&amp;quot;&amp;quot;,&amp;quot;1&amp;quot; };&lt;br /&gt;
    scaleConstraint -offset 1 1 1 -weight 1;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== All ASS Arnold proxies in bounding box ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
select `ls -type &amp;quot;aiStandIn&amp;quot;`;&lt;br /&gt;
&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    setAttr ($object + &amp;quot;.mode&amp;quot;) (0);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Walter</name></author>
		
	</entry>
	<entry>
		<id>http://antoinevienne.fr/wiki/index.php?title=Nuke_Python&amp;diff=273</id>
		<title>Nuke Python</title>
		<link rel="alternate" type="text/html" href="http://antoinevienne.fr/wiki/index.php?title=Nuke_Python&amp;diff=273"/>
		<updated>2024-08-02T18:29:11Z</updated>

		<summary type="html">&lt;p&gt;Walter: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Nuke Python Scripts=&lt;br /&gt;
&lt;br /&gt;
=== Getting advanced settings/Knobs informations ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#For a specific knob, here for &amp;quot;mov32_settings&amp;quot; in a Write node&lt;br /&gt;
i = nuke.selectedNode()&lt;br /&gt;
print i.knob('mov32_settings').value()&lt;br /&gt;
&lt;br /&gt;
#Or for the whole node - https://berniebernie.fr/wiki/&lt;br /&gt;
print(nuke.selectedNode())&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Create multiple Writes nodes for multiples Reads - With RGBA channels activated ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
//Select Read nodes first&lt;br /&gt;
&lt;br /&gt;
root_frame_path = &amp;quot;/YOUR_PATH&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
nodes = nuke.selectedNodes()&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
for n in nodes:&lt;br /&gt;
&lt;br /&gt;
    roto_name = n.name()&lt;br /&gt;
&lt;br /&gt;
    n.setSelected(True)&lt;br /&gt;
&lt;br /&gt;
    w = nuke.createNode( &amp;quot;Write&amp;quot; )&lt;br /&gt;
&lt;br /&gt;
    write_name = roto_name.replace(&amp;quot;Roto&amp;quot;, &amp;quot;Write_&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
    w.knob(&amp;quot;name&amp;quot;).setValue(write_name)&lt;br /&gt;
&lt;br /&gt;
    image_path = &amp;quot;{root_frame_path}/{write_name}.png&amp;quot;.format(root_frame_path=root_frame_path, write_name=write_name)&lt;br /&gt;
&lt;br /&gt;
    w.knob(&amp;quot;file&amp;quot;).setValue(image_path)&lt;br /&gt;
&lt;br /&gt;
for a in nuke.allNodes('Write'):&lt;br /&gt;
&lt;br /&gt;
    a['channels'].setValue('rgba')&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Change specific attribute on all nodes ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
//Works also with &amp;quot;selectedNodes&amp;quot;&lt;br /&gt;
//&amp;quot;render_mode&amp;quot; and &amp;quot;textured+wireframe&amp;quot; are examples of attributes to be changed.&lt;br /&gt;
&lt;br /&gt;
sn = nuke.allNodes()&lt;br /&gt;
&lt;br /&gt;
for n in sn:&lt;br /&gt;
&lt;br /&gt;
        n.knob('render_mode').setValue(&amp;quot;textured+wireframe&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
//Alternative script for selectedNodes:&lt;br /&gt;
&lt;br /&gt;
for a in nuke.selectedNodes('Write'):&lt;br /&gt;
&lt;br /&gt;
a['channels'].setValue('rgba')&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
//Alternative script for allNodes:&lt;br /&gt;
&lt;br /&gt;
for a in nuke.allNodes('Write'):&lt;br /&gt;
&lt;br /&gt;
a['channels'].setValue('rgba')&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Set localizationPolicy off on all Read nodes ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sn = nuke.allNodes()&lt;br /&gt;
&lt;br /&gt;
for n in sn:&lt;br /&gt;
&lt;br /&gt;
        n.knob('localizationPolicy').setValue(&amp;quot;off&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Set value of BBox parameter in Merge nodes to B ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
for n in nuke.allNodes('Merge2'):&lt;br /&gt;
&lt;br /&gt;
    n['bbox'].setValue(&amp;quot;B&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Count selected nodes ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
len(nuke.selectedNodes())&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Export multiple files in DXV ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#This script comes from the great Benjamin Vedrenne. DXV is the codec made by and for Resolume.&lt;br /&gt;
#Select all Read nodes or sources first.&lt;br /&gt;
#This script create a write node under each selected read nodes. Easy for fast and massive file conversion TO VIDEO.&lt;br /&gt;
&lt;br /&gt;
for oReadNode in nuke.selectedNodes():&lt;br /&gt;
&lt;br /&gt;
    oPath =  oReadNode['file'].value()&lt;br /&gt;
    first =  oReadNode['first'].value()&lt;br /&gt;
    last =  oReadNode['last'].value()&lt;br /&gt;
    newPath = oPath.split('/')[-2]&lt;br /&gt;
    oReadNode['selected'].setValue(True)&lt;br /&gt;
    Write = nuke.createNode (&amp;quot;Write&amp;quot;)   &lt;br /&gt;
&lt;br /&gt;
    #Specify file path here&lt;br /&gt;
    osdir = 'C:/DXV/tmp'&lt;br /&gt;
    &lt;br /&gt;
    Write.knob(&amp;quot;beforeRender&amp;quot;).setValue(&amp;quot;import os\nif not os.path.isdir(os.path.dirname(nuke.thisNode()['file'].evaluate())):\n  os.makedirs(os.path.dirname(nuke.thisNode()['file'].evaluate()))&amp;quot;)&lt;br /&gt;
    Write.knob('channels').setValue('rgba')&lt;br /&gt;
    Write.knob('file').setValue(osdir+'/'+newPath+&amp;quot;.mov&amp;quot;)&lt;br /&gt;
    Write.knob('file_type').setValue('mov')&lt;br /&gt;
    Write.knob('meta_codec').setValue('DXD3')&lt;br /&gt;
    Write.knob('mov32_fps').setValue(24)&lt;br /&gt;
    Write.knob('use_limit').setValue(True)&lt;br /&gt;
    Write.knob('first').setValue(first)&lt;br /&gt;
    Write.knob('last').setValue(last)&lt;br /&gt;
    Write.knob('mov32_settings').setValue('000000000000000000000000000001b67365616e000000010000000100000000000001a276696465000000010000000f00000000000000227370746c00000001000000000000000044584433000000000020000003ff000000207470726c000000010000000000000000000000000018000000000000000000246472617400000001000000000000000000000000000000530000010000000100000000156d70736f00000001000000000000000000000000186d66726100000001000000000000000000000000000000187073667200000001000000000000000000000000000000156266726100000001000000000000000000000000166d70657300000001000000000000000000000000002868617264000000010000000000000000000000000000000000000000000000000000000000000016656e647300000001000000000000000000000000001663666c67000000010000000000000000004400000018636d667200000001000000000000000052534c4d00000014636c75740000000100000000000000000000001c6364656300000001000000000000000043736552030000000000001c766572730000000100000000000000000003001c00010000')&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Reformat selected Read nodes and Write it ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#Select Read nodes and put the right path below&lt;br /&gt;
&lt;br /&gt;
for oReadNode in nuke.selectedNodes():&lt;br /&gt;
&lt;br /&gt;
    oPath =  oReadNode['file'].value()&lt;br /&gt;
    first =  oReadNode['first'].value()&lt;br /&gt;
    last =  oReadNode['last'].value()&lt;br /&gt;
    newPath = oPath.split('/')[-1]&lt;br /&gt;
    oReadNode['selected'].setValue(True)&lt;br /&gt;
    Reformat = nuke.createNode (&amp;quot;Reformat&amp;quot;)&lt;br /&gt;
    Reformat.knob('format').setValue('square_1K')&lt;br /&gt;
    Write = nuke.createNode (&amp;quot;Write&amp;quot;)   &lt;br /&gt;
&lt;br /&gt;
    #Specify file path here&lt;br /&gt;
    osdir = 'C:/YOUR_PATH'&lt;br /&gt;
    &lt;br /&gt;
    Write.knob(&amp;quot;beforeRender&amp;quot;).setValue(&amp;quot;import os\nif not os.path.isdir(os.path.dirname(nuke.thisNode()['file'].evaluate())):\n  os.makedirs(os.path.dirname(nuke.thisNode()['file'].evaluate()))&amp;quot;)&lt;br /&gt;
    Write.knob('channels').setValue('rgb')&lt;br /&gt;
    Write.knob('file').setValue(osdir+'/'+newPath)&lt;br /&gt;
    Write.knob('file_type').setValue('jpeg')&lt;br /&gt;
    Write.knob('_jpeg_quality').setValue(1)&lt;br /&gt;
    Write.knob('use_limit').setValue(True)&lt;br /&gt;
    Write.knob('first').setValue(first)&lt;br /&gt;
    Write.knob('last').setValue(last)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Start selected Read nodes at frame 1 ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
for n in nuke.selectedNodes('Read'):&lt;br /&gt;
&lt;br /&gt;
    n['frame_mode'].setValue(&amp;quot;1&amp;quot;)&lt;br /&gt;
    n['frame'].setValue(&amp;quot;1&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== DPX Writes in sRGB (D60 sim.) from Read nodes ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
for oReadNode in nuke.selectedNodes():&lt;br /&gt;
&lt;br /&gt;
    oPath =  oReadNode['file'].value()&lt;br /&gt;
    first =  oReadNode['first'].value()&lt;br /&gt;
    last =  oReadNode['last'].value()&lt;br /&gt;
    newPath = oPath.split('/')[-1]&lt;br /&gt;
    oReadNode['selected'].setValue(True)&lt;br /&gt;
&lt;br /&gt;
    Write = nuke.createNode (&amp;quot;Write&amp;quot;)   &lt;br /&gt;
&lt;br /&gt;
    #Specify file path here&lt;br /&gt;
    osdir ='C:/YOUR_PATH'&lt;br /&gt;
    &lt;br /&gt;
    Write.knob('channels').setValue('rgb')&lt;br /&gt;
    Write.knob('colorspace').setValue('83)')&lt;br /&gt;
    Write.knob('file').setValue(osdir+'/'+newPath)&lt;br /&gt;
    Write.knob('file_type').setValue('dpx')&lt;br /&gt;
    Write.knob('use_limit').setValue(True)&lt;br /&gt;
    Write.knob('first').setValue(first)&lt;br /&gt;
    Write.knob('last').setValue(last)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Set Create directories ON on all Write nodes ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
for n in nuke.allNodes('Write'):&lt;br /&gt;
&lt;br /&gt;
    n['create_directories'].setValue(True)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== DPX Writes from Read nodes - Starting at frame 1 ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
for oReadNode in nuke.selectedNodes():&lt;br /&gt;
&lt;br /&gt;
    oPath =  oReadNode['file'].value()&lt;br /&gt;
    first =  oReadNode['first'].value()&lt;br /&gt;
    last =  oReadNode['last'].value()&lt;br /&gt;
    newPath = oPath.split('/')[-1]&lt;br /&gt;
    oReadNode['selected'].setValue(True)&lt;br /&gt;
&lt;br /&gt;
    Write = nuke.createNode (&amp;quot;Write&amp;quot;)   &lt;br /&gt;
&lt;br /&gt;
    #Specify file path here&lt;br /&gt;
    osdir ='C:/YOUR_PATH'&lt;br /&gt;
    &lt;br /&gt;
    Write.knob('channels').setValue('rgb')&lt;br /&gt;
    Write.knob('colorspace').setValue('0)')&lt;br /&gt;
    Write.knob('file').setValue(osdir+'/'+newPath)&lt;br /&gt;
    Write.knob('file_type').setValue('dpx')&lt;br /&gt;
    Write.knob('use_limit').setValue(True)&lt;br /&gt;
    Write.knob('first').setValue(1)&lt;br /&gt;
    Write.knob('last').setValue(last-first+1)&lt;br /&gt;
    Write.knob('create_directories').setValue(True)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== JPG Writes from Read nodes - With LUT transform ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
for oReadNode in nuke.selectedNodes():&lt;br /&gt;
&lt;br /&gt;
    oPath =  oReadNode['file'].value()&lt;br /&gt;
    first =  oReadNode['first'].value()&lt;br /&gt;
    last =  oReadNode['last'].value()&lt;br /&gt;
    newPath = oPath.split('/')[-2]&lt;br /&gt;
    oReadNode['selected'].setValue(True)&lt;br /&gt;
    OCIOFileTransform = nuke.createNode (&amp;quot;OCIOFileTransform&amp;quot;)&lt;br /&gt;
    OCIOFileTransform.knob('working_space').setValue('sRGB')&lt;br /&gt;
&lt;br /&gt;
    #Specify lut path here&lt;br /&gt;
    lutpath = 'C:/YOUR_PATH/YOUR_LUT.3dl'&lt;br /&gt;
&lt;br /&gt;
    OCIOFileTransform.knob('file').setValue(lutpath)&lt;br /&gt;
    Write = nuke.createNode (&amp;quot;Write&amp;quot;)   &lt;br /&gt;
&lt;br /&gt;
    #Specify file path here&lt;br /&gt;
    osdir = 'C:/YOUR_PATH'&lt;br /&gt;
    &lt;br /&gt;
    Write.knob(&amp;quot;beforeRender&amp;quot;).setValue(&amp;quot;import os\nif not os.path.isdir(os.path.dirname(nuke.thisNode()['file'].evaluate())):\n  os.makedirs(os.path.dirname(nuke.thisNode()['file'].evaluate()))&amp;quot;)&lt;br /&gt;
    Write.knob('channels').setValue('rgb')&lt;br /&gt;
    Write.knob('file').setValue(osdir+'/'+newPath+'/'+newPath+&amp;quot;.####.jpg&amp;quot;)&lt;br /&gt;
    Write.knob('file_type').setValue('jpeg')&lt;br /&gt;
    Write.knob('_jpeg_quality').setValue(1)&lt;br /&gt;
    Write.knob('use_limit').setValue(True)&lt;br /&gt;
    Write.knob('first').setValue(first)&lt;br /&gt;
    Write.knob('last').setValue(last)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== EXR Writes from Read nodes - Out Rec 709 to AcesCG ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
for oReadNode in nuke.selectedNodes():&lt;br /&gt;
&lt;br /&gt;
    oReadNode['colorspace'].setValue('out_rec709')&lt;br /&gt;
    oPath =  oReadNode['file'].value()&lt;br /&gt;
    first =  oReadNode['first'].value()&lt;br /&gt;
    last =  oReadNode['last'].value()&lt;br /&gt;
    newPath = oPath.split('/')[-2]&lt;br /&gt;
    oReadNode['selected'].setValue(True)&lt;br /&gt;
&lt;br /&gt;
    Write = nuke.createNode (&amp;quot;Write&amp;quot;)       &lt;br /&gt;
    Write.knob(&amp;quot;beforeRender&amp;quot;).setValue(&amp;quot;import os\nif not os.path.isdir(os.path.dirname(nuke.thisNode()['file'].evaluate())):\n  os.makedirs(os.path.dirname(nuke.thisNode()['file'].evaluate()))&amp;quot;)&lt;br /&gt;
    Write.knob('channels').setValue('rgb')&lt;br /&gt;
    oPath = oPath.replace('.%04d.png', '_ACEScg.%04d.exr')&lt;br /&gt;
    oPath = oPath.replace('.1001.png', '_ACEScg.1001.exr')&lt;br /&gt;
    Write.knob('file').setValue(oPath)&lt;br /&gt;
    Write.knob('colorspace').setValue('ACES - ACEScg')&lt;br /&gt;
    Write.knob('file_type').setValue('exr')&lt;br /&gt;
    Write.knob('use_limit').setValue(True)&lt;br /&gt;
    Write.knob('first').setValue(first)&lt;br /&gt;
    Write.knob('last').setValue(last)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== All Read nodes set on nearest frame ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
for n in nuke.allNodes('Read'):&lt;br /&gt;
&lt;br /&gt;
    n['on_error'].setValue(3)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Same frame on all FrameHolds ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
for n in nuke.allNodes('FrameHold'):&lt;br /&gt;
&lt;br /&gt;
    n['first_frame'].setValue(993)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== All Reformats on Cubic ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
for n in nuke.allNodes('Reformat'):&lt;br /&gt;
&lt;br /&gt;
    n['filter'].setValue(1)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Enable all Read nodes ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
for node in nuke.allNodes('Read'):&lt;br /&gt;
    nuke.toNode(node.name()).knob('disable').setValue(False)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Executing button on selected nodes ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sn = nuke.selectedNodes()&lt;br /&gt;
for n in sn:&lt;br /&gt;
    n.knob('myKnob').execute()&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Walter</name></author>
		
	</entry>
	<entry>
		<id>http://antoinevienne.fr/wiki/index.php?title=Houdini_learning&amp;diff=272</id>
		<title>Houdini learning</title>
		<link rel="alternate" type="text/html" href="http://antoinevienne.fr/wiki/index.php?title=Houdini_learning&amp;diff=272"/>
		<updated>2024-05-07T09:57:09Z</updated>

		<summary type="html">&lt;p&gt;Walter: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Houdini learning=&lt;br /&gt;
=== Center Pivot ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// In Pivot Translate in a Transform node&lt;br /&gt;
&lt;br /&gt;
centroid(0,0)&lt;br /&gt;
centroid(0,1)&lt;br /&gt;
centroid(0,2)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Delete by Connectivity attribute ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// In a Delete node, in Group (by example)&lt;br /&gt;
&lt;br /&gt;
@class=7777&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Increase Volume Density ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// In a volumewrangle&lt;br /&gt;
&lt;br /&gt;
@density *= 10;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Substract any VDB by another VDB ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// In a volumewrangle&lt;br /&gt;
&lt;br /&gt;
if (volumesample(1,&amp;quot;surface&amp;quot;,@P)&amp;lt;0)@density=0;&lt;br /&gt;
&lt;br /&gt;
//inverse:&lt;br /&gt;
&lt;br /&gt;
if (volumesample(1,&amp;quot;surface&amp;quot;,@P)&amp;gt;0)@density=0;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Get bound &amp;amp; centroid ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// In a null object&lt;br /&gt;
&lt;br /&gt;
bbox(opinputpath('.',0),D_XSIZE)&lt;br /&gt;
bbox(opinputpath('.',0),D_YSIZE)&lt;br /&gt;
bbox(opinputpath('.',0),D_ZSIZE)&lt;br /&gt;
&lt;br /&gt;
centroid(opinputpath('.',0),D_X)&lt;br /&gt;
centroid(opinputpath('.',0),D_Y)&lt;br /&gt;
centroid(opinputpath('.',0),D_Z)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== UVs ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// In this order : uvautoseam - uvflatten - uvlayout&lt;br /&gt;
In uvflatten : Seams = seams&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Kill emission on a smoke source after frame 300 ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
if (@Frame&amp;gt;300) @density = 0;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Attribfrommap - Use UDIMs images ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Replace 1001 by &amp;lt;UDIM&amp;gt; and check UDIM Filename Expansion&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Attribwrangle - Udim number on primitives attributes ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// In a wrangle set on Primitives&lt;br /&gt;
vector uv = primuv(0, &amp;quot;uv&amp;quot;, @primnum, set(0.5, 0.5, 0));&lt;br /&gt;
i@udim = 1001 + int(uv.x) + int(uv.y)*10;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Place at World center, scale et re-transform for export ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// In a transform translates&lt;br /&gt;
-centroid(0,0) -centroid(0,1) -centroid(0,2)&lt;br /&gt;
// In a transform Uniform scale&lt;br /&gt;
(bbox(&amp;quot;/obj/neigeSol/timeshift1/&amp;quot;, D_ZSIZE))/(bbox(&amp;quot;/obj/neigeSol/transform_centerWorld/&amp;quot;, D_ZSIZE))&lt;br /&gt;
&lt;br /&gt;
// At end, in a transform Uniform scale&lt;br /&gt;
1/((bbox(&amp;quot;/obj/neigeSol/timeshift1/&amp;quot;, D_ZSIZE))/(bbox(&amp;quot;/obj/neigeSol/transform_centerWorld/&amp;quot;, D_ZSIZE)))&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Misc Attr Wrangle expressions ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Delete by color&lt;br /&gt;
if (@Cd.x&amp;lt;chf(&amp;quot;seuilColor&amp;quot;))removepoint(0,@ptnum);&lt;br /&gt;
&lt;br /&gt;
// Set random pscale&lt;br /&gt;
@pscale = fit01(pow(rand(@ptnum), ch(&amp;quot;power&amp;quot;)), ch(&amp;quot;pscale_min&amp;quot;), ch(&amp;quot;pscale_max&amp;quot;));&lt;br /&gt;
&lt;br /&gt;
// Udim attr for each Udim&lt;br /&gt;
vector uv = primuv(0, &amp;quot;uv&amp;quot;, @primnum, set(0.5, 0.5, 0));&lt;br /&gt;
i@udim = 1001 + int(uv.x) + int(uv.y)*10;&lt;br /&gt;
// Next, with a Delete SOP: Group: @udim=$F - Pattern mode !*&lt;br /&gt;
&lt;br /&gt;
// Set pscale Min/Max&lt;br /&gt;
@pscale = fit01(pow(rand(@ptnum), ch(&amp;quot;power&amp;quot;)), ch(&amp;quot;pscale_min&amp;quot;), ch(&amp;quot;pscale_max&amp;quot;));&lt;br /&gt;
&lt;br /&gt;
// Remove small parts - In a Foreach connected piece loop&lt;br /&gt;
@size = (getbbox_size(0).x+getbbox_size(0).y+getbbox_size(0).z);&lt;br /&gt;
&lt;br /&gt;
if(@size &amp;lt; chf(&amp;quot;taille&amp;quot;))&lt;br /&gt;
removepoint(geoself(), @ptnum);&lt;br /&gt;
&lt;br /&gt;
// Set @variant integer for Copytopoints (change objects number)&lt;br /&gt;
i@variant =floor(rand(@id)*3);&lt;br /&gt;
&lt;br /&gt;
//// Get position difference between two objects, and match animation&lt;br /&gt;
// On Rest pose object:&lt;br /&gt;
v@fixe = 0;&lt;br /&gt;
@fixe.x = getbbox_center(0).x;&lt;br /&gt;
@fixe.y = getbbox_center(0).y;&lt;br /&gt;
@fixe.z = getbbox_center(0).z;&lt;br /&gt;
// On animated object:&lt;br /&gt;
v@anim = 0;&lt;br /&gt;
@anim.x = getbbox_center(0).x;&lt;br /&gt;
@anim.y = getbbox_center(0).y;&lt;br /&gt;
@anim.z = getbbox_center(0).z;&lt;br /&gt;
// After two previous AttrWrangles:&lt;br /&gt;
v@anim_offset = point(0, 'fixe', 1) - point(1, 'anim', 1);&lt;br /&gt;
// To match animation:&lt;br /&gt;
@P = point(0, &amp;quot;P&amp;quot;, @ptnum) + point(1, 'anim_offset', 1);&lt;br /&gt;
&lt;br /&gt;
//// Blend shape through a mask attribute - Posted by Cudarsjanis on Odforce&lt;br /&gt;
// Geo with mask attribute in first input, blend shape in second&lt;br /&gt;
v@P=lerp(v@P, point(1,'P',@ptnum), f@mask*ch('blend'));&lt;br /&gt;
&lt;br /&gt;
//// Set a fixed normal attribute&lt;br /&gt;
v@z = set(0,1,0);&lt;br /&gt;
&lt;br /&gt;
//// Place at world center&lt;br /&gt;
v@P -= getbbox_center(0);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Delete small pieces ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// As seen on Sidefx forum, posted by paulboiii&lt;br /&gt;
// First create a measure SOP, set to per piece&lt;br /&gt;
&lt;br /&gt;
// Then, in an attribwrangle set on primitives&lt;br /&gt;
float threshold = chf(&amp;quot;Size_Threshold&amp;quot;);&lt;br /&gt;
if ( f@area &amp;lt; threshold ) removeprim(0,@primnum,1);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Attribute Wrangle - Copy attribute from second input ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// With same number of points on both inputs - From Bonsak on Sidefx.com&lt;br /&gt;
&lt;br /&gt;
// Copy P from second input&lt;br /&gt;
@P = v@opinput1_P;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Bounding-box - Position Reference color ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// As seen on https://houdinihelp.ru/ref/expression_cookbook.html&lt;br /&gt;
&lt;br /&gt;
// In an attribwrangle set on primitives&lt;br /&gt;
@Cd.r = relbbox(0,@P).x;&lt;br /&gt;
@Cd.g = relbbox(0,@P).y;&lt;br /&gt;
@Cd.b = relbbox(0,@P).z;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Group by uv.y ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Thanks to https://vfxbrain.wordpress.com/2019/06/14/vex-snippets-2/&lt;br /&gt;
&lt;br /&gt;
// In an attribwrangle set on points&lt;br /&gt;
if(@uv.y&amp;lt;chf(&amp;quot;seuil&amp;quot;)) @group_base = 1;&lt;br /&gt;
&lt;br /&gt;
// ALTERNATIVE&lt;br /&gt;
@uv.x&amp;lt;0.2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Specify attribute value for one point ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
if (@ptnum == 322) f@mask=1;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Pscale by Bbox Y ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
//set pscale first&lt;br /&gt;
&lt;br /&gt;
f@bboxY = relbbox(0,@P).y;&lt;br /&gt;
@pscale *= chramp(&amp;quot;rampBbox&amp;quot;,@bboxY)*4 ;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Delete primitives by height ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
if ( @P.y&amp;lt;chf(&amp;quot;seuil&amp;quot;) ) removeprim(0,@primnum,1);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Falloff geometry ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Get camOrigin&lt;br /&gt;
&lt;br /&gt;
vector pt0 = point(1,'P',0);&lt;br /&gt;
v@raydir = normalize(  pt0 - @P )*-1;&lt;br /&gt;
&lt;br /&gt;
@falloff = dot(v@raydir, @N);&lt;br /&gt;
&lt;br /&gt;
// Promote raydir in Primitives&lt;br /&gt;
&lt;br /&gt;
if ( f@falloff&amp;gt;chf(&amp;quot;seuil&amp;quot;) ) removeprim(0,@primnum,1);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Labs Maps Baker - Bake with UDIMs ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Add %(UDIM)d in the file path - don't need to check Output UDIMs&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Gets the digits from node name===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Add `padzero(3,opdigits(&amp;quot;.&amp;quot;))`&lt;br /&gt;
// Add `padzero(3,opdigits(&amp;quot;..&amp;quot;))` for previous node padding&lt;br /&gt;
// padzero(3,opdigits(&amp;quot;.&amp;quot;)) without hscript&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Self-shadows in Mantra===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Add by example * ^RENDER_ground in Shadow Mask of every of your lights to exclude self-shadows&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Search and replace in VEX ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// To remove ShapeDeformed from Maya Alembics by example, in an Attribute Wrangle in Primitives&lt;br /&gt;
&lt;br /&gt;
string path = @path;&lt;br /&gt;
s@path = re_replace(r&amp;quot;Deformed&amp;quot;, &amp;quot;&amp;quot;, path);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Get only shape name from Maya alembic path ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Attribwrangle on Primitives&lt;br /&gt;
&lt;br /&gt;
s@last_split = split(s@path, &amp;quot;/&amp;quot;)[-1];&lt;br /&gt;
s@last_split = split(s@last_split, &amp;quot;:&amp;quot;)[-1];&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Walter</name></author>
		
	</entry>
	<entry>
		<id>http://antoinevienne.fr/wiki/index.php?title=Maya_Mel&amp;diff=271</id>
		<title>Maya Mel</title>
		<link rel="alternate" type="text/html" href="http://antoinevienne.fr/wiki/index.php?title=Maya_Mel&amp;diff=271"/>
		<updated>2024-03-07T13:55:47Z</updated>

		<summary type="html">&lt;p&gt;Walter: /* Constrain Parent and scale selection of objects */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Maya Mels Scripts=&lt;br /&gt;
=== Octane Render Baking group id - Assign id to multiple objects shapes ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// 0 is for Red, 2 for Green, 4 for Blue&lt;br /&gt;
// 3, 5 and 6 for Cyan, Magenta and Yellow&lt;br /&gt;
// Replace the number &amp;quot;0&amp;quot; by the number of your choice&lt;br /&gt;
// Baking group id is also avalaible in Attribute Spreadsheet Editor&lt;br /&gt;
&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    print($object+&amp;quot;\n&amp;quot;);&lt;br /&gt;
    setAttr ($object + &amp;quot;.octBakGrId&amp;quot;) (0);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Maxwell Render - Particles sequence - Force .abc file ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
//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&lt;br /&gt;
&lt;br /&gt;
global int $current_frame;&lt;br /&gt;
$current_frame = `currentTime -query`;&lt;br /&gt;
print $current_frame;&lt;br /&gt;
{&lt;br /&gt;
setAttr -type &amp;quot;string&amp;quot; maxwellRFRKParticles1.file (&amp;quot;/YOUR_PATH/YOUR_FILE&amp;quot; + $current_frame + &amp;quot;.abc&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Maxwell Render - Specify object ID color ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Specify object ID color&lt;br /&gt;
&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    print($object+&amp;quot;\n&amp;quot;);&lt;br /&gt;
    setAttr ($object + &amp;quot;.mxSpecifyObjIdColor&amp;quot;) (1);&lt;br /&gt;
    setAttr ($object + &amp;quot;.mxObjIdColor&amp;quot;) -type &amp;quot;double3&amp;quot; 1 0 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Redshift - Add blend attribute and set random value for objects selection ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Useful for blending between colors with RedshiftUserDataScalar&lt;br /&gt;
&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    print($object);&lt;br /&gt;
    addAttr -ln &amp;quot;blend&amp;quot; -at double  -min 0 -max 1 -dv 0 $object;&lt;br /&gt;
    setAttr ($object + &amp;quot;.blend&amp;quot;) (rand(1));&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Redshift - Set Primary visibility off for selection (layer override) ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Go in right render layer and select objects&lt;br /&gt;
&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    print($object+&amp;quot;\n&amp;quot;);&lt;br /&gt;
    setAttr ($object + &amp;quot;.rsEnableVisibilityOverrides&amp;quot;) (1);&lt;br /&gt;
    editRenderLayerAdjustment ($object + &amp;quot;.rsPrimaryRayVisible&amp;quot;);&lt;br /&gt;
    setAttr ($object + &amp;quot;.rsPrimaryRayVisible&amp;quot;) (0);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Convert Motion trail to curve ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select the motion trail first&lt;br /&gt;
&lt;br /&gt;
{&lt;br /&gt;
$selected=`ls -dag -et snapshotShape`;&lt;br /&gt;
for ($obj in $selected){&lt;br /&gt;
$pts=(getAttr($obj+&amp;quot;.pts&amp;quot;));&lt;br /&gt;
$size=size($pts);&lt;br /&gt;
$curve=`curve -d 1 -p $pts[0] $pts[1] $pts[2] -p $pts[4] $pts[5] $pts[6] -k 0 -k 1`;&lt;br /&gt;
for($i=8;$i&amp;lt;$size;$i+=4)&lt;br /&gt;
curve -os -a -p $pts[$i] $pts[$i+1] $pts[$i+2] $curve ;&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Quantize keyframes for selection ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Snap keys on frames for objects selection&lt;br /&gt;
&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    print($object+&amp;quot;\n&amp;quot;);&lt;br /&gt;
    snapKey $object;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Loop image sequence for texture ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// On File texture, check Image sequence, and edit expression&lt;br /&gt;
&lt;br /&gt;
file1.frameExtension=((frame%8)+1);&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Symmetrize - Duplicate &amp;amp; merge object ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select half object first&lt;br /&gt;
&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    print($object+&amp;quot;\n&amp;quot;);&lt;br /&gt;
    xform -piv 0 0 0 $object;&lt;br /&gt;
    duplicate -rr;&lt;br /&gt;
    setAttr ($object + &amp;quot;.scaleX&amp;quot;) (-1);&lt;br /&gt;
    select -add $object ;&lt;br /&gt;
    polyPerformAction polyUnite o 0;&lt;br /&gt;
    polyMergeVertex  -d 0.0001 -am 1 -ch 1;&lt;br /&gt;
    DeleteHistory;&lt;br /&gt;
    rename ($object);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Mirror object ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select object first&lt;br /&gt;
&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    print($object+&amp;quot;\n&amp;quot;);&lt;br /&gt;
    DeleteHistory;&lt;br /&gt;
    makeIdentity -apply true -t 1 -r 1 -s 1 -n 0 -pn 1;&lt;br /&gt;
    xform -piv 0 0 0 $object;&lt;br /&gt;
    duplicate -rr;&lt;br /&gt;
    setAttr ($object + &amp;quot;.scaleX&amp;quot;) (-1);&lt;br /&gt;
    DeleteHistory;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Group each object and rename ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select objects first&lt;br /&gt;
&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    string $name = ($object);&lt;br /&gt;
    select $object ;&lt;br /&gt;
    doGroup 0 1 1;&lt;br /&gt;
    rename ($name + &amp;quot;_GRP&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Change path in an Attribute ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Here the Attribute is &amp;quot;.filePrefix&amp;quot; - Select objects first&lt;br /&gt;
&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    string $path = getAttr ($object+&amp;quot;.filePrefix&amp;quot;);&lt;br /&gt;
    $path = `substitute &amp;quot;//OLD/PATH/&amp;quot; $path &amp;quot;//NEW/PATH/&amp;quot;`;&lt;br /&gt;
    setAttr -type &amp;quot;string&amp;quot; ($object+&amp;quot;.filePrefix&amp;quot;) ($path);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Change opacity mode on V-Ray shaders ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select shaders first&lt;br /&gt;
&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    if (attributeExists(&amp;quot;omode&amp;quot;,$object)) { //check if attribute exists&lt;br /&gt;
        CBunlockAttr ($object+&amp;quot;.omode&amp;quot;); //unlock opacity mode&lt;br /&gt;
    }&lt;br /&gt;
    if (attributeExists(&amp;quot;opacityMode&amp;quot;,$object)) {&lt;br /&gt;
        setAttr ($object+&amp;quot;.opacityMode&amp;quot;) 1; //set opacity mode in Clip - 0 pour Normal&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// Alternative&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    if (attributeExists(&amp;quot;opacityMode&amp;quot;,$object)) {&lt;br /&gt;
        setAttr ($object+&amp;quot;.opacityMode&amp;quot;) -l false; //unlock attribute if locked&lt;br /&gt;
    }&lt;br /&gt;
    if (attributeExists(&amp;quot;opacityMode&amp;quot;,$object)) {&lt;br /&gt;
        setAttr ($object+&amp;quot;.opacityMode&amp;quot;) 2; //set opacity mode in Clip - 0 pour Normal&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Change color space on selected fileTextures ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Useful to automatically convert Quixel Megascans by example from sRGB/Raw to ACES color spaces&lt;br /&gt;
&lt;br /&gt;
string $object_selection[] = (`ls -sl`);&lt;br /&gt;
for ($object in $object_selection) {&lt;br /&gt;
    if(`getAttr ($object+&amp;quot;.cs&amp;quot;)` == &amp;quot;sRGB&amp;quot;){&lt;br /&gt;
        setAttr ($object + &amp;quot;.cs&amp;quot;) -type &amp;quot;string&amp;quot; &amp;quot;Utility - sRGB - Texture&amp;quot;;&lt;br /&gt;
    }&lt;br /&gt;
    if(`getAttr ($object+&amp;quot;.cs&amp;quot;)` == &amp;quot;Raw&amp;quot;){&lt;br /&gt;
        setAttr ($object + &amp;quot;.cs&amp;quot;) -type &amp;quot;string&amp;quot; &amp;quot;Utility - Raw&amp;quot;;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Redshift - custom Tesselation on selected objects ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select objects first&lt;br /&gt;
&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    print($object+&amp;quot;\n&amp;quot;);&lt;br /&gt;
    setAttr ($object + &amp;quot;.rsMinTessellationLength&amp;quot;) (0.1);&lt;br /&gt;
    setAttr ($object + &amp;quot;.rsMaxTessellationSubdivs&amp;quot;) (2);&lt;br /&gt;
    setAttr ($object + &amp;quot;.rsOutOfFrustumTessellationFactor&amp;quot;) (4);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Change color on selected shaders ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select shaders first&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    print($object+&amp;quot;\n&amp;quot;);&lt;br /&gt;
    setAttr ($object + &amp;quot;.color&amp;quot;) -l false;&lt;br /&gt;
    setAttr ($object + &amp;quot;.color&amp;quot;) -type &amp;quot;double3&amp;quot; (0.18) (0.18) (0.18);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Change Filter Type on selected Files Textures ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select files textures first - 0 means Off&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    print($object+&amp;quot;\n&amp;quot;);&lt;br /&gt;
    setAttr ($object + &amp;quot;.filterType&amp;quot;) 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Clean Render Layers ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// In MEL&lt;br /&gt;
fixRenderLayerOutAdjustmentErrors;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Change Filter Type on selected Files Textures ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select files textures first - 0 means Off&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    print($object+&amp;quot;\n&amp;quot;);&lt;br /&gt;
    setAttr ($object + &amp;quot;.filterType&amp;quot;) 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Select by name ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select objects with &amp;quot;toto&amp;quot;&lt;br /&gt;
select -r &amp;quot;toto*&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Display color on shapes ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select objects&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    print($object+&amp;quot;\n&amp;quot;);&lt;br /&gt;
    setAttr ($object + &amp;quot;.displayColors&amp;quot;) 1;&lt;br /&gt;
    setDisplayColorChannelAttribute ($object + &amp;quot;.displayColorChannel&amp;quot;);&lt;br /&gt;
    polyColorPerVertex -r 1 -g 0 -b 0 -a 1 -cdo;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Geometry Constraint on multiple selection ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select objects to constrain&lt;br /&gt;
string $objectBase = &amp;quot;surfaceName&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    select -cl;&lt;br /&gt;
    select $objectBase;&lt;br /&gt;
    select -add $object;&lt;br /&gt;
    geometryConstraint -weight 1;&lt;br /&gt;
    select -r &amp;quot;*Constraint*&amp;quot;;&lt;br /&gt;
    doDelete;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
=== Speed up smokes rendering with V-Ray ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select smokes first&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    print($object+&amp;quot;\n&amp;quot;);&lt;br /&gt;
    setAttr ($object + &amp;quot;.rendStep&amp;quot;) 160;&lt;br /&gt;
    setAttr ($object + &amp;quot;.shadowStep&amp;quot;) 400;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Set bump multiplier on multiple V-Ray shaders ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select shaders&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    if (attributeExists(&amp;quot;bumpMult&amp;quot;,$object)) {&lt;br /&gt;
        setAttr ($object + &amp;quot;.bumpMult&amp;quot;) -1; //set bump multiplier at -1&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== STOP/START viewport ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// As seen on https://www.toadstorm.com/. - Put it in your shelf&lt;br /&gt;
paneLayout -e -manage false $gMainPane&lt;br /&gt;
&lt;br /&gt;
paneLayout -e -manage true $gMainPane&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Select curves by name ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select objects first - Replace &amp;quot;toto&amp;quot; by what you are looking for&lt;br /&gt;
&lt;br /&gt;
select `ls -type &amp;quot;nurbsCurve&amp;quot; &amp;quot;*toto*&amp;quot;`;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Noise expression ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Replace &amp;quot;pCube1&amp;quot;&lt;br /&gt;
&lt;br /&gt;
pCube1.translateX=sin(time*20)*0.01*noise(time*10);&lt;br /&gt;
pCube1.translateY=sin(time*4)*0.01*noise(time*10);&lt;br /&gt;
pCube1.translateZ=sin(time*12)*0.01*noise(time*10);&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== V-ray - Make curves renderables ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Replace VRayLightMtl1 at the end by your material&lt;br /&gt;
&lt;br /&gt;
$selected=`ls -dag -et curveShape`;&lt;br /&gt;
for ($object in $selected){&lt;br /&gt;
    // Add V-ray Extra attributes&lt;br /&gt;
    vray addAttributesFromGroup $object vray_nurbscurve_renderable 1;&lt;br /&gt;
    vrayAddAttr $object vraySeparator_vray_nurbscurve_renderable;&lt;br /&gt;
    vrayAddAttr $object vrayNurbsCurveRenderable;&lt;br /&gt;
    vrayAddAttr $object vrayNurbsCurveMaterial;&lt;br /&gt;
    vrayAddAttr $object vrayNurbsCurveTesselation;&lt;br /&gt;
    vrayAddAttr $object vrayNurbsCurveStartWidth;&lt;br /&gt;
    vrayAddAttr $object vrayNurbsCurveLockEndWidth;&lt;br /&gt;
    vrayAddAttr $object vrayNurbsCurveEndWidth;&lt;br /&gt;
    setUITemplate -pst attributeEditorTemplate;&lt;br /&gt;
// Activate renderable&lt;br /&gt;
setAttr ($object + &amp;quot;.vrayNurbsCurveRenderable&amp;quot;) 1;&lt;br /&gt;
// Replace VRayLightMtl1 by your material&lt;br /&gt;
connectAttr -force VRayLightMtl1.outColor ($object + &amp;quot;.vrayNurbsCurveMaterial&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Get object type ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Replace toto with the object whose type you want to know&lt;br /&gt;
&lt;br /&gt;
objectType toto;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Render layer override on specific object type ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Replace &amp;quot;Node&amp;quot; by the object type on which you want to act&lt;br /&gt;
&lt;br /&gt;
$selected=`ls -type &amp;quot;Node&amp;quot;`;&lt;br /&gt;
for ($object in $selected){&lt;br /&gt;
    // Create layer override on Primary Visibility attribute on current renderLayer&lt;br /&gt;
    editRenderLayerAdjustment ($object + &amp;quot;.primaryVisibility&amp;quot;);&lt;br /&gt;
    // Set Primary Visibility - 0 or 1&lt;br /&gt;
    setAttr ($object + &amp;quot;.primaryVisibility&amp;quot;) 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== V-ray - Make lights invisible ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$selected=`ls -type &amp;quot;VRayLightRectShape&amp;quot;`;&lt;br /&gt;
for ($object in $selected){&lt;br /&gt;
    setAttr ($object + &amp;quot;.invisible&amp;quot;) 1;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
$selected=`ls -type &amp;quot;VRayLightSphereShape&amp;quot;`;&lt;br /&gt;
for ($object in $selected){&lt;br /&gt;
    setAttr ($object + &amp;quot;.invisible&amp;quot;) 1;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
$selected=`ls -type &amp;quot;VRayLightDomeShape&amp;quot;`;&lt;br /&gt;
for ($object in $selected){&lt;br /&gt;
    setAttr ($object + &amp;quot;.invisible&amp;quot;) 1;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== V-ray - Select Rect Light ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
select `ls -type &amp;quot;VRayLightRectShape&amp;quot;`;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== V-ray - Rect Lights - Directional Preview - Always for all ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$selected=`ls -type &amp;quot;VRayLightRectShape&amp;quot;`;&lt;br /&gt;
for ($object in $selected){&lt;br /&gt;
    setAttr ($object + &amp;quot;.directionalPreview&amp;quot;) 1;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Randomize rotation on selected objects ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// As posted on CGTalk by NaughtyNathan&lt;br /&gt;
// &amp;quot;just set the vector values to the maximum random x,y,z rotations you want to apply to the selected transforms.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
vector $rndRot = &amp;lt;&amp;lt; 0,0,90 &amp;gt;&amp;gt;;	// x,y,z rotations&lt;br /&gt;
for ($object in `ls -sl -tr`){&lt;br /&gt;
    rotate `rand ($rndRot.x)` `rand ($rndRot.y)` `rand ($rndRot.z)` $object;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Quit Maya ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Brute force method&lt;br /&gt;
&lt;br /&gt;
$i = `getpid`; //application ID&lt;br /&gt;
    system(&amp;quot;taskkill /PID &amp;quot;  + $i +&amp;quot; /f&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
// In a gentle way&lt;br /&gt;
&lt;br /&gt;
evalDeferred(&amp;quot;quit -f&amp;quot;);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== V-ray - Import list of Alembics through Proxys Import ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// List of Alembics files - Replace by the name of your Alembics&lt;br /&gt;
string $alembicsParts[] = {&amp;quot;part1&amp;quot;,&amp;quot;part2&amp;quot;,&amp;quot;part3&amp;quot;};&lt;br /&gt;
&lt;br /&gt;
// Replace the PATH of your files - Scale by 100 for Houdini Alembics - &amp;lt;frame04&amp;gt; for sequences&lt;br /&gt;
for ($alembicsPart in $alembicsParts){&lt;br /&gt;
    vrayCreateProxy -node $alembicsPart -existing -dir (&amp;quot;C:/YOURPATH/&amp;quot;+$alembicsPart+&amp;quot;.&amp;lt;frame04&amp;gt;.abc&amp;quot;) -createProxyNode;&lt;br /&gt;
    setAttr ($alembicsPart+&amp;quot;_vraymesh.animType&amp;quot;) 1;&lt;br /&gt;
    setAttr ($alembicsPart+&amp;quot;.scaleZ&amp;quot;) 100;&lt;br /&gt;
    setAttr ($alembicsPart+&amp;quot;.scaleX&amp;quot;) 100;&lt;br /&gt;
    setAttr ($alembicsPart+&amp;quot;.scaleY&amp;quot;) 100;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== V-ray - Change path to VRayMesh for selected proxies ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Change path with your own .vrmesh&lt;br /&gt;
$selected=`ls -type &amp;quot;VRayMesh&amp;quot;`;&lt;br /&gt;
for ($object in $selected){&lt;br /&gt;
    setAttr -type &amp;quot;string&amp;quot; ($object + &amp;quot;.fileName2&amp;quot;) &amp;quot;//DISK/PATH/YOUR_VRMESH.vrmesh&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// If you want to change Geometry type - 4 for GPU mesh - add following in the loop&lt;br /&gt;
//    setAttr ($object + &amp;quot;.geomType&amp;quot;) 4;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Delete image planes ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Delete image plane if exists.&lt;br /&gt;
$selected=`ls -type &amp;quot;imagePlane&amp;quot;`;&lt;br /&gt;
select $selected;&lt;br /&gt;
for ($object in $selected){&lt;br /&gt;
    doDelete;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Merge alembic from set ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select objects in a set called EXPORT_SET&lt;br /&gt;
select -r EXPORT_SET ;&lt;br /&gt;
timeControl -edit -forceRedraw $gPlayBackSlider;&lt;br /&gt;
&lt;br /&gt;
// Create list of objects from EXPORT_SET&lt;br /&gt;
string $assetParts[] = `ls -sl`;&lt;br /&gt;
$assetPartsList = stringArrayToString($assetParts,&amp;quot; &amp;quot;);&lt;br /&gt;
&lt;br /&gt;
// Merge alembic with these objects&lt;br /&gt;
AbcImport -mode import -connect $assetPartsList &amp;quot;//DISK/PATH/alembic.abc&amp;quot;;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Create Texture reference ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// CREATE TEXTURE REFERENCE ON EXPORT SET&lt;br /&gt;
&lt;br /&gt;
select -r YOUR_GROUP ;&lt;br /&gt;
CreateTextureReferenceObject;&lt;br /&gt;
select -cl  ;&lt;br /&gt;
&lt;br /&gt;
// REMOVE REFERENCE OBJECTS FROM EXPORT SET&lt;br /&gt;
select -r YOUR_GROUP_reference ;&lt;br /&gt;
string $selection[] = `ls -sl`;&lt;br /&gt;
string $polyGons[] = `filterExpand -sm 12 $selection`;&lt;br /&gt;
select -r $polyGons;&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    sets -rm EXPORT_SET $object;&lt;br /&gt;
}&lt;br /&gt;
select -cl  ;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Replace animated objects with V-Ray proxies ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// First select animated objects to replace&lt;br /&gt;
// For each object create a proxy then constrain then bake simulation then delete constraint&lt;br /&gt;
&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
	vrayCreateProxy -node assetName -existing -dir (&amp;quot;//DISK/PATH/your_asset.vrmesh&amp;quot;) -createProxyNode;&lt;br /&gt;
	select -r $object ;&lt;br /&gt;
	select -add assetName ;&lt;br /&gt;
	doCreateParentConstraintArgList 1 { &amp;quot;0&amp;quot;,&amp;quot;0&amp;quot;,&amp;quot;0&amp;quot;,&amp;quot;0&amp;quot;,&amp;quot;0&amp;quot;,&amp;quot;0&amp;quot;,&amp;quot;0&amp;quot;,&amp;quot;0&amp;quot;,&amp;quot;1&amp;quot;,&amp;quot;&amp;quot;,&amp;quot;1&amp;quot; };&lt;br /&gt;
	parentConstraint -weight 1;&lt;br /&gt;
	bakeResults -simulation true -t &amp;quot;1000:1100&amp;quot; -sampleBy 1 -oversamplingRate 1 -disableImplicitControl true -preserveOutsideKeys true -sparseAnimCurveBake false -removeBakedAttributeFromLayer false -removeBakedAnimFromLayer false -bakeOnOverrideLayer false -minimizeRotation true -controlPoints false -shape true {&amp;quot;assetName&amp;quot;};&lt;br /&gt;
	select `ls -type &amp;quot;constraint&amp;quot;`;&lt;br /&gt;
	select -add $object ;&lt;br /&gt;
	doDelete;&lt;br /&gt;
	select -cl  ;&lt;br /&gt;
	rename &amp;quot;assetName&amp;quot; $object;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Select all meshes in a group ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// From cmadsenAniden on forums.autodesk.com&lt;br /&gt;
// Replace group1 by the name of your own group&lt;br /&gt;
&lt;br /&gt;
select -r group1 ;&lt;br /&gt;
string $selection[] = `ls -sl`;&lt;br /&gt;
string $polyGons[] = `filterExpand -sm 12 $selection`;&lt;br /&gt;
select -r $polyGons;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Select shot camera ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// CREATE VARIABLE FOR SHOT CAMERA AND SELECT IT&lt;br /&gt;
&lt;br /&gt;
select `ls -type &amp;quot;camera&amp;quot;`;&lt;br /&gt;
select -d sideShape frontShape topShape perspShape;&lt;br /&gt;
$camerashot = `ls -sl`;&lt;br /&gt;
string $shotcamera = $camerashot[0];&lt;br /&gt;
print $shotcamera;&lt;br /&gt;
select $shotcamera;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Get list of frames with keys on all transform objects ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$selected=`ls -dag -et transform`;&lt;br /&gt;
&lt;br /&gt;
float $arrathy[] = `keyframe -query $selected`;&lt;br /&gt;
&lt;br /&gt;
float $sorted[] = python(&amp;quot;import pymel.core as pm; list(set((pm.getMelGlobal(\&amp;quot;float[]\&amp;quot;, \&amp;quot;$arrathy\&amp;quot;))))&amp;quot;);&lt;br /&gt;
print $sorted;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== MULTI SNAP ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Replace a list of objects by another with bake of animation. Replace FSTART and FEND with your own padding.&lt;br /&gt;
&lt;br /&gt;
///////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
///////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
/*&lt;br /&gt;
Type the command MS() in MEL form to open UI.&lt;br /&gt;
*/&lt;br /&gt;
///////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
///////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
source &amp;quot;generateChannelMenu.mel&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
global proc MS ()&lt;br /&gt;
{&lt;br /&gt;
     global string $sourceObjects;&lt;br /&gt;
     global string $destinationObjects;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    // If the window exists already, delete it.&lt;br /&gt;
    if (`window -exists multiSnapWindow`)&lt;br /&gt;
    {&lt;br /&gt;
        deleteUI multiSnapWindow;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    // Build the window.&lt;br /&gt;
    global string $man_window;&lt;br /&gt;
    string $man_window = `window -title &amp;quot; MULTI SNAP&amp;quot; -sizeable 0 -w 300 multiSnapWindow`;&lt;br /&gt;
    frameLayout -label &amp;quot;Snap source objects on destination objects.&amp;quot;;&lt;br /&gt;
    rowLayout -width 540 -nc 2 -cw4 10 20 20 100;&lt;br /&gt;
    // Source objects section&lt;br /&gt;
    frameLayout -label &amp;quot;Source objects&amp;quot;;&lt;br /&gt;
    $sourceObjects = `textScrollList -width 600 -height 300`;&lt;br /&gt;
    rowLayout -width 240 -nc 2 -cw2 120 120;&lt;br /&gt;
    button -label &amp;quot;Add selected&amp;quot; -command &amp;quot;MS_addObjects ();&amp;quot; -width 120;&lt;br /&gt;
    button -label &amp;quot;Remove selected&amp;quot; -command &amp;quot;MS_removeObjects ();&amp;quot; -width 120;&lt;br /&gt;
    setParent ..;&lt;br /&gt;
    rowLayout -width 240 -nc 2 -cw2 120 120;&lt;br /&gt;
    button -label &amp;quot;Remove All&amp;quot; -command &amp;quot;MS_clearObjects ();&amp;quot; -width 240;&lt;br /&gt;
    setParent ..;&lt;br /&gt;
    setParent ..;&lt;br /&gt;
    rowLayout -nc 3;&lt;br /&gt;
    button -label &amp;quot;Create&amp;quot; -command &amp;quot;VRAYCONNECDO() &amp;quot; -width 140 -align center;&lt;br /&gt;
    button -label &amp;quot;Close&amp;quot; -command &amp;quot;DAC_CloseUI() &amp;quot; -width 140 -align center;&lt;br /&gt;
    setParent ..;&lt;br /&gt;
    setParent ..;&lt;br /&gt;
    // Destination objects section&lt;br /&gt;
    frameLayout -label &amp;quot;Destination objects&amp;quot;;&lt;br /&gt;
    $destinationObjects = `textScrollList -width 600 -height 300`;&lt;br /&gt;
    rowLayout -width 240 -nc 2 -cw2 120 120;&lt;br /&gt;
    button -label &amp;quot;Add selected&amp;quot; -command &amp;quot;MS_addMM ();&amp;quot; -width 120;&lt;br /&gt;
    button -label &amp;quot;Remove selected&amp;quot; -command &amp;quot;MS_removeMM ();&amp;quot; -width 120;&lt;br /&gt;
    setParent ..;&lt;br /&gt;
    setParent ..;&lt;br /&gt;
    rowLayout -nc 3;&lt;br /&gt;
    button -label &amp;quot;SNAP IT&amp;quot; -command &amp;quot;VRAYCONNECDO() &amp;quot; -width 140 -align center;&lt;br /&gt;
    button -label &amp;quot;Close&amp;quot; -command &amp;quot;DAC_CloseUI() &amp;quot; -width 140 -align center;&lt;br /&gt;
    setParent ..;&lt;br /&gt;
    setParent ..;&lt;br /&gt;
&lt;br /&gt;
// Show the window.&lt;br /&gt;
showWindow multiSnapWindow;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
global proc string[] getShaders(string $from)&lt;br /&gt;
{&lt;br /&gt;
// get the shapes from the input&lt;br /&gt;
string $shapes[] = ls(&amp;quot;-o&amp;quot;, &amp;quot;-dag&amp;quot;, &amp;quot;-s&amp;quot;, $from);&lt;br /&gt;
// give me the connected &amp;quot;shadingEngines&amp;quot;&lt;br /&gt;
string $shadingEngines[] = listConnections(&amp;quot;-type&amp;quot;,&amp;quot;shadingEngine&amp;quot;, $shapes);&lt;br /&gt;
// list the connected materials (shaders) from that&lt;br /&gt;
string $materials[] = ls(&amp;quot;-mat&amp;quot;, listConnections($shadingEngines));&lt;br /&gt;
// remove duplicate occurrences.&lt;br /&gt;
return (stringArrayRemoveDuplicates($materials));&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
//Add selected objects to list.&lt;br /&gt;
global proc MS_addObjects ()&lt;br /&gt;
{&lt;br /&gt;
      global string $sourceObjects;&lt;br /&gt;
      string $selectedshapes[] = `ls -sl -l`;&lt;br /&gt;
      //print $selectedshapes;&lt;br /&gt;
      int $count = 0;&lt;br /&gt;
&lt;br /&gt;
if ($selectedshapes[0] != &amp;quot;&amp;quot;)&lt;br /&gt;
{&lt;br /&gt;
   for ($i in $selectedshapes)&lt;br /&gt;
   {&lt;br /&gt;
     $count ++;&lt;br /&gt;
     textScrollList -edit -append $i $sourceObjects;&lt;br /&gt;
   }&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
//Add selected objects to list.&lt;br /&gt;
global proc MS_addMM ()&lt;br /&gt;
{&lt;br /&gt;
      global string $destinationObjects;&lt;br /&gt;
      string $selectedshapes[] = `ls -sl -l`;&lt;br /&gt;
      //print $selectedshapes;&lt;br /&gt;
      int $count = 0;&lt;br /&gt;
&lt;br /&gt;
if ($selectedshapes[0] != &amp;quot;&amp;quot;)&lt;br /&gt;
{&lt;br /&gt;
   for ($i in $selectedshapes)&lt;br /&gt;
   {&lt;br /&gt;
     $count ++;&lt;br /&gt;
     textScrollList -edit -append $i $destinationObjects;&lt;br /&gt;
   }&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// Clear objects from list.&lt;br /&gt;
global proc MS_clearObjects ()&lt;br /&gt;
{&lt;br /&gt;
    global string $sourceObjects;&lt;br /&gt;
textScrollList -e -ra $sourceObjects;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// Remove selected object from list.&lt;br /&gt;
global proc MS_removeObjects ()&lt;br /&gt;
{&lt;br /&gt;
   global string $sourceObjects;&lt;br /&gt;
&lt;br /&gt;
    int $index [] = `textScrollList -query -selectIndexedItem $sourceObjects`;&lt;br /&gt;
    if ($index [0] != 0)&lt;br /&gt;
    {&lt;br /&gt;
        textScrollList -edit -removeIndexedItem $index [0] $sourceObjects;&lt;br /&gt;
    }&lt;br /&gt;
   global string $sourceObjects;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
global proc VRAYCONNECDO()&lt;br /&gt;
{&lt;br /&gt;
    // UI Elements&lt;br /&gt;
global string $sourceObjects;&lt;br /&gt;
global string $destinationObjects;&lt;br /&gt;
// Define user selected objects&lt;br /&gt;
string $selected_objects[] = `textScrollList -query -allItems $sourceObjects`;&lt;br /&gt;
string $meshMaterial[] = `textScrollList -query -allItems $destinationObjects`;&lt;br /&gt;
int $i = 0;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
// SET PADDING&lt;br /&gt;
string $FSTART = &amp;quot;1&amp;quot;;&lt;br /&gt;
string $FEND = &amp;quot;100&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
print $FSTART;&lt;br /&gt;
print $FEND;&lt;br /&gt;
&lt;br /&gt;
string $PADDING = $FSTART + &amp;quot;:&amp;quot; + $FEND;&lt;br /&gt;
&lt;br /&gt;
//Progress bar&lt;br /&gt;
global string $gMainProgressBar;&lt;br /&gt;
&lt;br /&gt;
// Start the progress bar and adjust its max value for this operation.&lt;br /&gt;
    int $steps = size($selected_objects);&lt;br /&gt;
    progressBar -edit -beginProgress -isInterruptable true -status &amp;quot;Connecting shaders to mesh material ...&amp;quot; -maxValue $steps $gMainProgressBar;&lt;br /&gt;
 &lt;br /&gt;
for ($i = 0; $i &amp;lt; size($selected_objects); $i ++)&lt;br /&gt;
{&lt;br /&gt;
        parentConstraint -n parentConstraintMS $selected_objects[$i] $meshMaterial[$i];&lt;br /&gt;
        select -r $meshMaterial[$i] ;&lt;br /&gt;
        bakeResults -simulation true -t $PADDING -sampleBy 1 -oversamplingRate 1 -disableImplicitControl true -preserveOutsideKeys true -sparseAnimCurveBake false -removeBakedAttributeFromLayer false -removeBakedAnimFromLayer false -bakeOnOverrideLayer false -minimizeRotation true -controlPoints false -shape true {$meshMaterial[$i]};&lt;br /&gt;
        select -cl  ;&lt;br /&gt;
        select -r &amp;quot;*parentConstraintMS*&amp;quot;;&lt;br /&gt;
        doDelete;&lt;br /&gt;
// Update the progress bar.&lt;br /&gt;
progressBar -edit -step 1 $gMainProgressBar;&lt;br /&gt;
}&lt;br /&gt;
// End the progress.&lt;br /&gt;
progressBar -edit -endProgress $gMainProgressBar;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Delete hidden objects ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select objects&lt;br /&gt;
&lt;br /&gt;
for ( $object in `ls -sl` ) {&lt;br /&gt;
    $vis = getAttr ($object+&amp;quot;.visibility&amp;quot;);&lt;br /&gt;
    if ($vis == 0){&lt;br /&gt;
        select -r $object ;&lt;br /&gt;
        doDelete ;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== V-Ray - BAKE MATERIALS ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Made to work also with mayabatch.exe&lt;br /&gt;
&lt;br /&gt;
////////////////////////////////////////////&lt;br /&gt;
// BAKE VRAY CUSTOM VARIABLES&lt;br /&gt;
////////////////////////////////////////////&lt;br /&gt;
&lt;br /&gt;
// ASSET PATH&lt;br /&gt;
string $assetFileType = &amp;quot;mayaBinary&amp;quot;;&lt;br /&gt;
string $assetPath = &amp;quot;C:/YOUR_PATH/YOUR_SURFACING_ASSET.mb&amp;quot;;&lt;br /&gt;
string $assetName = &amp;quot;ASSET_NAME&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
// LIGHT RIG PATH&lt;br /&gt;
string $lightRigFileType = &amp;quot;mayaAscii&amp;quot;;&lt;br /&gt;
string $lightRigPath = &amp;quot;C:/YOUR_PATH/YOUR_LIGHT_RIG.mb&amp;quot;;&lt;br /&gt;
string $lightRigName = &amp;quot;DAY_LIGHTING&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
// BAKED TEXTURES PATH&lt;br /&gt;
string $bakedTexturesPath = (&amp;quot;C:/YOUR_PATH/BAKED_TEXTURES/&amp;quot; + $assetName + &amp;quot;_&amp;quot; + $lightRigName + &amp;quot;_Bake&amp;quot;);&lt;br /&gt;
print $bakedTexturesPath;&lt;br /&gt;
&lt;br /&gt;
// SET RESOLUTION FOR BAKED MAPS&lt;br /&gt;
$resWidth = 4096;&lt;br /&gt;
$resHeight = $resWidth;&lt;br /&gt;
&lt;br /&gt;
// COLOR SPACE FOR FILE TEXTURES&lt;br /&gt;
string $fileColorSpace = &amp;quot;ACES - ACEScg&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
////////////////////////////////////////////&lt;br /&gt;
// END OF CUSTOM VARIABLES&lt;br /&gt;
////////////////////////////////////////////&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
////////////////////////////////////////////&lt;br /&gt;
// RENDER SETTINGS&lt;br /&gt;
&lt;br /&gt;
// Set File Name Prefix&lt;br /&gt;
setAttr -type &amp;quot;string&amp;quot; vraySettings.fileNamePrefix &amp;quot;&amp;lt;Scene&amp;gt;/&amp;lt;Layer&amp;gt;/&amp;lt;Camera&amp;gt;_&amp;lt;Layer&amp;gt;_&amp;lt;Scene&amp;gt;&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
// Set resolution&lt;br /&gt;
$resWidthHalf = $resWidth/2;&lt;br /&gt;
$resHeightHalf = $resHeight/2;&lt;br /&gt;
setAttr &amp;quot;vraySettings.width&amp;quot; $resWidthHalf;&lt;br /&gt;
setAttr &amp;quot;vraySettings.height&amp;quot; $resHeightHalf;&lt;br /&gt;
&lt;br /&gt;
// Set Persp camera renderable&lt;br /&gt;
setAttr &amp;quot;perspShape.renderable&amp;quot; 1;&lt;br /&gt;
&lt;br /&gt;
// Set Image format&lt;br /&gt;
setAttr -type &amp;quot;string&amp;quot; &amp;quot;vraySettings.imageFormatStr&amp;quot; &amp;quot;exr (multichannel)&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
// Set Animation type on Standard&lt;br /&gt;
setAttr &amp;quot;vraySettings.animType&amp;quot; 0;&lt;br /&gt;
setAttr &amp;quot;vraySettings.animBatchOnly&amp;quot; 1;&lt;br /&gt;
&lt;br /&gt;
// Sampler type Bucket&lt;br /&gt;
setAttr &amp;quot;vraySettings.samplerType&amp;quot; 4;&lt;br /&gt;
&lt;br /&gt;
// Min Shading Rate&lt;br /&gt;
//setAttr &amp;quot;vraySettings.minShadeRate&amp;quot; 4;&lt;br /&gt;
setAttr &amp;quot;vraySettings.minShadeRate&amp;quot; 7;&lt;br /&gt;
&lt;br /&gt;
// Buckets subdivs&lt;br /&gt;
//setAttr &amp;quot;vraySettings.dmcMinSubdivs&amp;quot; 1;&lt;br /&gt;
//setAttr &amp;quot;vraySettings.dmcMaxSubdivs&amp;quot; 8;&lt;br /&gt;
//setAttr &amp;quot;vraySettings.dmcThreshold&amp;quot; 0.1;&lt;br /&gt;
setAttr &amp;quot;vraySettings.dmcMinSubdivs&amp;quot; 1;&lt;br /&gt;
setAttr &amp;quot;vraySettings.dmcMaxSubdivs&amp;quot; 15;&lt;br /&gt;
setAttr &amp;quot;vraySettings.dmcThreshold&amp;quot; 0.01;&lt;br /&gt;
&lt;br /&gt;
// Color mapping Linear&lt;br /&gt;
setAttr &amp;quot;vraySettings.cmap_type&amp;quot; 0;&lt;br /&gt;
&lt;br /&gt;
// GI on&lt;br /&gt;
setAttr &amp;quot;vraySettings.giOn&amp;quot; 1;&lt;br /&gt;
//setAttr &amp;quot;vraySettings.subdivs&amp;quot; 400;&lt;br /&gt;
setAttr &amp;quot;vraySettings.subdivs&amp;quot; 1000;&lt;br /&gt;
&lt;br /&gt;
// Max subdivs&lt;br /&gt;
setAttr &amp;quot;vraySettings.ddisplac_maxSubdivs&amp;quot; 16;&lt;br /&gt;
&lt;br /&gt;
// Cache geometry and bitmaps&lt;br /&gt;
setAttr &amp;quot;vraySettings.globopt_cache_geom_plugins&amp;quot; 1;&lt;br /&gt;
setAttr &amp;quot;vraySettings.globopt_cache_bitmaps&amp;quot; 1;&lt;br /&gt;
&lt;br /&gt;
// Dynamic memory limit&lt;br /&gt;
setAttr &amp;quot;vraySettings.sys_rayc_dynMemLimit&amp;quot; 0;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
////////////////////////////////////////////&lt;br /&gt;
// IMPORT&lt;br /&gt;
&lt;br /&gt;
// IMPORT LIGHT RIG&lt;br /&gt;
file -import -type $lightRigFileType  -ignoreVersion -mergeNamespacesOnClash false -rpr &amp;quot;:&amp;quot; -options &amp;quot;v=0;&amp;quot; $lightRigPath;&lt;br /&gt;
&lt;br /&gt;
// IMPORT ASSET&lt;br /&gt;
file -import -type $assetFileType  -ignoreVersion -mergeNamespacesOnClash false -rpr &amp;quot;:&amp;quot; -options &amp;quot;v=0;&amp;quot; $assetPath;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
// CREATE SETS&lt;br /&gt;
select `ls -type &amp;quot;mesh&amp;quot;`;&lt;br /&gt;
sets -name &amp;quot;assetOriginal_Set&amp;quot; ;&lt;br /&gt;
duplicate -rr;&lt;br /&gt;
group -w -n (&amp;quot;GRP_&amp;quot; + $assetName + &amp;quot;_BAKE_&amp;quot; + `toupper $lightRigName`);&lt;br /&gt;
sets -name &amp;quot;assetBaked_Set&amp;quot; ;&lt;br /&gt;
&lt;br /&gt;
// REMOVE BAKED PARTS FROM ORIGINAL PARTS SET&lt;br /&gt;
select -r assetBaked_Set ;&lt;br /&gt;
string $selection[] = `ls -sl`;&lt;br /&gt;
string $polyGons[] = `filterExpand -sm 12 $selection`;&lt;br /&gt;
select -r $polyGons;&lt;br /&gt;
pickWalk -d down;&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    sets -rm assetOriginal_Set $object;&lt;br /&gt;
}&lt;br /&gt;
select -cl  ;&lt;br /&gt;
&lt;br /&gt;
// DELETE HIDDEN OBJECTS&lt;br /&gt;
select -r assetBaked_Set ;&lt;br /&gt;
string $selection[] = `ls -sl`;&lt;br /&gt;
string $polyGons[] = `filterExpand -sm 12 $selection`;&lt;br /&gt;
select -r $polyGons;&lt;br /&gt;
for ( $object in `ls -sl` ) {&lt;br /&gt;
    $vis = getAttr ($object+&amp;quot;.visibility&amp;quot;);&lt;br /&gt;
    if ($vis == 0){&lt;br /&gt;
        select -r $object ;&lt;br /&gt;
        doDelete ;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
select -cl  ;&lt;br /&gt;
&lt;br /&gt;
// fixShapeName - Thanks to Pinkwerks&lt;br /&gt;
global proc&lt;br /&gt;
fixShapeName()&lt;br /&gt;
{&lt;br /&gt;
    string $me = &amp;quot;fixShapeName&amp;quot;;&lt;br /&gt;
    string $shape;&lt;br /&gt;
    string $newShapeName;&lt;br /&gt;
    string $parent;&lt;br /&gt;
    string $tmpA[];&lt;br /&gt;
	string $selectedShapes[] = `ls -sl -l`;&lt;br /&gt;
    int $sizeOfShapes = `size $selectedShapes`;&lt;br /&gt;
&lt;br /&gt;
    if ( $sizeOfShapes == 0 )&lt;br /&gt;
    	error($me + &amp;quot; : Nothing shapes to process!&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
    for ( $shape in $selectedShapes )&lt;br /&gt;
    {&lt;br /&gt;
    	$tmpA = `listRelatives -p $shape`;&lt;br /&gt;
		$parent = $tmpA[0];&lt;br /&gt;
		$newShapeName = ($parent + &amp;quot;Shape&amp;quot;);&lt;br /&gt;
		rename $shape $newShapeName;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// APPLY FIXSHAPENAME TO BAKED ASSET PARTS&lt;br /&gt;
select -r assetBaked_Set ;&lt;br /&gt;
string $selection[] = `ls -sl`;&lt;br /&gt;
string $polyGons[] = `filterExpand -sm 12 $selection`;&lt;br /&gt;
select -r $polyGons;&lt;br /&gt;
pickWalk -d down;&lt;br /&gt;
fixShapeName();&lt;br /&gt;
select -cl  ;&lt;br /&gt;
&lt;br /&gt;
// DELETE OBJECTS WITHOUT UVS&lt;br /&gt;
select -r assetBaked_Set ;&lt;br /&gt;
string $selection[] = `ls -sl`;&lt;br /&gt;
string $polyGons[] = `filterExpand -sm 12 $selection`;&lt;br /&gt;
select -r $polyGons;&lt;br /&gt;
for ( $object in `ls -sl` ) {&lt;br /&gt;
    int $vertexCount[] = `polyEvaluate -uv $object`;&lt;br /&gt;
    print $vertexCount;&lt;br /&gt;
    string $uvCount = $vertexCount[0];&lt;br /&gt;
    if ($uvCount == 0){&lt;br /&gt;
        select -r $object ;&lt;br /&gt;
        doDelete ;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// CREATE VRAY BAKE OPTIONS&lt;br /&gt;
createNode &amp;quot;VRayBakeOptions&amp;quot; -n &amp;quot;vrayBakeOptions&amp;quot;;&lt;br /&gt;
select -r assetBaked_Set ;&lt;br /&gt;
string $selection[] = `ls -sl`;&lt;br /&gt;
string $polyGons[] = `filterExpand -sm 12 $selection`;&lt;br /&gt;
select -r $polyGons;&lt;br /&gt;
$selected=`ls -sl`;&lt;br /&gt;
for ($object in $selected){&lt;br /&gt;
    sets -edit -forceElement  vrayBakeOptions $object ;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// HIDE ORIGINAL ASSET&lt;br /&gt;
select -r assetOriginal_Set ;&lt;br /&gt;
pickWalk -d up;&lt;br /&gt;
hide `ls -sl`;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
// BAKE VRAY OPTIONS&lt;br /&gt;
setAttr &amp;quot;vrayBakeOptions.udimBaking&amp;quot; 1;&lt;br /&gt;
setAttr &amp;quot;vrayBakeOptions.resolutionX&amp;quot; $resWidth;&lt;br /&gt;
&lt;br /&gt;
optionVar -intValue &amp;quot;vrayBakeType&amp;quot; 2;&lt;br /&gt;
optionVar -intValue &amp;quot;vraySkipNodesWithoutBakeOptions&amp;quot; 1;&lt;br /&gt;
optionVar -intValue &amp;quot;vrayAssignBakedTextures&amp;quot; 1;&lt;br /&gt;
optionVar -stringValue &amp;quot;vrayBakeOutputPath&amp;quot; $bakedTexturesPath;&lt;br /&gt;
optionVar -intValue &amp;quot;vrayBakeProjectionBaking&amp;quot; 0;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
// GO BAKE GO&lt;br /&gt;
select -cl  ;&lt;br /&gt;
select -r assetBaked_Set ;&lt;br /&gt;
string $selection[] = `ls -sl`;&lt;br /&gt;
string $polyGons[] = `filterExpand -sm 12 $selection`;&lt;br /&gt;
select -r $polyGons;&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    vrayStartBake;&lt;br /&gt;
}&lt;br /&gt;
select -cl  ;&lt;br /&gt;
&lt;br /&gt;
// UV TILING UDIM AND ACES CG FOR FILES&lt;br /&gt;
for ( $object in `ls -type &amp;quot;file&amp;quot;` ) {&lt;br /&gt;
    setAttr ($object + &amp;quot;.filterType&amp;quot;) 0;&lt;br /&gt;
    setAttr ($object + &amp;quot;.uvTilingMode&amp;quot;) 3;&lt;br /&gt;
    setAttr ($object + &amp;quot;.cs&amp;quot;) -type &amp;quot;string&amp;quot; $fileColorSpace;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// CONNECT SHADERS&lt;br /&gt;
select -cl  ;&lt;br /&gt;
select -r assetBaked_Set ;&lt;br /&gt;
string $selection[] = `ls -sl`;&lt;br /&gt;
string $polyGons[] = `filterExpand -sm 12 $selection`;&lt;br /&gt;
for ( $object in $polyGons ) {&lt;br /&gt;
    string $shadingGroupName = ($object + &amp;quot;Shape_bakedmtlSG&amp;quot;);&lt;br /&gt;
    sets -e -forceElement $shadingGroupName $object;&lt;br /&gt;
}&lt;br /&gt;
select -cl  ;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
///////////////////////////////////&lt;br /&gt;
// SAVE&lt;br /&gt;
file -rename (&amp;quot;C:/YOUR_PATH/BAKED_ASSETS/&amp;quot; + $assetName + &amp;quot;_&amp;quot; + $lightRigName + &amp;quot;_BAKE_DEBUG.mb&amp;quot;);&lt;br /&gt;
file -f -save;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Arnold - Set all Standins display on Bouding box ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$selected=`ls -type &amp;quot;aiStandIn&amp;quot;`;&lt;br /&gt;
for ($object in $selected){&lt;br /&gt;
    setAttr ($object + &amp;quot;.mode&amp;quot;) 0;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Arnold - Set all Standins display on Point cloud ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$selected=`ls -type &amp;quot;aiStandIn&amp;quot;`;&lt;br /&gt;
for ($object in $selected){&lt;br /&gt;
    setAttr ($object + &amp;quot;.mode&amp;quot;) 4;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Alembic - Loop animation on all nodes ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$selected=`ls -type &amp;quot;AlembicNode&amp;quot;`;&lt;br /&gt;
for ($object in $selected){&lt;br /&gt;
    setAttr ($object + &amp;quot;.cycleType&amp;quot;) 1;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Mental Ray nodes error - Delete Mayatomr plugin ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
unknownPlugin -remove &amp;quot;Mayatomr&amp;quot;;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Delete Unknown nodes ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
select -r `ls -type unknown`;&lt;br /&gt;
delete;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Write text ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
string $exampleFileName = ( &amp;quot;D:/yolo.bat&amp;quot; );&lt;br /&gt;
string $linesToWrite[] = {&lt;br /&gt;
    &amp;quot;youpi&amp;quot;,&lt;br /&gt;
    &amp;quot;youhou&amp;quot;&lt;br /&gt;
    };&lt;br /&gt;
int $result = fwriteAllLines($exampleFileName,$linesToWrite);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Point Lock No Attach on selected follicles ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    setAttr ($object + &amp;quot;.pointLock&amp;quot;) 0;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Convert .ma cameras from Reality Capture into .abc files ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// List of assets&lt;br /&gt;
string $fileParts[] = {&amp;quot;asset_001&amp;quot;, &amp;quot;asset_002&amp;quot;};&lt;br /&gt;
&lt;br /&gt;
// Replace the PATH of your files&lt;br /&gt;
for ($filePart in $fileParts){&lt;br /&gt;
	string $fileName = $filePart + &amp;quot;_cam&amp;quot;;&lt;br /&gt;
	string $filePath = &amp;quot;//DISK/PATH/&amp;quot; + $filePart + &amp;quot;/&amp;quot; + $filePart +&amp;quot;_cam.ma&amp;quot;;&lt;br /&gt;
	file -import -type &amp;quot;mayaAscii&amp;quot;  -ignoreVersion -ra true -mergeNamespacesOnClash false -rpr $fileName -options &amp;quot;v=0;p=17;f=0&amp;quot;  -pr  -importFrameRate true  -importTimeRange &amp;quot;override&amp;quot; $filePath;&lt;br /&gt;
	select -cl;&lt;br /&gt;
	select `ls -type &amp;quot;imagePlane&amp;quot;`;&lt;br /&gt;
	pickWalk -d up;&lt;br /&gt;
	doDelete;&lt;br /&gt;
	select `ls -type &amp;quot;camera&amp;quot;`;&lt;br /&gt;
	pickWalk -d up;	&lt;br /&gt;
	string $abcPath = &amp;quot;//DISK/PATH/&amp;quot; + $filePart + &amp;quot;/&amp;quot; + $filePart +&amp;quot;_cam.abc&amp;quot;;&lt;br /&gt;
	string $abcExp = &amp;quot;-frameRange 1 1 -uvWrite -worldSpace -dataFormat ogawa -root |* -file &amp;quot; + $abcPath;&lt;br /&gt;
	AbcExport -j $abcExp;&lt;br /&gt;
	select -all;&lt;br /&gt;
	doDelete;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Combine objects ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select objects&lt;br /&gt;
&lt;br /&gt;
polyPerformAction polyUnite o 0; &lt;br /&gt;
DeleteHistory;&lt;br /&gt;
FreezeTransformations;&lt;br /&gt;
makeIdentity -apply true -t 1 -r 1 -s 1 -n 0 -pn 1;&lt;br /&gt;
CenterPivot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Unitize UVs (one square UV by face) ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select objects&lt;br /&gt;
&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    select -r ($object+&amp;quot;.e[*]&amp;quot;);&lt;br /&gt;
    hilite ($object+&amp;quot;.e[*]&amp;quot;) ;&lt;br /&gt;
    polyMapCut -ch 1 ($object+&amp;quot;.e[*]&amp;quot;);&lt;br /&gt;
    polyForceUV -unitize $object;&lt;br /&gt;
    select $object;&lt;br /&gt;
    DeleteHistory;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== ONE-CLICK Unfold UVs ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select seams edges first&lt;br /&gt;
&lt;br /&gt;
invertSelection;&lt;br /&gt;
string $selectedEdges [] = `ls -sl`;&lt;br /&gt;
&lt;br /&gt;
string $selectedObject [] = `ls -selection -objectsOnly`;&lt;br /&gt;
&lt;br /&gt;
select -r ($selectedObject[0]+&amp;quot;.e[*]&amp;quot;);&lt;br /&gt;
hilite ($selectedObject[0]+&amp;quot;.e[*]&amp;quot;) ;&lt;br /&gt;
polyMapCut -ch 1 ($selectedObject[0]+&amp;quot;.e[*]&amp;quot;);&lt;br /&gt;
polyForceUV -unitize $selectedObject[0];&lt;br /&gt;
&lt;br /&gt;
select $selectedObject[0];&lt;br /&gt;
polyMapSewMove -nf 10 -lps 0 -ch 1 $selectedEdges;&lt;br /&gt;
select -r ($selectedObject[0]+&amp;quot;.map[*]&amp;quot;);&lt;br /&gt;
u3dUnfold -ite 1 -p 0 -bi 1 -tf 1 -ms 1024 -rs 0 ($selectedObject[0]+&amp;quot;.map[*]&amp;quot;);&lt;br /&gt;
u3dLayout -res 256 -scl 1 -spc 0.001 -mar 0.01 -box 0 1 0 1 $selectedObject[0];&lt;br /&gt;
select $selectedObject[0];&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Create Texture Reference on all shapes from a group ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select top group first&lt;br /&gt;
&lt;br /&gt;
string $selection[] = `ls -sl`;&lt;br /&gt;
string $polyGons[] = `filterExpand -sm 12 $selection`;&lt;br /&gt;
&lt;br /&gt;
for ($i = 0; $i &amp;lt; size($polyGons); $i ++)&lt;br /&gt;
{&lt;br /&gt;
    select -r $polyGons[$i] ;&lt;br /&gt;
    CreateTextureReferenceObject;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
select -r $selection;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Search and select by name ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// If you want to select every object containing &amp;quot;tree&amp;quot;&lt;br /&gt;
// From NaughtyNathan on CGTalk&lt;br /&gt;
&lt;br /&gt;
select -r &amp;quot;*tree*&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
// And if you want to select only transforms containing &amp;quot;tree&amp;quot;&lt;br /&gt;
&lt;br /&gt;
select `ls -type &amp;quot;transform&amp;quot; &amp;quot;*tree*&amp;quot;`;&lt;br /&gt;
&lt;br /&gt;
// And if you are using namespace, you need:&lt;br /&gt;
&lt;br /&gt;
select -r `ls -r 1 &amp;quot;*tree*&amp;quot;`;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Search and select UI ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
window -t &amp;quot;Search and Select&amp;quot;;&lt;br /&gt;
columnLayout;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
frameLayout -mh 10 -mw 10 -l &amp;quot;&amp;quot; ;&lt;br /&gt;
&lt;br /&gt;
textField  -text TOTO -w 200 &amp;quot;requestTransform&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
proc searchSelectTransform() {&lt;br /&gt;
    string $what = (&amp;quot;*&amp;quot; + `textField -q -text &amp;quot;requestTransform&amp;quot;` + &amp;quot;*&amp;quot;);&lt;br /&gt;
    select -r `ls -type &amp;quot;transform&amp;quot; -r 1 $what`;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
button -label &amp;quot;Search and select Transforms&amp;quot; -command &amp;quot;searchSelectTransform&amp;quot;;&lt;br /&gt;
setParent..;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
frameLayout -mh 10 -mw 10 -l &amp;quot;&amp;quot; ;&lt;br /&gt;
&lt;br /&gt;
textField  -text TOTO -w 200 &amp;quot;requestShape&amp;quot;;&lt;br /&gt;
		&lt;br /&gt;
proc searchSelectShape() {&lt;br /&gt;
    string $what = (&amp;quot;*&amp;quot; + `textField -q -text &amp;quot;requestShape&amp;quot;` + &amp;quot;*&amp;quot;);&lt;br /&gt;
    select -r `ls -type &amp;quot;shape&amp;quot; -r 1 $what`;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
button -label &amp;quot;Search and select Shapes&amp;quot; -command &amp;quot;searchSelectShape&amp;quot;;&lt;br /&gt;
setParent..;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
frameLayout -mh 10 -mw 10 -l &amp;quot;&amp;quot; ;&lt;br /&gt;
&lt;br /&gt;
textField  -text TOTO -w 200 &amp;quot;requestAny&amp;quot;;&lt;br /&gt;
		&lt;br /&gt;
proc searchSelectAny() {&lt;br /&gt;
    string $what = (&amp;quot;*&amp;quot; + `textField -q -text &amp;quot;requestAny&amp;quot;` + &amp;quot;*&amp;quot;);&lt;br /&gt;
    select -r `ls -r 1 $what`;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
button -label &amp;quot;Search and select any type&amp;quot; -command &amp;quot;searchSelectAny&amp;quot;;&lt;br /&gt;
setParent..;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
frameLayout -mh 10 -mw 10 -l &amp;quot;&amp;quot; ;&lt;br /&gt;
&lt;br /&gt;
textField  -text TOTO -w 200 &amp;quot;requestCtrls&amp;quot;;&lt;br /&gt;
		&lt;br /&gt;
proc searchSelectCtrls() {&lt;br /&gt;
    string $what = (&amp;quot;*&amp;quot; + `textField -q -text &amp;quot;requestCtrls&amp;quot;` + &amp;quot;*&amp;quot;);&lt;br /&gt;
    select -r `ls -type &amp;quot;nurbsCurve&amp;quot; -r 1 $what`;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
button -label &amp;quot;Search and select Ctrls&amp;quot; -command &amp;quot;searchSelectCtrls&amp;quot;;&lt;br /&gt;
setParent..;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
frameLayout -mh 10 -mw 10 -l &amp;quot;&amp;quot; ;&lt;br /&gt;
&lt;br /&gt;
textField  -text TOTO -w 200 &amp;quot;requestJoints&amp;quot;;&lt;br /&gt;
		&lt;br /&gt;
proc searchSelectJoints() {&lt;br /&gt;
    string $what = (&amp;quot;*&amp;quot; + `textField -q -text &amp;quot;requestJoints&amp;quot;` + &amp;quot;*&amp;quot;);&lt;br /&gt;
    select -r `ls -type &amp;quot;joint&amp;quot; -r 1 $what`;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
button -label &amp;quot;Search and select Joints&amp;quot; -command &amp;quot;searchSelectJoints&amp;quot;;&lt;br /&gt;
setParent..;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
showWindow;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Constrain Parent and Scale on a selection of objects ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select objects&lt;br /&gt;
&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    select -r pCube1 ;&lt;br /&gt;
    select -add $object ;&lt;br /&gt;
    doCreateParentConstraintArgList 1 { &amp;quot;1&amp;quot;,&amp;quot;0&amp;quot;,&amp;quot;0&amp;quot;,&amp;quot;0&amp;quot;,&amp;quot;0&amp;quot;,&amp;quot;0&amp;quot;,&amp;quot;0&amp;quot;,&amp;quot;0&amp;quot;,&amp;quot;1&amp;quot;,&amp;quot;&amp;quot;,&amp;quot;1&amp;quot; };&lt;br /&gt;
    parentConstraint -mo -weight 1;&lt;br /&gt;
    doCreateScaleConstraintArgList 1 { &amp;quot;0&amp;quot;,&amp;quot;1&amp;quot;,&amp;quot;1&amp;quot;,&amp;quot;1&amp;quot;,&amp;quot;0&amp;quot;,&amp;quot;0&amp;quot;,&amp;quot;0&amp;quot;,&amp;quot;1&amp;quot;,&amp;quot;&amp;quot;,&amp;quot;1&amp;quot; };&lt;br /&gt;
    scaleConstraint -offset 1 1 1 -weight 1;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Walter</name></author>
		
	</entry>
	<entry>
		<id>http://antoinevienne.fr/wiki/index.php?title=Maya_Mel&amp;diff=270</id>
		<title>Maya Mel</title>
		<link rel="alternate" type="text/html" href="http://antoinevienne.fr/wiki/index.php?title=Maya_Mel&amp;diff=270"/>
		<updated>2024-03-07T13:55:33Z</updated>

		<summary type="html">&lt;p&gt;Walter: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Maya Mels Scripts=&lt;br /&gt;
=== Octane Render Baking group id - Assign id to multiple objects shapes ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// 0 is for Red, 2 for Green, 4 for Blue&lt;br /&gt;
// 3, 5 and 6 for Cyan, Magenta and Yellow&lt;br /&gt;
// Replace the number &amp;quot;0&amp;quot; by the number of your choice&lt;br /&gt;
// Baking group id is also avalaible in Attribute Spreadsheet Editor&lt;br /&gt;
&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    print($object+&amp;quot;\n&amp;quot;);&lt;br /&gt;
    setAttr ($object + &amp;quot;.octBakGrId&amp;quot;) (0);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Maxwell Render - Particles sequence - Force .abc file ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
//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&lt;br /&gt;
&lt;br /&gt;
global int $current_frame;&lt;br /&gt;
$current_frame = `currentTime -query`;&lt;br /&gt;
print $current_frame;&lt;br /&gt;
{&lt;br /&gt;
setAttr -type &amp;quot;string&amp;quot; maxwellRFRKParticles1.file (&amp;quot;/YOUR_PATH/YOUR_FILE&amp;quot; + $current_frame + &amp;quot;.abc&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Maxwell Render - Specify object ID color ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Specify object ID color&lt;br /&gt;
&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    print($object+&amp;quot;\n&amp;quot;);&lt;br /&gt;
    setAttr ($object + &amp;quot;.mxSpecifyObjIdColor&amp;quot;) (1);&lt;br /&gt;
    setAttr ($object + &amp;quot;.mxObjIdColor&amp;quot;) -type &amp;quot;double3&amp;quot; 1 0 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Redshift - Add blend attribute and set random value for objects selection ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Useful for blending between colors with RedshiftUserDataScalar&lt;br /&gt;
&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    print($object);&lt;br /&gt;
    addAttr -ln &amp;quot;blend&amp;quot; -at double  -min 0 -max 1 -dv 0 $object;&lt;br /&gt;
    setAttr ($object + &amp;quot;.blend&amp;quot;) (rand(1));&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Redshift - Set Primary visibility off for selection (layer override) ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Go in right render layer and select objects&lt;br /&gt;
&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    print($object+&amp;quot;\n&amp;quot;);&lt;br /&gt;
    setAttr ($object + &amp;quot;.rsEnableVisibilityOverrides&amp;quot;) (1);&lt;br /&gt;
    editRenderLayerAdjustment ($object + &amp;quot;.rsPrimaryRayVisible&amp;quot;);&lt;br /&gt;
    setAttr ($object + &amp;quot;.rsPrimaryRayVisible&amp;quot;) (0);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Convert Motion trail to curve ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select the motion trail first&lt;br /&gt;
&lt;br /&gt;
{&lt;br /&gt;
$selected=`ls -dag -et snapshotShape`;&lt;br /&gt;
for ($obj in $selected){&lt;br /&gt;
$pts=(getAttr($obj+&amp;quot;.pts&amp;quot;));&lt;br /&gt;
$size=size($pts);&lt;br /&gt;
$curve=`curve -d 1 -p $pts[0] $pts[1] $pts[2] -p $pts[4] $pts[5] $pts[6] -k 0 -k 1`;&lt;br /&gt;
for($i=8;$i&amp;lt;$size;$i+=4)&lt;br /&gt;
curve -os -a -p $pts[$i] $pts[$i+1] $pts[$i+2] $curve ;&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Quantize keyframes for selection ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Snap keys on frames for objects selection&lt;br /&gt;
&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    print($object+&amp;quot;\n&amp;quot;);&lt;br /&gt;
    snapKey $object;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Loop image sequence for texture ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// On File texture, check Image sequence, and edit expression&lt;br /&gt;
&lt;br /&gt;
file1.frameExtension=((frame%8)+1);&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Symmetrize - Duplicate &amp;amp; merge object ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select half object first&lt;br /&gt;
&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    print($object+&amp;quot;\n&amp;quot;);&lt;br /&gt;
    xform -piv 0 0 0 $object;&lt;br /&gt;
    duplicate -rr;&lt;br /&gt;
    setAttr ($object + &amp;quot;.scaleX&amp;quot;) (-1);&lt;br /&gt;
    select -add $object ;&lt;br /&gt;
    polyPerformAction polyUnite o 0;&lt;br /&gt;
    polyMergeVertex  -d 0.0001 -am 1 -ch 1;&lt;br /&gt;
    DeleteHistory;&lt;br /&gt;
    rename ($object);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Mirror object ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select object first&lt;br /&gt;
&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    print($object+&amp;quot;\n&amp;quot;);&lt;br /&gt;
    DeleteHistory;&lt;br /&gt;
    makeIdentity -apply true -t 1 -r 1 -s 1 -n 0 -pn 1;&lt;br /&gt;
    xform -piv 0 0 0 $object;&lt;br /&gt;
    duplicate -rr;&lt;br /&gt;
    setAttr ($object + &amp;quot;.scaleX&amp;quot;) (-1);&lt;br /&gt;
    DeleteHistory;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Group each object and rename ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select objects first&lt;br /&gt;
&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    string $name = ($object);&lt;br /&gt;
    select $object ;&lt;br /&gt;
    doGroup 0 1 1;&lt;br /&gt;
    rename ($name + &amp;quot;_GRP&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Change path in an Attribute ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Here the Attribute is &amp;quot;.filePrefix&amp;quot; - Select objects first&lt;br /&gt;
&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    string $path = getAttr ($object+&amp;quot;.filePrefix&amp;quot;);&lt;br /&gt;
    $path = `substitute &amp;quot;//OLD/PATH/&amp;quot; $path &amp;quot;//NEW/PATH/&amp;quot;`;&lt;br /&gt;
    setAttr -type &amp;quot;string&amp;quot; ($object+&amp;quot;.filePrefix&amp;quot;) ($path);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Change opacity mode on V-Ray shaders ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select shaders first&lt;br /&gt;
&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    if (attributeExists(&amp;quot;omode&amp;quot;,$object)) { //check if attribute exists&lt;br /&gt;
        CBunlockAttr ($object+&amp;quot;.omode&amp;quot;); //unlock opacity mode&lt;br /&gt;
    }&lt;br /&gt;
    if (attributeExists(&amp;quot;opacityMode&amp;quot;,$object)) {&lt;br /&gt;
        setAttr ($object+&amp;quot;.opacityMode&amp;quot;) 1; //set opacity mode in Clip - 0 pour Normal&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// Alternative&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    if (attributeExists(&amp;quot;opacityMode&amp;quot;,$object)) {&lt;br /&gt;
        setAttr ($object+&amp;quot;.opacityMode&amp;quot;) -l false; //unlock attribute if locked&lt;br /&gt;
    }&lt;br /&gt;
    if (attributeExists(&amp;quot;opacityMode&amp;quot;,$object)) {&lt;br /&gt;
        setAttr ($object+&amp;quot;.opacityMode&amp;quot;) 2; //set opacity mode in Clip - 0 pour Normal&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Change color space on selected fileTextures ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Useful to automatically convert Quixel Megascans by example from sRGB/Raw to ACES color spaces&lt;br /&gt;
&lt;br /&gt;
string $object_selection[] = (`ls -sl`);&lt;br /&gt;
for ($object in $object_selection) {&lt;br /&gt;
    if(`getAttr ($object+&amp;quot;.cs&amp;quot;)` == &amp;quot;sRGB&amp;quot;){&lt;br /&gt;
        setAttr ($object + &amp;quot;.cs&amp;quot;) -type &amp;quot;string&amp;quot; &amp;quot;Utility - sRGB - Texture&amp;quot;;&lt;br /&gt;
    }&lt;br /&gt;
    if(`getAttr ($object+&amp;quot;.cs&amp;quot;)` == &amp;quot;Raw&amp;quot;){&lt;br /&gt;
        setAttr ($object + &amp;quot;.cs&amp;quot;) -type &amp;quot;string&amp;quot; &amp;quot;Utility - Raw&amp;quot;;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Redshift - custom Tesselation on selected objects ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select objects first&lt;br /&gt;
&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    print($object+&amp;quot;\n&amp;quot;);&lt;br /&gt;
    setAttr ($object + &amp;quot;.rsMinTessellationLength&amp;quot;) (0.1);&lt;br /&gt;
    setAttr ($object + &amp;quot;.rsMaxTessellationSubdivs&amp;quot;) (2);&lt;br /&gt;
    setAttr ($object + &amp;quot;.rsOutOfFrustumTessellationFactor&amp;quot;) (4);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Change color on selected shaders ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select shaders first&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    print($object+&amp;quot;\n&amp;quot;);&lt;br /&gt;
    setAttr ($object + &amp;quot;.color&amp;quot;) -l false;&lt;br /&gt;
    setAttr ($object + &amp;quot;.color&amp;quot;) -type &amp;quot;double3&amp;quot; (0.18) (0.18) (0.18);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Change Filter Type on selected Files Textures ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select files textures first - 0 means Off&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    print($object+&amp;quot;\n&amp;quot;);&lt;br /&gt;
    setAttr ($object + &amp;quot;.filterType&amp;quot;) 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Clean Render Layers ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// In MEL&lt;br /&gt;
fixRenderLayerOutAdjustmentErrors;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Change Filter Type on selected Files Textures ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select files textures first - 0 means Off&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    print($object+&amp;quot;\n&amp;quot;);&lt;br /&gt;
    setAttr ($object + &amp;quot;.filterType&amp;quot;) 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Select by name ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select objects with &amp;quot;toto&amp;quot;&lt;br /&gt;
select -r &amp;quot;toto*&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Display color on shapes ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select objects&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    print($object+&amp;quot;\n&amp;quot;);&lt;br /&gt;
    setAttr ($object + &amp;quot;.displayColors&amp;quot;) 1;&lt;br /&gt;
    setDisplayColorChannelAttribute ($object + &amp;quot;.displayColorChannel&amp;quot;);&lt;br /&gt;
    polyColorPerVertex -r 1 -g 0 -b 0 -a 1 -cdo;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Geometry Constraint on multiple selection ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select objects to constrain&lt;br /&gt;
string $objectBase = &amp;quot;surfaceName&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    select -cl;&lt;br /&gt;
    select $objectBase;&lt;br /&gt;
    select -add $object;&lt;br /&gt;
    geometryConstraint -weight 1;&lt;br /&gt;
    select -r &amp;quot;*Constraint*&amp;quot;;&lt;br /&gt;
    doDelete;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
=== Speed up smokes rendering with V-Ray ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select smokes first&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    print($object+&amp;quot;\n&amp;quot;);&lt;br /&gt;
    setAttr ($object + &amp;quot;.rendStep&amp;quot;) 160;&lt;br /&gt;
    setAttr ($object + &amp;quot;.shadowStep&amp;quot;) 400;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Set bump multiplier on multiple V-Ray shaders ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select shaders&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    if (attributeExists(&amp;quot;bumpMult&amp;quot;,$object)) {&lt;br /&gt;
        setAttr ($object + &amp;quot;.bumpMult&amp;quot;) -1; //set bump multiplier at -1&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== STOP/START viewport ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// As seen on https://www.toadstorm.com/. - Put it in your shelf&lt;br /&gt;
paneLayout -e -manage false $gMainPane&lt;br /&gt;
&lt;br /&gt;
paneLayout -e -manage true $gMainPane&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Select curves by name ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select objects first - Replace &amp;quot;toto&amp;quot; by what you are looking for&lt;br /&gt;
&lt;br /&gt;
select `ls -type &amp;quot;nurbsCurve&amp;quot; &amp;quot;*toto*&amp;quot;`;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Noise expression ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Replace &amp;quot;pCube1&amp;quot;&lt;br /&gt;
&lt;br /&gt;
pCube1.translateX=sin(time*20)*0.01*noise(time*10);&lt;br /&gt;
pCube1.translateY=sin(time*4)*0.01*noise(time*10);&lt;br /&gt;
pCube1.translateZ=sin(time*12)*0.01*noise(time*10);&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== V-ray - Make curves renderables ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Replace VRayLightMtl1 at the end by your material&lt;br /&gt;
&lt;br /&gt;
$selected=`ls -dag -et curveShape`;&lt;br /&gt;
for ($object in $selected){&lt;br /&gt;
    // Add V-ray Extra attributes&lt;br /&gt;
    vray addAttributesFromGroup $object vray_nurbscurve_renderable 1;&lt;br /&gt;
    vrayAddAttr $object vraySeparator_vray_nurbscurve_renderable;&lt;br /&gt;
    vrayAddAttr $object vrayNurbsCurveRenderable;&lt;br /&gt;
    vrayAddAttr $object vrayNurbsCurveMaterial;&lt;br /&gt;
    vrayAddAttr $object vrayNurbsCurveTesselation;&lt;br /&gt;
    vrayAddAttr $object vrayNurbsCurveStartWidth;&lt;br /&gt;
    vrayAddAttr $object vrayNurbsCurveLockEndWidth;&lt;br /&gt;
    vrayAddAttr $object vrayNurbsCurveEndWidth;&lt;br /&gt;
    setUITemplate -pst attributeEditorTemplate;&lt;br /&gt;
// Activate renderable&lt;br /&gt;
setAttr ($object + &amp;quot;.vrayNurbsCurveRenderable&amp;quot;) 1;&lt;br /&gt;
// Replace VRayLightMtl1 by your material&lt;br /&gt;
connectAttr -force VRayLightMtl1.outColor ($object + &amp;quot;.vrayNurbsCurveMaterial&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Get object type ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Replace toto with the object whose type you want to know&lt;br /&gt;
&lt;br /&gt;
objectType toto;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Render layer override on specific object type ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Replace &amp;quot;Node&amp;quot; by the object type on which you want to act&lt;br /&gt;
&lt;br /&gt;
$selected=`ls -type &amp;quot;Node&amp;quot;`;&lt;br /&gt;
for ($object in $selected){&lt;br /&gt;
    // Create layer override on Primary Visibility attribute on current renderLayer&lt;br /&gt;
    editRenderLayerAdjustment ($object + &amp;quot;.primaryVisibility&amp;quot;);&lt;br /&gt;
    // Set Primary Visibility - 0 or 1&lt;br /&gt;
    setAttr ($object + &amp;quot;.primaryVisibility&amp;quot;) 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== V-ray - Make lights invisible ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$selected=`ls -type &amp;quot;VRayLightRectShape&amp;quot;`;&lt;br /&gt;
for ($object in $selected){&lt;br /&gt;
    setAttr ($object + &amp;quot;.invisible&amp;quot;) 1;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
$selected=`ls -type &amp;quot;VRayLightSphereShape&amp;quot;`;&lt;br /&gt;
for ($object in $selected){&lt;br /&gt;
    setAttr ($object + &amp;quot;.invisible&amp;quot;) 1;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
$selected=`ls -type &amp;quot;VRayLightDomeShape&amp;quot;`;&lt;br /&gt;
for ($object in $selected){&lt;br /&gt;
    setAttr ($object + &amp;quot;.invisible&amp;quot;) 1;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== V-ray - Select Rect Light ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
select `ls -type &amp;quot;VRayLightRectShape&amp;quot;`;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== V-ray - Rect Lights - Directional Preview - Always for all ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$selected=`ls -type &amp;quot;VRayLightRectShape&amp;quot;`;&lt;br /&gt;
for ($object in $selected){&lt;br /&gt;
    setAttr ($object + &amp;quot;.directionalPreview&amp;quot;) 1;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Randomize rotation on selected objects ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// As posted on CGTalk by NaughtyNathan&lt;br /&gt;
// &amp;quot;just set the vector values to the maximum random x,y,z rotations you want to apply to the selected transforms.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
vector $rndRot = &amp;lt;&amp;lt; 0,0,90 &amp;gt;&amp;gt;;	// x,y,z rotations&lt;br /&gt;
for ($object in `ls -sl -tr`){&lt;br /&gt;
    rotate `rand ($rndRot.x)` `rand ($rndRot.y)` `rand ($rndRot.z)` $object;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Quit Maya ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Brute force method&lt;br /&gt;
&lt;br /&gt;
$i = `getpid`; //application ID&lt;br /&gt;
    system(&amp;quot;taskkill /PID &amp;quot;  + $i +&amp;quot; /f&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
// In a gentle way&lt;br /&gt;
&lt;br /&gt;
evalDeferred(&amp;quot;quit -f&amp;quot;);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== V-ray - Import list of Alembics through Proxys Import ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// List of Alembics files - Replace by the name of your Alembics&lt;br /&gt;
string $alembicsParts[] = {&amp;quot;part1&amp;quot;,&amp;quot;part2&amp;quot;,&amp;quot;part3&amp;quot;};&lt;br /&gt;
&lt;br /&gt;
// Replace the PATH of your files - Scale by 100 for Houdini Alembics - &amp;lt;frame04&amp;gt; for sequences&lt;br /&gt;
for ($alembicsPart in $alembicsParts){&lt;br /&gt;
    vrayCreateProxy -node $alembicsPart -existing -dir (&amp;quot;C:/YOURPATH/&amp;quot;+$alembicsPart+&amp;quot;.&amp;lt;frame04&amp;gt;.abc&amp;quot;) -createProxyNode;&lt;br /&gt;
    setAttr ($alembicsPart+&amp;quot;_vraymesh.animType&amp;quot;) 1;&lt;br /&gt;
    setAttr ($alembicsPart+&amp;quot;.scaleZ&amp;quot;) 100;&lt;br /&gt;
    setAttr ($alembicsPart+&amp;quot;.scaleX&amp;quot;) 100;&lt;br /&gt;
    setAttr ($alembicsPart+&amp;quot;.scaleY&amp;quot;) 100;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== V-ray - Change path to VRayMesh for selected proxies ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Change path with your own .vrmesh&lt;br /&gt;
$selected=`ls -type &amp;quot;VRayMesh&amp;quot;`;&lt;br /&gt;
for ($object in $selected){&lt;br /&gt;
    setAttr -type &amp;quot;string&amp;quot; ($object + &amp;quot;.fileName2&amp;quot;) &amp;quot;//DISK/PATH/YOUR_VRMESH.vrmesh&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// If you want to change Geometry type - 4 for GPU mesh - add following in the loop&lt;br /&gt;
//    setAttr ($object + &amp;quot;.geomType&amp;quot;) 4;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Delete image planes ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Delete image plane if exists.&lt;br /&gt;
$selected=`ls -type &amp;quot;imagePlane&amp;quot;`;&lt;br /&gt;
select $selected;&lt;br /&gt;
for ($object in $selected){&lt;br /&gt;
    doDelete;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Merge alembic from set ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select objects in a set called EXPORT_SET&lt;br /&gt;
select -r EXPORT_SET ;&lt;br /&gt;
timeControl -edit -forceRedraw $gPlayBackSlider;&lt;br /&gt;
&lt;br /&gt;
// Create list of objects from EXPORT_SET&lt;br /&gt;
string $assetParts[] = `ls -sl`;&lt;br /&gt;
$assetPartsList = stringArrayToString($assetParts,&amp;quot; &amp;quot;);&lt;br /&gt;
&lt;br /&gt;
// Merge alembic with these objects&lt;br /&gt;
AbcImport -mode import -connect $assetPartsList &amp;quot;//DISK/PATH/alembic.abc&amp;quot;;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Create Texture reference ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// CREATE TEXTURE REFERENCE ON EXPORT SET&lt;br /&gt;
&lt;br /&gt;
select -r YOUR_GROUP ;&lt;br /&gt;
CreateTextureReferenceObject;&lt;br /&gt;
select -cl  ;&lt;br /&gt;
&lt;br /&gt;
// REMOVE REFERENCE OBJECTS FROM EXPORT SET&lt;br /&gt;
select -r YOUR_GROUP_reference ;&lt;br /&gt;
string $selection[] = `ls -sl`;&lt;br /&gt;
string $polyGons[] = `filterExpand -sm 12 $selection`;&lt;br /&gt;
select -r $polyGons;&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    sets -rm EXPORT_SET $object;&lt;br /&gt;
}&lt;br /&gt;
select -cl  ;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Replace animated objects with V-Ray proxies ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// First select animated objects to replace&lt;br /&gt;
// For each object create a proxy then constrain then bake simulation then delete constraint&lt;br /&gt;
&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
	vrayCreateProxy -node assetName -existing -dir (&amp;quot;//DISK/PATH/your_asset.vrmesh&amp;quot;) -createProxyNode;&lt;br /&gt;
	select -r $object ;&lt;br /&gt;
	select -add assetName ;&lt;br /&gt;
	doCreateParentConstraintArgList 1 { &amp;quot;0&amp;quot;,&amp;quot;0&amp;quot;,&amp;quot;0&amp;quot;,&amp;quot;0&amp;quot;,&amp;quot;0&amp;quot;,&amp;quot;0&amp;quot;,&amp;quot;0&amp;quot;,&amp;quot;0&amp;quot;,&amp;quot;1&amp;quot;,&amp;quot;&amp;quot;,&amp;quot;1&amp;quot; };&lt;br /&gt;
	parentConstraint -weight 1;&lt;br /&gt;
	bakeResults -simulation true -t &amp;quot;1000:1100&amp;quot; -sampleBy 1 -oversamplingRate 1 -disableImplicitControl true -preserveOutsideKeys true -sparseAnimCurveBake false -removeBakedAttributeFromLayer false -removeBakedAnimFromLayer false -bakeOnOverrideLayer false -minimizeRotation true -controlPoints false -shape true {&amp;quot;assetName&amp;quot;};&lt;br /&gt;
	select `ls -type &amp;quot;constraint&amp;quot;`;&lt;br /&gt;
	select -add $object ;&lt;br /&gt;
	doDelete;&lt;br /&gt;
	select -cl  ;&lt;br /&gt;
	rename &amp;quot;assetName&amp;quot; $object;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Select all meshes in a group ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// From cmadsenAniden on forums.autodesk.com&lt;br /&gt;
// Replace group1 by the name of your own group&lt;br /&gt;
&lt;br /&gt;
select -r group1 ;&lt;br /&gt;
string $selection[] = `ls -sl`;&lt;br /&gt;
string $polyGons[] = `filterExpand -sm 12 $selection`;&lt;br /&gt;
select -r $polyGons;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Select shot camera ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// CREATE VARIABLE FOR SHOT CAMERA AND SELECT IT&lt;br /&gt;
&lt;br /&gt;
select `ls -type &amp;quot;camera&amp;quot;`;&lt;br /&gt;
select -d sideShape frontShape topShape perspShape;&lt;br /&gt;
$camerashot = `ls -sl`;&lt;br /&gt;
string $shotcamera = $camerashot[0];&lt;br /&gt;
print $shotcamera;&lt;br /&gt;
select $shotcamera;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Get list of frames with keys on all transform objects ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$selected=`ls -dag -et transform`;&lt;br /&gt;
&lt;br /&gt;
float $arrathy[] = `keyframe -query $selected`;&lt;br /&gt;
&lt;br /&gt;
float $sorted[] = python(&amp;quot;import pymel.core as pm; list(set((pm.getMelGlobal(\&amp;quot;float[]\&amp;quot;, \&amp;quot;$arrathy\&amp;quot;))))&amp;quot;);&lt;br /&gt;
print $sorted;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== MULTI SNAP ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Replace a list of objects by another with bake of animation. Replace FSTART and FEND with your own padding.&lt;br /&gt;
&lt;br /&gt;
///////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
///////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
/*&lt;br /&gt;
Type the command MS() in MEL form to open UI.&lt;br /&gt;
*/&lt;br /&gt;
///////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
///////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
source &amp;quot;generateChannelMenu.mel&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
global proc MS ()&lt;br /&gt;
{&lt;br /&gt;
     global string $sourceObjects;&lt;br /&gt;
     global string $destinationObjects;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    // If the window exists already, delete it.&lt;br /&gt;
    if (`window -exists multiSnapWindow`)&lt;br /&gt;
    {&lt;br /&gt;
        deleteUI multiSnapWindow;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    // Build the window.&lt;br /&gt;
    global string $man_window;&lt;br /&gt;
    string $man_window = `window -title &amp;quot; MULTI SNAP&amp;quot; -sizeable 0 -w 300 multiSnapWindow`;&lt;br /&gt;
    frameLayout -label &amp;quot;Snap source objects on destination objects.&amp;quot;;&lt;br /&gt;
    rowLayout -width 540 -nc 2 -cw4 10 20 20 100;&lt;br /&gt;
    // Source objects section&lt;br /&gt;
    frameLayout -label &amp;quot;Source objects&amp;quot;;&lt;br /&gt;
    $sourceObjects = `textScrollList -width 600 -height 300`;&lt;br /&gt;
    rowLayout -width 240 -nc 2 -cw2 120 120;&lt;br /&gt;
    button -label &amp;quot;Add selected&amp;quot; -command &amp;quot;MS_addObjects ();&amp;quot; -width 120;&lt;br /&gt;
    button -label &amp;quot;Remove selected&amp;quot; -command &amp;quot;MS_removeObjects ();&amp;quot; -width 120;&lt;br /&gt;
    setParent ..;&lt;br /&gt;
    rowLayout -width 240 -nc 2 -cw2 120 120;&lt;br /&gt;
    button -label &amp;quot;Remove All&amp;quot; -command &amp;quot;MS_clearObjects ();&amp;quot; -width 240;&lt;br /&gt;
    setParent ..;&lt;br /&gt;
    setParent ..;&lt;br /&gt;
    rowLayout -nc 3;&lt;br /&gt;
    button -label &amp;quot;Create&amp;quot; -command &amp;quot;VRAYCONNECDO() &amp;quot; -width 140 -align center;&lt;br /&gt;
    button -label &amp;quot;Close&amp;quot; -command &amp;quot;DAC_CloseUI() &amp;quot; -width 140 -align center;&lt;br /&gt;
    setParent ..;&lt;br /&gt;
    setParent ..;&lt;br /&gt;
    // Destination objects section&lt;br /&gt;
    frameLayout -label &amp;quot;Destination objects&amp;quot;;&lt;br /&gt;
    $destinationObjects = `textScrollList -width 600 -height 300`;&lt;br /&gt;
    rowLayout -width 240 -nc 2 -cw2 120 120;&lt;br /&gt;
    button -label &amp;quot;Add selected&amp;quot; -command &amp;quot;MS_addMM ();&amp;quot; -width 120;&lt;br /&gt;
    button -label &amp;quot;Remove selected&amp;quot; -command &amp;quot;MS_removeMM ();&amp;quot; -width 120;&lt;br /&gt;
    setParent ..;&lt;br /&gt;
    setParent ..;&lt;br /&gt;
    rowLayout -nc 3;&lt;br /&gt;
    button -label &amp;quot;SNAP IT&amp;quot; -command &amp;quot;VRAYCONNECDO() &amp;quot; -width 140 -align center;&lt;br /&gt;
    button -label &amp;quot;Close&amp;quot; -command &amp;quot;DAC_CloseUI() &amp;quot; -width 140 -align center;&lt;br /&gt;
    setParent ..;&lt;br /&gt;
    setParent ..;&lt;br /&gt;
&lt;br /&gt;
// Show the window.&lt;br /&gt;
showWindow multiSnapWindow;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
global proc string[] getShaders(string $from)&lt;br /&gt;
{&lt;br /&gt;
// get the shapes from the input&lt;br /&gt;
string $shapes[] = ls(&amp;quot;-o&amp;quot;, &amp;quot;-dag&amp;quot;, &amp;quot;-s&amp;quot;, $from);&lt;br /&gt;
// give me the connected &amp;quot;shadingEngines&amp;quot;&lt;br /&gt;
string $shadingEngines[] = listConnections(&amp;quot;-type&amp;quot;,&amp;quot;shadingEngine&amp;quot;, $shapes);&lt;br /&gt;
// list the connected materials (shaders) from that&lt;br /&gt;
string $materials[] = ls(&amp;quot;-mat&amp;quot;, listConnections($shadingEngines));&lt;br /&gt;
// remove duplicate occurrences.&lt;br /&gt;
return (stringArrayRemoveDuplicates($materials));&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
//Add selected objects to list.&lt;br /&gt;
global proc MS_addObjects ()&lt;br /&gt;
{&lt;br /&gt;
      global string $sourceObjects;&lt;br /&gt;
      string $selectedshapes[] = `ls -sl -l`;&lt;br /&gt;
      //print $selectedshapes;&lt;br /&gt;
      int $count = 0;&lt;br /&gt;
&lt;br /&gt;
if ($selectedshapes[0] != &amp;quot;&amp;quot;)&lt;br /&gt;
{&lt;br /&gt;
   for ($i in $selectedshapes)&lt;br /&gt;
   {&lt;br /&gt;
     $count ++;&lt;br /&gt;
     textScrollList -edit -append $i $sourceObjects;&lt;br /&gt;
   }&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
//Add selected objects to list.&lt;br /&gt;
global proc MS_addMM ()&lt;br /&gt;
{&lt;br /&gt;
      global string $destinationObjects;&lt;br /&gt;
      string $selectedshapes[] = `ls -sl -l`;&lt;br /&gt;
      //print $selectedshapes;&lt;br /&gt;
      int $count = 0;&lt;br /&gt;
&lt;br /&gt;
if ($selectedshapes[0] != &amp;quot;&amp;quot;)&lt;br /&gt;
{&lt;br /&gt;
   for ($i in $selectedshapes)&lt;br /&gt;
   {&lt;br /&gt;
     $count ++;&lt;br /&gt;
     textScrollList -edit -append $i $destinationObjects;&lt;br /&gt;
   }&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// Clear objects from list.&lt;br /&gt;
global proc MS_clearObjects ()&lt;br /&gt;
{&lt;br /&gt;
    global string $sourceObjects;&lt;br /&gt;
textScrollList -e -ra $sourceObjects;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// Remove selected object from list.&lt;br /&gt;
global proc MS_removeObjects ()&lt;br /&gt;
{&lt;br /&gt;
   global string $sourceObjects;&lt;br /&gt;
&lt;br /&gt;
    int $index [] = `textScrollList -query -selectIndexedItem $sourceObjects`;&lt;br /&gt;
    if ($index [0] != 0)&lt;br /&gt;
    {&lt;br /&gt;
        textScrollList -edit -removeIndexedItem $index [0] $sourceObjects;&lt;br /&gt;
    }&lt;br /&gt;
   global string $sourceObjects;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
global proc VRAYCONNECDO()&lt;br /&gt;
{&lt;br /&gt;
    // UI Elements&lt;br /&gt;
global string $sourceObjects;&lt;br /&gt;
global string $destinationObjects;&lt;br /&gt;
// Define user selected objects&lt;br /&gt;
string $selected_objects[] = `textScrollList -query -allItems $sourceObjects`;&lt;br /&gt;
string $meshMaterial[] = `textScrollList -query -allItems $destinationObjects`;&lt;br /&gt;
int $i = 0;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
// SET PADDING&lt;br /&gt;
string $FSTART = &amp;quot;1&amp;quot;;&lt;br /&gt;
string $FEND = &amp;quot;100&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
print $FSTART;&lt;br /&gt;
print $FEND;&lt;br /&gt;
&lt;br /&gt;
string $PADDING = $FSTART + &amp;quot;:&amp;quot; + $FEND;&lt;br /&gt;
&lt;br /&gt;
//Progress bar&lt;br /&gt;
global string $gMainProgressBar;&lt;br /&gt;
&lt;br /&gt;
// Start the progress bar and adjust its max value for this operation.&lt;br /&gt;
    int $steps = size($selected_objects);&lt;br /&gt;
    progressBar -edit -beginProgress -isInterruptable true -status &amp;quot;Connecting shaders to mesh material ...&amp;quot; -maxValue $steps $gMainProgressBar;&lt;br /&gt;
 &lt;br /&gt;
for ($i = 0; $i &amp;lt; size($selected_objects); $i ++)&lt;br /&gt;
{&lt;br /&gt;
        parentConstraint -n parentConstraintMS $selected_objects[$i] $meshMaterial[$i];&lt;br /&gt;
        select -r $meshMaterial[$i] ;&lt;br /&gt;
        bakeResults -simulation true -t $PADDING -sampleBy 1 -oversamplingRate 1 -disableImplicitControl true -preserveOutsideKeys true -sparseAnimCurveBake false -removeBakedAttributeFromLayer false -removeBakedAnimFromLayer false -bakeOnOverrideLayer false -minimizeRotation true -controlPoints false -shape true {$meshMaterial[$i]};&lt;br /&gt;
        select -cl  ;&lt;br /&gt;
        select -r &amp;quot;*parentConstraintMS*&amp;quot;;&lt;br /&gt;
        doDelete;&lt;br /&gt;
// Update the progress bar.&lt;br /&gt;
progressBar -edit -step 1 $gMainProgressBar;&lt;br /&gt;
}&lt;br /&gt;
// End the progress.&lt;br /&gt;
progressBar -edit -endProgress $gMainProgressBar;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Delete hidden objects ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select objects&lt;br /&gt;
&lt;br /&gt;
for ( $object in `ls -sl` ) {&lt;br /&gt;
    $vis = getAttr ($object+&amp;quot;.visibility&amp;quot;);&lt;br /&gt;
    if ($vis == 0){&lt;br /&gt;
        select -r $object ;&lt;br /&gt;
        doDelete ;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== V-Ray - BAKE MATERIALS ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Made to work also with mayabatch.exe&lt;br /&gt;
&lt;br /&gt;
////////////////////////////////////////////&lt;br /&gt;
// BAKE VRAY CUSTOM VARIABLES&lt;br /&gt;
////////////////////////////////////////////&lt;br /&gt;
&lt;br /&gt;
// ASSET PATH&lt;br /&gt;
string $assetFileType = &amp;quot;mayaBinary&amp;quot;;&lt;br /&gt;
string $assetPath = &amp;quot;C:/YOUR_PATH/YOUR_SURFACING_ASSET.mb&amp;quot;;&lt;br /&gt;
string $assetName = &amp;quot;ASSET_NAME&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
// LIGHT RIG PATH&lt;br /&gt;
string $lightRigFileType = &amp;quot;mayaAscii&amp;quot;;&lt;br /&gt;
string $lightRigPath = &amp;quot;C:/YOUR_PATH/YOUR_LIGHT_RIG.mb&amp;quot;;&lt;br /&gt;
string $lightRigName = &amp;quot;DAY_LIGHTING&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
// BAKED TEXTURES PATH&lt;br /&gt;
string $bakedTexturesPath = (&amp;quot;C:/YOUR_PATH/BAKED_TEXTURES/&amp;quot; + $assetName + &amp;quot;_&amp;quot; + $lightRigName + &amp;quot;_Bake&amp;quot;);&lt;br /&gt;
print $bakedTexturesPath;&lt;br /&gt;
&lt;br /&gt;
// SET RESOLUTION FOR BAKED MAPS&lt;br /&gt;
$resWidth = 4096;&lt;br /&gt;
$resHeight = $resWidth;&lt;br /&gt;
&lt;br /&gt;
// COLOR SPACE FOR FILE TEXTURES&lt;br /&gt;
string $fileColorSpace = &amp;quot;ACES - ACEScg&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
////////////////////////////////////////////&lt;br /&gt;
// END OF CUSTOM VARIABLES&lt;br /&gt;
////////////////////////////////////////////&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
////////////////////////////////////////////&lt;br /&gt;
// RENDER SETTINGS&lt;br /&gt;
&lt;br /&gt;
// Set File Name Prefix&lt;br /&gt;
setAttr -type &amp;quot;string&amp;quot; vraySettings.fileNamePrefix &amp;quot;&amp;lt;Scene&amp;gt;/&amp;lt;Layer&amp;gt;/&amp;lt;Camera&amp;gt;_&amp;lt;Layer&amp;gt;_&amp;lt;Scene&amp;gt;&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
// Set resolution&lt;br /&gt;
$resWidthHalf = $resWidth/2;&lt;br /&gt;
$resHeightHalf = $resHeight/2;&lt;br /&gt;
setAttr &amp;quot;vraySettings.width&amp;quot; $resWidthHalf;&lt;br /&gt;
setAttr &amp;quot;vraySettings.height&amp;quot; $resHeightHalf;&lt;br /&gt;
&lt;br /&gt;
// Set Persp camera renderable&lt;br /&gt;
setAttr &amp;quot;perspShape.renderable&amp;quot; 1;&lt;br /&gt;
&lt;br /&gt;
// Set Image format&lt;br /&gt;
setAttr -type &amp;quot;string&amp;quot; &amp;quot;vraySettings.imageFormatStr&amp;quot; &amp;quot;exr (multichannel)&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
// Set Animation type on Standard&lt;br /&gt;
setAttr &amp;quot;vraySettings.animType&amp;quot; 0;&lt;br /&gt;
setAttr &amp;quot;vraySettings.animBatchOnly&amp;quot; 1;&lt;br /&gt;
&lt;br /&gt;
// Sampler type Bucket&lt;br /&gt;
setAttr &amp;quot;vraySettings.samplerType&amp;quot; 4;&lt;br /&gt;
&lt;br /&gt;
// Min Shading Rate&lt;br /&gt;
//setAttr &amp;quot;vraySettings.minShadeRate&amp;quot; 4;&lt;br /&gt;
setAttr &amp;quot;vraySettings.minShadeRate&amp;quot; 7;&lt;br /&gt;
&lt;br /&gt;
// Buckets subdivs&lt;br /&gt;
//setAttr &amp;quot;vraySettings.dmcMinSubdivs&amp;quot; 1;&lt;br /&gt;
//setAttr &amp;quot;vraySettings.dmcMaxSubdivs&amp;quot; 8;&lt;br /&gt;
//setAttr &amp;quot;vraySettings.dmcThreshold&amp;quot; 0.1;&lt;br /&gt;
setAttr &amp;quot;vraySettings.dmcMinSubdivs&amp;quot; 1;&lt;br /&gt;
setAttr &amp;quot;vraySettings.dmcMaxSubdivs&amp;quot; 15;&lt;br /&gt;
setAttr &amp;quot;vraySettings.dmcThreshold&amp;quot; 0.01;&lt;br /&gt;
&lt;br /&gt;
// Color mapping Linear&lt;br /&gt;
setAttr &amp;quot;vraySettings.cmap_type&amp;quot; 0;&lt;br /&gt;
&lt;br /&gt;
// GI on&lt;br /&gt;
setAttr &amp;quot;vraySettings.giOn&amp;quot; 1;&lt;br /&gt;
//setAttr &amp;quot;vraySettings.subdivs&amp;quot; 400;&lt;br /&gt;
setAttr &amp;quot;vraySettings.subdivs&amp;quot; 1000;&lt;br /&gt;
&lt;br /&gt;
// Max subdivs&lt;br /&gt;
setAttr &amp;quot;vraySettings.ddisplac_maxSubdivs&amp;quot; 16;&lt;br /&gt;
&lt;br /&gt;
// Cache geometry and bitmaps&lt;br /&gt;
setAttr &amp;quot;vraySettings.globopt_cache_geom_plugins&amp;quot; 1;&lt;br /&gt;
setAttr &amp;quot;vraySettings.globopt_cache_bitmaps&amp;quot; 1;&lt;br /&gt;
&lt;br /&gt;
// Dynamic memory limit&lt;br /&gt;
setAttr &amp;quot;vraySettings.sys_rayc_dynMemLimit&amp;quot; 0;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
////////////////////////////////////////////&lt;br /&gt;
// IMPORT&lt;br /&gt;
&lt;br /&gt;
// IMPORT LIGHT RIG&lt;br /&gt;
file -import -type $lightRigFileType  -ignoreVersion -mergeNamespacesOnClash false -rpr &amp;quot;:&amp;quot; -options &amp;quot;v=0;&amp;quot; $lightRigPath;&lt;br /&gt;
&lt;br /&gt;
// IMPORT ASSET&lt;br /&gt;
file -import -type $assetFileType  -ignoreVersion -mergeNamespacesOnClash false -rpr &amp;quot;:&amp;quot; -options &amp;quot;v=0;&amp;quot; $assetPath;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
// CREATE SETS&lt;br /&gt;
select `ls -type &amp;quot;mesh&amp;quot;`;&lt;br /&gt;
sets -name &amp;quot;assetOriginal_Set&amp;quot; ;&lt;br /&gt;
duplicate -rr;&lt;br /&gt;
group -w -n (&amp;quot;GRP_&amp;quot; + $assetName + &amp;quot;_BAKE_&amp;quot; + `toupper $lightRigName`);&lt;br /&gt;
sets -name &amp;quot;assetBaked_Set&amp;quot; ;&lt;br /&gt;
&lt;br /&gt;
// REMOVE BAKED PARTS FROM ORIGINAL PARTS SET&lt;br /&gt;
select -r assetBaked_Set ;&lt;br /&gt;
string $selection[] = `ls -sl`;&lt;br /&gt;
string $polyGons[] = `filterExpand -sm 12 $selection`;&lt;br /&gt;
select -r $polyGons;&lt;br /&gt;
pickWalk -d down;&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    sets -rm assetOriginal_Set $object;&lt;br /&gt;
}&lt;br /&gt;
select -cl  ;&lt;br /&gt;
&lt;br /&gt;
// DELETE HIDDEN OBJECTS&lt;br /&gt;
select -r assetBaked_Set ;&lt;br /&gt;
string $selection[] = `ls -sl`;&lt;br /&gt;
string $polyGons[] = `filterExpand -sm 12 $selection`;&lt;br /&gt;
select -r $polyGons;&lt;br /&gt;
for ( $object in `ls -sl` ) {&lt;br /&gt;
    $vis = getAttr ($object+&amp;quot;.visibility&amp;quot;);&lt;br /&gt;
    if ($vis == 0){&lt;br /&gt;
        select -r $object ;&lt;br /&gt;
        doDelete ;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
select -cl  ;&lt;br /&gt;
&lt;br /&gt;
// fixShapeName - Thanks to Pinkwerks&lt;br /&gt;
global proc&lt;br /&gt;
fixShapeName()&lt;br /&gt;
{&lt;br /&gt;
    string $me = &amp;quot;fixShapeName&amp;quot;;&lt;br /&gt;
    string $shape;&lt;br /&gt;
    string $newShapeName;&lt;br /&gt;
    string $parent;&lt;br /&gt;
    string $tmpA[];&lt;br /&gt;
	string $selectedShapes[] = `ls -sl -l`;&lt;br /&gt;
    int $sizeOfShapes = `size $selectedShapes`;&lt;br /&gt;
&lt;br /&gt;
    if ( $sizeOfShapes == 0 )&lt;br /&gt;
    	error($me + &amp;quot; : Nothing shapes to process!&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
    for ( $shape in $selectedShapes )&lt;br /&gt;
    {&lt;br /&gt;
    	$tmpA = `listRelatives -p $shape`;&lt;br /&gt;
		$parent = $tmpA[0];&lt;br /&gt;
		$newShapeName = ($parent + &amp;quot;Shape&amp;quot;);&lt;br /&gt;
		rename $shape $newShapeName;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// APPLY FIXSHAPENAME TO BAKED ASSET PARTS&lt;br /&gt;
select -r assetBaked_Set ;&lt;br /&gt;
string $selection[] = `ls -sl`;&lt;br /&gt;
string $polyGons[] = `filterExpand -sm 12 $selection`;&lt;br /&gt;
select -r $polyGons;&lt;br /&gt;
pickWalk -d down;&lt;br /&gt;
fixShapeName();&lt;br /&gt;
select -cl  ;&lt;br /&gt;
&lt;br /&gt;
// DELETE OBJECTS WITHOUT UVS&lt;br /&gt;
select -r assetBaked_Set ;&lt;br /&gt;
string $selection[] = `ls -sl`;&lt;br /&gt;
string $polyGons[] = `filterExpand -sm 12 $selection`;&lt;br /&gt;
select -r $polyGons;&lt;br /&gt;
for ( $object in `ls -sl` ) {&lt;br /&gt;
    int $vertexCount[] = `polyEvaluate -uv $object`;&lt;br /&gt;
    print $vertexCount;&lt;br /&gt;
    string $uvCount = $vertexCount[0];&lt;br /&gt;
    if ($uvCount == 0){&lt;br /&gt;
        select -r $object ;&lt;br /&gt;
        doDelete ;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// CREATE VRAY BAKE OPTIONS&lt;br /&gt;
createNode &amp;quot;VRayBakeOptions&amp;quot; -n &amp;quot;vrayBakeOptions&amp;quot;;&lt;br /&gt;
select -r assetBaked_Set ;&lt;br /&gt;
string $selection[] = `ls -sl`;&lt;br /&gt;
string $polyGons[] = `filterExpand -sm 12 $selection`;&lt;br /&gt;
select -r $polyGons;&lt;br /&gt;
$selected=`ls -sl`;&lt;br /&gt;
for ($object in $selected){&lt;br /&gt;
    sets -edit -forceElement  vrayBakeOptions $object ;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// HIDE ORIGINAL ASSET&lt;br /&gt;
select -r assetOriginal_Set ;&lt;br /&gt;
pickWalk -d up;&lt;br /&gt;
hide `ls -sl`;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
// BAKE VRAY OPTIONS&lt;br /&gt;
setAttr &amp;quot;vrayBakeOptions.udimBaking&amp;quot; 1;&lt;br /&gt;
setAttr &amp;quot;vrayBakeOptions.resolutionX&amp;quot; $resWidth;&lt;br /&gt;
&lt;br /&gt;
optionVar -intValue &amp;quot;vrayBakeType&amp;quot; 2;&lt;br /&gt;
optionVar -intValue &amp;quot;vraySkipNodesWithoutBakeOptions&amp;quot; 1;&lt;br /&gt;
optionVar -intValue &amp;quot;vrayAssignBakedTextures&amp;quot; 1;&lt;br /&gt;
optionVar -stringValue &amp;quot;vrayBakeOutputPath&amp;quot; $bakedTexturesPath;&lt;br /&gt;
optionVar -intValue &amp;quot;vrayBakeProjectionBaking&amp;quot; 0;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
// GO BAKE GO&lt;br /&gt;
select -cl  ;&lt;br /&gt;
select -r assetBaked_Set ;&lt;br /&gt;
string $selection[] = `ls -sl`;&lt;br /&gt;
string $polyGons[] = `filterExpand -sm 12 $selection`;&lt;br /&gt;
select -r $polyGons;&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    vrayStartBake;&lt;br /&gt;
}&lt;br /&gt;
select -cl  ;&lt;br /&gt;
&lt;br /&gt;
// UV TILING UDIM AND ACES CG FOR FILES&lt;br /&gt;
for ( $object in `ls -type &amp;quot;file&amp;quot;` ) {&lt;br /&gt;
    setAttr ($object + &amp;quot;.filterType&amp;quot;) 0;&lt;br /&gt;
    setAttr ($object + &amp;quot;.uvTilingMode&amp;quot;) 3;&lt;br /&gt;
    setAttr ($object + &amp;quot;.cs&amp;quot;) -type &amp;quot;string&amp;quot; $fileColorSpace;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// CONNECT SHADERS&lt;br /&gt;
select -cl  ;&lt;br /&gt;
select -r assetBaked_Set ;&lt;br /&gt;
string $selection[] = `ls -sl`;&lt;br /&gt;
string $polyGons[] = `filterExpand -sm 12 $selection`;&lt;br /&gt;
for ( $object in $polyGons ) {&lt;br /&gt;
    string $shadingGroupName = ($object + &amp;quot;Shape_bakedmtlSG&amp;quot;);&lt;br /&gt;
    sets -e -forceElement $shadingGroupName $object;&lt;br /&gt;
}&lt;br /&gt;
select -cl  ;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
///////////////////////////////////&lt;br /&gt;
// SAVE&lt;br /&gt;
file -rename (&amp;quot;C:/YOUR_PATH/BAKED_ASSETS/&amp;quot; + $assetName + &amp;quot;_&amp;quot; + $lightRigName + &amp;quot;_BAKE_DEBUG.mb&amp;quot;);&lt;br /&gt;
file -f -save;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Arnold - Set all Standins display on Bouding box ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$selected=`ls -type &amp;quot;aiStandIn&amp;quot;`;&lt;br /&gt;
for ($object in $selected){&lt;br /&gt;
    setAttr ($object + &amp;quot;.mode&amp;quot;) 0;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Arnold - Set all Standins display on Point cloud ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$selected=`ls -type &amp;quot;aiStandIn&amp;quot;`;&lt;br /&gt;
for ($object in $selected){&lt;br /&gt;
    setAttr ($object + &amp;quot;.mode&amp;quot;) 4;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Alembic - Loop animation on all nodes ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$selected=`ls -type &amp;quot;AlembicNode&amp;quot;`;&lt;br /&gt;
for ($object in $selected){&lt;br /&gt;
    setAttr ($object + &amp;quot;.cycleType&amp;quot;) 1;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Mental Ray nodes error - Delete Mayatomr plugin ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
unknownPlugin -remove &amp;quot;Mayatomr&amp;quot;;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Delete Unknown nodes ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
select -r `ls -type unknown`;&lt;br /&gt;
delete;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Write text ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
string $exampleFileName = ( &amp;quot;D:/yolo.bat&amp;quot; );&lt;br /&gt;
string $linesToWrite[] = {&lt;br /&gt;
    &amp;quot;youpi&amp;quot;,&lt;br /&gt;
    &amp;quot;youhou&amp;quot;&lt;br /&gt;
    };&lt;br /&gt;
int $result = fwriteAllLines($exampleFileName,$linesToWrite);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Point Lock No Attach on selected follicles ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    setAttr ($object + &amp;quot;.pointLock&amp;quot;) 0;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Convert .ma cameras from Reality Capture into .abc files ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// List of assets&lt;br /&gt;
string $fileParts[] = {&amp;quot;asset_001&amp;quot;, &amp;quot;asset_002&amp;quot;};&lt;br /&gt;
&lt;br /&gt;
// Replace the PATH of your files&lt;br /&gt;
for ($filePart in $fileParts){&lt;br /&gt;
	string $fileName = $filePart + &amp;quot;_cam&amp;quot;;&lt;br /&gt;
	string $filePath = &amp;quot;//DISK/PATH/&amp;quot; + $filePart + &amp;quot;/&amp;quot; + $filePart +&amp;quot;_cam.ma&amp;quot;;&lt;br /&gt;
	file -import -type &amp;quot;mayaAscii&amp;quot;  -ignoreVersion -ra true -mergeNamespacesOnClash false -rpr $fileName -options &amp;quot;v=0;p=17;f=0&amp;quot;  -pr  -importFrameRate true  -importTimeRange &amp;quot;override&amp;quot; $filePath;&lt;br /&gt;
	select -cl;&lt;br /&gt;
	select `ls -type &amp;quot;imagePlane&amp;quot;`;&lt;br /&gt;
	pickWalk -d up;&lt;br /&gt;
	doDelete;&lt;br /&gt;
	select `ls -type &amp;quot;camera&amp;quot;`;&lt;br /&gt;
	pickWalk -d up;	&lt;br /&gt;
	string $abcPath = &amp;quot;//DISK/PATH/&amp;quot; + $filePart + &amp;quot;/&amp;quot; + $filePart +&amp;quot;_cam.abc&amp;quot;;&lt;br /&gt;
	string $abcExp = &amp;quot;-frameRange 1 1 -uvWrite -worldSpace -dataFormat ogawa -root |* -file &amp;quot; + $abcPath;&lt;br /&gt;
	AbcExport -j $abcExp;&lt;br /&gt;
	select -all;&lt;br /&gt;
	doDelete;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Combine objects ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select objects&lt;br /&gt;
&lt;br /&gt;
polyPerformAction polyUnite o 0; &lt;br /&gt;
DeleteHistory;&lt;br /&gt;
FreezeTransformations;&lt;br /&gt;
makeIdentity -apply true -t 1 -r 1 -s 1 -n 0 -pn 1;&lt;br /&gt;
CenterPivot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Unitize UVs (one square UV by face) ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select objects&lt;br /&gt;
&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    select -r ($object+&amp;quot;.e[*]&amp;quot;);&lt;br /&gt;
    hilite ($object+&amp;quot;.e[*]&amp;quot;) ;&lt;br /&gt;
    polyMapCut -ch 1 ($object+&amp;quot;.e[*]&amp;quot;);&lt;br /&gt;
    polyForceUV -unitize $object;&lt;br /&gt;
    select $object;&lt;br /&gt;
    DeleteHistory;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== ONE-CLICK Unfold UVs ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select seams edges first&lt;br /&gt;
&lt;br /&gt;
invertSelection;&lt;br /&gt;
string $selectedEdges [] = `ls -sl`;&lt;br /&gt;
&lt;br /&gt;
string $selectedObject [] = `ls -selection -objectsOnly`;&lt;br /&gt;
&lt;br /&gt;
select -r ($selectedObject[0]+&amp;quot;.e[*]&amp;quot;);&lt;br /&gt;
hilite ($selectedObject[0]+&amp;quot;.e[*]&amp;quot;) ;&lt;br /&gt;
polyMapCut -ch 1 ($selectedObject[0]+&amp;quot;.e[*]&amp;quot;);&lt;br /&gt;
polyForceUV -unitize $selectedObject[0];&lt;br /&gt;
&lt;br /&gt;
select $selectedObject[0];&lt;br /&gt;
polyMapSewMove -nf 10 -lps 0 -ch 1 $selectedEdges;&lt;br /&gt;
select -r ($selectedObject[0]+&amp;quot;.map[*]&amp;quot;);&lt;br /&gt;
u3dUnfold -ite 1 -p 0 -bi 1 -tf 1 -ms 1024 -rs 0 ($selectedObject[0]+&amp;quot;.map[*]&amp;quot;);&lt;br /&gt;
u3dLayout -res 256 -scl 1 -spc 0.001 -mar 0.01 -box 0 1 0 1 $selectedObject[0];&lt;br /&gt;
select $selectedObject[0];&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Create Texture Reference on all shapes from a group ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select top group first&lt;br /&gt;
&lt;br /&gt;
string $selection[] = `ls -sl`;&lt;br /&gt;
string $polyGons[] = `filterExpand -sm 12 $selection`;&lt;br /&gt;
&lt;br /&gt;
for ($i = 0; $i &amp;lt; size($polyGons); $i ++)&lt;br /&gt;
{&lt;br /&gt;
    select -r $polyGons[$i] ;&lt;br /&gt;
    CreateTextureReferenceObject;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
select -r $selection;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Search and select by name ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// If you want to select every object containing &amp;quot;tree&amp;quot;&lt;br /&gt;
// From NaughtyNathan on CGTalk&lt;br /&gt;
&lt;br /&gt;
select -r &amp;quot;*tree*&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
// And if you want to select only transforms containing &amp;quot;tree&amp;quot;&lt;br /&gt;
&lt;br /&gt;
select `ls -type &amp;quot;transform&amp;quot; &amp;quot;*tree*&amp;quot;`;&lt;br /&gt;
&lt;br /&gt;
// And if you are using namespace, you need:&lt;br /&gt;
&lt;br /&gt;
select -r `ls -r 1 &amp;quot;*tree*&amp;quot;`;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Search and select UI ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
window -t &amp;quot;Search and Select&amp;quot;;&lt;br /&gt;
columnLayout;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
frameLayout -mh 10 -mw 10 -l &amp;quot;&amp;quot; ;&lt;br /&gt;
&lt;br /&gt;
textField  -text TOTO -w 200 &amp;quot;requestTransform&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
proc searchSelectTransform() {&lt;br /&gt;
    string $what = (&amp;quot;*&amp;quot; + `textField -q -text &amp;quot;requestTransform&amp;quot;` + &amp;quot;*&amp;quot;);&lt;br /&gt;
    select -r `ls -type &amp;quot;transform&amp;quot; -r 1 $what`;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
button -label &amp;quot;Search and select Transforms&amp;quot; -command &amp;quot;searchSelectTransform&amp;quot;;&lt;br /&gt;
setParent..;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
frameLayout -mh 10 -mw 10 -l &amp;quot;&amp;quot; ;&lt;br /&gt;
&lt;br /&gt;
textField  -text TOTO -w 200 &amp;quot;requestShape&amp;quot;;&lt;br /&gt;
		&lt;br /&gt;
proc searchSelectShape() {&lt;br /&gt;
    string $what = (&amp;quot;*&amp;quot; + `textField -q -text &amp;quot;requestShape&amp;quot;` + &amp;quot;*&amp;quot;);&lt;br /&gt;
    select -r `ls -type &amp;quot;shape&amp;quot; -r 1 $what`;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
button -label &amp;quot;Search and select Shapes&amp;quot; -command &amp;quot;searchSelectShape&amp;quot;;&lt;br /&gt;
setParent..;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
frameLayout -mh 10 -mw 10 -l &amp;quot;&amp;quot; ;&lt;br /&gt;
&lt;br /&gt;
textField  -text TOTO -w 200 &amp;quot;requestAny&amp;quot;;&lt;br /&gt;
		&lt;br /&gt;
proc searchSelectAny() {&lt;br /&gt;
    string $what = (&amp;quot;*&amp;quot; + `textField -q -text &amp;quot;requestAny&amp;quot;` + &amp;quot;*&amp;quot;);&lt;br /&gt;
    select -r `ls -r 1 $what`;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
button -label &amp;quot;Search and select any type&amp;quot; -command &amp;quot;searchSelectAny&amp;quot;;&lt;br /&gt;
setParent..;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
frameLayout -mh 10 -mw 10 -l &amp;quot;&amp;quot; ;&lt;br /&gt;
&lt;br /&gt;
textField  -text TOTO -w 200 &amp;quot;requestCtrls&amp;quot;;&lt;br /&gt;
		&lt;br /&gt;
proc searchSelectCtrls() {&lt;br /&gt;
    string $what = (&amp;quot;*&amp;quot; + `textField -q -text &amp;quot;requestCtrls&amp;quot;` + &amp;quot;*&amp;quot;);&lt;br /&gt;
    select -r `ls -type &amp;quot;nurbsCurve&amp;quot; -r 1 $what`;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
button -label &amp;quot;Search and select Ctrls&amp;quot; -command &amp;quot;searchSelectCtrls&amp;quot;;&lt;br /&gt;
setParent..;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
frameLayout -mh 10 -mw 10 -l &amp;quot;&amp;quot; ;&lt;br /&gt;
&lt;br /&gt;
textField  -text TOTO -w 200 &amp;quot;requestJoints&amp;quot;;&lt;br /&gt;
		&lt;br /&gt;
proc searchSelectJoints() {&lt;br /&gt;
    string $what = (&amp;quot;*&amp;quot; + `textField -q -text &amp;quot;requestJoints&amp;quot;` + &amp;quot;*&amp;quot;);&lt;br /&gt;
    select -r `ls -type &amp;quot;joint&amp;quot; -r 1 $what`;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
button -label &amp;quot;Search and select Joints&amp;quot; -command &amp;quot;searchSelectJoints&amp;quot;;&lt;br /&gt;
setParent..;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
showWindow;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Constrain Parent and scale selection of objects ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select objects&lt;br /&gt;
&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    select -r pCube1 ;&lt;br /&gt;
    select -add $object ;&lt;br /&gt;
    doCreateParentConstraintArgList 1 { &amp;quot;1&amp;quot;,&amp;quot;0&amp;quot;,&amp;quot;0&amp;quot;,&amp;quot;0&amp;quot;,&amp;quot;0&amp;quot;,&amp;quot;0&amp;quot;,&amp;quot;0&amp;quot;,&amp;quot;0&amp;quot;,&amp;quot;1&amp;quot;,&amp;quot;&amp;quot;,&amp;quot;1&amp;quot; };&lt;br /&gt;
    parentConstraint -mo -weight 1;&lt;br /&gt;
    doCreateScaleConstraintArgList 1 { &amp;quot;0&amp;quot;,&amp;quot;1&amp;quot;,&amp;quot;1&amp;quot;,&amp;quot;1&amp;quot;,&amp;quot;0&amp;quot;,&amp;quot;0&amp;quot;,&amp;quot;0&amp;quot;,&amp;quot;1&amp;quot;,&amp;quot;&amp;quot;,&amp;quot;1&amp;quot; };&lt;br /&gt;
    scaleConstraint -offset 1 1 1 -weight 1;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Walter</name></author>
		
	</entry>
	<entry>
		<id>http://antoinevienne.fr/wiki/index.php?title=Houdini_learning&amp;diff=269</id>
		<title>Houdini learning</title>
		<link rel="alternate" type="text/html" href="http://antoinevienne.fr/wiki/index.php?title=Houdini_learning&amp;diff=269"/>
		<updated>2024-02-14T10:34:18Z</updated>

		<summary type="html">&lt;p&gt;Walter: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Houdini learning=&lt;br /&gt;
=== Center Pivot ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// In Pivot Translate in a Transform node&lt;br /&gt;
&lt;br /&gt;
centroid(0,0)&lt;br /&gt;
centroid(0,1)&lt;br /&gt;
centroid(0,2)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Delete by Connectivity attribute ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// In a Delete node, in Group (by example)&lt;br /&gt;
&lt;br /&gt;
@class=7777&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Increase Volume Density ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// In a volumewrangle&lt;br /&gt;
&lt;br /&gt;
@density *= 10;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Substract any VDB by another VDB ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// In a volumewrangle&lt;br /&gt;
&lt;br /&gt;
if (volumesample(1,&amp;quot;surface&amp;quot;,@P)&amp;lt;0)@density=0;&lt;br /&gt;
&lt;br /&gt;
//inverse:&lt;br /&gt;
&lt;br /&gt;
if (volumesample(1,&amp;quot;surface&amp;quot;,@P)&amp;gt;0)@density=0;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Get bound &amp;amp; centroid ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// In a null object&lt;br /&gt;
&lt;br /&gt;
bbox(opinputpath('.',0),D_XSIZE)&lt;br /&gt;
bbox(opinputpath('.',0),D_YSIZE)&lt;br /&gt;
bbox(opinputpath('.',0),D_ZSIZE)&lt;br /&gt;
&lt;br /&gt;
centroid(opinputpath('.',0),D_X)&lt;br /&gt;
centroid(opinputpath('.',0),D_Y)&lt;br /&gt;
centroid(opinputpath('.',0),D_Z)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== UVs ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// In this order : uvautoseam - uvflatten - uvlayout&lt;br /&gt;
In uvflatten : Seams = seams&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Kill emission on a smoke source after frame 300 ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
if (@Frame&amp;gt;300) @density = 0;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Attribfrommap - Use UDIMs images ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Replace 1001 by &amp;lt;UDIM&amp;gt; and check UDIM Filename Expansion&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Attribwrangle - Udim number on primitives attributes ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// In a wrangle set on Primitives&lt;br /&gt;
vector uv = primuv(0, &amp;quot;uv&amp;quot;, @primnum, set(0.5, 0.5, 0));&lt;br /&gt;
i@udim = 1001 + int(uv.x) + int(uv.y)*10;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Place at World center, scale et re-transform for export ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// In a transform translates&lt;br /&gt;
-centroid(0,0) -centroid(0,1) -centroid(0,2)&lt;br /&gt;
// In a transform Uniform scale&lt;br /&gt;
(bbox(&amp;quot;/obj/neigeSol/timeshift1/&amp;quot;, D_ZSIZE))/(bbox(&amp;quot;/obj/neigeSol/transform_centerWorld/&amp;quot;, D_ZSIZE))&lt;br /&gt;
&lt;br /&gt;
// At end, in a transform Uniform scale&lt;br /&gt;
1/((bbox(&amp;quot;/obj/neigeSol/timeshift1/&amp;quot;, D_ZSIZE))/(bbox(&amp;quot;/obj/neigeSol/transform_centerWorld/&amp;quot;, D_ZSIZE)))&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Misc Attr Wrangle expressions ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Delete by color&lt;br /&gt;
if (@Cd.x&amp;lt;chf(&amp;quot;seuilColor&amp;quot;))removepoint(0,@ptnum);&lt;br /&gt;
&lt;br /&gt;
// Set random pscale&lt;br /&gt;
@pscale = fit01(pow(rand(@ptnum), ch(&amp;quot;power&amp;quot;)), ch(&amp;quot;pscale_min&amp;quot;), ch(&amp;quot;pscale_max&amp;quot;));&lt;br /&gt;
&lt;br /&gt;
// Udim attr for each Udim&lt;br /&gt;
vector uv = primuv(0, &amp;quot;uv&amp;quot;, @primnum, set(0.5, 0.5, 0));&lt;br /&gt;
i@udim = 1001 + int(uv.x) + int(uv.y)*10;&lt;br /&gt;
// Next, with a Delete SOP: Group: @udim=$F - Pattern mode !*&lt;br /&gt;
&lt;br /&gt;
// Set pscale Min/Max&lt;br /&gt;
@pscale = fit01(pow(rand(@ptnum), ch(&amp;quot;power&amp;quot;)), ch(&amp;quot;pscale_min&amp;quot;), ch(&amp;quot;pscale_max&amp;quot;));&lt;br /&gt;
&lt;br /&gt;
// Remove small parts - In a Foreach connected piece loop&lt;br /&gt;
@size = (getbbox_size(0).x+getbbox_size(0).y+getbbox_size(0).z);&lt;br /&gt;
&lt;br /&gt;
if(@size &amp;lt; chf(&amp;quot;taille&amp;quot;))&lt;br /&gt;
removepoint(geoself(), @ptnum);&lt;br /&gt;
&lt;br /&gt;
// Set @variant integer for Copytopoints (change objects number)&lt;br /&gt;
i@variant =floor(rand(@id)*3);&lt;br /&gt;
&lt;br /&gt;
//// Get position difference between two objects, and match animation&lt;br /&gt;
// On Rest pose object:&lt;br /&gt;
v@fixe = 0;&lt;br /&gt;
@fixe.x = getbbox_center(0).x;&lt;br /&gt;
@fixe.y = getbbox_center(0).y;&lt;br /&gt;
@fixe.z = getbbox_center(0).z;&lt;br /&gt;
// On animated object:&lt;br /&gt;
v@anim = 0;&lt;br /&gt;
@anim.x = getbbox_center(0).x;&lt;br /&gt;
@anim.y = getbbox_center(0).y;&lt;br /&gt;
@anim.z = getbbox_center(0).z;&lt;br /&gt;
// After two previous AttrWrangles:&lt;br /&gt;
v@anim_offset = point(0, 'fixe', 1) - point(1, 'anim', 1);&lt;br /&gt;
// To match animation:&lt;br /&gt;
@P = point(0, &amp;quot;P&amp;quot;, @ptnum) + point(1, 'anim_offset', 1);&lt;br /&gt;
&lt;br /&gt;
//// Blend shape through a mask attribute - Posted by Cudarsjanis on Odforce&lt;br /&gt;
// Geo with mask attribute in first input, blend shape in second&lt;br /&gt;
v@P=lerp(v@P, point(1,'P',@ptnum), f@mask*ch('blend'));&lt;br /&gt;
&lt;br /&gt;
//// Set a fixed normal attribute&lt;br /&gt;
v@z = set(0,1,0);&lt;br /&gt;
&lt;br /&gt;
//// Place at world center&lt;br /&gt;
v@P -= getbbox_center(0);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Delete small pieces ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// As seen on Sidefx forum, posted by paulboiii&lt;br /&gt;
// First create a measure SOP, set to per piece&lt;br /&gt;
&lt;br /&gt;
// Then, in an attribwrangle set on primitives&lt;br /&gt;
float threshold = chf(&amp;quot;Size_Threshold&amp;quot;);&lt;br /&gt;
if ( f@area &amp;lt; threshold ) removeprim(0,@primnum,1);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Attribute Wrangle - Copy attribute from second input ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// With same number of points on both inputs - From Bonsak on Sidefx.com&lt;br /&gt;
&lt;br /&gt;
// Copy P from second input&lt;br /&gt;
@P = v@opinput1_P;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Bounding-box - Position Reference color ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// As seen on https://houdinihelp.ru/ref/expression_cookbook.html&lt;br /&gt;
&lt;br /&gt;
// In an attribwrangle set on primitives&lt;br /&gt;
@Cd.r = relbbox(0,@P).x;&lt;br /&gt;
@Cd.g = relbbox(0,@P).y;&lt;br /&gt;
@Cd.b = relbbox(0,@P).z;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Group by uv.y ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Thanks to https://vfxbrain.wordpress.com/2019/06/14/vex-snippets-2/&lt;br /&gt;
&lt;br /&gt;
// In an attribwrangle set on points&lt;br /&gt;
if(@uv.y&amp;lt;chf(&amp;quot;seuil&amp;quot;)) @group_base = 1;&lt;br /&gt;
&lt;br /&gt;
// ALTERNATIVE&lt;br /&gt;
@uv.x&amp;lt;0.2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Specify attribute value for one point ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
if (@ptnum == 322) f@mask=1;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Pscale by Bbox Y ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
//set pscale first&lt;br /&gt;
&lt;br /&gt;
f@bboxY = relbbox(0,@P).y;&lt;br /&gt;
@pscale *= chramp(&amp;quot;rampBbox&amp;quot;,@bboxY)*4 ;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Delete primitives by height ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
if ( @P.y&amp;lt;chf(&amp;quot;seuil&amp;quot;) ) removeprim(0,@primnum,1);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Falloff geometry ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Get camOrigin&lt;br /&gt;
&lt;br /&gt;
vector pt0 = point(1,'P',0);&lt;br /&gt;
v@raydir = normalize(  pt0 - @P )*-1;&lt;br /&gt;
&lt;br /&gt;
@falloff = dot(v@raydir, @N);&lt;br /&gt;
&lt;br /&gt;
// Promote raydir in Primitives&lt;br /&gt;
&lt;br /&gt;
if ( f@falloff&amp;gt;chf(&amp;quot;seuil&amp;quot;) ) removeprim(0,@primnum,1);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Labs Maps Baker - Bake with UDIMs ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Add %(UDIM)d in the file path - don't need to check Output UDIMs&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Gets the digits from node name===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Add `padzero(3,opdigits(&amp;quot;.&amp;quot;))`&lt;br /&gt;
// Add `padzero(3,opdigits(&amp;quot;..&amp;quot;))` for previous node padding&lt;br /&gt;
// padzero(3,opdigits(&amp;quot;.&amp;quot;)) without hscript&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Self-shadows in Mantra===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Add by example * ^RENDER_ground in Shadow Mask of every of your lights to exclude self-shadows&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Search and replace in VEX ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// To remove ShapeDeformed from Maya Alembics by example, in an Attribute Wrangle in Primitives&lt;br /&gt;
&lt;br /&gt;
string path = @path;&lt;br /&gt;
s@path = re_replace(r&amp;quot;Deformed&amp;quot;, &amp;quot;&amp;quot;, path);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Walter</name></author>
		
	</entry>
	<entry>
		<id>http://antoinevienne.fr/wiki/index.php?title=Houdini_learning&amp;diff=268</id>
		<title>Houdini learning</title>
		<link rel="alternate" type="text/html" href="http://antoinevienne.fr/wiki/index.php?title=Houdini_learning&amp;diff=268"/>
		<updated>2024-02-08T19:48:53Z</updated>

		<summary type="html">&lt;p&gt;Walter: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Houdini learning=&lt;br /&gt;
=== Center Pivot ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// In Pivot Translate in a Transform node&lt;br /&gt;
&lt;br /&gt;
centroid(0,0)&lt;br /&gt;
centroid(0,1)&lt;br /&gt;
centroid(0,2)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Delete by Connectivity attribute ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// In a Delete node, in Group (by example)&lt;br /&gt;
&lt;br /&gt;
@class=7777&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Increase Volume Density ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// In a volumewrangle&lt;br /&gt;
&lt;br /&gt;
@density *= 10;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Substract any VDB by another VDB ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// In a volumewrangle&lt;br /&gt;
&lt;br /&gt;
if (volumesample(1,&amp;quot;surface&amp;quot;,@P)&amp;lt;0)@density=0;&lt;br /&gt;
&lt;br /&gt;
//inverse:&lt;br /&gt;
&lt;br /&gt;
if (volumesample(1,&amp;quot;surface&amp;quot;,@P)&amp;gt;0)@density=0;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Get bound &amp;amp; centroid ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// In a null object&lt;br /&gt;
&lt;br /&gt;
bbox(opinputpath('.',0),D_XSIZE)&lt;br /&gt;
bbox(opinputpath('.',0),D_YSIZE)&lt;br /&gt;
bbox(opinputpath('.',0),D_ZSIZE)&lt;br /&gt;
&lt;br /&gt;
centroid(opinputpath('.',0),D_X)&lt;br /&gt;
centroid(opinputpath('.',0),D_Y)&lt;br /&gt;
centroid(opinputpath('.',0),D_Z)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== UVs ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// In this order : uvautoseam - uvflatten - uvlayout&lt;br /&gt;
In uvflatten : Seams = seams&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Kill emission on a smoke source after frame 300 ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
if (@Frame&amp;gt;300) @density = 0;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Attribfrommap - Use UDIMs images ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Replace 1001 by &amp;lt;UDIM&amp;gt; and check UDIM Filename Expansion&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Attribwrangle - Udim number on primitives attributes ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// In a wrangle set on Primitives&lt;br /&gt;
vector uv = primuv(0, &amp;quot;uv&amp;quot;, @primnum, set(0.5, 0.5, 0));&lt;br /&gt;
i@udim = 1001 + int(uv.x) + int(uv.y)*10;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Place at World center, scale et re-transform for export ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// In a transform translates&lt;br /&gt;
-centroid(0,0) -centroid(0,1) -centroid(0,2)&lt;br /&gt;
// In a transform Uniform scale&lt;br /&gt;
(bbox(&amp;quot;/obj/neigeSol/timeshift1/&amp;quot;, D_ZSIZE))/(bbox(&amp;quot;/obj/neigeSol/transform_centerWorld/&amp;quot;, D_ZSIZE))&lt;br /&gt;
&lt;br /&gt;
// At end, in a transform Uniform scale&lt;br /&gt;
1/((bbox(&amp;quot;/obj/neigeSol/timeshift1/&amp;quot;, D_ZSIZE))/(bbox(&amp;quot;/obj/neigeSol/transform_centerWorld/&amp;quot;, D_ZSIZE)))&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Misc Attr Wrangle expressions ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Delete by color&lt;br /&gt;
if (@Cd.x&amp;lt;chf(&amp;quot;seuilColor&amp;quot;))removepoint(0,@ptnum);&lt;br /&gt;
&lt;br /&gt;
// Set random pscale&lt;br /&gt;
@pscale = fit01(pow(rand(@ptnum), ch(&amp;quot;power&amp;quot;)), ch(&amp;quot;pscale_min&amp;quot;), ch(&amp;quot;pscale_max&amp;quot;));&lt;br /&gt;
&lt;br /&gt;
// Udim attr for each Udim&lt;br /&gt;
vector uv = primuv(0, &amp;quot;uv&amp;quot;, @primnum, set(0.5, 0.5, 0));&lt;br /&gt;
i@udim = 1001 + int(uv.x) + int(uv.y)*10;&lt;br /&gt;
// Next, with a Delete SOP: Group: @udim=$F - Pattern mode !*&lt;br /&gt;
&lt;br /&gt;
// Set pscale Min/Max&lt;br /&gt;
@pscale = fit01(pow(rand(@ptnum), ch(&amp;quot;power&amp;quot;)), ch(&amp;quot;pscale_min&amp;quot;), ch(&amp;quot;pscale_max&amp;quot;));&lt;br /&gt;
&lt;br /&gt;
// Remove small parts - In a Foreach connected piece loop&lt;br /&gt;
@size = (getbbox_size(0).x+getbbox_size(0).y+getbbox_size(0).z);&lt;br /&gt;
&lt;br /&gt;
if(@size &amp;lt; chf(&amp;quot;taille&amp;quot;))&lt;br /&gt;
removepoint(geoself(), @ptnum);&lt;br /&gt;
&lt;br /&gt;
// Set @variant integer for Copytopoints (change objects number)&lt;br /&gt;
i@variant =floor(rand(@id)*3);&lt;br /&gt;
&lt;br /&gt;
//// Get position difference between two objects, and match animation&lt;br /&gt;
// On Rest pose object:&lt;br /&gt;
v@fixe = 0;&lt;br /&gt;
@fixe.x = getbbox_center(0).x;&lt;br /&gt;
@fixe.y = getbbox_center(0).y;&lt;br /&gt;
@fixe.z = getbbox_center(0).z;&lt;br /&gt;
// On animated object:&lt;br /&gt;
v@anim = 0;&lt;br /&gt;
@anim.x = getbbox_center(0).x;&lt;br /&gt;
@anim.y = getbbox_center(0).y;&lt;br /&gt;
@anim.z = getbbox_center(0).z;&lt;br /&gt;
// After two previous AttrWrangles:&lt;br /&gt;
v@anim_offset = point(0, 'fixe', 1) - point(1, 'anim', 1);&lt;br /&gt;
// To match animation:&lt;br /&gt;
@P = point(0, &amp;quot;P&amp;quot;, @ptnum) + point(1, 'anim_offset', 1);&lt;br /&gt;
&lt;br /&gt;
//// Blend shape through a mask attribute - Posted by Cudarsjanis on Odforce&lt;br /&gt;
// Geo with mask attribute in first input, blend shape in second&lt;br /&gt;
v@P=lerp(v@P, point(1,'P',@ptnum), f@mask*ch('blend'));&lt;br /&gt;
&lt;br /&gt;
//// Set a fixed normal attribute&lt;br /&gt;
v@z = set(0,1,0);&lt;br /&gt;
&lt;br /&gt;
//// Place at world center&lt;br /&gt;
v@P -= getbbox_center(0);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Delete small pieces ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// As seen on Sidefx forum, posted by paulboiii&lt;br /&gt;
// First create a measure SOP, set to per piece&lt;br /&gt;
&lt;br /&gt;
// Then, in an attribwrangle set on primitives&lt;br /&gt;
float threshold = chf(&amp;quot;Size_Threshold&amp;quot;);&lt;br /&gt;
if ( f@area &amp;lt; threshold ) removeprim(0,@primnum,1);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Attribute Wrangle - Copy attribute from second input ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// With same number of points on both inputs - From Bonsak on Sidefx.com&lt;br /&gt;
&lt;br /&gt;
// Copy P from second input&lt;br /&gt;
@P = v@opinput1_P;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Bounding-box - Position Reference color ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// As seen on https://houdinihelp.ru/ref/expression_cookbook.html&lt;br /&gt;
&lt;br /&gt;
// In an attribwrangle set on primitives&lt;br /&gt;
@Cd.r = relbbox(0,@P).x;&lt;br /&gt;
@Cd.g = relbbox(0,@P).y;&lt;br /&gt;
@Cd.b = relbbox(0,@P).z;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Group by uv.y ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Thanks to https://vfxbrain.wordpress.com/2019/06/14/vex-snippets-2/&lt;br /&gt;
&lt;br /&gt;
// In an attribwrangle set on points&lt;br /&gt;
if(@uv.y&amp;lt;chf(&amp;quot;seuil&amp;quot;)) @group_base = 1;&lt;br /&gt;
&lt;br /&gt;
// ALTERNATIVE&lt;br /&gt;
@uv.x&amp;lt;0.2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Specify attribute value for one point ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
if (@ptnum == 322) f@mask=1;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Pscale by Bbox Y ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
//set pscale first&lt;br /&gt;
&lt;br /&gt;
f@bboxY = relbbox(0,@P).y;&lt;br /&gt;
@pscale *= chramp(&amp;quot;rampBbox&amp;quot;,@bboxY)*4 ;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Delete primitives by height ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
if ( @P.y&amp;lt;chf(&amp;quot;seuil&amp;quot;) ) removeprim(0,@primnum,1);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Falloff geometry ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Get camOrigin&lt;br /&gt;
&lt;br /&gt;
vector pt0 = point(1,'P',0);&lt;br /&gt;
v@raydir = normalize(  pt0 - @P )*-1;&lt;br /&gt;
&lt;br /&gt;
@falloff = dot(v@raydir, @N);&lt;br /&gt;
&lt;br /&gt;
// Promote raydir in Primitives&lt;br /&gt;
&lt;br /&gt;
if ( f@falloff&amp;gt;chf(&amp;quot;seuil&amp;quot;) ) removeprim(0,@primnum,1);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Labs Maps Baker - Bake with UDIMs ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Add %(UDIM)d in the file path - don't need to check Output UDIMs&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Gets the digits from node name===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Add `padzero(3,opdigits(&amp;quot;.&amp;quot;))`&lt;br /&gt;
// Add `padzero(3,opdigits(&amp;quot;..&amp;quot;))` for previous node padding&lt;br /&gt;
// padzero(3,opdigits(&amp;quot;.&amp;quot;)) without hscript&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Self-shadows in Mantra===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Add by example * ^RENDER_ground in Shadow Mask of every of your lights to exclude self-shadows&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Walter</name></author>
		
	</entry>
	<entry>
		<id>http://antoinevienne.fr/wiki/index.php?title=Houdini_learning&amp;diff=267</id>
		<title>Houdini learning</title>
		<link rel="alternate" type="text/html" href="http://antoinevienne.fr/wiki/index.php?title=Houdini_learning&amp;diff=267"/>
		<updated>2023-10-27T11:09:07Z</updated>

		<summary type="html">&lt;p&gt;Walter: /* Gets the digits from node name */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Houdini learning=&lt;br /&gt;
=== Center Pivot ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// In Pivot Translate in a Transform node&lt;br /&gt;
&lt;br /&gt;
centroid(0,0)&lt;br /&gt;
centroid(0,1)&lt;br /&gt;
centroid(0,2)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Delete by Connectivity attribute ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// In a Delete node, in Group (by example)&lt;br /&gt;
&lt;br /&gt;
@class=7777&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Increase Volume Density ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// In a volumewrangle&lt;br /&gt;
&lt;br /&gt;
@density *= 10;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Substract any VDB by another VDB ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// In a volumewrangle&lt;br /&gt;
&lt;br /&gt;
if (volumesample(1,&amp;quot;surface&amp;quot;,@P)&amp;lt;0)@density=0;&lt;br /&gt;
&lt;br /&gt;
//inverse:&lt;br /&gt;
&lt;br /&gt;
if (volumesample(1,&amp;quot;surface&amp;quot;,@P)&amp;gt;0)@density=0;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Get bound &amp;amp; centroid ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// In a null object&lt;br /&gt;
&lt;br /&gt;
bbox(opinputpath('.',0),D_XSIZE)&lt;br /&gt;
bbox(opinputpath('.',0),D_YSIZE)&lt;br /&gt;
bbox(opinputpath('.',0),D_ZSIZE)&lt;br /&gt;
&lt;br /&gt;
centroid(opinputpath('.',0),D_X)&lt;br /&gt;
centroid(opinputpath('.',0),D_Y)&lt;br /&gt;
centroid(opinputpath('.',0),D_Z)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== UVs ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// In this order : uvautoseam - uvflatten - uvlayout&lt;br /&gt;
In uvflatten : Seams = seams&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Kill emission on a smoke source after frame 300 ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
if (@Frame&amp;gt;300) @density = 0;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Attribfrommap - Use UDIMs images ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Replace 1001 by &amp;lt;UDIM&amp;gt; and check UDIM Filename Expansion&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Attribwrangle - Udim number on primitives attributes ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// In a wrangle set on Primitives&lt;br /&gt;
vector uv = primuv(0, &amp;quot;uv&amp;quot;, @primnum, set(0.5, 0.5, 0));&lt;br /&gt;
i@udim = 1001 + int(uv.x) + int(uv.y)*10;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Place at World center, scale et re-transform for export ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// In a transform translates&lt;br /&gt;
-centroid(0,0) -centroid(0,1) -centroid(0,2)&lt;br /&gt;
// In a transform Uniform scale&lt;br /&gt;
(bbox(&amp;quot;/obj/neigeSol/timeshift1/&amp;quot;, D_ZSIZE))/(bbox(&amp;quot;/obj/neigeSol/transform_centerWorld/&amp;quot;, D_ZSIZE))&lt;br /&gt;
&lt;br /&gt;
// At end, in a transform Uniform scale&lt;br /&gt;
1/((bbox(&amp;quot;/obj/neigeSol/timeshift1/&amp;quot;, D_ZSIZE))/(bbox(&amp;quot;/obj/neigeSol/transform_centerWorld/&amp;quot;, D_ZSIZE)))&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Misc Attr Wrangle expressions ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Delete by color&lt;br /&gt;
if (@Cd.x&amp;lt;chf(&amp;quot;seuilColor&amp;quot;))removepoint(0,@ptnum);&lt;br /&gt;
&lt;br /&gt;
// Set random pscale&lt;br /&gt;
@pscale = fit01(pow(rand(@ptnum), ch(&amp;quot;power&amp;quot;)), ch(&amp;quot;pscale_min&amp;quot;), ch(&amp;quot;pscale_max&amp;quot;));&lt;br /&gt;
&lt;br /&gt;
// Udim attr for each Udim&lt;br /&gt;
vector uv = primuv(0, &amp;quot;uv&amp;quot;, @primnum, set(0.5, 0.5, 0));&lt;br /&gt;
i@udim = 1001 + int(uv.x) + int(uv.y)*10;&lt;br /&gt;
// Next, with a Delete SOP: Group: @udim=$F - Pattern mode !*&lt;br /&gt;
&lt;br /&gt;
// Set pscale Min/Max&lt;br /&gt;
@pscale = fit01(pow(rand(@ptnum), ch(&amp;quot;power&amp;quot;)), ch(&amp;quot;pscale_min&amp;quot;), ch(&amp;quot;pscale_max&amp;quot;));&lt;br /&gt;
&lt;br /&gt;
// Remove small parts - In a Foreach connected piece loop&lt;br /&gt;
@size = (getbbox_size(0).x+getbbox_size(0).y+getbbox_size(0).z);&lt;br /&gt;
&lt;br /&gt;
if(@size &amp;lt; chf(&amp;quot;taille&amp;quot;))&lt;br /&gt;
removepoint(geoself(), @ptnum);&lt;br /&gt;
&lt;br /&gt;
// Set @variant integer for Copytopoints (change objects number)&lt;br /&gt;
i@variant =floor(rand(@id)*3);&lt;br /&gt;
&lt;br /&gt;
//// Get position difference between two objects, and match animation&lt;br /&gt;
// On Rest pose object:&lt;br /&gt;
v@fixe = 0;&lt;br /&gt;
@fixe.x = getbbox_center(0).x;&lt;br /&gt;
@fixe.y = getbbox_center(0).y;&lt;br /&gt;
@fixe.z = getbbox_center(0).z;&lt;br /&gt;
// On animated object:&lt;br /&gt;
v@anim = 0;&lt;br /&gt;
@anim.x = getbbox_center(0).x;&lt;br /&gt;
@anim.y = getbbox_center(0).y;&lt;br /&gt;
@anim.z = getbbox_center(0).z;&lt;br /&gt;
// After two previous AttrWrangles:&lt;br /&gt;
v@anim_offset = point(0, 'fixe', 1) - point(1, 'anim', 1);&lt;br /&gt;
// To match animation:&lt;br /&gt;
@P = point(0, &amp;quot;P&amp;quot;, @ptnum) + point(1, 'anim_offset', 1);&lt;br /&gt;
&lt;br /&gt;
//// Blend shape through a mask attribute - Posted by Cudarsjanis on Odforce&lt;br /&gt;
// Geo with mask attribute in first input, blend shape in second&lt;br /&gt;
v@P=lerp(v@P, point(1,'P',@ptnum), f@mask*ch('blend'));&lt;br /&gt;
&lt;br /&gt;
//// Set a fixed normal attribute&lt;br /&gt;
v@z = set(0,1,0);&lt;br /&gt;
&lt;br /&gt;
//// Place at world center&lt;br /&gt;
v@P -= getbbox_center(0);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Delete small pieces ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// As seen on Sidefx forum, posted by paulboiii&lt;br /&gt;
// First create a measure SOP, set to per piece&lt;br /&gt;
&lt;br /&gt;
// Then, in an attribwrangle set on primitives&lt;br /&gt;
float threshold = chf(&amp;quot;Size_Threshold&amp;quot;);&lt;br /&gt;
if ( f@area &amp;lt; threshold ) removeprim(0,@primnum,1);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Attribute Wrangle - Copy attribute from second input ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// With same number of points on both inputs - From Bonsak on Sidefx.com&lt;br /&gt;
&lt;br /&gt;
// Copy P from second input&lt;br /&gt;
@P = v@opinput1_P;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Bounding-box - Position Reference color ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// As seen on https://houdinihelp.ru/ref/expression_cookbook.html&lt;br /&gt;
&lt;br /&gt;
// In an attribwrangle set on primitives&lt;br /&gt;
@Cd.r = relbbox(0,@P).x;&lt;br /&gt;
@Cd.g = relbbox(0,@P).y;&lt;br /&gt;
@Cd.b = relbbox(0,@P).z;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Group by uv.y ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Thanks to https://vfxbrain.wordpress.com/2019/06/14/vex-snippets-2/&lt;br /&gt;
&lt;br /&gt;
// In an attribwrangle set on points&lt;br /&gt;
if(@uv.y&amp;lt;chf(&amp;quot;seuil&amp;quot;)) @group_base = 1;&lt;br /&gt;
&lt;br /&gt;
// ALTERNATIVE&lt;br /&gt;
@uv.x&amp;lt;0.2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Specify attribute value for one point ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
if (@ptnum == 322) f@mask=1;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Pscale by Bbox Y ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
//set pscale first&lt;br /&gt;
&lt;br /&gt;
f@bboxY = relbbox(0,@P).y;&lt;br /&gt;
@pscale *= chramp(&amp;quot;rampBbox&amp;quot;,@bboxY)*4 ;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Delete primitives by height ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
if ( @P.y&amp;lt;chf(&amp;quot;seuil&amp;quot;) ) removeprim(0,@primnum,1);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Falloff geometry ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Get camOrigin&lt;br /&gt;
&lt;br /&gt;
vector pt0 = point(1,'P',0);&lt;br /&gt;
v@raydir = normalize(  pt0 - @P )*-1;&lt;br /&gt;
&lt;br /&gt;
@falloff = dot(v@raydir, @N);&lt;br /&gt;
&lt;br /&gt;
// Promote raydir in Primitives&lt;br /&gt;
&lt;br /&gt;
if ( f@falloff&amp;gt;chf(&amp;quot;seuil&amp;quot;) ) removeprim(0,@primnum,1);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Labs Maps Baker - Bake with UDIMs ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Add %(UDIM)d in the file path - don't need to check Output UDIMs&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Gets the digits from node name===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Add `padzero(3,opdigits(&amp;quot;.&amp;quot;))`&lt;br /&gt;
// Add `padzero(3,opdigits(&amp;quot;..&amp;quot;))` for previous node padding&lt;br /&gt;
// padzero(3,opdigits(&amp;quot;.&amp;quot;)) without hscript&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Walter</name></author>
		
	</entry>
	<entry>
		<id>http://antoinevienne.fr/wiki/index.php?title=Maya_Mel&amp;diff=266</id>
		<title>Maya Mel</title>
		<link rel="alternate" type="text/html" href="http://antoinevienne.fr/wiki/index.php?title=Maya_Mel&amp;diff=266"/>
		<updated>2023-10-04T15:36:51Z</updated>

		<summary type="html">&lt;p&gt;Walter: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Maya Mels Scripts=&lt;br /&gt;
=== Octane Render Baking group id - Assign id to multiple objects shapes ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// 0 is for Red, 2 for Green, 4 for Blue&lt;br /&gt;
// 3, 5 and 6 for Cyan, Magenta and Yellow&lt;br /&gt;
// Replace the number &amp;quot;0&amp;quot; by the number of your choice&lt;br /&gt;
// Baking group id is also avalaible in Attribute Spreadsheet Editor&lt;br /&gt;
&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    print($object+&amp;quot;\n&amp;quot;);&lt;br /&gt;
    setAttr ($object + &amp;quot;.octBakGrId&amp;quot;) (0);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Maxwell Render - Particles sequence - Force .abc file ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
//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&lt;br /&gt;
&lt;br /&gt;
global int $current_frame;&lt;br /&gt;
$current_frame = `currentTime -query`;&lt;br /&gt;
print $current_frame;&lt;br /&gt;
{&lt;br /&gt;
setAttr -type &amp;quot;string&amp;quot; maxwellRFRKParticles1.file (&amp;quot;/YOUR_PATH/YOUR_FILE&amp;quot; + $current_frame + &amp;quot;.abc&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Maxwell Render - Specify object ID color ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Specify object ID color&lt;br /&gt;
&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    print($object+&amp;quot;\n&amp;quot;);&lt;br /&gt;
    setAttr ($object + &amp;quot;.mxSpecifyObjIdColor&amp;quot;) (1);&lt;br /&gt;
    setAttr ($object + &amp;quot;.mxObjIdColor&amp;quot;) -type &amp;quot;double3&amp;quot; 1 0 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Redshift - Add blend attribute and set random value for objects selection ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Useful for blending between colors with RedshiftUserDataScalar&lt;br /&gt;
&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    print($object);&lt;br /&gt;
    addAttr -ln &amp;quot;blend&amp;quot; -at double  -min 0 -max 1 -dv 0 $object;&lt;br /&gt;
    setAttr ($object + &amp;quot;.blend&amp;quot;) (rand(1));&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Redshift - Set Primary visibility off for selection (layer override) ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Go in right render layer and select objects&lt;br /&gt;
&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    print($object+&amp;quot;\n&amp;quot;);&lt;br /&gt;
    setAttr ($object + &amp;quot;.rsEnableVisibilityOverrides&amp;quot;) (1);&lt;br /&gt;
    editRenderLayerAdjustment ($object + &amp;quot;.rsPrimaryRayVisible&amp;quot;);&lt;br /&gt;
    setAttr ($object + &amp;quot;.rsPrimaryRayVisible&amp;quot;) (0);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Convert Motion trail to curve ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select the motion trail first&lt;br /&gt;
&lt;br /&gt;
{&lt;br /&gt;
$selected=`ls -dag -et snapshotShape`;&lt;br /&gt;
for ($obj in $selected){&lt;br /&gt;
$pts=(getAttr($obj+&amp;quot;.pts&amp;quot;));&lt;br /&gt;
$size=size($pts);&lt;br /&gt;
$curve=`curve -d 1 -p $pts[0] $pts[1] $pts[2] -p $pts[4] $pts[5] $pts[6] -k 0 -k 1`;&lt;br /&gt;
for($i=8;$i&amp;lt;$size;$i+=4)&lt;br /&gt;
curve -os -a -p $pts[$i] $pts[$i+1] $pts[$i+2] $curve ;&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Quantize keyframes for selection ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Snap keys on frames for objects selection&lt;br /&gt;
&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    print($object+&amp;quot;\n&amp;quot;);&lt;br /&gt;
    snapKey $object;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Loop image sequence for texture ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// On File texture, check Image sequence, and edit expression&lt;br /&gt;
&lt;br /&gt;
file1.frameExtension=((frame%8)+1);&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Symmetrize - Duplicate &amp;amp; merge object ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select half object first&lt;br /&gt;
&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    print($object+&amp;quot;\n&amp;quot;);&lt;br /&gt;
    xform -piv 0 0 0 $object;&lt;br /&gt;
    duplicate -rr;&lt;br /&gt;
    setAttr ($object + &amp;quot;.scaleX&amp;quot;) (-1);&lt;br /&gt;
    select -add $object ;&lt;br /&gt;
    polyPerformAction polyUnite o 0;&lt;br /&gt;
    polyMergeVertex  -d 0.0001 -am 1 -ch 1;&lt;br /&gt;
    DeleteHistory;&lt;br /&gt;
    rename ($object);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Mirror object ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select object first&lt;br /&gt;
&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    print($object+&amp;quot;\n&amp;quot;);&lt;br /&gt;
    DeleteHistory;&lt;br /&gt;
    makeIdentity -apply true -t 1 -r 1 -s 1 -n 0 -pn 1;&lt;br /&gt;
    xform -piv 0 0 0 $object;&lt;br /&gt;
    duplicate -rr;&lt;br /&gt;
    setAttr ($object + &amp;quot;.scaleX&amp;quot;) (-1);&lt;br /&gt;
    DeleteHistory;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Group each object and rename ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select objects first&lt;br /&gt;
&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    string $name = ($object);&lt;br /&gt;
    select $object ;&lt;br /&gt;
    doGroup 0 1 1;&lt;br /&gt;
    rename ($name + &amp;quot;_GRP&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Change path in an Attribute ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Here the Attribute is &amp;quot;.filePrefix&amp;quot; - Select objects first&lt;br /&gt;
&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    string $path = getAttr ($object+&amp;quot;.filePrefix&amp;quot;);&lt;br /&gt;
    $path = `substitute &amp;quot;//OLD/PATH/&amp;quot; $path &amp;quot;//NEW/PATH/&amp;quot;`;&lt;br /&gt;
    setAttr -type &amp;quot;string&amp;quot; ($object+&amp;quot;.filePrefix&amp;quot;) ($path);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Change opacity mode on V-Ray shaders ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select shaders first&lt;br /&gt;
&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    if (attributeExists(&amp;quot;omode&amp;quot;,$object)) { //check if attribute exists&lt;br /&gt;
        CBunlockAttr ($object+&amp;quot;.omode&amp;quot;); //unlock opacity mode&lt;br /&gt;
    }&lt;br /&gt;
    if (attributeExists(&amp;quot;opacityMode&amp;quot;,$object)) {&lt;br /&gt;
        setAttr ($object+&amp;quot;.opacityMode&amp;quot;) 1; //set opacity mode in Clip - 0 pour Normal&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// Alternative&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    if (attributeExists(&amp;quot;opacityMode&amp;quot;,$object)) {&lt;br /&gt;
        setAttr ($object+&amp;quot;.opacityMode&amp;quot;) -l false; //unlock attribute if locked&lt;br /&gt;
    }&lt;br /&gt;
    if (attributeExists(&amp;quot;opacityMode&amp;quot;,$object)) {&lt;br /&gt;
        setAttr ($object+&amp;quot;.opacityMode&amp;quot;) 2; //set opacity mode in Clip - 0 pour Normal&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Change color space on selected fileTextures ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Useful to automatically convert Quixel Megascans by example from sRGB/Raw to ACES color spaces&lt;br /&gt;
&lt;br /&gt;
string $object_selection[] = (`ls -sl`);&lt;br /&gt;
for ($object in $object_selection) {&lt;br /&gt;
    if(`getAttr ($object+&amp;quot;.cs&amp;quot;)` == &amp;quot;sRGB&amp;quot;){&lt;br /&gt;
        setAttr ($object + &amp;quot;.cs&amp;quot;) -type &amp;quot;string&amp;quot; &amp;quot;Utility - sRGB - Texture&amp;quot;;&lt;br /&gt;
    }&lt;br /&gt;
    if(`getAttr ($object+&amp;quot;.cs&amp;quot;)` == &amp;quot;Raw&amp;quot;){&lt;br /&gt;
        setAttr ($object + &amp;quot;.cs&amp;quot;) -type &amp;quot;string&amp;quot; &amp;quot;Utility - Raw&amp;quot;;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Redshift - custom Tesselation on selected objects ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select objects first&lt;br /&gt;
&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    print($object+&amp;quot;\n&amp;quot;);&lt;br /&gt;
    setAttr ($object + &amp;quot;.rsMinTessellationLength&amp;quot;) (0.1);&lt;br /&gt;
    setAttr ($object + &amp;quot;.rsMaxTessellationSubdivs&amp;quot;) (2);&lt;br /&gt;
    setAttr ($object + &amp;quot;.rsOutOfFrustumTessellationFactor&amp;quot;) (4);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Change color on selected shaders ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select shaders first&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    print($object+&amp;quot;\n&amp;quot;);&lt;br /&gt;
    setAttr ($object + &amp;quot;.color&amp;quot;) -l false;&lt;br /&gt;
    setAttr ($object + &amp;quot;.color&amp;quot;) -type &amp;quot;double3&amp;quot; (0.18) (0.18) (0.18);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Change Filter Type on selected Files Textures ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select files textures first - 0 means Off&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    print($object+&amp;quot;\n&amp;quot;);&lt;br /&gt;
    setAttr ($object + &amp;quot;.filterType&amp;quot;) 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Clean Render Layers ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// In MEL&lt;br /&gt;
fixRenderLayerOutAdjustmentErrors;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Change Filter Type on selected Files Textures ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select files textures first - 0 means Off&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    print($object+&amp;quot;\n&amp;quot;);&lt;br /&gt;
    setAttr ($object + &amp;quot;.filterType&amp;quot;) 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Select by name ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select objects with &amp;quot;toto&amp;quot;&lt;br /&gt;
select -r &amp;quot;toto*&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Display color on shapes ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select objects&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    print($object+&amp;quot;\n&amp;quot;);&lt;br /&gt;
    setAttr ($object + &amp;quot;.displayColors&amp;quot;) 1;&lt;br /&gt;
    setDisplayColorChannelAttribute ($object + &amp;quot;.displayColorChannel&amp;quot;);&lt;br /&gt;
    polyColorPerVertex -r 1 -g 0 -b 0 -a 1 -cdo;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Geometry Constraint on multiple selection ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select objects to constrain&lt;br /&gt;
string $objectBase = &amp;quot;surfaceName&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    select -cl;&lt;br /&gt;
    select $objectBase;&lt;br /&gt;
    select -add $object;&lt;br /&gt;
    geometryConstraint -weight 1;&lt;br /&gt;
    select -r &amp;quot;*Constraint*&amp;quot;;&lt;br /&gt;
    doDelete;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
=== Speed up smokes rendering with V-Ray ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select smokes first&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    print($object+&amp;quot;\n&amp;quot;);&lt;br /&gt;
    setAttr ($object + &amp;quot;.rendStep&amp;quot;) 160;&lt;br /&gt;
    setAttr ($object + &amp;quot;.shadowStep&amp;quot;) 400;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Set bump multiplier on multiple V-Ray shaders ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select shaders&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    if (attributeExists(&amp;quot;bumpMult&amp;quot;,$object)) {&lt;br /&gt;
        setAttr ($object + &amp;quot;.bumpMult&amp;quot;) -1; //set bump multiplier at -1&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== STOP/START viewport ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// As seen on https://www.toadstorm.com/. - Put it in your shelf&lt;br /&gt;
paneLayout -e -manage false $gMainPane&lt;br /&gt;
&lt;br /&gt;
paneLayout -e -manage true $gMainPane&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Select curves by name ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select objects first - Replace &amp;quot;toto&amp;quot; by what you are looking for&lt;br /&gt;
&lt;br /&gt;
select `ls -type &amp;quot;nurbsCurve&amp;quot; &amp;quot;*toto*&amp;quot;`;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Noise expression ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Replace &amp;quot;pCube1&amp;quot;&lt;br /&gt;
&lt;br /&gt;
pCube1.translateX=sin(time*20)*0.01*noise(time*10);&lt;br /&gt;
pCube1.translateY=sin(time*4)*0.01*noise(time*10);&lt;br /&gt;
pCube1.translateZ=sin(time*12)*0.01*noise(time*10);&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== V-ray - Make curves renderables ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Replace VRayLightMtl1 at the end by your material&lt;br /&gt;
&lt;br /&gt;
$selected=`ls -dag -et curveShape`;&lt;br /&gt;
for ($object in $selected){&lt;br /&gt;
    // Add V-ray Extra attributes&lt;br /&gt;
    vray addAttributesFromGroup $object vray_nurbscurve_renderable 1;&lt;br /&gt;
    vrayAddAttr $object vraySeparator_vray_nurbscurve_renderable;&lt;br /&gt;
    vrayAddAttr $object vrayNurbsCurveRenderable;&lt;br /&gt;
    vrayAddAttr $object vrayNurbsCurveMaterial;&lt;br /&gt;
    vrayAddAttr $object vrayNurbsCurveTesselation;&lt;br /&gt;
    vrayAddAttr $object vrayNurbsCurveStartWidth;&lt;br /&gt;
    vrayAddAttr $object vrayNurbsCurveLockEndWidth;&lt;br /&gt;
    vrayAddAttr $object vrayNurbsCurveEndWidth;&lt;br /&gt;
    setUITemplate -pst attributeEditorTemplate;&lt;br /&gt;
// Activate renderable&lt;br /&gt;
setAttr ($object + &amp;quot;.vrayNurbsCurveRenderable&amp;quot;) 1;&lt;br /&gt;
// Replace VRayLightMtl1 by your material&lt;br /&gt;
connectAttr -force VRayLightMtl1.outColor ($object + &amp;quot;.vrayNurbsCurveMaterial&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Get object type ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Replace toto with the object whose type you want to know&lt;br /&gt;
&lt;br /&gt;
objectType toto;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Render layer override on specific object type ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Replace &amp;quot;Node&amp;quot; by the object type on which you want to act&lt;br /&gt;
&lt;br /&gt;
$selected=`ls -type &amp;quot;Node&amp;quot;`;&lt;br /&gt;
for ($object in $selected){&lt;br /&gt;
    // Create layer override on Primary Visibility attribute on current renderLayer&lt;br /&gt;
    editRenderLayerAdjustment ($object + &amp;quot;.primaryVisibility&amp;quot;);&lt;br /&gt;
    // Set Primary Visibility - 0 or 1&lt;br /&gt;
    setAttr ($object + &amp;quot;.primaryVisibility&amp;quot;) 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== V-ray - Make lights invisible ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$selected=`ls -type &amp;quot;VRayLightRectShape&amp;quot;`;&lt;br /&gt;
for ($object in $selected){&lt;br /&gt;
    setAttr ($object + &amp;quot;.invisible&amp;quot;) 1;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
$selected=`ls -type &amp;quot;VRayLightSphereShape&amp;quot;`;&lt;br /&gt;
for ($object in $selected){&lt;br /&gt;
    setAttr ($object + &amp;quot;.invisible&amp;quot;) 1;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
$selected=`ls -type &amp;quot;VRayLightDomeShape&amp;quot;`;&lt;br /&gt;
for ($object in $selected){&lt;br /&gt;
    setAttr ($object + &amp;quot;.invisible&amp;quot;) 1;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== V-ray - Select Rect Light ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
select `ls -type &amp;quot;VRayLightRectShape&amp;quot;`;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== V-ray - Rect Lights - Directional Preview - Always for all ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$selected=`ls -type &amp;quot;VRayLightRectShape&amp;quot;`;&lt;br /&gt;
for ($object in $selected){&lt;br /&gt;
    setAttr ($object + &amp;quot;.directionalPreview&amp;quot;) 1;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Randomize rotation on selected objects ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// As posted on CGTalk by NaughtyNathan&lt;br /&gt;
// &amp;quot;just set the vector values to the maximum random x,y,z rotations you want to apply to the selected transforms.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
vector $rndRot = &amp;lt;&amp;lt; 0,0,90 &amp;gt;&amp;gt;;	// x,y,z rotations&lt;br /&gt;
for ($object in `ls -sl -tr`){&lt;br /&gt;
    rotate `rand ($rndRot.x)` `rand ($rndRot.y)` `rand ($rndRot.z)` $object;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Quit Maya ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Brute force method&lt;br /&gt;
&lt;br /&gt;
$i = `getpid`; //application ID&lt;br /&gt;
    system(&amp;quot;taskkill /PID &amp;quot;  + $i +&amp;quot; /f&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
// In a gentle way&lt;br /&gt;
&lt;br /&gt;
evalDeferred(&amp;quot;quit -f&amp;quot;);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== V-ray - Import list of Alembics through Proxys Import ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// List of Alembics files - Replace by the name of your Alembics&lt;br /&gt;
string $alembicsParts[] = {&amp;quot;part1&amp;quot;,&amp;quot;part2&amp;quot;,&amp;quot;part3&amp;quot;};&lt;br /&gt;
&lt;br /&gt;
// Replace the PATH of your files - Scale by 100 for Houdini Alembics - &amp;lt;frame04&amp;gt; for sequences&lt;br /&gt;
for ($alembicsPart in $alembicsParts){&lt;br /&gt;
    vrayCreateProxy -node $alembicsPart -existing -dir (&amp;quot;C:/YOURPATH/&amp;quot;+$alembicsPart+&amp;quot;.&amp;lt;frame04&amp;gt;.abc&amp;quot;) -createProxyNode;&lt;br /&gt;
    setAttr ($alembicsPart+&amp;quot;_vraymesh.animType&amp;quot;) 1;&lt;br /&gt;
    setAttr ($alembicsPart+&amp;quot;.scaleZ&amp;quot;) 100;&lt;br /&gt;
    setAttr ($alembicsPart+&amp;quot;.scaleX&amp;quot;) 100;&lt;br /&gt;
    setAttr ($alembicsPart+&amp;quot;.scaleY&amp;quot;) 100;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== V-ray - Change path to VRayMesh for selected proxies ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Change path with your own .vrmesh&lt;br /&gt;
$selected=`ls -type &amp;quot;VRayMesh&amp;quot;`;&lt;br /&gt;
for ($object in $selected){&lt;br /&gt;
    setAttr -type &amp;quot;string&amp;quot; ($object + &amp;quot;.fileName2&amp;quot;) &amp;quot;//DISK/PATH/YOUR_VRMESH.vrmesh&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// If you want to change Geometry type - 4 for GPU mesh - add following in the loop&lt;br /&gt;
//    setAttr ($object + &amp;quot;.geomType&amp;quot;) 4;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Delete image planes ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Delete image plane if exists.&lt;br /&gt;
$selected=`ls -type &amp;quot;imagePlane&amp;quot;`;&lt;br /&gt;
select $selected;&lt;br /&gt;
for ($object in $selected){&lt;br /&gt;
    doDelete;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Merge alembic from set ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select objects in a set called EXPORT_SET&lt;br /&gt;
select -r EXPORT_SET ;&lt;br /&gt;
timeControl -edit -forceRedraw $gPlayBackSlider;&lt;br /&gt;
&lt;br /&gt;
// Create list of objects from EXPORT_SET&lt;br /&gt;
string $assetParts[] = `ls -sl`;&lt;br /&gt;
$assetPartsList = stringArrayToString($assetParts,&amp;quot; &amp;quot;);&lt;br /&gt;
&lt;br /&gt;
// Merge alembic with these objects&lt;br /&gt;
AbcImport -mode import -connect $assetPartsList &amp;quot;//DISK/PATH/alembic.abc&amp;quot;;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Create Texture reference ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// CREATE TEXTURE REFERENCE ON EXPORT SET&lt;br /&gt;
&lt;br /&gt;
select -r YOUR_GROUP ;&lt;br /&gt;
CreateTextureReferenceObject;&lt;br /&gt;
select -cl  ;&lt;br /&gt;
&lt;br /&gt;
// REMOVE REFERENCE OBJECTS FROM EXPORT SET&lt;br /&gt;
select -r YOUR_GROUP_reference ;&lt;br /&gt;
string $selection[] = `ls -sl`;&lt;br /&gt;
string $polyGons[] = `filterExpand -sm 12 $selection`;&lt;br /&gt;
select -r $polyGons;&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    sets -rm EXPORT_SET $object;&lt;br /&gt;
}&lt;br /&gt;
select -cl  ;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Replace animated objects with V-Ray proxies ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// First select animated objects to replace&lt;br /&gt;
// For each object create a proxy then constrain then bake simulation then delete constraint&lt;br /&gt;
&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
	vrayCreateProxy -node assetName -existing -dir (&amp;quot;//DISK/PATH/your_asset.vrmesh&amp;quot;) -createProxyNode;&lt;br /&gt;
	select -r $object ;&lt;br /&gt;
	select -add assetName ;&lt;br /&gt;
	doCreateParentConstraintArgList 1 { &amp;quot;0&amp;quot;,&amp;quot;0&amp;quot;,&amp;quot;0&amp;quot;,&amp;quot;0&amp;quot;,&amp;quot;0&amp;quot;,&amp;quot;0&amp;quot;,&amp;quot;0&amp;quot;,&amp;quot;0&amp;quot;,&amp;quot;1&amp;quot;,&amp;quot;&amp;quot;,&amp;quot;1&amp;quot; };&lt;br /&gt;
	parentConstraint -weight 1;&lt;br /&gt;
	bakeResults -simulation true -t &amp;quot;1000:1100&amp;quot; -sampleBy 1 -oversamplingRate 1 -disableImplicitControl true -preserveOutsideKeys true -sparseAnimCurveBake false -removeBakedAttributeFromLayer false -removeBakedAnimFromLayer false -bakeOnOverrideLayer false -minimizeRotation true -controlPoints false -shape true {&amp;quot;assetName&amp;quot;};&lt;br /&gt;
	select `ls -type &amp;quot;constraint&amp;quot;`;&lt;br /&gt;
	select -add $object ;&lt;br /&gt;
	doDelete;&lt;br /&gt;
	select -cl  ;&lt;br /&gt;
	rename &amp;quot;assetName&amp;quot; $object;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Select all meshes in a group ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// From cmadsenAniden on forums.autodesk.com&lt;br /&gt;
// Replace group1 by the name of your own group&lt;br /&gt;
&lt;br /&gt;
select -r group1 ;&lt;br /&gt;
string $selection[] = `ls -sl`;&lt;br /&gt;
string $polyGons[] = `filterExpand -sm 12 $selection`;&lt;br /&gt;
select -r $polyGons;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Select shot camera ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// CREATE VARIABLE FOR SHOT CAMERA AND SELECT IT&lt;br /&gt;
&lt;br /&gt;
select `ls -type &amp;quot;camera&amp;quot;`;&lt;br /&gt;
select -d sideShape frontShape topShape perspShape;&lt;br /&gt;
$camerashot = `ls -sl`;&lt;br /&gt;
string $shotcamera = $camerashot[0];&lt;br /&gt;
print $shotcamera;&lt;br /&gt;
select $shotcamera;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Get list of frames with keys on all transform objects ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$selected=`ls -dag -et transform`;&lt;br /&gt;
&lt;br /&gt;
float $arrathy[] = `keyframe -query $selected`;&lt;br /&gt;
&lt;br /&gt;
float $sorted[] = python(&amp;quot;import pymel.core as pm; list(set((pm.getMelGlobal(\&amp;quot;float[]\&amp;quot;, \&amp;quot;$arrathy\&amp;quot;))))&amp;quot;);&lt;br /&gt;
print $sorted;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== MULTI SNAP ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Replace a list of objects by another with bake of animation. Replace FSTART and FEND with your own padding.&lt;br /&gt;
&lt;br /&gt;
///////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
///////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
/*&lt;br /&gt;
Type the command MS() in MEL form to open UI.&lt;br /&gt;
*/&lt;br /&gt;
///////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
///////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
source &amp;quot;generateChannelMenu.mel&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
global proc MS ()&lt;br /&gt;
{&lt;br /&gt;
     global string $sourceObjects;&lt;br /&gt;
     global string $destinationObjects;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    // If the window exists already, delete it.&lt;br /&gt;
    if (`window -exists multiSnapWindow`)&lt;br /&gt;
    {&lt;br /&gt;
        deleteUI multiSnapWindow;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    // Build the window.&lt;br /&gt;
    global string $man_window;&lt;br /&gt;
    string $man_window = `window -title &amp;quot; MULTI SNAP&amp;quot; -sizeable 0 -w 300 multiSnapWindow`;&lt;br /&gt;
    frameLayout -label &amp;quot;Snap source objects on destination objects.&amp;quot;;&lt;br /&gt;
    rowLayout -width 540 -nc 2 -cw4 10 20 20 100;&lt;br /&gt;
    // Source objects section&lt;br /&gt;
    frameLayout -label &amp;quot;Source objects&amp;quot;;&lt;br /&gt;
    $sourceObjects = `textScrollList -width 600 -height 300`;&lt;br /&gt;
    rowLayout -width 240 -nc 2 -cw2 120 120;&lt;br /&gt;
    button -label &amp;quot;Add selected&amp;quot; -command &amp;quot;MS_addObjects ();&amp;quot; -width 120;&lt;br /&gt;
    button -label &amp;quot;Remove selected&amp;quot; -command &amp;quot;MS_removeObjects ();&amp;quot; -width 120;&lt;br /&gt;
    setParent ..;&lt;br /&gt;
    rowLayout -width 240 -nc 2 -cw2 120 120;&lt;br /&gt;
    button -label &amp;quot;Remove All&amp;quot; -command &amp;quot;MS_clearObjects ();&amp;quot; -width 240;&lt;br /&gt;
    setParent ..;&lt;br /&gt;
    setParent ..;&lt;br /&gt;
    rowLayout -nc 3;&lt;br /&gt;
    button -label &amp;quot;Create&amp;quot; -command &amp;quot;VRAYCONNECDO() &amp;quot; -width 140 -align center;&lt;br /&gt;
    button -label &amp;quot;Close&amp;quot; -command &amp;quot;DAC_CloseUI() &amp;quot; -width 140 -align center;&lt;br /&gt;
    setParent ..;&lt;br /&gt;
    setParent ..;&lt;br /&gt;
    // Destination objects section&lt;br /&gt;
    frameLayout -label &amp;quot;Destination objects&amp;quot;;&lt;br /&gt;
    $destinationObjects = `textScrollList -width 600 -height 300`;&lt;br /&gt;
    rowLayout -width 240 -nc 2 -cw2 120 120;&lt;br /&gt;
    button -label &amp;quot;Add selected&amp;quot; -command &amp;quot;MS_addMM ();&amp;quot; -width 120;&lt;br /&gt;
    button -label &amp;quot;Remove selected&amp;quot; -command &amp;quot;MS_removeMM ();&amp;quot; -width 120;&lt;br /&gt;
    setParent ..;&lt;br /&gt;
    setParent ..;&lt;br /&gt;
    rowLayout -nc 3;&lt;br /&gt;
    button -label &amp;quot;SNAP IT&amp;quot; -command &amp;quot;VRAYCONNECDO() &amp;quot; -width 140 -align center;&lt;br /&gt;
    button -label &amp;quot;Close&amp;quot; -command &amp;quot;DAC_CloseUI() &amp;quot; -width 140 -align center;&lt;br /&gt;
    setParent ..;&lt;br /&gt;
    setParent ..;&lt;br /&gt;
&lt;br /&gt;
// Show the window.&lt;br /&gt;
showWindow multiSnapWindow;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
global proc string[] getShaders(string $from)&lt;br /&gt;
{&lt;br /&gt;
// get the shapes from the input&lt;br /&gt;
string $shapes[] = ls(&amp;quot;-o&amp;quot;, &amp;quot;-dag&amp;quot;, &amp;quot;-s&amp;quot;, $from);&lt;br /&gt;
// give me the connected &amp;quot;shadingEngines&amp;quot;&lt;br /&gt;
string $shadingEngines[] = listConnections(&amp;quot;-type&amp;quot;,&amp;quot;shadingEngine&amp;quot;, $shapes);&lt;br /&gt;
// list the connected materials (shaders) from that&lt;br /&gt;
string $materials[] = ls(&amp;quot;-mat&amp;quot;, listConnections($shadingEngines));&lt;br /&gt;
// remove duplicate occurrences.&lt;br /&gt;
return (stringArrayRemoveDuplicates($materials));&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
//Add selected objects to list.&lt;br /&gt;
global proc MS_addObjects ()&lt;br /&gt;
{&lt;br /&gt;
      global string $sourceObjects;&lt;br /&gt;
      string $selectedshapes[] = `ls -sl -l`;&lt;br /&gt;
      //print $selectedshapes;&lt;br /&gt;
      int $count = 0;&lt;br /&gt;
&lt;br /&gt;
if ($selectedshapes[0] != &amp;quot;&amp;quot;)&lt;br /&gt;
{&lt;br /&gt;
   for ($i in $selectedshapes)&lt;br /&gt;
   {&lt;br /&gt;
     $count ++;&lt;br /&gt;
     textScrollList -edit -append $i $sourceObjects;&lt;br /&gt;
   }&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
//Add selected objects to list.&lt;br /&gt;
global proc MS_addMM ()&lt;br /&gt;
{&lt;br /&gt;
      global string $destinationObjects;&lt;br /&gt;
      string $selectedshapes[] = `ls -sl -l`;&lt;br /&gt;
      //print $selectedshapes;&lt;br /&gt;
      int $count = 0;&lt;br /&gt;
&lt;br /&gt;
if ($selectedshapes[0] != &amp;quot;&amp;quot;)&lt;br /&gt;
{&lt;br /&gt;
   for ($i in $selectedshapes)&lt;br /&gt;
   {&lt;br /&gt;
     $count ++;&lt;br /&gt;
     textScrollList -edit -append $i $destinationObjects;&lt;br /&gt;
   }&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// Clear objects from list.&lt;br /&gt;
global proc MS_clearObjects ()&lt;br /&gt;
{&lt;br /&gt;
    global string $sourceObjects;&lt;br /&gt;
textScrollList -e -ra $sourceObjects;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// Remove selected object from list.&lt;br /&gt;
global proc MS_removeObjects ()&lt;br /&gt;
{&lt;br /&gt;
   global string $sourceObjects;&lt;br /&gt;
&lt;br /&gt;
    int $index [] = `textScrollList -query -selectIndexedItem $sourceObjects`;&lt;br /&gt;
    if ($index [0] != 0)&lt;br /&gt;
    {&lt;br /&gt;
        textScrollList -edit -removeIndexedItem $index [0] $sourceObjects;&lt;br /&gt;
    }&lt;br /&gt;
   global string $sourceObjects;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
global proc VRAYCONNECDO()&lt;br /&gt;
{&lt;br /&gt;
    // UI Elements&lt;br /&gt;
global string $sourceObjects;&lt;br /&gt;
global string $destinationObjects;&lt;br /&gt;
// Define user selected objects&lt;br /&gt;
string $selected_objects[] = `textScrollList -query -allItems $sourceObjects`;&lt;br /&gt;
string $meshMaterial[] = `textScrollList -query -allItems $destinationObjects`;&lt;br /&gt;
int $i = 0;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
// SET PADDING&lt;br /&gt;
string $FSTART = &amp;quot;1&amp;quot;;&lt;br /&gt;
string $FEND = &amp;quot;100&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
print $FSTART;&lt;br /&gt;
print $FEND;&lt;br /&gt;
&lt;br /&gt;
string $PADDING = $FSTART + &amp;quot;:&amp;quot; + $FEND;&lt;br /&gt;
&lt;br /&gt;
//Progress bar&lt;br /&gt;
global string $gMainProgressBar;&lt;br /&gt;
&lt;br /&gt;
// Start the progress bar and adjust its max value for this operation.&lt;br /&gt;
    int $steps = size($selected_objects);&lt;br /&gt;
    progressBar -edit -beginProgress -isInterruptable true -status &amp;quot;Connecting shaders to mesh material ...&amp;quot; -maxValue $steps $gMainProgressBar;&lt;br /&gt;
 &lt;br /&gt;
for ($i = 0; $i &amp;lt; size($selected_objects); $i ++)&lt;br /&gt;
{&lt;br /&gt;
        parentConstraint -n parentConstraintMS $selected_objects[$i] $meshMaterial[$i];&lt;br /&gt;
        select -r $meshMaterial[$i] ;&lt;br /&gt;
        bakeResults -simulation true -t $PADDING -sampleBy 1 -oversamplingRate 1 -disableImplicitControl true -preserveOutsideKeys true -sparseAnimCurveBake false -removeBakedAttributeFromLayer false -removeBakedAnimFromLayer false -bakeOnOverrideLayer false -minimizeRotation true -controlPoints false -shape true {$meshMaterial[$i]};&lt;br /&gt;
        select -cl  ;&lt;br /&gt;
        select -r &amp;quot;*parentConstraintMS*&amp;quot;;&lt;br /&gt;
        doDelete;&lt;br /&gt;
// Update the progress bar.&lt;br /&gt;
progressBar -edit -step 1 $gMainProgressBar;&lt;br /&gt;
}&lt;br /&gt;
// End the progress.&lt;br /&gt;
progressBar -edit -endProgress $gMainProgressBar;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Delete hidden objects ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select objects&lt;br /&gt;
&lt;br /&gt;
for ( $object in `ls -sl` ) {&lt;br /&gt;
    $vis = getAttr ($object+&amp;quot;.visibility&amp;quot;);&lt;br /&gt;
    if ($vis == 0){&lt;br /&gt;
        select -r $object ;&lt;br /&gt;
        doDelete ;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== V-Ray - BAKE MATERIALS ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Made to work also with mayabatch.exe&lt;br /&gt;
&lt;br /&gt;
////////////////////////////////////////////&lt;br /&gt;
// BAKE VRAY CUSTOM VARIABLES&lt;br /&gt;
////////////////////////////////////////////&lt;br /&gt;
&lt;br /&gt;
// ASSET PATH&lt;br /&gt;
string $assetFileType = &amp;quot;mayaBinary&amp;quot;;&lt;br /&gt;
string $assetPath = &amp;quot;C:/YOUR_PATH/YOUR_SURFACING_ASSET.mb&amp;quot;;&lt;br /&gt;
string $assetName = &amp;quot;ASSET_NAME&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
// LIGHT RIG PATH&lt;br /&gt;
string $lightRigFileType = &amp;quot;mayaAscii&amp;quot;;&lt;br /&gt;
string $lightRigPath = &amp;quot;C:/YOUR_PATH/YOUR_LIGHT_RIG.mb&amp;quot;;&lt;br /&gt;
string $lightRigName = &amp;quot;DAY_LIGHTING&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
// BAKED TEXTURES PATH&lt;br /&gt;
string $bakedTexturesPath = (&amp;quot;C:/YOUR_PATH/BAKED_TEXTURES/&amp;quot; + $assetName + &amp;quot;_&amp;quot; + $lightRigName + &amp;quot;_Bake&amp;quot;);&lt;br /&gt;
print $bakedTexturesPath;&lt;br /&gt;
&lt;br /&gt;
// SET RESOLUTION FOR BAKED MAPS&lt;br /&gt;
$resWidth = 4096;&lt;br /&gt;
$resHeight = $resWidth;&lt;br /&gt;
&lt;br /&gt;
// COLOR SPACE FOR FILE TEXTURES&lt;br /&gt;
string $fileColorSpace = &amp;quot;ACES - ACEScg&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
////////////////////////////////////////////&lt;br /&gt;
// END OF CUSTOM VARIABLES&lt;br /&gt;
////////////////////////////////////////////&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
////////////////////////////////////////////&lt;br /&gt;
// RENDER SETTINGS&lt;br /&gt;
&lt;br /&gt;
// Set File Name Prefix&lt;br /&gt;
setAttr -type &amp;quot;string&amp;quot; vraySettings.fileNamePrefix &amp;quot;&amp;lt;Scene&amp;gt;/&amp;lt;Layer&amp;gt;/&amp;lt;Camera&amp;gt;_&amp;lt;Layer&amp;gt;_&amp;lt;Scene&amp;gt;&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
// Set resolution&lt;br /&gt;
$resWidthHalf = $resWidth/2;&lt;br /&gt;
$resHeightHalf = $resHeight/2;&lt;br /&gt;
setAttr &amp;quot;vraySettings.width&amp;quot; $resWidthHalf;&lt;br /&gt;
setAttr &amp;quot;vraySettings.height&amp;quot; $resHeightHalf;&lt;br /&gt;
&lt;br /&gt;
// Set Persp camera renderable&lt;br /&gt;
setAttr &amp;quot;perspShape.renderable&amp;quot; 1;&lt;br /&gt;
&lt;br /&gt;
// Set Image format&lt;br /&gt;
setAttr -type &amp;quot;string&amp;quot; &amp;quot;vraySettings.imageFormatStr&amp;quot; &amp;quot;exr (multichannel)&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
// Set Animation type on Standard&lt;br /&gt;
setAttr &amp;quot;vraySettings.animType&amp;quot; 0;&lt;br /&gt;
setAttr &amp;quot;vraySettings.animBatchOnly&amp;quot; 1;&lt;br /&gt;
&lt;br /&gt;
// Sampler type Bucket&lt;br /&gt;
setAttr &amp;quot;vraySettings.samplerType&amp;quot; 4;&lt;br /&gt;
&lt;br /&gt;
// Min Shading Rate&lt;br /&gt;
//setAttr &amp;quot;vraySettings.minShadeRate&amp;quot; 4;&lt;br /&gt;
setAttr &amp;quot;vraySettings.minShadeRate&amp;quot; 7;&lt;br /&gt;
&lt;br /&gt;
// Buckets subdivs&lt;br /&gt;
//setAttr &amp;quot;vraySettings.dmcMinSubdivs&amp;quot; 1;&lt;br /&gt;
//setAttr &amp;quot;vraySettings.dmcMaxSubdivs&amp;quot; 8;&lt;br /&gt;
//setAttr &amp;quot;vraySettings.dmcThreshold&amp;quot; 0.1;&lt;br /&gt;
setAttr &amp;quot;vraySettings.dmcMinSubdivs&amp;quot; 1;&lt;br /&gt;
setAttr &amp;quot;vraySettings.dmcMaxSubdivs&amp;quot; 15;&lt;br /&gt;
setAttr &amp;quot;vraySettings.dmcThreshold&amp;quot; 0.01;&lt;br /&gt;
&lt;br /&gt;
// Color mapping Linear&lt;br /&gt;
setAttr &amp;quot;vraySettings.cmap_type&amp;quot; 0;&lt;br /&gt;
&lt;br /&gt;
// GI on&lt;br /&gt;
setAttr &amp;quot;vraySettings.giOn&amp;quot; 1;&lt;br /&gt;
//setAttr &amp;quot;vraySettings.subdivs&amp;quot; 400;&lt;br /&gt;
setAttr &amp;quot;vraySettings.subdivs&amp;quot; 1000;&lt;br /&gt;
&lt;br /&gt;
// Max subdivs&lt;br /&gt;
setAttr &amp;quot;vraySettings.ddisplac_maxSubdivs&amp;quot; 16;&lt;br /&gt;
&lt;br /&gt;
// Cache geometry and bitmaps&lt;br /&gt;
setAttr &amp;quot;vraySettings.globopt_cache_geom_plugins&amp;quot; 1;&lt;br /&gt;
setAttr &amp;quot;vraySettings.globopt_cache_bitmaps&amp;quot; 1;&lt;br /&gt;
&lt;br /&gt;
// Dynamic memory limit&lt;br /&gt;
setAttr &amp;quot;vraySettings.sys_rayc_dynMemLimit&amp;quot; 0;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
////////////////////////////////////////////&lt;br /&gt;
// IMPORT&lt;br /&gt;
&lt;br /&gt;
// IMPORT LIGHT RIG&lt;br /&gt;
file -import -type $lightRigFileType  -ignoreVersion -mergeNamespacesOnClash false -rpr &amp;quot;:&amp;quot; -options &amp;quot;v=0;&amp;quot; $lightRigPath;&lt;br /&gt;
&lt;br /&gt;
// IMPORT ASSET&lt;br /&gt;
file -import -type $assetFileType  -ignoreVersion -mergeNamespacesOnClash false -rpr &amp;quot;:&amp;quot; -options &amp;quot;v=0;&amp;quot; $assetPath;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
// CREATE SETS&lt;br /&gt;
select `ls -type &amp;quot;mesh&amp;quot;`;&lt;br /&gt;
sets -name &amp;quot;assetOriginal_Set&amp;quot; ;&lt;br /&gt;
duplicate -rr;&lt;br /&gt;
group -w -n (&amp;quot;GRP_&amp;quot; + $assetName + &amp;quot;_BAKE_&amp;quot; + `toupper $lightRigName`);&lt;br /&gt;
sets -name &amp;quot;assetBaked_Set&amp;quot; ;&lt;br /&gt;
&lt;br /&gt;
// REMOVE BAKED PARTS FROM ORIGINAL PARTS SET&lt;br /&gt;
select -r assetBaked_Set ;&lt;br /&gt;
string $selection[] = `ls -sl`;&lt;br /&gt;
string $polyGons[] = `filterExpand -sm 12 $selection`;&lt;br /&gt;
select -r $polyGons;&lt;br /&gt;
pickWalk -d down;&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    sets -rm assetOriginal_Set $object;&lt;br /&gt;
}&lt;br /&gt;
select -cl  ;&lt;br /&gt;
&lt;br /&gt;
// DELETE HIDDEN OBJECTS&lt;br /&gt;
select -r assetBaked_Set ;&lt;br /&gt;
string $selection[] = `ls -sl`;&lt;br /&gt;
string $polyGons[] = `filterExpand -sm 12 $selection`;&lt;br /&gt;
select -r $polyGons;&lt;br /&gt;
for ( $object in `ls -sl` ) {&lt;br /&gt;
    $vis = getAttr ($object+&amp;quot;.visibility&amp;quot;);&lt;br /&gt;
    if ($vis == 0){&lt;br /&gt;
        select -r $object ;&lt;br /&gt;
        doDelete ;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
select -cl  ;&lt;br /&gt;
&lt;br /&gt;
// fixShapeName - Thanks to Pinkwerks&lt;br /&gt;
global proc&lt;br /&gt;
fixShapeName()&lt;br /&gt;
{&lt;br /&gt;
    string $me = &amp;quot;fixShapeName&amp;quot;;&lt;br /&gt;
    string $shape;&lt;br /&gt;
    string $newShapeName;&lt;br /&gt;
    string $parent;&lt;br /&gt;
    string $tmpA[];&lt;br /&gt;
	string $selectedShapes[] = `ls -sl -l`;&lt;br /&gt;
    int $sizeOfShapes = `size $selectedShapes`;&lt;br /&gt;
&lt;br /&gt;
    if ( $sizeOfShapes == 0 )&lt;br /&gt;
    	error($me + &amp;quot; : Nothing shapes to process!&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
    for ( $shape in $selectedShapes )&lt;br /&gt;
    {&lt;br /&gt;
    	$tmpA = `listRelatives -p $shape`;&lt;br /&gt;
		$parent = $tmpA[0];&lt;br /&gt;
		$newShapeName = ($parent + &amp;quot;Shape&amp;quot;);&lt;br /&gt;
		rename $shape $newShapeName;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// APPLY FIXSHAPENAME TO BAKED ASSET PARTS&lt;br /&gt;
select -r assetBaked_Set ;&lt;br /&gt;
string $selection[] = `ls -sl`;&lt;br /&gt;
string $polyGons[] = `filterExpand -sm 12 $selection`;&lt;br /&gt;
select -r $polyGons;&lt;br /&gt;
pickWalk -d down;&lt;br /&gt;
fixShapeName();&lt;br /&gt;
select -cl  ;&lt;br /&gt;
&lt;br /&gt;
// DELETE OBJECTS WITHOUT UVS&lt;br /&gt;
select -r assetBaked_Set ;&lt;br /&gt;
string $selection[] = `ls -sl`;&lt;br /&gt;
string $polyGons[] = `filterExpand -sm 12 $selection`;&lt;br /&gt;
select -r $polyGons;&lt;br /&gt;
for ( $object in `ls -sl` ) {&lt;br /&gt;
    int $vertexCount[] = `polyEvaluate -uv $object`;&lt;br /&gt;
    print $vertexCount;&lt;br /&gt;
    string $uvCount = $vertexCount[0];&lt;br /&gt;
    if ($uvCount == 0){&lt;br /&gt;
        select -r $object ;&lt;br /&gt;
        doDelete ;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// CREATE VRAY BAKE OPTIONS&lt;br /&gt;
createNode &amp;quot;VRayBakeOptions&amp;quot; -n &amp;quot;vrayBakeOptions&amp;quot;;&lt;br /&gt;
select -r assetBaked_Set ;&lt;br /&gt;
string $selection[] = `ls -sl`;&lt;br /&gt;
string $polyGons[] = `filterExpand -sm 12 $selection`;&lt;br /&gt;
select -r $polyGons;&lt;br /&gt;
$selected=`ls -sl`;&lt;br /&gt;
for ($object in $selected){&lt;br /&gt;
    sets -edit -forceElement  vrayBakeOptions $object ;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// HIDE ORIGINAL ASSET&lt;br /&gt;
select -r assetOriginal_Set ;&lt;br /&gt;
pickWalk -d up;&lt;br /&gt;
hide `ls -sl`;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
// BAKE VRAY OPTIONS&lt;br /&gt;
setAttr &amp;quot;vrayBakeOptions.udimBaking&amp;quot; 1;&lt;br /&gt;
setAttr &amp;quot;vrayBakeOptions.resolutionX&amp;quot; $resWidth;&lt;br /&gt;
&lt;br /&gt;
optionVar -intValue &amp;quot;vrayBakeType&amp;quot; 2;&lt;br /&gt;
optionVar -intValue &amp;quot;vraySkipNodesWithoutBakeOptions&amp;quot; 1;&lt;br /&gt;
optionVar -intValue &amp;quot;vrayAssignBakedTextures&amp;quot; 1;&lt;br /&gt;
optionVar -stringValue &amp;quot;vrayBakeOutputPath&amp;quot; $bakedTexturesPath;&lt;br /&gt;
optionVar -intValue &amp;quot;vrayBakeProjectionBaking&amp;quot; 0;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
// GO BAKE GO&lt;br /&gt;
select -cl  ;&lt;br /&gt;
select -r assetBaked_Set ;&lt;br /&gt;
string $selection[] = `ls -sl`;&lt;br /&gt;
string $polyGons[] = `filterExpand -sm 12 $selection`;&lt;br /&gt;
select -r $polyGons;&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    vrayStartBake;&lt;br /&gt;
}&lt;br /&gt;
select -cl  ;&lt;br /&gt;
&lt;br /&gt;
// UV TILING UDIM AND ACES CG FOR FILES&lt;br /&gt;
for ( $object in `ls -type &amp;quot;file&amp;quot;` ) {&lt;br /&gt;
    setAttr ($object + &amp;quot;.filterType&amp;quot;) 0;&lt;br /&gt;
    setAttr ($object + &amp;quot;.uvTilingMode&amp;quot;) 3;&lt;br /&gt;
    setAttr ($object + &amp;quot;.cs&amp;quot;) -type &amp;quot;string&amp;quot; $fileColorSpace;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// CONNECT SHADERS&lt;br /&gt;
select -cl  ;&lt;br /&gt;
select -r assetBaked_Set ;&lt;br /&gt;
string $selection[] = `ls -sl`;&lt;br /&gt;
string $polyGons[] = `filterExpand -sm 12 $selection`;&lt;br /&gt;
for ( $object in $polyGons ) {&lt;br /&gt;
    string $shadingGroupName = ($object + &amp;quot;Shape_bakedmtlSG&amp;quot;);&lt;br /&gt;
    sets -e -forceElement $shadingGroupName $object;&lt;br /&gt;
}&lt;br /&gt;
select -cl  ;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
///////////////////////////////////&lt;br /&gt;
// SAVE&lt;br /&gt;
file -rename (&amp;quot;C:/YOUR_PATH/BAKED_ASSETS/&amp;quot; + $assetName + &amp;quot;_&amp;quot; + $lightRigName + &amp;quot;_BAKE_DEBUG.mb&amp;quot;);&lt;br /&gt;
file -f -save;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Arnold - Set all Standins display on Bouding box ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$selected=`ls -type &amp;quot;aiStandIn&amp;quot;`;&lt;br /&gt;
for ($object in $selected){&lt;br /&gt;
    setAttr ($object + &amp;quot;.mode&amp;quot;) 0;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Arnold - Set all Standins display on Point cloud ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$selected=`ls -type &amp;quot;aiStandIn&amp;quot;`;&lt;br /&gt;
for ($object in $selected){&lt;br /&gt;
    setAttr ($object + &amp;quot;.mode&amp;quot;) 4;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Alembic - Loop animation on all nodes ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$selected=`ls -type &amp;quot;AlembicNode&amp;quot;`;&lt;br /&gt;
for ($object in $selected){&lt;br /&gt;
    setAttr ($object + &amp;quot;.cycleType&amp;quot;) 1;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Mental Ray nodes error - Delete Mayatomr plugin ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
unknownPlugin -remove &amp;quot;Mayatomr&amp;quot;;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Delete Unknown nodes ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
select -r `ls -type unknown`;&lt;br /&gt;
delete;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Write text ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
string $exampleFileName = ( &amp;quot;D:/yolo.bat&amp;quot; );&lt;br /&gt;
string $linesToWrite[] = {&lt;br /&gt;
    &amp;quot;youpi&amp;quot;,&lt;br /&gt;
    &amp;quot;youhou&amp;quot;&lt;br /&gt;
    };&lt;br /&gt;
int $result = fwriteAllLines($exampleFileName,$linesToWrite);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Point Lock No Attach on selected follicles ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    setAttr ($object + &amp;quot;.pointLock&amp;quot;) 0;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Convert .ma cameras from Reality Capture into .abc files ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// List of assets&lt;br /&gt;
string $fileParts[] = {&amp;quot;asset_001&amp;quot;, &amp;quot;asset_002&amp;quot;};&lt;br /&gt;
&lt;br /&gt;
// Replace the PATH of your files&lt;br /&gt;
for ($filePart in $fileParts){&lt;br /&gt;
	string $fileName = $filePart + &amp;quot;_cam&amp;quot;;&lt;br /&gt;
	string $filePath = &amp;quot;//DISK/PATH/&amp;quot; + $filePart + &amp;quot;/&amp;quot; + $filePart +&amp;quot;_cam.ma&amp;quot;;&lt;br /&gt;
	file -import -type &amp;quot;mayaAscii&amp;quot;  -ignoreVersion -ra true -mergeNamespacesOnClash false -rpr $fileName -options &amp;quot;v=0;p=17;f=0&amp;quot;  -pr  -importFrameRate true  -importTimeRange &amp;quot;override&amp;quot; $filePath;&lt;br /&gt;
	select -cl;&lt;br /&gt;
	select `ls -type &amp;quot;imagePlane&amp;quot;`;&lt;br /&gt;
	pickWalk -d up;&lt;br /&gt;
	doDelete;&lt;br /&gt;
	select `ls -type &amp;quot;camera&amp;quot;`;&lt;br /&gt;
	pickWalk -d up;	&lt;br /&gt;
	string $abcPath = &amp;quot;//DISK/PATH/&amp;quot; + $filePart + &amp;quot;/&amp;quot; + $filePart +&amp;quot;_cam.abc&amp;quot;;&lt;br /&gt;
	string $abcExp = &amp;quot;-frameRange 1 1 -uvWrite -worldSpace -dataFormat ogawa -root |* -file &amp;quot; + $abcPath;&lt;br /&gt;
	AbcExport -j $abcExp;&lt;br /&gt;
	select -all;&lt;br /&gt;
	doDelete;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Combine objects ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select objects&lt;br /&gt;
&lt;br /&gt;
polyPerformAction polyUnite o 0; &lt;br /&gt;
DeleteHistory;&lt;br /&gt;
FreezeTransformations;&lt;br /&gt;
makeIdentity -apply true -t 1 -r 1 -s 1 -n 0 -pn 1;&lt;br /&gt;
CenterPivot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Unitize UVs (one square UV by face) ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select objects&lt;br /&gt;
&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    select -r ($object+&amp;quot;.e[*]&amp;quot;);&lt;br /&gt;
    hilite ($object+&amp;quot;.e[*]&amp;quot;) ;&lt;br /&gt;
    polyMapCut -ch 1 ($object+&amp;quot;.e[*]&amp;quot;);&lt;br /&gt;
    polyForceUV -unitize $object;&lt;br /&gt;
    select $object;&lt;br /&gt;
    DeleteHistory;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== ONE-CLICK Unfold UVs ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select seams edges first&lt;br /&gt;
&lt;br /&gt;
invertSelection;&lt;br /&gt;
string $selectedEdges [] = `ls -sl`;&lt;br /&gt;
&lt;br /&gt;
string $selectedObject [] = `ls -selection -objectsOnly`;&lt;br /&gt;
&lt;br /&gt;
select -r ($selectedObject[0]+&amp;quot;.e[*]&amp;quot;);&lt;br /&gt;
hilite ($selectedObject[0]+&amp;quot;.e[*]&amp;quot;) ;&lt;br /&gt;
polyMapCut -ch 1 ($selectedObject[0]+&amp;quot;.e[*]&amp;quot;);&lt;br /&gt;
polyForceUV -unitize $selectedObject[0];&lt;br /&gt;
&lt;br /&gt;
select $selectedObject[0];&lt;br /&gt;
polyMapSewMove -nf 10 -lps 0 -ch 1 $selectedEdges;&lt;br /&gt;
select -r ($selectedObject[0]+&amp;quot;.map[*]&amp;quot;);&lt;br /&gt;
u3dUnfold -ite 1 -p 0 -bi 1 -tf 1 -ms 1024 -rs 0 ($selectedObject[0]+&amp;quot;.map[*]&amp;quot;);&lt;br /&gt;
u3dLayout -res 256 -scl 1 -spc 0.001 -mar 0.01 -box 0 1 0 1 $selectedObject[0];&lt;br /&gt;
select $selectedObject[0];&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Create Texture Reference on all shapes from a group ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select top group first&lt;br /&gt;
&lt;br /&gt;
string $selection[] = `ls -sl`;&lt;br /&gt;
string $polyGons[] = `filterExpand -sm 12 $selection`;&lt;br /&gt;
&lt;br /&gt;
for ($i = 0; $i &amp;lt; size($polyGons); $i ++)&lt;br /&gt;
{&lt;br /&gt;
    select -r $polyGons[$i] ;&lt;br /&gt;
    CreateTextureReferenceObject;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
select -r $selection;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Search and select by name ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// If you want to select every object containing &amp;quot;tree&amp;quot;&lt;br /&gt;
// From NaughtyNathan on CGTalk&lt;br /&gt;
&lt;br /&gt;
select -r &amp;quot;*tree*&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
// And if you want to select only transforms containing &amp;quot;tree&amp;quot;&lt;br /&gt;
&lt;br /&gt;
select `ls -type &amp;quot;transform&amp;quot; &amp;quot;*tree*&amp;quot;`;&lt;br /&gt;
&lt;br /&gt;
// And if you are using namespace, you need:&lt;br /&gt;
&lt;br /&gt;
select -r `ls -r 1 &amp;quot;*tree*&amp;quot;`;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Search and select UI ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
window -t &amp;quot;Search and Select&amp;quot;;&lt;br /&gt;
columnLayout;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
frameLayout -mh 10 -mw 10 -l &amp;quot;&amp;quot; ;&lt;br /&gt;
&lt;br /&gt;
textField  -text TOTO -w 200 &amp;quot;requestTransform&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
proc searchSelectTransform() {&lt;br /&gt;
    string $what = (&amp;quot;*&amp;quot; + `textField -q -text &amp;quot;requestTransform&amp;quot;` + &amp;quot;*&amp;quot;);&lt;br /&gt;
    select -r `ls -type &amp;quot;transform&amp;quot; -r 1 $what`;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
button -label &amp;quot;Search and select Transforms&amp;quot; -command &amp;quot;searchSelectTransform&amp;quot;;&lt;br /&gt;
setParent..;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
frameLayout -mh 10 -mw 10 -l &amp;quot;&amp;quot; ;&lt;br /&gt;
&lt;br /&gt;
textField  -text TOTO -w 200 &amp;quot;requestShape&amp;quot;;&lt;br /&gt;
		&lt;br /&gt;
proc searchSelectShape() {&lt;br /&gt;
    string $what = (&amp;quot;*&amp;quot; + `textField -q -text &amp;quot;requestShape&amp;quot;` + &amp;quot;*&amp;quot;);&lt;br /&gt;
    select -r `ls -type &amp;quot;shape&amp;quot; -r 1 $what`;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
button -label &amp;quot;Search and select Shapes&amp;quot; -command &amp;quot;searchSelectShape&amp;quot;;&lt;br /&gt;
setParent..;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
frameLayout -mh 10 -mw 10 -l &amp;quot;&amp;quot; ;&lt;br /&gt;
&lt;br /&gt;
textField  -text TOTO -w 200 &amp;quot;requestAny&amp;quot;;&lt;br /&gt;
		&lt;br /&gt;
proc searchSelectAny() {&lt;br /&gt;
    string $what = (&amp;quot;*&amp;quot; + `textField -q -text &amp;quot;requestAny&amp;quot;` + &amp;quot;*&amp;quot;);&lt;br /&gt;
    select -r `ls -r 1 $what`;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
button -label &amp;quot;Search and select any type&amp;quot; -command &amp;quot;searchSelectAny&amp;quot;;&lt;br /&gt;
setParent..;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
frameLayout -mh 10 -mw 10 -l &amp;quot;&amp;quot; ;&lt;br /&gt;
&lt;br /&gt;
textField  -text TOTO -w 200 &amp;quot;requestCtrls&amp;quot;;&lt;br /&gt;
		&lt;br /&gt;
proc searchSelectCtrls() {&lt;br /&gt;
    string $what = (&amp;quot;*&amp;quot; + `textField -q -text &amp;quot;requestCtrls&amp;quot;` + &amp;quot;*&amp;quot;);&lt;br /&gt;
    select -r `ls -type &amp;quot;nurbsCurve&amp;quot; -r 1 $what`;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
button -label &amp;quot;Search and select Ctrls&amp;quot; -command &amp;quot;searchSelectCtrls&amp;quot;;&lt;br /&gt;
setParent..;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
frameLayout -mh 10 -mw 10 -l &amp;quot;&amp;quot; ;&lt;br /&gt;
&lt;br /&gt;
textField  -text TOTO -w 200 &amp;quot;requestJoints&amp;quot;;&lt;br /&gt;
		&lt;br /&gt;
proc searchSelectJoints() {&lt;br /&gt;
    string $what = (&amp;quot;*&amp;quot; + `textField -q -text &amp;quot;requestJoints&amp;quot;` + &amp;quot;*&amp;quot;);&lt;br /&gt;
    select -r `ls -type &amp;quot;joint&amp;quot; -r 1 $what`;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
button -label &amp;quot;Search and select Joints&amp;quot; -command &amp;quot;searchSelectJoints&amp;quot;;&lt;br /&gt;
setParent..;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
showWindow;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Walter</name></author>
		
	</entry>
	<entry>
		<id>http://antoinevienne.fr/wiki/index.php?title=Maya_Mel&amp;diff=265</id>
		<title>Maya Mel</title>
		<link rel="alternate" type="text/html" href="http://antoinevienne.fr/wiki/index.php?title=Maya_Mel&amp;diff=265"/>
		<updated>2023-10-04T14:38:48Z</updated>

		<summary type="html">&lt;p&gt;Walter: /* Search and select by name */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Maya Mels Scripts=&lt;br /&gt;
=== Octane Render Baking group id - Assign id to multiple objects shapes ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// 0 is for Red, 2 for Green, 4 for Blue&lt;br /&gt;
// 3, 5 and 6 for Cyan, Magenta and Yellow&lt;br /&gt;
// Replace the number &amp;quot;0&amp;quot; by the number of your choice&lt;br /&gt;
// Baking group id is also avalaible in Attribute Spreadsheet Editor&lt;br /&gt;
&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    print($object+&amp;quot;\n&amp;quot;);&lt;br /&gt;
    setAttr ($object + &amp;quot;.octBakGrId&amp;quot;) (0);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Maxwell Render - Particles sequence - Force .abc file ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
//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&lt;br /&gt;
&lt;br /&gt;
global int $current_frame;&lt;br /&gt;
$current_frame = `currentTime -query`;&lt;br /&gt;
print $current_frame;&lt;br /&gt;
{&lt;br /&gt;
setAttr -type &amp;quot;string&amp;quot; maxwellRFRKParticles1.file (&amp;quot;/YOUR_PATH/YOUR_FILE&amp;quot; + $current_frame + &amp;quot;.abc&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Maxwell Render - Specify object ID color ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Specify object ID color&lt;br /&gt;
&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    print($object+&amp;quot;\n&amp;quot;);&lt;br /&gt;
    setAttr ($object + &amp;quot;.mxSpecifyObjIdColor&amp;quot;) (1);&lt;br /&gt;
    setAttr ($object + &amp;quot;.mxObjIdColor&amp;quot;) -type &amp;quot;double3&amp;quot; 1 0 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Redshift - Add blend attribute and set random value for objects selection ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Useful for blending between colors with RedshiftUserDataScalar&lt;br /&gt;
&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    print($object);&lt;br /&gt;
    addAttr -ln &amp;quot;blend&amp;quot; -at double  -min 0 -max 1 -dv 0 $object;&lt;br /&gt;
    setAttr ($object + &amp;quot;.blend&amp;quot;) (rand(1));&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Redshift - Set Primary visibility off for selection (layer override) ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Go in right render layer and select objects&lt;br /&gt;
&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    print($object+&amp;quot;\n&amp;quot;);&lt;br /&gt;
    setAttr ($object + &amp;quot;.rsEnableVisibilityOverrides&amp;quot;) (1);&lt;br /&gt;
    editRenderLayerAdjustment ($object + &amp;quot;.rsPrimaryRayVisible&amp;quot;);&lt;br /&gt;
    setAttr ($object + &amp;quot;.rsPrimaryRayVisible&amp;quot;) (0);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Convert Motion trail to curve ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select the motion trail first&lt;br /&gt;
&lt;br /&gt;
{&lt;br /&gt;
$selected=`ls -dag -et snapshotShape`;&lt;br /&gt;
for ($obj in $selected){&lt;br /&gt;
$pts=(getAttr($obj+&amp;quot;.pts&amp;quot;));&lt;br /&gt;
$size=size($pts);&lt;br /&gt;
$curve=`curve -d 1 -p $pts[0] $pts[1] $pts[2] -p $pts[4] $pts[5] $pts[6] -k 0 -k 1`;&lt;br /&gt;
for($i=8;$i&amp;lt;$size;$i+=4)&lt;br /&gt;
curve -os -a -p $pts[$i] $pts[$i+1] $pts[$i+2] $curve ;&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Quantize keyframes for selection ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Snap keys on frames for objects selection&lt;br /&gt;
&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    print($object+&amp;quot;\n&amp;quot;);&lt;br /&gt;
    snapKey $object;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Loop image sequence for texture ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// On File texture, check Image sequence, and edit expression&lt;br /&gt;
&lt;br /&gt;
file1.frameExtension=((frame%8)+1);&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Symmetrize - Duplicate &amp;amp; merge object ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select half object first&lt;br /&gt;
&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    print($object+&amp;quot;\n&amp;quot;);&lt;br /&gt;
    xform -piv 0 0 0 $object;&lt;br /&gt;
    duplicate -rr;&lt;br /&gt;
    setAttr ($object + &amp;quot;.scaleX&amp;quot;) (-1);&lt;br /&gt;
    select -add $object ;&lt;br /&gt;
    polyPerformAction polyUnite o 0;&lt;br /&gt;
    polyMergeVertex  -d 0.0001 -am 1 -ch 1;&lt;br /&gt;
    DeleteHistory;&lt;br /&gt;
    rename ($object);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Mirror object ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select object first&lt;br /&gt;
&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    print($object+&amp;quot;\n&amp;quot;);&lt;br /&gt;
    DeleteHistory;&lt;br /&gt;
    makeIdentity -apply true -t 1 -r 1 -s 1 -n 0 -pn 1;&lt;br /&gt;
    xform -piv 0 0 0 $object;&lt;br /&gt;
    duplicate -rr;&lt;br /&gt;
    setAttr ($object + &amp;quot;.scaleX&amp;quot;) (-1);&lt;br /&gt;
    DeleteHistory;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Group each object and rename ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select objects first&lt;br /&gt;
&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    string $name = ($object);&lt;br /&gt;
    select $object ;&lt;br /&gt;
    doGroup 0 1 1;&lt;br /&gt;
    rename ($name + &amp;quot;_GRP&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Change path in an Attribute ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Here the Attribute is &amp;quot;.filePrefix&amp;quot; - Select objects first&lt;br /&gt;
&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    string $path = getAttr ($object+&amp;quot;.filePrefix&amp;quot;);&lt;br /&gt;
    $path = `substitute &amp;quot;//OLD/PATH/&amp;quot; $path &amp;quot;//NEW/PATH/&amp;quot;`;&lt;br /&gt;
    setAttr -type &amp;quot;string&amp;quot; ($object+&amp;quot;.filePrefix&amp;quot;) ($path);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Change opacity mode on V-Ray shaders ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select shaders first&lt;br /&gt;
&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    if (attributeExists(&amp;quot;omode&amp;quot;,$object)) { //check if attribute exists&lt;br /&gt;
        CBunlockAttr ($object+&amp;quot;.omode&amp;quot;); //unlock opacity mode&lt;br /&gt;
    }&lt;br /&gt;
    if (attributeExists(&amp;quot;opacityMode&amp;quot;,$object)) {&lt;br /&gt;
        setAttr ($object+&amp;quot;.opacityMode&amp;quot;) 1; //set opacity mode in Clip - 0 pour Normal&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// Alternative&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    if (attributeExists(&amp;quot;opacityMode&amp;quot;,$object)) {&lt;br /&gt;
        setAttr ($object+&amp;quot;.opacityMode&amp;quot;) -l false; //unlock attribute if locked&lt;br /&gt;
    }&lt;br /&gt;
    if (attributeExists(&amp;quot;opacityMode&amp;quot;,$object)) {&lt;br /&gt;
        setAttr ($object+&amp;quot;.opacityMode&amp;quot;) 2; //set opacity mode in Clip - 0 pour Normal&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Change color space on selected fileTextures ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Useful to automatically convert Quixel Megascans by example from sRGB/Raw to ACES color spaces&lt;br /&gt;
&lt;br /&gt;
string $object_selection[] = (`ls -sl`);&lt;br /&gt;
for ($object in $object_selection) {&lt;br /&gt;
    if(`getAttr ($object+&amp;quot;.cs&amp;quot;)` == &amp;quot;sRGB&amp;quot;){&lt;br /&gt;
        setAttr ($object + &amp;quot;.cs&amp;quot;) -type &amp;quot;string&amp;quot; &amp;quot;Utility - sRGB - Texture&amp;quot;;&lt;br /&gt;
    }&lt;br /&gt;
    if(`getAttr ($object+&amp;quot;.cs&amp;quot;)` == &amp;quot;Raw&amp;quot;){&lt;br /&gt;
        setAttr ($object + &amp;quot;.cs&amp;quot;) -type &amp;quot;string&amp;quot; &amp;quot;Utility - Raw&amp;quot;;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Redshift - custom Tesselation on selected objects ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select objects first&lt;br /&gt;
&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    print($object+&amp;quot;\n&amp;quot;);&lt;br /&gt;
    setAttr ($object + &amp;quot;.rsMinTessellationLength&amp;quot;) (0.1);&lt;br /&gt;
    setAttr ($object + &amp;quot;.rsMaxTessellationSubdivs&amp;quot;) (2);&lt;br /&gt;
    setAttr ($object + &amp;quot;.rsOutOfFrustumTessellationFactor&amp;quot;) (4);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Change color on selected shaders ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select shaders first&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    print($object+&amp;quot;\n&amp;quot;);&lt;br /&gt;
    setAttr ($object + &amp;quot;.color&amp;quot;) -l false;&lt;br /&gt;
    setAttr ($object + &amp;quot;.color&amp;quot;) -type &amp;quot;double3&amp;quot; (0.18) (0.18) (0.18);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Change Filter Type on selected Files Textures ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select files textures first - 0 means Off&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    print($object+&amp;quot;\n&amp;quot;);&lt;br /&gt;
    setAttr ($object + &amp;quot;.filterType&amp;quot;) 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Clean Render Layers ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// In MEL&lt;br /&gt;
fixRenderLayerOutAdjustmentErrors;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Change Filter Type on selected Files Textures ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select files textures first - 0 means Off&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    print($object+&amp;quot;\n&amp;quot;);&lt;br /&gt;
    setAttr ($object + &amp;quot;.filterType&amp;quot;) 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Select by name ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select objects with &amp;quot;toto&amp;quot;&lt;br /&gt;
select -r &amp;quot;toto*&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Display color on shapes ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select objects&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    print($object+&amp;quot;\n&amp;quot;);&lt;br /&gt;
    setAttr ($object + &amp;quot;.displayColors&amp;quot;) 1;&lt;br /&gt;
    setDisplayColorChannelAttribute ($object + &amp;quot;.displayColorChannel&amp;quot;);&lt;br /&gt;
    polyColorPerVertex -r 1 -g 0 -b 0 -a 1 -cdo;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Geometry Constraint on multiple selection ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select objects to constrain&lt;br /&gt;
string $objectBase = &amp;quot;surfaceName&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    select -cl;&lt;br /&gt;
    select $objectBase;&lt;br /&gt;
    select -add $object;&lt;br /&gt;
    geometryConstraint -weight 1;&lt;br /&gt;
    select -r &amp;quot;*Constraint*&amp;quot;;&lt;br /&gt;
    doDelete;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
=== Speed up smokes rendering with V-Ray ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select smokes first&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    print($object+&amp;quot;\n&amp;quot;);&lt;br /&gt;
    setAttr ($object + &amp;quot;.rendStep&amp;quot;) 160;&lt;br /&gt;
    setAttr ($object + &amp;quot;.shadowStep&amp;quot;) 400;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Set bump multiplier on multiple V-Ray shaders ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select shaders&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    if (attributeExists(&amp;quot;bumpMult&amp;quot;,$object)) {&lt;br /&gt;
        setAttr ($object + &amp;quot;.bumpMult&amp;quot;) -1; //set bump multiplier at -1&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== STOP/START viewport ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// As seen on https://www.toadstorm.com/. - Put it in your shelf&lt;br /&gt;
paneLayout -e -manage false $gMainPane&lt;br /&gt;
&lt;br /&gt;
paneLayout -e -manage true $gMainPane&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Select curves by name ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select objects first - Replace &amp;quot;toto&amp;quot; by what you are looking for&lt;br /&gt;
&lt;br /&gt;
select `ls -type &amp;quot;nurbsCurve&amp;quot; &amp;quot;*toto*&amp;quot;`;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Noise expression ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Replace &amp;quot;pCube1&amp;quot;&lt;br /&gt;
&lt;br /&gt;
pCube1.translateX=sin(time*20)*0.01*noise(time*10);&lt;br /&gt;
pCube1.translateY=sin(time*4)*0.01*noise(time*10);&lt;br /&gt;
pCube1.translateZ=sin(time*12)*0.01*noise(time*10);&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== V-ray - Make curves renderables ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Replace VRayLightMtl1 at the end by your material&lt;br /&gt;
&lt;br /&gt;
$selected=`ls -dag -et curveShape`;&lt;br /&gt;
for ($object in $selected){&lt;br /&gt;
    // Add V-ray Extra attributes&lt;br /&gt;
    vray addAttributesFromGroup $object vray_nurbscurve_renderable 1;&lt;br /&gt;
    vrayAddAttr $object vraySeparator_vray_nurbscurve_renderable;&lt;br /&gt;
    vrayAddAttr $object vrayNurbsCurveRenderable;&lt;br /&gt;
    vrayAddAttr $object vrayNurbsCurveMaterial;&lt;br /&gt;
    vrayAddAttr $object vrayNurbsCurveTesselation;&lt;br /&gt;
    vrayAddAttr $object vrayNurbsCurveStartWidth;&lt;br /&gt;
    vrayAddAttr $object vrayNurbsCurveLockEndWidth;&lt;br /&gt;
    vrayAddAttr $object vrayNurbsCurveEndWidth;&lt;br /&gt;
    setUITemplate -pst attributeEditorTemplate;&lt;br /&gt;
// Activate renderable&lt;br /&gt;
setAttr ($object + &amp;quot;.vrayNurbsCurveRenderable&amp;quot;) 1;&lt;br /&gt;
// Replace VRayLightMtl1 by your material&lt;br /&gt;
connectAttr -force VRayLightMtl1.outColor ($object + &amp;quot;.vrayNurbsCurveMaterial&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Get object type ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Replace toto with the object whose type you want to know&lt;br /&gt;
&lt;br /&gt;
objectType toto;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Render layer override on specific object type ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Replace &amp;quot;Node&amp;quot; by the object type on which you want to act&lt;br /&gt;
&lt;br /&gt;
$selected=`ls -type &amp;quot;Node&amp;quot;`;&lt;br /&gt;
for ($object in $selected){&lt;br /&gt;
    // Create layer override on Primary Visibility attribute on current renderLayer&lt;br /&gt;
    editRenderLayerAdjustment ($object + &amp;quot;.primaryVisibility&amp;quot;);&lt;br /&gt;
    // Set Primary Visibility - 0 or 1&lt;br /&gt;
    setAttr ($object + &amp;quot;.primaryVisibility&amp;quot;) 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== V-ray - Make lights invisible ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$selected=`ls -type &amp;quot;VRayLightRectShape&amp;quot;`;&lt;br /&gt;
for ($object in $selected){&lt;br /&gt;
    setAttr ($object + &amp;quot;.invisible&amp;quot;) 1;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
$selected=`ls -type &amp;quot;VRayLightSphereShape&amp;quot;`;&lt;br /&gt;
for ($object in $selected){&lt;br /&gt;
    setAttr ($object + &amp;quot;.invisible&amp;quot;) 1;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
$selected=`ls -type &amp;quot;VRayLightDomeShape&amp;quot;`;&lt;br /&gt;
for ($object in $selected){&lt;br /&gt;
    setAttr ($object + &amp;quot;.invisible&amp;quot;) 1;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== V-ray - Select Rect Light ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
select `ls -type &amp;quot;VRayLightRectShape&amp;quot;`;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== V-ray - Rect Lights - Directional Preview - Always for all ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$selected=`ls -type &amp;quot;VRayLightRectShape&amp;quot;`;&lt;br /&gt;
for ($object in $selected){&lt;br /&gt;
    setAttr ($object + &amp;quot;.directionalPreview&amp;quot;) 1;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Randomize rotation on selected objects ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// As posted on CGTalk by NaughtyNathan&lt;br /&gt;
// &amp;quot;just set the vector values to the maximum random x,y,z rotations you want to apply to the selected transforms.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
vector $rndRot = &amp;lt;&amp;lt; 0,0,90 &amp;gt;&amp;gt;;	// x,y,z rotations&lt;br /&gt;
for ($object in `ls -sl -tr`){&lt;br /&gt;
    rotate `rand ($rndRot.x)` `rand ($rndRot.y)` `rand ($rndRot.z)` $object;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Quit Maya ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Brute force method&lt;br /&gt;
&lt;br /&gt;
$i = `getpid`; //application ID&lt;br /&gt;
    system(&amp;quot;taskkill /PID &amp;quot;  + $i +&amp;quot; /f&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
// In a gentle way&lt;br /&gt;
&lt;br /&gt;
evalDeferred(&amp;quot;quit -f&amp;quot;);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== V-ray - Import list of Alembics through Proxys Import ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// List of Alembics files - Replace by the name of your Alembics&lt;br /&gt;
string $alembicsParts[] = {&amp;quot;part1&amp;quot;,&amp;quot;part2&amp;quot;,&amp;quot;part3&amp;quot;};&lt;br /&gt;
&lt;br /&gt;
// Replace the PATH of your files - Scale by 100 for Houdini Alembics - &amp;lt;frame04&amp;gt; for sequences&lt;br /&gt;
for ($alembicsPart in $alembicsParts){&lt;br /&gt;
    vrayCreateProxy -node $alembicsPart -existing -dir (&amp;quot;C:/YOURPATH/&amp;quot;+$alembicsPart+&amp;quot;.&amp;lt;frame04&amp;gt;.abc&amp;quot;) -createProxyNode;&lt;br /&gt;
    setAttr ($alembicsPart+&amp;quot;_vraymesh.animType&amp;quot;) 1;&lt;br /&gt;
    setAttr ($alembicsPart+&amp;quot;.scaleZ&amp;quot;) 100;&lt;br /&gt;
    setAttr ($alembicsPart+&amp;quot;.scaleX&amp;quot;) 100;&lt;br /&gt;
    setAttr ($alembicsPart+&amp;quot;.scaleY&amp;quot;) 100;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== V-ray - Change path to VRayMesh for selected proxies ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Change path with your own .vrmesh&lt;br /&gt;
$selected=`ls -type &amp;quot;VRayMesh&amp;quot;`;&lt;br /&gt;
for ($object in $selected){&lt;br /&gt;
    setAttr -type &amp;quot;string&amp;quot; ($object + &amp;quot;.fileName2&amp;quot;) &amp;quot;//DISK/PATH/YOUR_VRMESH.vrmesh&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// If you want to change Geometry type - 4 for GPU mesh - add following in the loop&lt;br /&gt;
//    setAttr ($object + &amp;quot;.geomType&amp;quot;) 4;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Delete image planes ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Delete image plane if exists.&lt;br /&gt;
$selected=`ls -type &amp;quot;imagePlane&amp;quot;`;&lt;br /&gt;
select $selected;&lt;br /&gt;
for ($object in $selected){&lt;br /&gt;
    doDelete;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Merge alembic from set ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select objects in a set called EXPORT_SET&lt;br /&gt;
select -r EXPORT_SET ;&lt;br /&gt;
timeControl -edit -forceRedraw $gPlayBackSlider;&lt;br /&gt;
&lt;br /&gt;
// Create list of objects from EXPORT_SET&lt;br /&gt;
string $assetParts[] = `ls -sl`;&lt;br /&gt;
$assetPartsList = stringArrayToString($assetParts,&amp;quot; &amp;quot;);&lt;br /&gt;
&lt;br /&gt;
// Merge alembic with these objects&lt;br /&gt;
AbcImport -mode import -connect $assetPartsList &amp;quot;//DISK/PATH/alembic.abc&amp;quot;;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Create Texture reference ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// CREATE TEXTURE REFERENCE ON EXPORT SET&lt;br /&gt;
&lt;br /&gt;
select -r YOUR_GROUP ;&lt;br /&gt;
CreateTextureReferenceObject;&lt;br /&gt;
select -cl  ;&lt;br /&gt;
&lt;br /&gt;
// REMOVE REFERENCE OBJECTS FROM EXPORT SET&lt;br /&gt;
select -r YOUR_GROUP_reference ;&lt;br /&gt;
string $selection[] = `ls -sl`;&lt;br /&gt;
string $polyGons[] = `filterExpand -sm 12 $selection`;&lt;br /&gt;
select -r $polyGons;&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    sets -rm EXPORT_SET $object;&lt;br /&gt;
}&lt;br /&gt;
select -cl  ;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Replace animated objects with V-Ray proxies ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// First select animated objects to replace&lt;br /&gt;
// For each object create a proxy then constrain then bake simulation then delete constraint&lt;br /&gt;
&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
	vrayCreateProxy -node assetName -existing -dir (&amp;quot;//DISK/PATH/your_asset.vrmesh&amp;quot;) -createProxyNode;&lt;br /&gt;
	select -r $object ;&lt;br /&gt;
	select -add assetName ;&lt;br /&gt;
	doCreateParentConstraintArgList 1 { &amp;quot;0&amp;quot;,&amp;quot;0&amp;quot;,&amp;quot;0&amp;quot;,&amp;quot;0&amp;quot;,&amp;quot;0&amp;quot;,&amp;quot;0&amp;quot;,&amp;quot;0&amp;quot;,&amp;quot;0&amp;quot;,&amp;quot;1&amp;quot;,&amp;quot;&amp;quot;,&amp;quot;1&amp;quot; };&lt;br /&gt;
	parentConstraint -weight 1;&lt;br /&gt;
	bakeResults -simulation true -t &amp;quot;1000:1100&amp;quot; -sampleBy 1 -oversamplingRate 1 -disableImplicitControl true -preserveOutsideKeys true -sparseAnimCurveBake false -removeBakedAttributeFromLayer false -removeBakedAnimFromLayer false -bakeOnOverrideLayer false -minimizeRotation true -controlPoints false -shape true {&amp;quot;assetName&amp;quot;};&lt;br /&gt;
	select `ls -type &amp;quot;constraint&amp;quot;`;&lt;br /&gt;
	select -add $object ;&lt;br /&gt;
	doDelete;&lt;br /&gt;
	select -cl  ;&lt;br /&gt;
	rename &amp;quot;assetName&amp;quot; $object;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Select all meshes in a group ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// From cmadsenAniden on forums.autodesk.com&lt;br /&gt;
// Replace group1 by the name of your own group&lt;br /&gt;
&lt;br /&gt;
select -r group1 ;&lt;br /&gt;
string $selection[] = `ls -sl`;&lt;br /&gt;
string $polyGons[] = `filterExpand -sm 12 $selection`;&lt;br /&gt;
select -r $polyGons;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Select shot camera ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// CREATE VARIABLE FOR SHOT CAMERA AND SELECT IT&lt;br /&gt;
&lt;br /&gt;
select `ls -type &amp;quot;camera&amp;quot;`;&lt;br /&gt;
select -d sideShape frontShape topShape perspShape;&lt;br /&gt;
$camerashot = `ls -sl`;&lt;br /&gt;
string $shotcamera = $camerashot[0];&lt;br /&gt;
print $shotcamera;&lt;br /&gt;
select $shotcamera;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Get list of frames with keys on all transform objects ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$selected=`ls -dag -et transform`;&lt;br /&gt;
&lt;br /&gt;
float $arrathy[] = `keyframe -query $selected`;&lt;br /&gt;
&lt;br /&gt;
float $sorted[] = python(&amp;quot;import pymel.core as pm; list(set((pm.getMelGlobal(\&amp;quot;float[]\&amp;quot;, \&amp;quot;$arrathy\&amp;quot;))))&amp;quot;);&lt;br /&gt;
print $sorted;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== MULTI SNAP ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Replace a list of objects by another with bake of animation. Replace FSTART and FEND with your own padding.&lt;br /&gt;
&lt;br /&gt;
///////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
///////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
/*&lt;br /&gt;
Type the command MS() in MEL form to open UI.&lt;br /&gt;
*/&lt;br /&gt;
///////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
///////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
source &amp;quot;generateChannelMenu.mel&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
global proc MS ()&lt;br /&gt;
{&lt;br /&gt;
     global string $sourceObjects;&lt;br /&gt;
     global string $destinationObjects;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    // If the window exists already, delete it.&lt;br /&gt;
    if (`window -exists multiSnapWindow`)&lt;br /&gt;
    {&lt;br /&gt;
        deleteUI multiSnapWindow;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    // Build the window.&lt;br /&gt;
    global string $man_window;&lt;br /&gt;
    string $man_window = `window -title &amp;quot; MULTI SNAP&amp;quot; -sizeable 0 -w 300 multiSnapWindow`;&lt;br /&gt;
    frameLayout -label &amp;quot;Snap source objects on destination objects.&amp;quot;;&lt;br /&gt;
    rowLayout -width 540 -nc 2 -cw4 10 20 20 100;&lt;br /&gt;
    // Source objects section&lt;br /&gt;
    frameLayout -label &amp;quot;Source objects&amp;quot;;&lt;br /&gt;
    $sourceObjects = `textScrollList -width 600 -height 300`;&lt;br /&gt;
    rowLayout -width 240 -nc 2 -cw2 120 120;&lt;br /&gt;
    button -label &amp;quot;Add selected&amp;quot; -command &amp;quot;MS_addObjects ();&amp;quot; -width 120;&lt;br /&gt;
    button -label &amp;quot;Remove selected&amp;quot; -command &amp;quot;MS_removeObjects ();&amp;quot; -width 120;&lt;br /&gt;
    setParent ..;&lt;br /&gt;
    rowLayout -width 240 -nc 2 -cw2 120 120;&lt;br /&gt;
    button -label &amp;quot;Remove All&amp;quot; -command &amp;quot;MS_clearObjects ();&amp;quot; -width 240;&lt;br /&gt;
    setParent ..;&lt;br /&gt;
    setParent ..;&lt;br /&gt;
    rowLayout -nc 3;&lt;br /&gt;
    button -label &amp;quot;Create&amp;quot; -command &amp;quot;VRAYCONNECDO() &amp;quot; -width 140 -align center;&lt;br /&gt;
    button -label &amp;quot;Close&amp;quot; -command &amp;quot;DAC_CloseUI() &amp;quot; -width 140 -align center;&lt;br /&gt;
    setParent ..;&lt;br /&gt;
    setParent ..;&lt;br /&gt;
    // Destination objects section&lt;br /&gt;
    frameLayout -label &amp;quot;Destination objects&amp;quot;;&lt;br /&gt;
    $destinationObjects = `textScrollList -width 600 -height 300`;&lt;br /&gt;
    rowLayout -width 240 -nc 2 -cw2 120 120;&lt;br /&gt;
    button -label &amp;quot;Add selected&amp;quot; -command &amp;quot;MS_addMM ();&amp;quot; -width 120;&lt;br /&gt;
    button -label &amp;quot;Remove selected&amp;quot; -command &amp;quot;MS_removeMM ();&amp;quot; -width 120;&lt;br /&gt;
    setParent ..;&lt;br /&gt;
    setParent ..;&lt;br /&gt;
    rowLayout -nc 3;&lt;br /&gt;
    button -label &amp;quot;SNAP IT&amp;quot; -command &amp;quot;VRAYCONNECDO() &amp;quot; -width 140 -align center;&lt;br /&gt;
    button -label &amp;quot;Close&amp;quot; -command &amp;quot;DAC_CloseUI() &amp;quot; -width 140 -align center;&lt;br /&gt;
    setParent ..;&lt;br /&gt;
    setParent ..;&lt;br /&gt;
&lt;br /&gt;
// Show the window.&lt;br /&gt;
showWindow multiSnapWindow;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
global proc string[] getShaders(string $from)&lt;br /&gt;
{&lt;br /&gt;
// get the shapes from the input&lt;br /&gt;
string $shapes[] = ls(&amp;quot;-o&amp;quot;, &amp;quot;-dag&amp;quot;, &amp;quot;-s&amp;quot;, $from);&lt;br /&gt;
// give me the connected &amp;quot;shadingEngines&amp;quot;&lt;br /&gt;
string $shadingEngines[] = listConnections(&amp;quot;-type&amp;quot;,&amp;quot;shadingEngine&amp;quot;, $shapes);&lt;br /&gt;
// list the connected materials (shaders) from that&lt;br /&gt;
string $materials[] = ls(&amp;quot;-mat&amp;quot;, listConnections($shadingEngines));&lt;br /&gt;
// remove duplicate occurrences.&lt;br /&gt;
return (stringArrayRemoveDuplicates($materials));&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
//Add selected objects to list.&lt;br /&gt;
global proc MS_addObjects ()&lt;br /&gt;
{&lt;br /&gt;
      global string $sourceObjects;&lt;br /&gt;
      string $selectedshapes[] = `ls -sl -l`;&lt;br /&gt;
      //print $selectedshapes;&lt;br /&gt;
      int $count = 0;&lt;br /&gt;
&lt;br /&gt;
if ($selectedshapes[0] != &amp;quot;&amp;quot;)&lt;br /&gt;
{&lt;br /&gt;
   for ($i in $selectedshapes)&lt;br /&gt;
   {&lt;br /&gt;
     $count ++;&lt;br /&gt;
     textScrollList -edit -append $i $sourceObjects;&lt;br /&gt;
   }&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
//Add selected objects to list.&lt;br /&gt;
global proc MS_addMM ()&lt;br /&gt;
{&lt;br /&gt;
      global string $destinationObjects;&lt;br /&gt;
      string $selectedshapes[] = `ls -sl -l`;&lt;br /&gt;
      //print $selectedshapes;&lt;br /&gt;
      int $count = 0;&lt;br /&gt;
&lt;br /&gt;
if ($selectedshapes[0] != &amp;quot;&amp;quot;)&lt;br /&gt;
{&lt;br /&gt;
   for ($i in $selectedshapes)&lt;br /&gt;
   {&lt;br /&gt;
     $count ++;&lt;br /&gt;
     textScrollList -edit -append $i $destinationObjects;&lt;br /&gt;
   }&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// Clear objects from list.&lt;br /&gt;
global proc MS_clearObjects ()&lt;br /&gt;
{&lt;br /&gt;
    global string $sourceObjects;&lt;br /&gt;
textScrollList -e -ra $sourceObjects;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// Remove selected object from list.&lt;br /&gt;
global proc MS_removeObjects ()&lt;br /&gt;
{&lt;br /&gt;
   global string $sourceObjects;&lt;br /&gt;
&lt;br /&gt;
    int $index [] = `textScrollList -query -selectIndexedItem $sourceObjects`;&lt;br /&gt;
    if ($index [0] != 0)&lt;br /&gt;
    {&lt;br /&gt;
        textScrollList -edit -removeIndexedItem $index [0] $sourceObjects;&lt;br /&gt;
    }&lt;br /&gt;
   global string $sourceObjects;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
global proc VRAYCONNECDO()&lt;br /&gt;
{&lt;br /&gt;
    // UI Elements&lt;br /&gt;
global string $sourceObjects;&lt;br /&gt;
global string $destinationObjects;&lt;br /&gt;
// Define user selected objects&lt;br /&gt;
string $selected_objects[] = `textScrollList -query -allItems $sourceObjects`;&lt;br /&gt;
string $meshMaterial[] = `textScrollList -query -allItems $destinationObjects`;&lt;br /&gt;
int $i = 0;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
// SET PADDING&lt;br /&gt;
string $FSTART = &amp;quot;1&amp;quot;;&lt;br /&gt;
string $FEND = &amp;quot;100&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
print $FSTART;&lt;br /&gt;
print $FEND;&lt;br /&gt;
&lt;br /&gt;
string $PADDING = $FSTART + &amp;quot;:&amp;quot; + $FEND;&lt;br /&gt;
&lt;br /&gt;
//Progress bar&lt;br /&gt;
global string $gMainProgressBar;&lt;br /&gt;
&lt;br /&gt;
// Start the progress bar and adjust its max value for this operation.&lt;br /&gt;
    int $steps = size($selected_objects);&lt;br /&gt;
    progressBar -edit -beginProgress -isInterruptable true -status &amp;quot;Connecting shaders to mesh material ...&amp;quot; -maxValue $steps $gMainProgressBar;&lt;br /&gt;
 &lt;br /&gt;
for ($i = 0; $i &amp;lt; size($selected_objects); $i ++)&lt;br /&gt;
{&lt;br /&gt;
        parentConstraint -n parentConstraintMS $selected_objects[$i] $meshMaterial[$i];&lt;br /&gt;
        select -r $meshMaterial[$i] ;&lt;br /&gt;
        bakeResults -simulation true -t $PADDING -sampleBy 1 -oversamplingRate 1 -disableImplicitControl true -preserveOutsideKeys true -sparseAnimCurveBake false -removeBakedAttributeFromLayer false -removeBakedAnimFromLayer false -bakeOnOverrideLayer false -minimizeRotation true -controlPoints false -shape true {$meshMaterial[$i]};&lt;br /&gt;
        select -cl  ;&lt;br /&gt;
        select -r &amp;quot;*parentConstraintMS*&amp;quot;;&lt;br /&gt;
        doDelete;&lt;br /&gt;
// Update the progress bar.&lt;br /&gt;
progressBar -edit -step 1 $gMainProgressBar;&lt;br /&gt;
}&lt;br /&gt;
// End the progress.&lt;br /&gt;
progressBar -edit -endProgress $gMainProgressBar;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Delete hidden objects ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select objects&lt;br /&gt;
&lt;br /&gt;
for ( $object in `ls -sl` ) {&lt;br /&gt;
    $vis = getAttr ($object+&amp;quot;.visibility&amp;quot;);&lt;br /&gt;
    if ($vis == 0){&lt;br /&gt;
        select -r $object ;&lt;br /&gt;
        doDelete ;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== V-Ray - BAKE MATERIALS ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Made to work also with mayabatch.exe&lt;br /&gt;
&lt;br /&gt;
////////////////////////////////////////////&lt;br /&gt;
// BAKE VRAY CUSTOM VARIABLES&lt;br /&gt;
////////////////////////////////////////////&lt;br /&gt;
&lt;br /&gt;
// ASSET PATH&lt;br /&gt;
string $assetFileType = &amp;quot;mayaBinary&amp;quot;;&lt;br /&gt;
string $assetPath = &amp;quot;C:/YOUR_PATH/YOUR_SURFACING_ASSET.mb&amp;quot;;&lt;br /&gt;
string $assetName = &amp;quot;ASSET_NAME&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
// LIGHT RIG PATH&lt;br /&gt;
string $lightRigFileType = &amp;quot;mayaAscii&amp;quot;;&lt;br /&gt;
string $lightRigPath = &amp;quot;C:/YOUR_PATH/YOUR_LIGHT_RIG.mb&amp;quot;;&lt;br /&gt;
string $lightRigName = &amp;quot;DAY_LIGHTING&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
// BAKED TEXTURES PATH&lt;br /&gt;
string $bakedTexturesPath = (&amp;quot;C:/YOUR_PATH/BAKED_TEXTURES/&amp;quot; + $assetName + &amp;quot;_&amp;quot; + $lightRigName + &amp;quot;_Bake&amp;quot;);&lt;br /&gt;
print $bakedTexturesPath;&lt;br /&gt;
&lt;br /&gt;
// SET RESOLUTION FOR BAKED MAPS&lt;br /&gt;
$resWidth = 4096;&lt;br /&gt;
$resHeight = $resWidth;&lt;br /&gt;
&lt;br /&gt;
// COLOR SPACE FOR FILE TEXTURES&lt;br /&gt;
string $fileColorSpace = &amp;quot;ACES - ACEScg&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
////////////////////////////////////////////&lt;br /&gt;
// END OF CUSTOM VARIABLES&lt;br /&gt;
////////////////////////////////////////////&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
////////////////////////////////////////////&lt;br /&gt;
// RENDER SETTINGS&lt;br /&gt;
&lt;br /&gt;
// Set File Name Prefix&lt;br /&gt;
setAttr -type &amp;quot;string&amp;quot; vraySettings.fileNamePrefix &amp;quot;&amp;lt;Scene&amp;gt;/&amp;lt;Layer&amp;gt;/&amp;lt;Camera&amp;gt;_&amp;lt;Layer&amp;gt;_&amp;lt;Scene&amp;gt;&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
// Set resolution&lt;br /&gt;
$resWidthHalf = $resWidth/2;&lt;br /&gt;
$resHeightHalf = $resHeight/2;&lt;br /&gt;
setAttr &amp;quot;vraySettings.width&amp;quot; $resWidthHalf;&lt;br /&gt;
setAttr &amp;quot;vraySettings.height&amp;quot; $resHeightHalf;&lt;br /&gt;
&lt;br /&gt;
// Set Persp camera renderable&lt;br /&gt;
setAttr &amp;quot;perspShape.renderable&amp;quot; 1;&lt;br /&gt;
&lt;br /&gt;
// Set Image format&lt;br /&gt;
setAttr -type &amp;quot;string&amp;quot; &amp;quot;vraySettings.imageFormatStr&amp;quot; &amp;quot;exr (multichannel)&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
// Set Animation type on Standard&lt;br /&gt;
setAttr &amp;quot;vraySettings.animType&amp;quot; 0;&lt;br /&gt;
setAttr &amp;quot;vraySettings.animBatchOnly&amp;quot; 1;&lt;br /&gt;
&lt;br /&gt;
// Sampler type Bucket&lt;br /&gt;
setAttr &amp;quot;vraySettings.samplerType&amp;quot; 4;&lt;br /&gt;
&lt;br /&gt;
// Min Shading Rate&lt;br /&gt;
//setAttr &amp;quot;vraySettings.minShadeRate&amp;quot; 4;&lt;br /&gt;
setAttr &amp;quot;vraySettings.minShadeRate&amp;quot; 7;&lt;br /&gt;
&lt;br /&gt;
// Buckets subdivs&lt;br /&gt;
//setAttr &amp;quot;vraySettings.dmcMinSubdivs&amp;quot; 1;&lt;br /&gt;
//setAttr &amp;quot;vraySettings.dmcMaxSubdivs&amp;quot; 8;&lt;br /&gt;
//setAttr &amp;quot;vraySettings.dmcThreshold&amp;quot; 0.1;&lt;br /&gt;
setAttr &amp;quot;vraySettings.dmcMinSubdivs&amp;quot; 1;&lt;br /&gt;
setAttr &amp;quot;vraySettings.dmcMaxSubdivs&amp;quot; 15;&lt;br /&gt;
setAttr &amp;quot;vraySettings.dmcThreshold&amp;quot; 0.01;&lt;br /&gt;
&lt;br /&gt;
// Color mapping Linear&lt;br /&gt;
setAttr &amp;quot;vraySettings.cmap_type&amp;quot; 0;&lt;br /&gt;
&lt;br /&gt;
// GI on&lt;br /&gt;
setAttr &amp;quot;vraySettings.giOn&amp;quot; 1;&lt;br /&gt;
//setAttr &amp;quot;vraySettings.subdivs&amp;quot; 400;&lt;br /&gt;
setAttr &amp;quot;vraySettings.subdivs&amp;quot; 1000;&lt;br /&gt;
&lt;br /&gt;
// Max subdivs&lt;br /&gt;
setAttr &amp;quot;vraySettings.ddisplac_maxSubdivs&amp;quot; 16;&lt;br /&gt;
&lt;br /&gt;
// Cache geometry and bitmaps&lt;br /&gt;
setAttr &amp;quot;vraySettings.globopt_cache_geom_plugins&amp;quot; 1;&lt;br /&gt;
setAttr &amp;quot;vraySettings.globopt_cache_bitmaps&amp;quot; 1;&lt;br /&gt;
&lt;br /&gt;
// Dynamic memory limit&lt;br /&gt;
setAttr &amp;quot;vraySettings.sys_rayc_dynMemLimit&amp;quot; 0;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
////////////////////////////////////////////&lt;br /&gt;
// IMPORT&lt;br /&gt;
&lt;br /&gt;
// IMPORT LIGHT RIG&lt;br /&gt;
file -import -type $lightRigFileType  -ignoreVersion -mergeNamespacesOnClash false -rpr &amp;quot;:&amp;quot; -options &amp;quot;v=0;&amp;quot; $lightRigPath;&lt;br /&gt;
&lt;br /&gt;
// IMPORT ASSET&lt;br /&gt;
file -import -type $assetFileType  -ignoreVersion -mergeNamespacesOnClash false -rpr &amp;quot;:&amp;quot; -options &amp;quot;v=0;&amp;quot; $assetPath;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
// CREATE SETS&lt;br /&gt;
select `ls -type &amp;quot;mesh&amp;quot;`;&lt;br /&gt;
sets -name &amp;quot;assetOriginal_Set&amp;quot; ;&lt;br /&gt;
duplicate -rr;&lt;br /&gt;
group -w -n (&amp;quot;GRP_&amp;quot; + $assetName + &amp;quot;_BAKE_&amp;quot; + `toupper $lightRigName`);&lt;br /&gt;
sets -name &amp;quot;assetBaked_Set&amp;quot; ;&lt;br /&gt;
&lt;br /&gt;
// REMOVE BAKED PARTS FROM ORIGINAL PARTS SET&lt;br /&gt;
select -r assetBaked_Set ;&lt;br /&gt;
string $selection[] = `ls -sl`;&lt;br /&gt;
string $polyGons[] = `filterExpand -sm 12 $selection`;&lt;br /&gt;
select -r $polyGons;&lt;br /&gt;
pickWalk -d down;&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    sets -rm assetOriginal_Set $object;&lt;br /&gt;
}&lt;br /&gt;
select -cl  ;&lt;br /&gt;
&lt;br /&gt;
// DELETE HIDDEN OBJECTS&lt;br /&gt;
select -r assetBaked_Set ;&lt;br /&gt;
string $selection[] = `ls -sl`;&lt;br /&gt;
string $polyGons[] = `filterExpand -sm 12 $selection`;&lt;br /&gt;
select -r $polyGons;&lt;br /&gt;
for ( $object in `ls -sl` ) {&lt;br /&gt;
    $vis = getAttr ($object+&amp;quot;.visibility&amp;quot;);&lt;br /&gt;
    if ($vis == 0){&lt;br /&gt;
        select -r $object ;&lt;br /&gt;
        doDelete ;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
select -cl  ;&lt;br /&gt;
&lt;br /&gt;
// fixShapeName - Thanks to Pinkwerks&lt;br /&gt;
global proc&lt;br /&gt;
fixShapeName()&lt;br /&gt;
{&lt;br /&gt;
    string $me = &amp;quot;fixShapeName&amp;quot;;&lt;br /&gt;
    string $shape;&lt;br /&gt;
    string $newShapeName;&lt;br /&gt;
    string $parent;&lt;br /&gt;
    string $tmpA[];&lt;br /&gt;
	string $selectedShapes[] = `ls -sl -l`;&lt;br /&gt;
    int $sizeOfShapes = `size $selectedShapes`;&lt;br /&gt;
&lt;br /&gt;
    if ( $sizeOfShapes == 0 )&lt;br /&gt;
    	error($me + &amp;quot; : Nothing shapes to process!&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
    for ( $shape in $selectedShapes )&lt;br /&gt;
    {&lt;br /&gt;
    	$tmpA = `listRelatives -p $shape`;&lt;br /&gt;
		$parent = $tmpA[0];&lt;br /&gt;
		$newShapeName = ($parent + &amp;quot;Shape&amp;quot;);&lt;br /&gt;
		rename $shape $newShapeName;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// APPLY FIXSHAPENAME TO BAKED ASSET PARTS&lt;br /&gt;
select -r assetBaked_Set ;&lt;br /&gt;
string $selection[] = `ls -sl`;&lt;br /&gt;
string $polyGons[] = `filterExpand -sm 12 $selection`;&lt;br /&gt;
select -r $polyGons;&lt;br /&gt;
pickWalk -d down;&lt;br /&gt;
fixShapeName();&lt;br /&gt;
select -cl  ;&lt;br /&gt;
&lt;br /&gt;
// DELETE OBJECTS WITHOUT UVS&lt;br /&gt;
select -r assetBaked_Set ;&lt;br /&gt;
string $selection[] = `ls -sl`;&lt;br /&gt;
string $polyGons[] = `filterExpand -sm 12 $selection`;&lt;br /&gt;
select -r $polyGons;&lt;br /&gt;
for ( $object in `ls -sl` ) {&lt;br /&gt;
    int $vertexCount[] = `polyEvaluate -uv $object`;&lt;br /&gt;
    print $vertexCount;&lt;br /&gt;
    string $uvCount = $vertexCount[0];&lt;br /&gt;
    if ($uvCount == 0){&lt;br /&gt;
        select -r $object ;&lt;br /&gt;
        doDelete ;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// CREATE VRAY BAKE OPTIONS&lt;br /&gt;
createNode &amp;quot;VRayBakeOptions&amp;quot; -n &amp;quot;vrayBakeOptions&amp;quot;;&lt;br /&gt;
select -r assetBaked_Set ;&lt;br /&gt;
string $selection[] = `ls -sl`;&lt;br /&gt;
string $polyGons[] = `filterExpand -sm 12 $selection`;&lt;br /&gt;
select -r $polyGons;&lt;br /&gt;
$selected=`ls -sl`;&lt;br /&gt;
for ($object in $selected){&lt;br /&gt;
    sets -edit -forceElement  vrayBakeOptions $object ;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// HIDE ORIGINAL ASSET&lt;br /&gt;
select -r assetOriginal_Set ;&lt;br /&gt;
pickWalk -d up;&lt;br /&gt;
hide `ls -sl`;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
// BAKE VRAY OPTIONS&lt;br /&gt;
setAttr &amp;quot;vrayBakeOptions.udimBaking&amp;quot; 1;&lt;br /&gt;
setAttr &amp;quot;vrayBakeOptions.resolutionX&amp;quot; $resWidth;&lt;br /&gt;
&lt;br /&gt;
optionVar -intValue &amp;quot;vrayBakeType&amp;quot; 2;&lt;br /&gt;
optionVar -intValue &amp;quot;vraySkipNodesWithoutBakeOptions&amp;quot; 1;&lt;br /&gt;
optionVar -intValue &amp;quot;vrayAssignBakedTextures&amp;quot; 1;&lt;br /&gt;
optionVar -stringValue &amp;quot;vrayBakeOutputPath&amp;quot; $bakedTexturesPath;&lt;br /&gt;
optionVar -intValue &amp;quot;vrayBakeProjectionBaking&amp;quot; 0;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
// GO BAKE GO&lt;br /&gt;
select -cl  ;&lt;br /&gt;
select -r assetBaked_Set ;&lt;br /&gt;
string $selection[] = `ls -sl`;&lt;br /&gt;
string $polyGons[] = `filterExpand -sm 12 $selection`;&lt;br /&gt;
select -r $polyGons;&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    vrayStartBake;&lt;br /&gt;
}&lt;br /&gt;
select -cl  ;&lt;br /&gt;
&lt;br /&gt;
// UV TILING UDIM AND ACES CG FOR FILES&lt;br /&gt;
for ( $object in `ls -type &amp;quot;file&amp;quot;` ) {&lt;br /&gt;
    setAttr ($object + &amp;quot;.filterType&amp;quot;) 0;&lt;br /&gt;
    setAttr ($object + &amp;quot;.uvTilingMode&amp;quot;) 3;&lt;br /&gt;
    setAttr ($object + &amp;quot;.cs&amp;quot;) -type &amp;quot;string&amp;quot; $fileColorSpace;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// CONNECT SHADERS&lt;br /&gt;
select -cl  ;&lt;br /&gt;
select -r assetBaked_Set ;&lt;br /&gt;
string $selection[] = `ls -sl`;&lt;br /&gt;
string $polyGons[] = `filterExpand -sm 12 $selection`;&lt;br /&gt;
for ( $object in $polyGons ) {&lt;br /&gt;
    string $shadingGroupName = ($object + &amp;quot;Shape_bakedmtlSG&amp;quot;);&lt;br /&gt;
    sets -e -forceElement $shadingGroupName $object;&lt;br /&gt;
}&lt;br /&gt;
select -cl  ;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
///////////////////////////////////&lt;br /&gt;
// SAVE&lt;br /&gt;
file -rename (&amp;quot;C:/YOUR_PATH/BAKED_ASSETS/&amp;quot; + $assetName + &amp;quot;_&amp;quot; + $lightRigName + &amp;quot;_BAKE_DEBUG.mb&amp;quot;);&lt;br /&gt;
file -f -save;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Arnold - Set all Standins display on Bouding box ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$selected=`ls -type &amp;quot;aiStandIn&amp;quot;`;&lt;br /&gt;
for ($object in $selected){&lt;br /&gt;
    setAttr ($object + &amp;quot;.mode&amp;quot;) 0;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Arnold - Set all Standins display on Point cloud ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$selected=`ls -type &amp;quot;aiStandIn&amp;quot;`;&lt;br /&gt;
for ($object in $selected){&lt;br /&gt;
    setAttr ($object + &amp;quot;.mode&amp;quot;) 4;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Alembic - Loop animation on all nodes ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$selected=`ls -type &amp;quot;AlembicNode&amp;quot;`;&lt;br /&gt;
for ($object in $selected){&lt;br /&gt;
    setAttr ($object + &amp;quot;.cycleType&amp;quot;) 1;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Mental Ray nodes error - Delete Mayatomr plugin ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
unknownPlugin -remove &amp;quot;Mayatomr&amp;quot;;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Delete Unknown nodes ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
select -r `ls -type unknown`;&lt;br /&gt;
delete;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Write text ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
string $exampleFileName = ( &amp;quot;D:/yolo.bat&amp;quot; );&lt;br /&gt;
string $linesToWrite[] = {&lt;br /&gt;
    &amp;quot;youpi&amp;quot;,&lt;br /&gt;
    &amp;quot;youhou&amp;quot;&lt;br /&gt;
    };&lt;br /&gt;
int $result = fwriteAllLines($exampleFileName,$linesToWrite);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Point Lock No Attach on selected follicles ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    setAttr ($object + &amp;quot;.pointLock&amp;quot;) 0;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Convert .ma cameras from Reality Capture into .abc files ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// List of assets&lt;br /&gt;
string $fileParts[] = {&amp;quot;asset_001&amp;quot;, &amp;quot;asset_002&amp;quot;};&lt;br /&gt;
&lt;br /&gt;
// Replace the PATH of your files&lt;br /&gt;
for ($filePart in $fileParts){&lt;br /&gt;
	string $fileName = $filePart + &amp;quot;_cam&amp;quot;;&lt;br /&gt;
	string $filePath = &amp;quot;//DISK/PATH/&amp;quot; + $filePart + &amp;quot;/&amp;quot; + $filePart +&amp;quot;_cam.ma&amp;quot;;&lt;br /&gt;
	file -import -type &amp;quot;mayaAscii&amp;quot;  -ignoreVersion -ra true -mergeNamespacesOnClash false -rpr $fileName -options &amp;quot;v=0;p=17;f=0&amp;quot;  -pr  -importFrameRate true  -importTimeRange &amp;quot;override&amp;quot; $filePath;&lt;br /&gt;
	select -cl;&lt;br /&gt;
	select `ls -type &amp;quot;imagePlane&amp;quot;`;&lt;br /&gt;
	pickWalk -d up;&lt;br /&gt;
	doDelete;&lt;br /&gt;
	select `ls -type &amp;quot;camera&amp;quot;`;&lt;br /&gt;
	pickWalk -d up;	&lt;br /&gt;
	string $abcPath = &amp;quot;//DISK/PATH/&amp;quot; + $filePart + &amp;quot;/&amp;quot; + $filePart +&amp;quot;_cam.abc&amp;quot;;&lt;br /&gt;
	string $abcExp = &amp;quot;-frameRange 1 1 -uvWrite -worldSpace -dataFormat ogawa -root |* -file &amp;quot; + $abcPath;&lt;br /&gt;
	AbcExport -j $abcExp;&lt;br /&gt;
	select -all;&lt;br /&gt;
	doDelete;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Combine objects ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select objects&lt;br /&gt;
&lt;br /&gt;
polyPerformAction polyUnite o 0; &lt;br /&gt;
DeleteHistory;&lt;br /&gt;
FreezeTransformations;&lt;br /&gt;
makeIdentity -apply true -t 1 -r 1 -s 1 -n 0 -pn 1;&lt;br /&gt;
CenterPivot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Unitize UVs (one square UV by face) ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select objects&lt;br /&gt;
&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    select -r ($object+&amp;quot;.e[*]&amp;quot;);&lt;br /&gt;
    hilite ($object+&amp;quot;.e[*]&amp;quot;) ;&lt;br /&gt;
    polyMapCut -ch 1 ($object+&amp;quot;.e[*]&amp;quot;);&lt;br /&gt;
    polyForceUV -unitize $object;&lt;br /&gt;
    select $object;&lt;br /&gt;
    DeleteHistory;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== ONE-CLICK Unfold UVs ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select seams edges first&lt;br /&gt;
&lt;br /&gt;
invertSelection;&lt;br /&gt;
string $selectedEdges [] = `ls -sl`;&lt;br /&gt;
&lt;br /&gt;
string $selectedObject [] = `ls -selection -objectsOnly`;&lt;br /&gt;
&lt;br /&gt;
select -r ($selectedObject[0]+&amp;quot;.e[*]&amp;quot;);&lt;br /&gt;
hilite ($selectedObject[0]+&amp;quot;.e[*]&amp;quot;) ;&lt;br /&gt;
polyMapCut -ch 1 ($selectedObject[0]+&amp;quot;.e[*]&amp;quot;);&lt;br /&gt;
polyForceUV -unitize $selectedObject[0];&lt;br /&gt;
&lt;br /&gt;
select $selectedObject[0];&lt;br /&gt;
polyMapSewMove -nf 10 -lps 0 -ch 1 $selectedEdges;&lt;br /&gt;
select -r ($selectedObject[0]+&amp;quot;.map[*]&amp;quot;);&lt;br /&gt;
u3dUnfold -ite 1 -p 0 -bi 1 -tf 1 -ms 1024 -rs 0 ($selectedObject[0]+&amp;quot;.map[*]&amp;quot;);&lt;br /&gt;
u3dLayout -res 256 -scl 1 -spc 0.001 -mar 0.01 -box 0 1 0 1 $selectedObject[0];&lt;br /&gt;
select $selectedObject[0];&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Create Texture Reference on all shapes from a group ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select top group first&lt;br /&gt;
&lt;br /&gt;
string $selection[] = `ls -sl`;&lt;br /&gt;
string $polyGons[] = `filterExpand -sm 12 $selection`;&lt;br /&gt;
&lt;br /&gt;
for ($i = 0; $i &amp;lt; size($polyGons); $i ++)&lt;br /&gt;
{&lt;br /&gt;
    select -r $polyGons[$i] ;&lt;br /&gt;
    CreateTextureReferenceObject;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
select -r $selection;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Search and select by name ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// If you want to select every object containing &amp;quot;tree&amp;quot;&lt;br /&gt;
// From NaughtyNathan on CGTalk&lt;br /&gt;
&lt;br /&gt;
select -r &amp;quot;*tree*&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
// And if you want to select only transforms containing &amp;quot;tree&amp;quot;&lt;br /&gt;
&lt;br /&gt;
select `ls -type &amp;quot;transform&amp;quot; &amp;quot;*tree*&amp;quot;`;&lt;br /&gt;
&lt;br /&gt;
// And if you are using namespace, you need:&lt;br /&gt;
&lt;br /&gt;
select -r `ls -r 1 &amp;quot;*tree*&amp;quot;`;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Walter</name></author>
		
	</entry>
	<entry>
		<id>http://antoinevienne.fr/wiki/index.php?title=Maya_Mel&amp;diff=264</id>
		<title>Maya Mel</title>
		<link rel="alternate" type="text/html" href="http://antoinevienne.fr/wiki/index.php?title=Maya_Mel&amp;diff=264"/>
		<updated>2023-10-04T14:32:24Z</updated>

		<summary type="html">&lt;p&gt;Walter: /* Search and select by name */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Maya Mels Scripts=&lt;br /&gt;
=== Octane Render Baking group id - Assign id to multiple objects shapes ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// 0 is for Red, 2 for Green, 4 for Blue&lt;br /&gt;
// 3, 5 and 6 for Cyan, Magenta and Yellow&lt;br /&gt;
// Replace the number &amp;quot;0&amp;quot; by the number of your choice&lt;br /&gt;
// Baking group id is also avalaible in Attribute Spreadsheet Editor&lt;br /&gt;
&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    print($object+&amp;quot;\n&amp;quot;);&lt;br /&gt;
    setAttr ($object + &amp;quot;.octBakGrId&amp;quot;) (0);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Maxwell Render - Particles sequence - Force .abc file ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
//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&lt;br /&gt;
&lt;br /&gt;
global int $current_frame;&lt;br /&gt;
$current_frame = `currentTime -query`;&lt;br /&gt;
print $current_frame;&lt;br /&gt;
{&lt;br /&gt;
setAttr -type &amp;quot;string&amp;quot; maxwellRFRKParticles1.file (&amp;quot;/YOUR_PATH/YOUR_FILE&amp;quot; + $current_frame + &amp;quot;.abc&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Maxwell Render - Specify object ID color ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Specify object ID color&lt;br /&gt;
&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    print($object+&amp;quot;\n&amp;quot;);&lt;br /&gt;
    setAttr ($object + &amp;quot;.mxSpecifyObjIdColor&amp;quot;) (1);&lt;br /&gt;
    setAttr ($object + &amp;quot;.mxObjIdColor&amp;quot;) -type &amp;quot;double3&amp;quot; 1 0 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Redshift - Add blend attribute and set random value for objects selection ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Useful for blending between colors with RedshiftUserDataScalar&lt;br /&gt;
&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    print($object);&lt;br /&gt;
    addAttr -ln &amp;quot;blend&amp;quot; -at double  -min 0 -max 1 -dv 0 $object;&lt;br /&gt;
    setAttr ($object + &amp;quot;.blend&amp;quot;) (rand(1));&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Redshift - Set Primary visibility off for selection (layer override) ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Go in right render layer and select objects&lt;br /&gt;
&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    print($object+&amp;quot;\n&amp;quot;);&lt;br /&gt;
    setAttr ($object + &amp;quot;.rsEnableVisibilityOverrides&amp;quot;) (1);&lt;br /&gt;
    editRenderLayerAdjustment ($object + &amp;quot;.rsPrimaryRayVisible&amp;quot;);&lt;br /&gt;
    setAttr ($object + &amp;quot;.rsPrimaryRayVisible&amp;quot;) (0);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Convert Motion trail to curve ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select the motion trail first&lt;br /&gt;
&lt;br /&gt;
{&lt;br /&gt;
$selected=`ls -dag -et snapshotShape`;&lt;br /&gt;
for ($obj in $selected){&lt;br /&gt;
$pts=(getAttr($obj+&amp;quot;.pts&amp;quot;));&lt;br /&gt;
$size=size($pts);&lt;br /&gt;
$curve=`curve -d 1 -p $pts[0] $pts[1] $pts[2] -p $pts[4] $pts[5] $pts[6] -k 0 -k 1`;&lt;br /&gt;
for($i=8;$i&amp;lt;$size;$i+=4)&lt;br /&gt;
curve -os -a -p $pts[$i] $pts[$i+1] $pts[$i+2] $curve ;&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Quantize keyframes for selection ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Snap keys on frames for objects selection&lt;br /&gt;
&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    print($object+&amp;quot;\n&amp;quot;);&lt;br /&gt;
    snapKey $object;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Loop image sequence for texture ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// On File texture, check Image sequence, and edit expression&lt;br /&gt;
&lt;br /&gt;
file1.frameExtension=((frame%8)+1);&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Symmetrize - Duplicate &amp;amp; merge object ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select half object first&lt;br /&gt;
&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    print($object+&amp;quot;\n&amp;quot;);&lt;br /&gt;
    xform -piv 0 0 0 $object;&lt;br /&gt;
    duplicate -rr;&lt;br /&gt;
    setAttr ($object + &amp;quot;.scaleX&amp;quot;) (-1);&lt;br /&gt;
    select -add $object ;&lt;br /&gt;
    polyPerformAction polyUnite o 0;&lt;br /&gt;
    polyMergeVertex  -d 0.0001 -am 1 -ch 1;&lt;br /&gt;
    DeleteHistory;&lt;br /&gt;
    rename ($object);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Mirror object ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select object first&lt;br /&gt;
&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    print($object+&amp;quot;\n&amp;quot;);&lt;br /&gt;
    DeleteHistory;&lt;br /&gt;
    makeIdentity -apply true -t 1 -r 1 -s 1 -n 0 -pn 1;&lt;br /&gt;
    xform -piv 0 0 0 $object;&lt;br /&gt;
    duplicate -rr;&lt;br /&gt;
    setAttr ($object + &amp;quot;.scaleX&amp;quot;) (-1);&lt;br /&gt;
    DeleteHistory;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Group each object and rename ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select objects first&lt;br /&gt;
&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    string $name = ($object);&lt;br /&gt;
    select $object ;&lt;br /&gt;
    doGroup 0 1 1;&lt;br /&gt;
    rename ($name + &amp;quot;_GRP&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Change path in an Attribute ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Here the Attribute is &amp;quot;.filePrefix&amp;quot; - Select objects first&lt;br /&gt;
&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    string $path = getAttr ($object+&amp;quot;.filePrefix&amp;quot;);&lt;br /&gt;
    $path = `substitute &amp;quot;//OLD/PATH/&amp;quot; $path &amp;quot;//NEW/PATH/&amp;quot;`;&lt;br /&gt;
    setAttr -type &amp;quot;string&amp;quot; ($object+&amp;quot;.filePrefix&amp;quot;) ($path);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Change opacity mode on V-Ray shaders ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select shaders first&lt;br /&gt;
&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    if (attributeExists(&amp;quot;omode&amp;quot;,$object)) { //check if attribute exists&lt;br /&gt;
        CBunlockAttr ($object+&amp;quot;.omode&amp;quot;); //unlock opacity mode&lt;br /&gt;
    }&lt;br /&gt;
    if (attributeExists(&amp;quot;opacityMode&amp;quot;,$object)) {&lt;br /&gt;
        setAttr ($object+&amp;quot;.opacityMode&amp;quot;) 1; //set opacity mode in Clip - 0 pour Normal&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// Alternative&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    if (attributeExists(&amp;quot;opacityMode&amp;quot;,$object)) {&lt;br /&gt;
        setAttr ($object+&amp;quot;.opacityMode&amp;quot;) -l false; //unlock attribute if locked&lt;br /&gt;
    }&lt;br /&gt;
    if (attributeExists(&amp;quot;opacityMode&amp;quot;,$object)) {&lt;br /&gt;
        setAttr ($object+&amp;quot;.opacityMode&amp;quot;) 2; //set opacity mode in Clip - 0 pour Normal&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Change color space on selected fileTextures ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Useful to automatically convert Quixel Megascans by example from sRGB/Raw to ACES color spaces&lt;br /&gt;
&lt;br /&gt;
string $object_selection[] = (`ls -sl`);&lt;br /&gt;
for ($object in $object_selection) {&lt;br /&gt;
    if(`getAttr ($object+&amp;quot;.cs&amp;quot;)` == &amp;quot;sRGB&amp;quot;){&lt;br /&gt;
        setAttr ($object + &amp;quot;.cs&amp;quot;) -type &amp;quot;string&amp;quot; &amp;quot;Utility - sRGB - Texture&amp;quot;;&lt;br /&gt;
    }&lt;br /&gt;
    if(`getAttr ($object+&amp;quot;.cs&amp;quot;)` == &amp;quot;Raw&amp;quot;){&lt;br /&gt;
        setAttr ($object + &amp;quot;.cs&amp;quot;) -type &amp;quot;string&amp;quot; &amp;quot;Utility - Raw&amp;quot;;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Redshift - custom Tesselation on selected objects ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select objects first&lt;br /&gt;
&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    print($object+&amp;quot;\n&amp;quot;);&lt;br /&gt;
    setAttr ($object + &amp;quot;.rsMinTessellationLength&amp;quot;) (0.1);&lt;br /&gt;
    setAttr ($object + &amp;quot;.rsMaxTessellationSubdivs&amp;quot;) (2);&lt;br /&gt;
    setAttr ($object + &amp;quot;.rsOutOfFrustumTessellationFactor&amp;quot;) (4);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Change color on selected shaders ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select shaders first&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    print($object+&amp;quot;\n&amp;quot;);&lt;br /&gt;
    setAttr ($object + &amp;quot;.color&amp;quot;) -l false;&lt;br /&gt;
    setAttr ($object + &amp;quot;.color&amp;quot;) -type &amp;quot;double3&amp;quot; (0.18) (0.18) (0.18);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Change Filter Type on selected Files Textures ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select files textures first - 0 means Off&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    print($object+&amp;quot;\n&amp;quot;);&lt;br /&gt;
    setAttr ($object + &amp;quot;.filterType&amp;quot;) 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Clean Render Layers ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// In MEL&lt;br /&gt;
fixRenderLayerOutAdjustmentErrors;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Change Filter Type on selected Files Textures ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select files textures first - 0 means Off&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    print($object+&amp;quot;\n&amp;quot;);&lt;br /&gt;
    setAttr ($object + &amp;quot;.filterType&amp;quot;) 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Select by name ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select objects with &amp;quot;toto&amp;quot;&lt;br /&gt;
select -r &amp;quot;toto*&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Display color on shapes ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select objects&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    print($object+&amp;quot;\n&amp;quot;);&lt;br /&gt;
    setAttr ($object + &amp;quot;.displayColors&amp;quot;) 1;&lt;br /&gt;
    setDisplayColorChannelAttribute ($object + &amp;quot;.displayColorChannel&amp;quot;);&lt;br /&gt;
    polyColorPerVertex -r 1 -g 0 -b 0 -a 1 -cdo;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Geometry Constraint on multiple selection ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select objects to constrain&lt;br /&gt;
string $objectBase = &amp;quot;surfaceName&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    select -cl;&lt;br /&gt;
    select $objectBase;&lt;br /&gt;
    select -add $object;&lt;br /&gt;
    geometryConstraint -weight 1;&lt;br /&gt;
    select -r &amp;quot;*Constraint*&amp;quot;;&lt;br /&gt;
    doDelete;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
=== Speed up smokes rendering with V-Ray ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select smokes first&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    print($object+&amp;quot;\n&amp;quot;);&lt;br /&gt;
    setAttr ($object + &amp;quot;.rendStep&amp;quot;) 160;&lt;br /&gt;
    setAttr ($object + &amp;quot;.shadowStep&amp;quot;) 400;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Set bump multiplier on multiple V-Ray shaders ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select shaders&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    if (attributeExists(&amp;quot;bumpMult&amp;quot;,$object)) {&lt;br /&gt;
        setAttr ($object + &amp;quot;.bumpMult&amp;quot;) -1; //set bump multiplier at -1&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== STOP/START viewport ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// As seen on https://www.toadstorm.com/. - Put it in your shelf&lt;br /&gt;
paneLayout -e -manage false $gMainPane&lt;br /&gt;
&lt;br /&gt;
paneLayout -e -manage true $gMainPane&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Select curves by name ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select objects first - Replace &amp;quot;toto&amp;quot; by what you are looking for&lt;br /&gt;
&lt;br /&gt;
select `ls -type &amp;quot;nurbsCurve&amp;quot; &amp;quot;*toto*&amp;quot;`;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Noise expression ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Replace &amp;quot;pCube1&amp;quot;&lt;br /&gt;
&lt;br /&gt;
pCube1.translateX=sin(time*20)*0.01*noise(time*10);&lt;br /&gt;
pCube1.translateY=sin(time*4)*0.01*noise(time*10);&lt;br /&gt;
pCube1.translateZ=sin(time*12)*0.01*noise(time*10);&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== V-ray - Make curves renderables ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Replace VRayLightMtl1 at the end by your material&lt;br /&gt;
&lt;br /&gt;
$selected=`ls -dag -et curveShape`;&lt;br /&gt;
for ($object in $selected){&lt;br /&gt;
    // Add V-ray Extra attributes&lt;br /&gt;
    vray addAttributesFromGroup $object vray_nurbscurve_renderable 1;&lt;br /&gt;
    vrayAddAttr $object vraySeparator_vray_nurbscurve_renderable;&lt;br /&gt;
    vrayAddAttr $object vrayNurbsCurveRenderable;&lt;br /&gt;
    vrayAddAttr $object vrayNurbsCurveMaterial;&lt;br /&gt;
    vrayAddAttr $object vrayNurbsCurveTesselation;&lt;br /&gt;
    vrayAddAttr $object vrayNurbsCurveStartWidth;&lt;br /&gt;
    vrayAddAttr $object vrayNurbsCurveLockEndWidth;&lt;br /&gt;
    vrayAddAttr $object vrayNurbsCurveEndWidth;&lt;br /&gt;
    setUITemplate -pst attributeEditorTemplate;&lt;br /&gt;
// Activate renderable&lt;br /&gt;
setAttr ($object + &amp;quot;.vrayNurbsCurveRenderable&amp;quot;) 1;&lt;br /&gt;
// Replace VRayLightMtl1 by your material&lt;br /&gt;
connectAttr -force VRayLightMtl1.outColor ($object + &amp;quot;.vrayNurbsCurveMaterial&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Get object type ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Replace toto with the object whose type you want to know&lt;br /&gt;
&lt;br /&gt;
objectType toto;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Render layer override on specific object type ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Replace &amp;quot;Node&amp;quot; by the object type on which you want to act&lt;br /&gt;
&lt;br /&gt;
$selected=`ls -type &amp;quot;Node&amp;quot;`;&lt;br /&gt;
for ($object in $selected){&lt;br /&gt;
    // Create layer override on Primary Visibility attribute on current renderLayer&lt;br /&gt;
    editRenderLayerAdjustment ($object + &amp;quot;.primaryVisibility&amp;quot;);&lt;br /&gt;
    // Set Primary Visibility - 0 or 1&lt;br /&gt;
    setAttr ($object + &amp;quot;.primaryVisibility&amp;quot;) 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== V-ray - Make lights invisible ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$selected=`ls -type &amp;quot;VRayLightRectShape&amp;quot;`;&lt;br /&gt;
for ($object in $selected){&lt;br /&gt;
    setAttr ($object + &amp;quot;.invisible&amp;quot;) 1;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
$selected=`ls -type &amp;quot;VRayLightSphereShape&amp;quot;`;&lt;br /&gt;
for ($object in $selected){&lt;br /&gt;
    setAttr ($object + &amp;quot;.invisible&amp;quot;) 1;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
$selected=`ls -type &amp;quot;VRayLightDomeShape&amp;quot;`;&lt;br /&gt;
for ($object in $selected){&lt;br /&gt;
    setAttr ($object + &amp;quot;.invisible&amp;quot;) 1;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== V-ray - Select Rect Light ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
select `ls -type &amp;quot;VRayLightRectShape&amp;quot;`;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== V-ray - Rect Lights - Directional Preview - Always for all ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$selected=`ls -type &amp;quot;VRayLightRectShape&amp;quot;`;&lt;br /&gt;
for ($object in $selected){&lt;br /&gt;
    setAttr ($object + &amp;quot;.directionalPreview&amp;quot;) 1;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Randomize rotation on selected objects ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// As posted on CGTalk by NaughtyNathan&lt;br /&gt;
// &amp;quot;just set the vector values to the maximum random x,y,z rotations you want to apply to the selected transforms.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
vector $rndRot = &amp;lt;&amp;lt; 0,0,90 &amp;gt;&amp;gt;;	// x,y,z rotations&lt;br /&gt;
for ($object in `ls -sl -tr`){&lt;br /&gt;
    rotate `rand ($rndRot.x)` `rand ($rndRot.y)` `rand ($rndRot.z)` $object;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Quit Maya ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Brute force method&lt;br /&gt;
&lt;br /&gt;
$i = `getpid`; //application ID&lt;br /&gt;
    system(&amp;quot;taskkill /PID &amp;quot;  + $i +&amp;quot; /f&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
// In a gentle way&lt;br /&gt;
&lt;br /&gt;
evalDeferred(&amp;quot;quit -f&amp;quot;);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== V-ray - Import list of Alembics through Proxys Import ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// List of Alembics files - Replace by the name of your Alembics&lt;br /&gt;
string $alembicsParts[] = {&amp;quot;part1&amp;quot;,&amp;quot;part2&amp;quot;,&amp;quot;part3&amp;quot;};&lt;br /&gt;
&lt;br /&gt;
// Replace the PATH of your files - Scale by 100 for Houdini Alembics - &amp;lt;frame04&amp;gt; for sequences&lt;br /&gt;
for ($alembicsPart in $alembicsParts){&lt;br /&gt;
    vrayCreateProxy -node $alembicsPart -existing -dir (&amp;quot;C:/YOURPATH/&amp;quot;+$alembicsPart+&amp;quot;.&amp;lt;frame04&amp;gt;.abc&amp;quot;) -createProxyNode;&lt;br /&gt;
    setAttr ($alembicsPart+&amp;quot;_vraymesh.animType&amp;quot;) 1;&lt;br /&gt;
    setAttr ($alembicsPart+&amp;quot;.scaleZ&amp;quot;) 100;&lt;br /&gt;
    setAttr ($alembicsPart+&amp;quot;.scaleX&amp;quot;) 100;&lt;br /&gt;
    setAttr ($alembicsPart+&amp;quot;.scaleY&amp;quot;) 100;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== V-ray - Change path to VRayMesh for selected proxies ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Change path with your own .vrmesh&lt;br /&gt;
$selected=`ls -type &amp;quot;VRayMesh&amp;quot;`;&lt;br /&gt;
for ($object in $selected){&lt;br /&gt;
    setAttr -type &amp;quot;string&amp;quot; ($object + &amp;quot;.fileName2&amp;quot;) &amp;quot;//DISK/PATH/YOUR_VRMESH.vrmesh&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// If you want to change Geometry type - 4 for GPU mesh - add following in the loop&lt;br /&gt;
//    setAttr ($object + &amp;quot;.geomType&amp;quot;) 4;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Delete image planes ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Delete image plane if exists.&lt;br /&gt;
$selected=`ls -type &amp;quot;imagePlane&amp;quot;`;&lt;br /&gt;
select $selected;&lt;br /&gt;
for ($object in $selected){&lt;br /&gt;
    doDelete;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Merge alembic from set ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select objects in a set called EXPORT_SET&lt;br /&gt;
select -r EXPORT_SET ;&lt;br /&gt;
timeControl -edit -forceRedraw $gPlayBackSlider;&lt;br /&gt;
&lt;br /&gt;
// Create list of objects from EXPORT_SET&lt;br /&gt;
string $assetParts[] = `ls -sl`;&lt;br /&gt;
$assetPartsList = stringArrayToString($assetParts,&amp;quot; &amp;quot;);&lt;br /&gt;
&lt;br /&gt;
// Merge alembic with these objects&lt;br /&gt;
AbcImport -mode import -connect $assetPartsList &amp;quot;//DISK/PATH/alembic.abc&amp;quot;;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Create Texture reference ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// CREATE TEXTURE REFERENCE ON EXPORT SET&lt;br /&gt;
&lt;br /&gt;
select -r YOUR_GROUP ;&lt;br /&gt;
CreateTextureReferenceObject;&lt;br /&gt;
select -cl  ;&lt;br /&gt;
&lt;br /&gt;
// REMOVE REFERENCE OBJECTS FROM EXPORT SET&lt;br /&gt;
select -r YOUR_GROUP_reference ;&lt;br /&gt;
string $selection[] = `ls -sl`;&lt;br /&gt;
string $polyGons[] = `filterExpand -sm 12 $selection`;&lt;br /&gt;
select -r $polyGons;&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    sets -rm EXPORT_SET $object;&lt;br /&gt;
}&lt;br /&gt;
select -cl  ;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Replace animated objects with V-Ray proxies ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// First select animated objects to replace&lt;br /&gt;
// For each object create a proxy then constrain then bake simulation then delete constraint&lt;br /&gt;
&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
	vrayCreateProxy -node assetName -existing -dir (&amp;quot;//DISK/PATH/your_asset.vrmesh&amp;quot;) -createProxyNode;&lt;br /&gt;
	select -r $object ;&lt;br /&gt;
	select -add assetName ;&lt;br /&gt;
	doCreateParentConstraintArgList 1 { &amp;quot;0&amp;quot;,&amp;quot;0&amp;quot;,&amp;quot;0&amp;quot;,&amp;quot;0&amp;quot;,&amp;quot;0&amp;quot;,&amp;quot;0&amp;quot;,&amp;quot;0&amp;quot;,&amp;quot;0&amp;quot;,&amp;quot;1&amp;quot;,&amp;quot;&amp;quot;,&amp;quot;1&amp;quot; };&lt;br /&gt;
	parentConstraint -weight 1;&lt;br /&gt;
	bakeResults -simulation true -t &amp;quot;1000:1100&amp;quot; -sampleBy 1 -oversamplingRate 1 -disableImplicitControl true -preserveOutsideKeys true -sparseAnimCurveBake false -removeBakedAttributeFromLayer false -removeBakedAnimFromLayer false -bakeOnOverrideLayer false -minimizeRotation true -controlPoints false -shape true {&amp;quot;assetName&amp;quot;};&lt;br /&gt;
	select `ls -type &amp;quot;constraint&amp;quot;`;&lt;br /&gt;
	select -add $object ;&lt;br /&gt;
	doDelete;&lt;br /&gt;
	select -cl  ;&lt;br /&gt;
	rename &amp;quot;assetName&amp;quot; $object;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Select all meshes in a group ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// From cmadsenAniden on forums.autodesk.com&lt;br /&gt;
// Replace group1 by the name of your own group&lt;br /&gt;
&lt;br /&gt;
select -r group1 ;&lt;br /&gt;
string $selection[] = `ls -sl`;&lt;br /&gt;
string $polyGons[] = `filterExpand -sm 12 $selection`;&lt;br /&gt;
select -r $polyGons;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Select shot camera ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// CREATE VARIABLE FOR SHOT CAMERA AND SELECT IT&lt;br /&gt;
&lt;br /&gt;
select `ls -type &amp;quot;camera&amp;quot;`;&lt;br /&gt;
select -d sideShape frontShape topShape perspShape;&lt;br /&gt;
$camerashot = `ls -sl`;&lt;br /&gt;
string $shotcamera = $camerashot[0];&lt;br /&gt;
print $shotcamera;&lt;br /&gt;
select $shotcamera;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Get list of frames with keys on all transform objects ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$selected=`ls -dag -et transform`;&lt;br /&gt;
&lt;br /&gt;
float $arrathy[] = `keyframe -query $selected`;&lt;br /&gt;
&lt;br /&gt;
float $sorted[] = python(&amp;quot;import pymel.core as pm; list(set((pm.getMelGlobal(\&amp;quot;float[]\&amp;quot;, \&amp;quot;$arrathy\&amp;quot;))))&amp;quot;);&lt;br /&gt;
print $sorted;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== MULTI SNAP ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Replace a list of objects by another with bake of animation. Replace FSTART and FEND with your own padding.&lt;br /&gt;
&lt;br /&gt;
///////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
///////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
/*&lt;br /&gt;
Type the command MS() in MEL form to open UI.&lt;br /&gt;
*/&lt;br /&gt;
///////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
///////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
source &amp;quot;generateChannelMenu.mel&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
global proc MS ()&lt;br /&gt;
{&lt;br /&gt;
     global string $sourceObjects;&lt;br /&gt;
     global string $destinationObjects;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    // If the window exists already, delete it.&lt;br /&gt;
    if (`window -exists multiSnapWindow`)&lt;br /&gt;
    {&lt;br /&gt;
        deleteUI multiSnapWindow;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    // Build the window.&lt;br /&gt;
    global string $man_window;&lt;br /&gt;
    string $man_window = `window -title &amp;quot; MULTI SNAP&amp;quot; -sizeable 0 -w 300 multiSnapWindow`;&lt;br /&gt;
    frameLayout -label &amp;quot;Snap source objects on destination objects.&amp;quot;;&lt;br /&gt;
    rowLayout -width 540 -nc 2 -cw4 10 20 20 100;&lt;br /&gt;
    // Source objects section&lt;br /&gt;
    frameLayout -label &amp;quot;Source objects&amp;quot;;&lt;br /&gt;
    $sourceObjects = `textScrollList -width 600 -height 300`;&lt;br /&gt;
    rowLayout -width 240 -nc 2 -cw2 120 120;&lt;br /&gt;
    button -label &amp;quot;Add selected&amp;quot; -command &amp;quot;MS_addObjects ();&amp;quot; -width 120;&lt;br /&gt;
    button -label &amp;quot;Remove selected&amp;quot; -command &amp;quot;MS_removeObjects ();&amp;quot; -width 120;&lt;br /&gt;
    setParent ..;&lt;br /&gt;
    rowLayout -width 240 -nc 2 -cw2 120 120;&lt;br /&gt;
    button -label &amp;quot;Remove All&amp;quot; -command &amp;quot;MS_clearObjects ();&amp;quot; -width 240;&lt;br /&gt;
    setParent ..;&lt;br /&gt;
    setParent ..;&lt;br /&gt;
    rowLayout -nc 3;&lt;br /&gt;
    button -label &amp;quot;Create&amp;quot; -command &amp;quot;VRAYCONNECDO() &amp;quot; -width 140 -align center;&lt;br /&gt;
    button -label &amp;quot;Close&amp;quot; -command &amp;quot;DAC_CloseUI() &amp;quot; -width 140 -align center;&lt;br /&gt;
    setParent ..;&lt;br /&gt;
    setParent ..;&lt;br /&gt;
    // Destination objects section&lt;br /&gt;
    frameLayout -label &amp;quot;Destination objects&amp;quot;;&lt;br /&gt;
    $destinationObjects = `textScrollList -width 600 -height 300`;&lt;br /&gt;
    rowLayout -width 240 -nc 2 -cw2 120 120;&lt;br /&gt;
    button -label &amp;quot;Add selected&amp;quot; -command &amp;quot;MS_addMM ();&amp;quot; -width 120;&lt;br /&gt;
    button -label &amp;quot;Remove selected&amp;quot; -command &amp;quot;MS_removeMM ();&amp;quot; -width 120;&lt;br /&gt;
    setParent ..;&lt;br /&gt;
    setParent ..;&lt;br /&gt;
    rowLayout -nc 3;&lt;br /&gt;
    button -label &amp;quot;SNAP IT&amp;quot; -command &amp;quot;VRAYCONNECDO() &amp;quot; -width 140 -align center;&lt;br /&gt;
    button -label &amp;quot;Close&amp;quot; -command &amp;quot;DAC_CloseUI() &amp;quot; -width 140 -align center;&lt;br /&gt;
    setParent ..;&lt;br /&gt;
    setParent ..;&lt;br /&gt;
&lt;br /&gt;
// Show the window.&lt;br /&gt;
showWindow multiSnapWindow;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
global proc string[] getShaders(string $from)&lt;br /&gt;
{&lt;br /&gt;
// get the shapes from the input&lt;br /&gt;
string $shapes[] = ls(&amp;quot;-o&amp;quot;, &amp;quot;-dag&amp;quot;, &amp;quot;-s&amp;quot;, $from);&lt;br /&gt;
// give me the connected &amp;quot;shadingEngines&amp;quot;&lt;br /&gt;
string $shadingEngines[] = listConnections(&amp;quot;-type&amp;quot;,&amp;quot;shadingEngine&amp;quot;, $shapes);&lt;br /&gt;
// list the connected materials (shaders) from that&lt;br /&gt;
string $materials[] = ls(&amp;quot;-mat&amp;quot;, listConnections($shadingEngines));&lt;br /&gt;
// remove duplicate occurrences.&lt;br /&gt;
return (stringArrayRemoveDuplicates($materials));&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
//Add selected objects to list.&lt;br /&gt;
global proc MS_addObjects ()&lt;br /&gt;
{&lt;br /&gt;
      global string $sourceObjects;&lt;br /&gt;
      string $selectedshapes[] = `ls -sl -l`;&lt;br /&gt;
      //print $selectedshapes;&lt;br /&gt;
      int $count = 0;&lt;br /&gt;
&lt;br /&gt;
if ($selectedshapes[0] != &amp;quot;&amp;quot;)&lt;br /&gt;
{&lt;br /&gt;
   for ($i in $selectedshapes)&lt;br /&gt;
   {&lt;br /&gt;
     $count ++;&lt;br /&gt;
     textScrollList -edit -append $i $sourceObjects;&lt;br /&gt;
   }&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
//Add selected objects to list.&lt;br /&gt;
global proc MS_addMM ()&lt;br /&gt;
{&lt;br /&gt;
      global string $destinationObjects;&lt;br /&gt;
      string $selectedshapes[] = `ls -sl -l`;&lt;br /&gt;
      //print $selectedshapes;&lt;br /&gt;
      int $count = 0;&lt;br /&gt;
&lt;br /&gt;
if ($selectedshapes[0] != &amp;quot;&amp;quot;)&lt;br /&gt;
{&lt;br /&gt;
   for ($i in $selectedshapes)&lt;br /&gt;
   {&lt;br /&gt;
     $count ++;&lt;br /&gt;
     textScrollList -edit -append $i $destinationObjects;&lt;br /&gt;
   }&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// Clear objects from list.&lt;br /&gt;
global proc MS_clearObjects ()&lt;br /&gt;
{&lt;br /&gt;
    global string $sourceObjects;&lt;br /&gt;
textScrollList -e -ra $sourceObjects;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// Remove selected object from list.&lt;br /&gt;
global proc MS_removeObjects ()&lt;br /&gt;
{&lt;br /&gt;
   global string $sourceObjects;&lt;br /&gt;
&lt;br /&gt;
    int $index [] = `textScrollList -query -selectIndexedItem $sourceObjects`;&lt;br /&gt;
    if ($index [0] != 0)&lt;br /&gt;
    {&lt;br /&gt;
        textScrollList -edit -removeIndexedItem $index [0] $sourceObjects;&lt;br /&gt;
    }&lt;br /&gt;
   global string $sourceObjects;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
global proc VRAYCONNECDO()&lt;br /&gt;
{&lt;br /&gt;
    // UI Elements&lt;br /&gt;
global string $sourceObjects;&lt;br /&gt;
global string $destinationObjects;&lt;br /&gt;
// Define user selected objects&lt;br /&gt;
string $selected_objects[] = `textScrollList -query -allItems $sourceObjects`;&lt;br /&gt;
string $meshMaterial[] = `textScrollList -query -allItems $destinationObjects`;&lt;br /&gt;
int $i = 0;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
// SET PADDING&lt;br /&gt;
string $FSTART = &amp;quot;1&amp;quot;;&lt;br /&gt;
string $FEND = &amp;quot;100&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
print $FSTART;&lt;br /&gt;
print $FEND;&lt;br /&gt;
&lt;br /&gt;
string $PADDING = $FSTART + &amp;quot;:&amp;quot; + $FEND;&lt;br /&gt;
&lt;br /&gt;
//Progress bar&lt;br /&gt;
global string $gMainProgressBar;&lt;br /&gt;
&lt;br /&gt;
// Start the progress bar and adjust its max value for this operation.&lt;br /&gt;
    int $steps = size($selected_objects);&lt;br /&gt;
    progressBar -edit -beginProgress -isInterruptable true -status &amp;quot;Connecting shaders to mesh material ...&amp;quot; -maxValue $steps $gMainProgressBar;&lt;br /&gt;
 &lt;br /&gt;
for ($i = 0; $i &amp;lt; size($selected_objects); $i ++)&lt;br /&gt;
{&lt;br /&gt;
        parentConstraint -n parentConstraintMS $selected_objects[$i] $meshMaterial[$i];&lt;br /&gt;
        select -r $meshMaterial[$i] ;&lt;br /&gt;
        bakeResults -simulation true -t $PADDING -sampleBy 1 -oversamplingRate 1 -disableImplicitControl true -preserveOutsideKeys true -sparseAnimCurveBake false -removeBakedAttributeFromLayer false -removeBakedAnimFromLayer false -bakeOnOverrideLayer false -minimizeRotation true -controlPoints false -shape true {$meshMaterial[$i]};&lt;br /&gt;
        select -cl  ;&lt;br /&gt;
        select -r &amp;quot;*parentConstraintMS*&amp;quot;;&lt;br /&gt;
        doDelete;&lt;br /&gt;
// Update the progress bar.&lt;br /&gt;
progressBar -edit -step 1 $gMainProgressBar;&lt;br /&gt;
}&lt;br /&gt;
// End the progress.&lt;br /&gt;
progressBar -edit -endProgress $gMainProgressBar;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Delete hidden objects ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select objects&lt;br /&gt;
&lt;br /&gt;
for ( $object in `ls -sl` ) {&lt;br /&gt;
    $vis = getAttr ($object+&amp;quot;.visibility&amp;quot;);&lt;br /&gt;
    if ($vis == 0){&lt;br /&gt;
        select -r $object ;&lt;br /&gt;
        doDelete ;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== V-Ray - BAKE MATERIALS ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Made to work also with mayabatch.exe&lt;br /&gt;
&lt;br /&gt;
////////////////////////////////////////////&lt;br /&gt;
// BAKE VRAY CUSTOM VARIABLES&lt;br /&gt;
////////////////////////////////////////////&lt;br /&gt;
&lt;br /&gt;
// ASSET PATH&lt;br /&gt;
string $assetFileType = &amp;quot;mayaBinary&amp;quot;;&lt;br /&gt;
string $assetPath = &amp;quot;C:/YOUR_PATH/YOUR_SURFACING_ASSET.mb&amp;quot;;&lt;br /&gt;
string $assetName = &amp;quot;ASSET_NAME&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
// LIGHT RIG PATH&lt;br /&gt;
string $lightRigFileType = &amp;quot;mayaAscii&amp;quot;;&lt;br /&gt;
string $lightRigPath = &amp;quot;C:/YOUR_PATH/YOUR_LIGHT_RIG.mb&amp;quot;;&lt;br /&gt;
string $lightRigName = &amp;quot;DAY_LIGHTING&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
// BAKED TEXTURES PATH&lt;br /&gt;
string $bakedTexturesPath = (&amp;quot;C:/YOUR_PATH/BAKED_TEXTURES/&amp;quot; + $assetName + &amp;quot;_&amp;quot; + $lightRigName + &amp;quot;_Bake&amp;quot;);&lt;br /&gt;
print $bakedTexturesPath;&lt;br /&gt;
&lt;br /&gt;
// SET RESOLUTION FOR BAKED MAPS&lt;br /&gt;
$resWidth = 4096;&lt;br /&gt;
$resHeight = $resWidth;&lt;br /&gt;
&lt;br /&gt;
// COLOR SPACE FOR FILE TEXTURES&lt;br /&gt;
string $fileColorSpace = &amp;quot;ACES - ACEScg&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
////////////////////////////////////////////&lt;br /&gt;
// END OF CUSTOM VARIABLES&lt;br /&gt;
////////////////////////////////////////////&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
////////////////////////////////////////////&lt;br /&gt;
// RENDER SETTINGS&lt;br /&gt;
&lt;br /&gt;
// Set File Name Prefix&lt;br /&gt;
setAttr -type &amp;quot;string&amp;quot; vraySettings.fileNamePrefix &amp;quot;&amp;lt;Scene&amp;gt;/&amp;lt;Layer&amp;gt;/&amp;lt;Camera&amp;gt;_&amp;lt;Layer&amp;gt;_&amp;lt;Scene&amp;gt;&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
// Set resolution&lt;br /&gt;
$resWidthHalf = $resWidth/2;&lt;br /&gt;
$resHeightHalf = $resHeight/2;&lt;br /&gt;
setAttr &amp;quot;vraySettings.width&amp;quot; $resWidthHalf;&lt;br /&gt;
setAttr &amp;quot;vraySettings.height&amp;quot; $resHeightHalf;&lt;br /&gt;
&lt;br /&gt;
// Set Persp camera renderable&lt;br /&gt;
setAttr &amp;quot;perspShape.renderable&amp;quot; 1;&lt;br /&gt;
&lt;br /&gt;
// Set Image format&lt;br /&gt;
setAttr -type &amp;quot;string&amp;quot; &amp;quot;vraySettings.imageFormatStr&amp;quot; &amp;quot;exr (multichannel)&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
// Set Animation type on Standard&lt;br /&gt;
setAttr &amp;quot;vraySettings.animType&amp;quot; 0;&lt;br /&gt;
setAttr &amp;quot;vraySettings.animBatchOnly&amp;quot; 1;&lt;br /&gt;
&lt;br /&gt;
// Sampler type Bucket&lt;br /&gt;
setAttr &amp;quot;vraySettings.samplerType&amp;quot; 4;&lt;br /&gt;
&lt;br /&gt;
// Min Shading Rate&lt;br /&gt;
//setAttr &amp;quot;vraySettings.minShadeRate&amp;quot; 4;&lt;br /&gt;
setAttr &amp;quot;vraySettings.minShadeRate&amp;quot; 7;&lt;br /&gt;
&lt;br /&gt;
// Buckets subdivs&lt;br /&gt;
//setAttr &amp;quot;vraySettings.dmcMinSubdivs&amp;quot; 1;&lt;br /&gt;
//setAttr &amp;quot;vraySettings.dmcMaxSubdivs&amp;quot; 8;&lt;br /&gt;
//setAttr &amp;quot;vraySettings.dmcThreshold&amp;quot; 0.1;&lt;br /&gt;
setAttr &amp;quot;vraySettings.dmcMinSubdivs&amp;quot; 1;&lt;br /&gt;
setAttr &amp;quot;vraySettings.dmcMaxSubdivs&amp;quot; 15;&lt;br /&gt;
setAttr &amp;quot;vraySettings.dmcThreshold&amp;quot; 0.01;&lt;br /&gt;
&lt;br /&gt;
// Color mapping Linear&lt;br /&gt;
setAttr &amp;quot;vraySettings.cmap_type&amp;quot; 0;&lt;br /&gt;
&lt;br /&gt;
// GI on&lt;br /&gt;
setAttr &amp;quot;vraySettings.giOn&amp;quot; 1;&lt;br /&gt;
//setAttr &amp;quot;vraySettings.subdivs&amp;quot; 400;&lt;br /&gt;
setAttr &amp;quot;vraySettings.subdivs&amp;quot; 1000;&lt;br /&gt;
&lt;br /&gt;
// Max subdivs&lt;br /&gt;
setAttr &amp;quot;vraySettings.ddisplac_maxSubdivs&amp;quot; 16;&lt;br /&gt;
&lt;br /&gt;
// Cache geometry and bitmaps&lt;br /&gt;
setAttr &amp;quot;vraySettings.globopt_cache_geom_plugins&amp;quot; 1;&lt;br /&gt;
setAttr &amp;quot;vraySettings.globopt_cache_bitmaps&amp;quot; 1;&lt;br /&gt;
&lt;br /&gt;
// Dynamic memory limit&lt;br /&gt;
setAttr &amp;quot;vraySettings.sys_rayc_dynMemLimit&amp;quot; 0;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
////////////////////////////////////////////&lt;br /&gt;
// IMPORT&lt;br /&gt;
&lt;br /&gt;
// IMPORT LIGHT RIG&lt;br /&gt;
file -import -type $lightRigFileType  -ignoreVersion -mergeNamespacesOnClash false -rpr &amp;quot;:&amp;quot; -options &amp;quot;v=0;&amp;quot; $lightRigPath;&lt;br /&gt;
&lt;br /&gt;
// IMPORT ASSET&lt;br /&gt;
file -import -type $assetFileType  -ignoreVersion -mergeNamespacesOnClash false -rpr &amp;quot;:&amp;quot; -options &amp;quot;v=0;&amp;quot; $assetPath;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
// CREATE SETS&lt;br /&gt;
select `ls -type &amp;quot;mesh&amp;quot;`;&lt;br /&gt;
sets -name &amp;quot;assetOriginal_Set&amp;quot; ;&lt;br /&gt;
duplicate -rr;&lt;br /&gt;
group -w -n (&amp;quot;GRP_&amp;quot; + $assetName + &amp;quot;_BAKE_&amp;quot; + `toupper $lightRigName`);&lt;br /&gt;
sets -name &amp;quot;assetBaked_Set&amp;quot; ;&lt;br /&gt;
&lt;br /&gt;
// REMOVE BAKED PARTS FROM ORIGINAL PARTS SET&lt;br /&gt;
select -r assetBaked_Set ;&lt;br /&gt;
string $selection[] = `ls -sl`;&lt;br /&gt;
string $polyGons[] = `filterExpand -sm 12 $selection`;&lt;br /&gt;
select -r $polyGons;&lt;br /&gt;
pickWalk -d down;&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    sets -rm assetOriginal_Set $object;&lt;br /&gt;
}&lt;br /&gt;
select -cl  ;&lt;br /&gt;
&lt;br /&gt;
// DELETE HIDDEN OBJECTS&lt;br /&gt;
select -r assetBaked_Set ;&lt;br /&gt;
string $selection[] = `ls -sl`;&lt;br /&gt;
string $polyGons[] = `filterExpand -sm 12 $selection`;&lt;br /&gt;
select -r $polyGons;&lt;br /&gt;
for ( $object in `ls -sl` ) {&lt;br /&gt;
    $vis = getAttr ($object+&amp;quot;.visibility&amp;quot;);&lt;br /&gt;
    if ($vis == 0){&lt;br /&gt;
        select -r $object ;&lt;br /&gt;
        doDelete ;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
select -cl  ;&lt;br /&gt;
&lt;br /&gt;
// fixShapeName - Thanks to Pinkwerks&lt;br /&gt;
global proc&lt;br /&gt;
fixShapeName()&lt;br /&gt;
{&lt;br /&gt;
    string $me = &amp;quot;fixShapeName&amp;quot;;&lt;br /&gt;
    string $shape;&lt;br /&gt;
    string $newShapeName;&lt;br /&gt;
    string $parent;&lt;br /&gt;
    string $tmpA[];&lt;br /&gt;
	string $selectedShapes[] = `ls -sl -l`;&lt;br /&gt;
    int $sizeOfShapes = `size $selectedShapes`;&lt;br /&gt;
&lt;br /&gt;
    if ( $sizeOfShapes == 0 )&lt;br /&gt;
    	error($me + &amp;quot; : Nothing shapes to process!&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
    for ( $shape in $selectedShapes )&lt;br /&gt;
    {&lt;br /&gt;
    	$tmpA = `listRelatives -p $shape`;&lt;br /&gt;
		$parent = $tmpA[0];&lt;br /&gt;
		$newShapeName = ($parent + &amp;quot;Shape&amp;quot;);&lt;br /&gt;
		rename $shape $newShapeName;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// APPLY FIXSHAPENAME TO BAKED ASSET PARTS&lt;br /&gt;
select -r assetBaked_Set ;&lt;br /&gt;
string $selection[] = `ls -sl`;&lt;br /&gt;
string $polyGons[] = `filterExpand -sm 12 $selection`;&lt;br /&gt;
select -r $polyGons;&lt;br /&gt;
pickWalk -d down;&lt;br /&gt;
fixShapeName();&lt;br /&gt;
select -cl  ;&lt;br /&gt;
&lt;br /&gt;
// DELETE OBJECTS WITHOUT UVS&lt;br /&gt;
select -r assetBaked_Set ;&lt;br /&gt;
string $selection[] = `ls -sl`;&lt;br /&gt;
string $polyGons[] = `filterExpand -sm 12 $selection`;&lt;br /&gt;
select -r $polyGons;&lt;br /&gt;
for ( $object in `ls -sl` ) {&lt;br /&gt;
    int $vertexCount[] = `polyEvaluate -uv $object`;&lt;br /&gt;
    print $vertexCount;&lt;br /&gt;
    string $uvCount = $vertexCount[0];&lt;br /&gt;
    if ($uvCount == 0){&lt;br /&gt;
        select -r $object ;&lt;br /&gt;
        doDelete ;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// CREATE VRAY BAKE OPTIONS&lt;br /&gt;
createNode &amp;quot;VRayBakeOptions&amp;quot; -n &amp;quot;vrayBakeOptions&amp;quot;;&lt;br /&gt;
select -r assetBaked_Set ;&lt;br /&gt;
string $selection[] = `ls -sl`;&lt;br /&gt;
string $polyGons[] = `filterExpand -sm 12 $selection`;&lt;br /&gt;
select -r $polyGons;&lt;br /&gt;
$selected=`ls -sl`;&lt;br /&gt;
for ($object in $selected){&lt;br /&gt;
    sets -edit -forceElement  vrayBakeOptions $object ;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// HIDE ORIGINAL ASSET&lt;br /&gt;
select -r assetOriginal_Set ;&lt;br /&gt;
pickWalk -d up;&lt;br /&gt;
hide `ls -sl`;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
// BAKE VRAY OPTIONS&lt;br /&gt;
setAttr &amp;quot;vrayBakeOptions.udimBaking&amp;quot; 1;&lt;br /&gt;
setAttr &amp;quot;vrayBakeOptions.resolutionX&amp;quot; $resWidth;&lt;br /&gt;
&lt;br /&gt;
optionVar -intValue &amp;quot;vrayBakeType&amp;quot; 2;&lt;br /&gt;
optionVar -intValue &amp;quot;vraySkipNodesWithoutBakeOptions&amp;quot; 1;&lt;br /&gt;
optionVar -intValue &amp;quot;vrayAssignBakedTextures&amp;quot; 1;&lt;br /&gt;
optionVar -stringValue &amp;quot;vrayBakeOutputPath&amp;quot; $bakedTexturesPath;&lt;br /&gt;
optionVar -intValue &amp;quot;vrayBakeProjectionBaking&amp;quot; 0;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
// GO BAKE GO&lt;br /&gt;
select -cl  ;&lt;br /&gt;
select -r assetBaked_Set ;&lt;br /&gt;
string $selection[] = `ls -sl`;&lt;br /&gt;
string $polyGons[] = `filterExpand -sm 12 $selection`;&lt;br /&gt;
select -r $polyGons;&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    vrayStartBake;&lt;br /&gt;
}&lt;br /&gt;
select -cl  ;&lt;br /&gt;
&lt;br /&gt;
// UV TILING UDIM AND ACES CG FOR FILES&lt;br /&gt;
for ( $object in `ls -type &amp;quot;file&amp;quot;` ) {&lt;br /&gt;
    setAttr ($object + &amp;quot;.filterType&amp;quot;) 0;&lt;br /&gt;
    setAttr ($object + &amp;quot;.uvTilingMode&amp;quot;) 3;&lt;br /&gt;
    setAttr ($object + &amp;quot;.cs&amp;quot;) -type &amp;quot;string&amp;quot; $fileColorSpace;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// CONNECT SHADERS&lt;br /&gt;
select -cl  ;&lt;br /&gt;
select -r assetBaked_Set ;&lt;br /&gt;
string $selection[] = `ls -sl`;&lt;br /&gt;
string $polyGons[] = `filterExpand -sm 12 $selection`;&lt;br /&gt;
for ( $object in $polyGons ) {&lt;br /&gt;
    string $shadingGroupName = ($object + &amp;quot;Shape_bakedmtlSG&amp;quot;);&lt;br /&gt;
    sets -e -forceElement $shadingGroupName $object;&lt;br /&gt;
}&lt;br /&gt;
select -cl  ;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
///////////////////////////////////&lt;br /&gt;
// SAVE&lt;br /&gt;
file -rename (&amp;quot;C:/YOUR_PATH/BAKED_ASSETS/&amp;quot; + $assetName + &amp;quot;_&amp;quot; + $lightRigName + &amp;quot;_BAKE_DEBUG.mb&amp;quot;);&lt;br /&gt;
file -f -save;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Arnold - Set all Standins display on Bouding box ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$selected=`ls -type &amp;quot;aiStandIn&amp;quot;`;&lt;br /&gt;
for ($object in $selected){&lt;br /&gt;
    setAttr ($object + &amp;quot;.mode&amp;quot;) 0;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Arnold - Set all Standins display on Point cloud ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$selected=`ls -type &amp;quot;aiStandIn&amp;quot;`;&lt;br /&gt;
for ($object in $selected){&lt;br /&gt;
    setAttr ($object + &amp;quot;.mode&amp;quot;) 4;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Alembic - Loop animation on all nodes ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$selected=`ls -type &amp;quot;AlembicNode&amp;quot;`;&lt;br /&gt;
for ($object in $selected){&lt;br /&gt;
    setAttr ($object + &amp;quot;.cycleType&amp;quot;) 1;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Mental Ray nodes error - Delete Mayatomr plugin ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
unknownPlugin -remove &amp;quot;Mayatomr&amp;quot;;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Delete Unknown nodes ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
select -r `ls -type unknown`;&lt;br /&gt;
delete;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Write text ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
string $exampleFileName = ( &amp;quot;D:/yolo.bat&amp;quot; );&lt;br /&gt;
string $linesToWrite[] = {&lt;br /&gt;
    &amp;quot;youpi&amp;quot;,&lt;br /&gt;
    &amp;quot;youhou&amp;quot;&lt;br /&gt;
    };&lt;br /&gt;
int $result = fwriteAllLines($exampleFileName,$linesToWrite);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Point Lock No Attach on selected follicles ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    setAttr ($object + &amp;quot;.pointLock&amp;quot;) 0;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Convert .ma cameras from Reality Capture into .abc files ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// List of assets&lt;br /&gt;
string $fileParts[] = {&amp;quot;asset_001&amp;quot;, &amp;quot;asset_002&amp;quot;};&lt;br /&gt;
&lt;br /&gt;
// Replace the PATH of your files&lt;br /&gt;
for ($filePart in $fileParts){&lt;br /&gt;
	string $fileName = $filePart + &amp;quot;_cam&amp;quot;;&lt;br /&gt;
	string $filePath = &amp;quot;//DISK/PATH/&amp;quot; + $filePart + &amp;quot;/&amp;quot; + $filePart +&amp;quot;_cam.ma&amp;quot;;&lt;br /&gt;
	file -import -type &amp;quot;mayaAscii&amp;quot;  -ignoreVersion -ra true -mergeNamespacesOnClash false -rpr $fileName -options &amp;quot;v=0;p=17;f=0&amp;quot;  -pr  -importFrameRate true  -importTimeRange &amp;quot;override&amp;quot; $filePath;&lt;br /&gt;
	select -cl;&lt;br /&gt;
	select `ls -type &amp;quot;imagePlane&amp;quot;`;&lt;br /&gt;
	pickWalk -d up;&lt;br /&gt;
	doDelete;&lt;br /&gt;
	select `ls -type &amp;quot;camera&amp;quot;`;&lt;br /&gt;
	pickWalk -d up;	&lt;br /&gt;
	string $abcPath = &amp;quot;//DISK/PATH/&amp;quot; + $filePart + &amp;quot;/&amp;quot; + $filePart +&amp;quot;_cam.abc&amp;quot;;&lt;br /&gt;
	string $abcExp = &amp;quot;-frameRange 1 1 -uvWrite -worldSpace -dataFormat ogawa -root |* -file &amp;quot; + $abcPath;&lt;br /&gt;
	AbcExport -j $abcExp;&lt;br /&gt;
	select -all;&lt;br /&gt;
	doDelete;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Combine objects ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select objects&lt;br /&gt;
&lt;br /&gt;
polyPerformAction polyUnite o 0; &lt;br /&gt;
DeleteHistory;&lt;br /&gt;
FreezeTransformations;&lt;br /&gt;
makeIdentity -apply true -t 1 -r 1 -s 1 -n 0 -pn 1;&lt;br /&gt;
CenterPivot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Unitize UVs (one square UV by face) ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select objects&lt;br /&gt;
&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    select -r ($object+&amp;quot;.e[*]&amp;quot;);&lt;br /&gt;
    hilite ($object+&amp;quot;.e[*]&amp;quot;) ;&lt;br /&gt;
    polyMapCut -ch 1 ($object+&amp;quot;.e[*]&amp;quot;);&lt;br /&gt;
    polyForceUV -unitize $object;&lt;br /&gt;
    select $object;&lt;br /&gt;
    DeleteHistory;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== ONE-CLICK Unfold UVs ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select seams edges first&lt;br /&gt;
&lt;br /&gt;
invertSelection;&lt;br /&gt;
string $selectedEdges [] = `ls -sl`;&lt;br /&gt;
&lt;br /&gt;
string $selectedObject [] = `ls -selection -objectsOnly`;&lt;br /&gt;
&lt;br /&gt;
select -r ($selectedObject[0]+&amp;quot;.e[*]&amp;quot;);&lt;br /&gt;
hilite ($selectedObject[0]+&amp;quot;.e[*]&amp;quot;) ;&lt;br /&gt;
polyMapCut -ch 1 ($selectedObject[0]+&amp;quot;.e[*]&amp;quot;);&lt;br /&gt;
polyForceUV -unitize $selectedObject[0];&lt;br /&gt;
&lt;br /&gt;
select $selectedObject[0];&lt;br /&gt;
polyMapSewMove -nf 10 -lps 0 -ch 1 $selectedEdges;&lt;br /&gt;
select -r ($selectedObject[0]+&amp;quot;.map[*]&amp;quot;);&lt;br /&gt;
u3dUnfold -ite 1 -p 0 -bi 1 -tf 1 -ms 1024 -rs 0 ($selectedObject[0]+&amp;quot;.map[*]&amp;quot;);&lt;br /&gt;
u3dLayout -res 256 -scl 1 -spc 0.001 -mar 0.01 -box 0 1 0 1 $selectedObject[0];&lt;br /&gt;
select $selectedObject[0];&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Create Texture Reference on all shapes from a group ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select top group first&lt;br /&gt;
&lt;br /&gt;
string $selection[] = `ls -sl`;&lt;br /&gt;
string $polyGons[] = `filterExpand -sm 12 $selection`;&lt;br /&gt;
&lt;br /&gt;
for ($i = 0; $i &amp;lt; size($polyGons); $i ++)&lt;br /&gt;
{&lt;br /&gt;
    select -r $polyGons[$i] ;&lt;br /&gt;
    CreateTextureReferenceObject;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
select -r $selection;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Search and select by name ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// If you want to select every object containing &amp;quot;tree&amp;quot;&lt;br /&gt;
// From NaughtyNathan on CGTalk&lt;br /&gt;
&lt;br /&gt;
select -r &amp;quot;*tree*&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
// And if you want to select only transforms containing &amp;quot;tree&amp;quot;&lt;br /&gt;
&lt;br /&gt;
select `ls -type &amp;quot;transform&amp;quot; &amp;quot;*tree*&amp;quot;`;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Walter</name></author>
		
	</entry>
	<entry>
		<id>http://antoinevienne.fr/wiki/index.php?title=Maya_Mel&amp;diff=263</id>
		<title>Maya Mel</title>
		<link rel="alternate" type="text/html" href="http://antoinevienne.fr/wiki/index.php?title=Maya_Mel&amp;diff=263"/>
		<updated>2023-10-03T18:59:50Z</updated>

		<summary type="html">&lt;p&gt;Walter: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Maya Mels Scripts=&lt;br /&gt;
=== Octane Render Baking group id - Assign id to multiple objects shapes ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// 0 is for Red, 2 for Green, 4 for Blue&lt;br /&gt;
// 3, 5 and 6 for Cyan, Magenta and Yellow&lt;br /&gt;
// Replace the number &amp;quot;0&amp;quot; by the number of your choice&lt;br /&gt;
// Baking group id is also avalaible in Attribute Spreadsheet Editor&lt;br /&gt;
&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    print($object+&amp;quot;\n&amp;quot;);&lt;br /&gt;
    setAttr ($object + &amp;quot;.octBakGrId&amp;quot;) (0);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Maxwell Render - Particles sequence - Force .abc file ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
//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&lt;br /&gt;
&lt;br /&gt;
global int $current_frame;&lt;br /&gt;
$current_frame = `currentTime -query`;&lt;br /&gt;
print $current_frame;&lt;br /&gt;
{&lt;br /&gt;
setAttr -type &amp;quot;string&amp;quot; maxwellRFRKParticles1.file (&amp;quot;/YOUR_PATH/YOUR_FILE&amp;quot; + $current_frame + &amp;quot;.abc&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Maxwell Render - Specify object ID color ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Specify object ID color&lt;br /&gt;
&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    print($object+&amp;quot;\n&amp;quot;);&lt;br /&gt;
    setAttr ($object + &amp;quot;.mxSpecifyObjIdColor&amp;quot;) (1);&lt;br /&gt;
    setAttr ($object + &amp;quot;.mxObjIdColor&amp;quot;) -type &amp;quot;double3&amp;quot; 1 0 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Redshift - Add blend attribute and set random value for objects selection ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Useful for blending between colors with RedshiftUserDataScalar&lt;br /&gt;
&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    print($object);&lt;br /&gt;
    addAttr -ln &amp;quot;blend&amp;quot; -at double  -min 0 -max 1 -dv 0 $object;&lt;br /&gt;
    setAttr ($object + &amp;quot;.blend&amp;quot;) (rand(1));&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Redshift - Set Primary visibility off for selection (layer override) ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Go in right render layer and select objects&lt;br /&gt;
&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    print($object+&amp;quot;\n&amp;quot;);&lt;br /&gt;
    setAttr ($object + &amp;quot;.rsEnableVisibilityOverrides&amp;quot;) (1);&lt;br /&gt;
    editRenderLayerAdjustment ($object + &amp;quot;.rsPrimaryRayVisible&amp;quot;);&lt;br /&gt;
    setAttr ($object + &amp;quot;.rsPrimaryRayVisible&amp;quot;) (0);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Convert Motion trail to curve ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select the motion trail first&lt;br /&gt;
&lt;br /&gt;
{&lt;br /&gt;
$selected=`ls -dag -et snapshotShape`;&lt;br /&gt;
for ($obj in $selected){&lt;br /&gt;
$pts=(getAttr($obj+&amp;quot;.pts&amp;quot;));&lt;br /&gt;
$size=size($pts);&lt;br /&gt;
$curve=`curve -d 1 -p $pts[0] $pts[1] $pts[2] -p $pts[4] $pts[5] $pts[6] -k 0 -k 1`;&lt;br /&gt;
for($i=8;$i&amp;lt;$size;$i+=4)&lt;br /&gt;
curve -os -a -p $pts[$i] $pts[$i+1] $pts[$i+2] $curve ;&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Quantize keyframes for selection ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Snap keys on frames for objects selection&lt;br /&gt;
&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    print($object+&amp;quot;\n&amp;quot;);&lt;br /&gt;
    snapKey $object;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Loop image sequence for texture ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// On File texture, check Image sequence, and edit expression&lt;br /&gt;
&lt;br /&gt;
file1.frameExtension=((frame%8)+1);&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Symmetrize - Duplicate &amp;amp; merge object ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select half object first&lt;br /&gt;
&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    print($object+&amp;quot;\n&amp;quot;);&lt;br /&gt;
    xform -piv 0 0 0 $object;&lt;br /&gt;
    duplicate -rr;&lt;br /&gt;
    setAttr ($object + &amp;quot;.scaleX&amp;quot;) (-1);&lt;br /&gt;
    select -add $object ;&lt;br /&gt;
    polyPerformAction polyUnite o 0;&lt;br /&gt;
    polyMergeVertex  -d 0.0001 -am 1 -ch 1;&lt;br /&gt;
    DeleteHistory;&lt;br /&gt;
    rename ($object);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Mirror object ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select object first&lt;br /&gt;
&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    print($object+&amp;quot;\n&amp;quot;);&lt;br /&gt;
    DeleteHistory;&lt;br /&gt;
    makeIdentity -apply true -t 1 -r 1 -s 1 -n 0 -pn 1;&lt;br /&gt;
    xform -piv 0 0 0 $object;&lt;br /&gt;
    duplicate -rr;&lt;br /&gt;
    setAttr ($object + &amp;quot;.scaleX&amp;quot;) (-1);&lt;br /&gt;
    DeleteHistory;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Group each object and rename ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select objects first&lt;br /&gt;
&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    string $name = ($object);&lt;br /&gt;
    select $object ;&lt;br /&gt;
    doGroup 0 1 1;&lt;br /&gt;
    rename ($name + &amp;quot;_GRP&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Change path in an Attribute ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Here the Attribute is &amp;quot;.filePrefix&amp;quot; - Select objects first&lt;br /&gt;
&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    string $path = getAttr ($object+&amp;quot;.filePrefix&amp;quot;);&lt;br /&gt;
    $path = `substitute &amp;quot;//OLD/PATH/&amp;quot; $path &amp;quot;//NEW/PATH/&amp;quot;`;&lt;br /&gt;
    setAttr -type &amp;quot;string&amp;quot; ($object+&amp;quot;.filePrefix&amp;quot;) ($path);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Change opacity mode on V-Ray shaders ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select shaders first&lt;br /&gt;
&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    if (attributeExists(&amp;quot;omode&amp;quot;,$object)) { //check if attribute exists&lt;br /&gt;
        CBunlockAttr ($object+&amp;quot;.omode&amp;quot;); //unlock opacity mode&lt;br /&gt;
    }&lt;br /&gt;
    if (attributeExists(&amp;quot;opacityMode&amp;quot;,$object)) {&lt;br /&gt;
        setAttr ($object+&amp;quot;.opacityMode&amp;quot;) 1; //set opacity mode in Clip - 0 pour Normal&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// Alternative&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    if (attributeExists(&amp;quot;opacityMode&amp;quot;,$object)) {&lt;br /&gt;
        setAttr ($object+&amp;quot;.opacityMode&amp;quot;) -l false; //unlock attribute if locked&lt;br /&gt;
    }&lt;br /&gt;
    if (attributeExists(&amp;quot;opacityMode&amp;quot;,$object)) {&lt;br /&gt;
        setAttr ($object+&amp;quot;.opacityMode&amp;quot;) 2; //set opacity mode in Clip - 0 pour Normal&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Change color space on selected fileTextures ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Useful to automatically convert Quixel Megascans by example from sRGB/Raw to ACES color spaces&lt;br /&gt;
&lt;br /&gt;
string $object_selection[] = (`ls -sl`);&lt;br /&gt;
for ($object in $object_selection) {&lt;br /&gt;
    if(`getAttr ($object+&amp;quot;.cs&amp;quot;)` == &amp;quot;sRGB&amp;quot;){&lt;br /&gt;
        setAttr ($object + &amp;quot;.cs&amp;quot;) -type &amp;quot;string&amp;quot; &amp;quot;Utility - sRGB - Texture&amp;quot;;&lt;br /&gt;
    }&lt;br /&gt;
    if(`getAttr ($object+&amp;quot;.cs&amp;quot;)` == &amp;quot;Raw&amp;quot;){&lt;br /&gt;
        setAttr ($object + &amp;quot;.cs&amp;quot;) -type &amp;quot;string&amp;quot; &amp;quot;Utility - Raw&amp;quot;;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Redshift - custom Tesselation on selected objects ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select objects first&lt;br /&gt;
&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    print($object+&amp;quot;\n&amp;quot;);&lt;br /&gt;
    setAttr ($object + &amp;quot;.rsMinTessellationLength&amp;quot;) (0.1);&lt;br /&gt;
    setAttr ($object + &amp;quot;.rsMaxTessellationSubdivs&amp;quot;) (2);&lt;br /&gt;
    setAttr ($object + &amp;quot;.rsOutOfFrustumTessellationFactor&amp;quot;) (4);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Change color on selected shaders ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select shaders first&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    print($object+&amp;quot;\n&amp;quot;);&lt;br /&gt;
    setAttr ($object + &amp;quot;.color&amp;quot;) -l false;&lt;br /&gt;
    setAttr ($object + &amp;quot;.color&amp;quot;) -type &amp;quot;double3&amp;quot; (0.18) (0.18) (0.18);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Change Filter Type on selected Files Textures ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select files textures first - 0 means Off&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    print($object+&amp;quot;\n&amp;quot;);&lt;br /&gt;
    setAttr ($object + &amp;quot;.filterType&amp;quot;) 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Clean Render Layers ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// In MEL&lt;br /&gt;
fixRenderLayerOutAdjustmentErrors;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Change Filter Type on selected Files Textures ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select files textures first - 0 means Off&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    print($object+&amp;quot;\n&amp;quot;);&lt;br /&gt;
    setAttr ($object + &amp;quot;.filterType&amp;quot;) 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Select by name ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select objects with &amp;quot;toto&amp;quot;&lt;br /&gt;
select -r &amp;quot;toto*&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Display color on shapes ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select objects&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    print($object+&amp;quot;\n&amp;quot;);&lt;br /&gt;
    setAttr ($object + &amp;quot;.displayColors&amp;quot;) 1;&lt;br /&gt;
    setDisplayColorChannelAttribute ($object + &amp;quot;.displayColorChannel&amp;quot;);&lt;br /&gt;
    polyColorPerVertex -r 1 -g 0 -b 0 -a 1 -cdo;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Geometry Constraint on multiple selection ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select objects to constrain&lt;br /&gt;
string $objectBase = &amp;quot;surfaceName&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    select -cl;&lt;br /&gt;
    select $objectBase;&lt;br /&gt;
    select -add $object;&lt;br /&gt;
    geometryConstraint -weight 1;&lt;br /&gt;
    select -r &amp;quot;*Constraint*&amp;quot;;&lt;br /&gt;
    doDelete;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
=== Speed up smokes rendering with V-Ray ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select smokes first&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    print($object+&amp;quot;\n&amp;quot;);&lt;br /&gt;
    setAttr ($object + &amp;quot;.rendStep&amp;quot;) 160;&lt;br /&gt;
    setAttr ($object + &amp;quot;.shadowStep&amp;quot;) 400;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Set bump multiplier on multiple V-Ray shaders ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select shaders&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    if (attributeExists(&amp;quot;bumpMult&amp;quot;,$object)) {&lt;br /&gt;
        setAttr ($object + &amp;quot;.bumpMult&amp;quot;) -1; //set bump multiplier at -1&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== STOP/START viewport ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// As seen on https://www.toadstorm.com/. - Put it in your shelf&lt;br /&gt;
paneLayout -e -manage false $gMainPane&lt;br /&gt;
&lt;br /&gt;
paneLayout -e -manage true $gMainPane&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Select curves by name ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select objects first - Replace &amp;quot;toto&amp;quot; by what you are looking for&lt;br /&gt;
&lt;br /&gt;
select `ls -type &amp;quot;nurbsCurve&amp;quot; &amp;quot;*toto*&amp;quot;`;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Noise expression ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Replace &amp;quot;pCube1&amp;quot;&lt;br /&gt;
&lt;br /&gt;
pCube1.translateX=sin(time*20)*0.01*noise(time*10);&lt;br /&gt;
pCube1.translateY=sin(time*4)*0.01*noise(time*10);&lt;br /&gt;
pCube1.translateZ=sin(time*12)*0.01*noise(time*10);&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== V-ray - Make curves renderables ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Replace VRayLightMtl1 at the end by your material&lt;br /&gt;
&lt;br /&gt;
$selected=`ls -dag -et curveShape`;&lt;br /&gt;
for ($object in $selected){&lt;br /&gt;
    // Add V-ray Extra attributes&lt;br /&gt;
    vray addAttributesFromGroup $object vray_nurbscurve_renderable 1;&lt;br /&gt;
    vrayAddAttr $object vraySeparator_vray_nurbscurve_renderable;&lt;br /&gt;
    vrayAddAttr $object vrayNurbsCurveRenderable;&lt;br /&gt;
    vrayAddAttr $object vrayNurbsCurveMaterial;&lt;br /&gt;
    vrayAddAttr $object vrayNurbsCurveTesselation;&lt;br /&gt;
    vrayAddAttr $object vrayNurbsCurveStartWidth;&lt;br /&gt;
    vrayAddAttr $object vrayNurbsCurveLockEndWidth;&lt;br /&gt;
    vrayAddAttr $object vrayNurbsCurveEndWidth;&lt;br /&gt;
    setUITemplate -pst attributeEditorTemplate;&lt;br /&gt;
// Activate renderable&lt;br /&gt;
setAttr ($object + &amp;quot;.vrayNurbsCurveRenderable&amp;quot;) 1;&lt;br /&gt;
// Replace VRayLightMtl1 by your material&lt;br /&gt;
connectAttr -force VRayLightMtl1.outColor ($object + &amp;quot;.vrayNurbsCurveMaterial&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Get object type ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Replace toto with the object whose type you want to know&lt;br /&gt;
&lt;br /&gt;
objectType toto;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Render layer override on specific object type ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Replace &amp;quot;Node&amp;quot; by the object type on which you want to act&lt;br /&gt;
&lt;br /&gt;
$selected=`ls -type &amp;quot;Node&amp;quot;`;&lt;br /&gt;
for ($object in $selected){&lt;br /&gt;
    // Create layer override on Primary Visibility attribute on current renderLayer&lt;br /&gt;
    editRenderLayerAdjustment ($object + &amp;quot;.primaryVisibility&amp;quot;);&lt;br /&gt;
    // Set Primary Visibility - 0 or 1&lt;br /&gt;
    setAttr ($object + &amp;quot;.primaryVisibility&amp;quot;) 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== V-ray - Make lights invisible ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$selected=`ls -type &amp;quot;VRayLightRectShape&amp;quot;`;&lt;br /&gt;
for ($object in $selected){&lt;br /&gt;
    setAttr ($object + &amp;quot;.invisible&amp;quot;) 1;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
$selected=`ls -type &amp;quot;VRayLightSphereShape&amp;quot;`;&lt;br /&gt;
for ($object in $selected){&lt;br /&gt;
    setAttr ($object + &amp;quot;.invisible&amp;quot;) 1;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
$selected=`ls -type &amp;quot;VRayLightDomeShape&amp;quot;`;&lt;br /&gt;
for ($object in $selected){&lt;br /&gt;
    setAttr ($object + &amp;quot;.invisible&amp;quot;) 1;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== V-ray - Select Rect Light ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
select `ls -type &amp;quot;VRayLightRectShape&amp;quot;`;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== V-ray - Rect Lights - Directional Preview - Always for all ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$selected=`ls -type &amp;quot;VRayLightRectShape&amp;quot;`;&lt;br /&gt;
for ($object in $selected){&lt;br /&gt;
    setAttr ($object + &amp;quot;.directionalPreview&amp;quot;) 1;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Randomize rotation on selected objects ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// As posted on CGTalk by NaughtyNathan&lt;br /&gt;
// &amp;quot;just set the vector values to the maximum random x,y,z rotations you want to apply to the selected transforms.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
vector $rndRot = &amp;lt;&amp;lt; 0,0,90 &amp;gt;&amp;gt;;	// x,y,z rotations&lt;br /&gt;
for ($object in `ls -sl -tr`){&lt;br /&gt;
    rotate `rand ($rndRot.x)` `rand ($rndRot.y)` `rand ($rndRot.z)` $object;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Quit Maya ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Brute force method&lt;br /&gt;
&lt;br /&gt;
$i = `getpid`; //application ID&lt;br /&gt;
    system(&amp;quot;taskkill /PID &amp;quot;  + $i +&amp;quot; /f&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
// In a gentle way&lt;br /&gt;
&lt;br /&gt;
evalDeferred(&amp;quot;quit -f&amp;quot;);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== V-ray - Import list of Alembics through Proxys Import ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// List of Alembics files - Replace by the name of your Alembics&lt;br /&gt;
string $alembicsParts[] = {&amp;quot;part1&amp;quot;,&amp;quot;part2&amp;quot;,&amp;quot;part3&amp;quot;};&lt;br /&gt;
&lt;br /&gt;
// Replace the PATH of your files - Scale by 100 for Houdini Alembics - &amp;lt;frame04&amp;gt; for sequences&lt;br /&gt;
for ($alembicsPart in $alembicsParts){&lt;br /&gt;
    vrayCreateProxy -node $alembicsPart -existing -dir (&amp;quot;C:/YOURPATH/&amp;quot;+$alembicsPart+&amp;quot;.&amp;lt;frame04&amp;gt;.abc&amp;quot;) -createProxyNode;&lt;br /&gt;
    setAttr ($alembicsPart+&amp;quot;_vraymesh.animType&amp;quot;) 1;&lt;br /&gt;
    setAttr ($alembicsPart+&amp;quot;.scaleZ&amp;quot;) 100;&lt;br /&gt;
    setAttr ($alembicsPart+&amp;quot;.scaleX&amp;quot;) 100;&lt;br /&gt;
    setAttr ($alembicsPart+&amp;quot;.scaleY&amp;quot;) 100;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== V-ray - Change path to VRayMesh for selected proxies ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Change path with your own .vrmesh&lt;br /&gt;
$selected=`ls -type &amp;quot;VRayMesh&amp;quot;`;&lt;br /&gt;
for ($object in $selected){&lt;br /&gt;
    setAttr -type &amp;quot;string&amp;quot; ($object + &amp;quot;.fileName2&amp;quot;) &amp;quot;//DISK/PATH/YOUR_VRMESH.vrmesh&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// If you want to change Geometry type - 4 for GPU mesh - add following in the loop&lt;br /&gt;
//    setAttr ($object + &amp;quot;.geomType&amp;quot;) 4;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Delete image planes ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Delete image plane if exists.&lt;br /&gt;
$selected=`ls -type &amp;quot;imagePlane&amp;quot;`;&lt;br /&gt;
select $selected;&lt;br /&gt;
for ($object in $selected){&lt;br /&gt;
    doDelete;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Merge alembic from set ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select objects in a set called EXPORT_SET&lt;br /&gt;
select -r EXPORT_SET ;&lt;br /&gt;
timeControl -edit -forceRedraw $gPlayBackSlider;&lt;br /&gt;
&lt;br /&gt;
// Create list of objects from EXPORT_SET&lt;br /&gt;
string $assetParts[] = `ls -sl`;&lt;br /&gt;
$assetPartsList = stringArrayToString($assetParts,&amp;quot; &amp;quot;);&lt;br /&gt;
&lt;br /&gt;
// Merge alembic with these objects&lt;br /&gt;
AbcImport -mode import -connect $assetPartsList &amp;quot;//DISK/PATH/alembic.abc&amp;quot;;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Create Texture reference ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// CREATE TEXTURE REFERENCE ON EXPORT SET&lt;br /&gt;
&lt;br /&gt;
select -r YOUR_GROUP ;&lt;br /&gt;
CreateTextureReferenceObject;&lt;br /&gt;
select -cl  ;&lt;br /&gt;
&lt;br /&gt;
// REMOVE REFERENCE OBJECTS FROM EXPORT SET&lt;br /&gt;
select -r YOUR_GROUP_reference ;&lt;br /&gt;
string $selection[] = `ls -sl`;&lt;br /&gt;
string $polyGons[] = `filterExpand -sm 12 $selection`;&lt;br /&gt;
select -r $polyGons;&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    sets -rm EXPORT_SET $object;&lt;br /&gt;
}&lt;br /&gt;
select -cl  ;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Replace animated objects with V-Ray proxies ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// First select animated objects to replace&lt;br /&gt;
// For each object create a proxy then constrain then bake simulation then delete constraint&lt;br /&gt;
&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
	vrayCreateProxy -node assetName -existing -dir (&amp;quot;//DISK/PATH/your_asset.vrmesh&amp;quot;) -createProxyNode;&lt;br /&gt;
	select -r $object ;&lt;br /&gt;
	select -add assetName ;&lt;br /&gt;
	doCreateParentConstraintArgList 1 { &amp;quot;0&amp;quot;,&amp;quot;0&amp;quot;,&amp;quot;0&amp;quot;,&amp;quot;0&amp;quot;,&amp;quot;0&amp;quot;,&amp;quot;0&amp;quot;,&amp;quot;0&amp;quot;,&amp;quot;0&amp;quot;,&amp;quot;1&amp;quot;,&amp;quot;&amp;quot;,&amp;quot;1&amp;quot; };&lt;br /&gt;
	parentConstraint -weight 1;&lt;br /&gt;
	bakeResults -simulation true -t &amp;quot;1000:1100&amp;quot; -sampleBy 1 -oversamplingRate 1 -disableImplicitControl true -preserveOutsideKeys true -sparseAnimCurveBake false -removeBakedAttributeFromLayer false -removeBakedAnimFromLayer false -bakeOnOverrideLayer false -minimizeRotation true -controlPoints false -shape true {&amp;quot;assetName&amp;quot;};&lt;br /&gt;
	select `ls -type &amp;quot;constraint&amp;quot;`;&lt;br /&gt;
	select -add $object ;&lt;br /&gt;
	doDelete;&lt;br /&gt;
	select -cl  ;&lt;br /&gt;
	rename &amp;quot;assetName&amp;quot; $object;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Select all meshes in a group ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// From cmadsenAniden on forums.autodesk.com&lt;br /&gt;
// Replace group1 by the name of your own group&lt;br /&gt;
&lt;br /&gt;
select -r group1 ;&lt;br /&gt;
string $selection[] = `ls -sl`;&lt;br /&gt;
string $polyGons[] = `filterExpand -sm 12 $selection`;&lt;br /&gt;
select -r $polyGons;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Select shot camera ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// CREATE VARIABLE FOR SHOT CAMERA AND SELECT IT&lt;br /&gt;
&lt;br /&gt;
select `ls -type &amp;quot;camera&amp;quot;`;&lt;br /&gt;
select -d sideShape frontShape topShape perspShape;&lt;br /&gt;
$camerashot = `ls -sl`;&lt;br /&gt;
string $shotcamera = $camerashot[0];&lt;br /&gt;
print $shotcamera;&lt;br /&gt;
select $shotcamera;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Get list of frames with keys on all transform objects ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$selected=`ls -dag -et transform`;&lt;br /&gt;
&lt;br /&gt;
float $arrathy[] = `keyframe -query $selected`;&lt;br /&gt;
&lt;br /&gt;
float $sorted[] = python(&amp;quot;import pymel.core as pm; list(set((pm.getMelGlobal(\&amp;quot;float[]\&amp;quot;, \&amp;quot;$arrathy\&amp;quot;))))&amp;quot;);&lt;br /&gt;
print $sorted;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== MULTI SNAP ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Replace a list of objects by another with bake of animation. Replace FSTART and FEND with your own padding.&lt;br /&gt;
&lt;br /&gt;
///////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
///////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
/*&lt;br /&gt;
Type the command MS() in MEL form to open UI.&lt;br /&gt;
*/&lt;br /&gt;
///////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
///////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
source &amp;quot;generateChannelMenu.mel&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
global proc MS ()&lt;br /&gt;
{&lt;br /&gt;
     global string $sourceObjects;&lt;br /&gt;
     global string $destinationObjects;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    // If the window exists already, delete it.&lt;br /&gt;
    if (`window -exists multiSnapWindow`)&lt;br /&gt;
    {&lt;br /&gt;
        deleteUI multiSnapWindow;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    // Build the window.&lt;br /&gt;
    global string $man_window;&lt;br /&gt;
    string $man_window = `window -title &amp;quot; MULTI SNAP&amp;quot; -sizeable 0 -w 300 multiSnapWindow`;&lt;br /&gt;
    frameLayout -label &amp;quot;Snap source objects on destination objects.&amp;quot;;&lt;br /&gt;
    rowLayout -width 540 -nc 2 -cw4 10 20 20 100;&lt;br /&gt;
    // Source objects section&lt;br /&gt;
    frameLayout -label &amp;quot;Source objects&amp;quot;;&lt;br /&gt;
    $sourceObjects = `textScrollList -width 600 -height 300`;&lt;br /&gt;
    rowLayout -width 240 -nc 2 -cw2 120 120;&lt;br /&gt;
    button -label &amp;quot;Add selected&amp;quot; -command &amp;quot;MS_addObjects ();&amp;quot; -width 120;&lt;br /&gt;
    button -label &amp;quot;Remove selected&amp;quot; -command &amp;quot;MS_removeObjects ();&amp;quot; -width 120;&lt;br /&gt;
    setParent ..;&lt;br /&gt;
    rowLayout -width 240 -nc 2 -cw2 120 120;&lt;br /&gt;
    button -label &amp;quot;Remove All&amp;quot; -command &amp;quot;MS_clearObjects ();&amp;quot; -width 240;&lt;br /&gt;
    setParent ..;&lt;br /&gt;
    setParent ..;&lt;br /&gt;
    rowLayout -nc 3;&lt;br /&gt;
    button -label &amp;quot;Create&amp;quot; -command &amp;quot;VRAYCONNECDO() &amp;quot; -width 140 -align center;&lt;br /&gt;
    button -label &amp;quot;Close&amp;quot; -command &amp;quot;DAC_CloseUI() &amp;quot; -width 140 -align center;&lt;br /&gt;
    setParent ..;&lt;br /&gt;
    setParent ..;&lt;br /&gt;
    // Destination objects section&lt;br /&gt;
    frameLayout -label &amp;quot;Destination objects&amp;quot;;&lt;br /&gt;
    $destinationObjects = `textScrollList -width 600 -height 300`;&lt;br /&gt;
    rowLayout -width 240 -nc 2 -cw2 120 120;&lt;br /&gt;
    button -label &amp;quot;Add selected&amp;quot; -command &amp;quot;MS_addMM ();&amp;quot; -width 120;&lt;br /&gt;
    button -label &amp;quot;Remove selected&amp;quot; -command &amp;quot;MS_removeMM ();&amp;quot; -width 120;&lt;br /&gt;
    setParent ..;&lt;br /&gt;
    setParent ..;&lt;br /&gt;
    rowLayout -nc 3;&lt;br /&gt;
    button -label &amp;quot;SNAP IT&amp;quot; -command &amp;quot;VRAYCONNECDO() &amp;quot; -width 140 -align center;&lt;br /&gt;
    button -label &amp;quot;Close&amp;quot; -command &amp;quot;DAC_CloseUI() &amp;quot; -width 140 -align center;&lt;br /&gt;
    setParent ..;&lt;br /&gt;
    setParent ..;&lt;br /&gt;
&lt;br /&gt;
// Show the window.&lt;br /&gt;
showWindow multiSnapWindow;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
global proc string[] getShaders(string $from)&lt;br /&gt;
{&lt;br /&gt;
// get the shapes from the input&lt;br /&gt;
string $shapes[] = ls(&amp;quot;-o&amp;quot;, &amp;quot;-dag&amp;quot;, &amp;quot;-s&amp;quot;, $from);&lt;br /&gt;
// give me the connected &amp;quot;shadingEngines&amp;quot;&lt;br /&gt;
string $shadingEngines[] = listConnections(&amp;quot;-type&amp;quot;,&amp;quot;shadingEngine&amp;quot;, $shapes);&lt;br /&gt;
// list the connected materials (shaders) from that&lt;br /&gt;
string $materials[] = ls(&amp;quot;-mat&amp;quot;, listConnections($shadingEngines));&lt;br /&gt;
// remove duplicate occurrences.&lt;br /&gt;
return (stringArrayRemoveDuplicates($materials));&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
//Add selected objects to list.&lt;br /&gt;
global proc MS_addObjects ()&lt;br /&gt;
{&lt;br /&gt;
      global string $sourceObjects;&lt;br /&gt;
      string $selectedshapes[] = `ls -sl -l`;&lt;br /&gt;
      //print $selectedshapes;&lt;br /&gt;
      int $count = 0;&lt;br /&gt;
&lt;br /&gt;
if ($selectedshapes[0] != &amp;quot;&amp;quot;)&lt;br /&gt;
{&lt;br /&gt;
   for ($i in $selectedshapes)&lt;br /&gt;
   {&lt;br /&gt;
     $count ++;&lt;br /&gt;
     textScrollList -edit -append $i $sourceObjects;&lt;br /&gt;
   }&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
//Add selected objects to list.&lt;br /&gt;
global proc MS_addMM ()&lt;br /&gt;
{&lt;br /&gt;
      global string $destinationObjects;&lt;br /&gt;
      string $selectedshapes[] = `ls -sl -l`;&lt;br /&gt;
      //print $selectedshapes;&lt;br /&gt;
      int $count = 0;&lt;br /&gt;
&lt;br /&gt;
if ($selectedshapes[0] != &amp;quot;&amp;quot;)&lt;br /&gt;
{&lt;br /&gt;
   for ($i in $selectedshapes)&lt;br /&gt;
   {&lt;br /&gt;
     $count ++;&lt;br /&gt;
     textScrollList -edit -append $i $destinationObjects;&lt;br /&gt;
   }&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// Clear objects from list.&lt;br /&gt;
global proc MS_clearObjects ()&lt;br /&gt;
{&lt;br /&gt;
    global string $sourceObjects;&lt;br /&gt;
textScrollList -e -ra $sourceObjects;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// Remove selected object from list.&lt;br /&gt;
global proc MS_removeObjects ()&lt;br /&gt;
{&lt;br /&gt;
   global string $sourceObjects;&lt;br /&gt;
&lt;br /&gt;
    int $index [] = `textScrollList -query -selectIndexedItem $sourceObjects`;&lt;br /&gt;
    if ($index [0] != 0)&lt;br /&gt;
    {&lt;br /&gt;
        textScrollList -edit -removeIndexedItem $index [0] $sourceObjects;&lt;br /&gt;
    }&lt;br /&gt;
   global string $sourceObjects;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
global proc VRAYCONNECDO()&lt;br /&gt;
{&lt;br /&gt;
    // UI Elements&lt;br /&gt;
global string $sourceObjects;&lt;br /&gt;
global string $destinationObjects;&lt;br /&gt;
// Define user selected objects&lt;br /&gt;
string $selected_objects[] = `textScrollList -query -allItems $sourceObjects`;&lt;br /&gt;
string $meshMaterial[] = `textScrollList -query -allItems $destinationObjects`;&lt;br /&gt;
int $i = 0;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
// SET PADDING&lt;br /&gt;
string $FSTART = &amp;quot;1&amp;quot;;&lt;br /&gt;
string $FEND = &amp;quot;100&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
print $FSTART;&lt;br /&gt;
print $FEND;&lt;br /&gt;
&lt;br /&gt;
string $PADDING = $FSTART + &amp;quot;:&amp;quot; + $FEND;&lt;br /&gt;
&lt;br /&gt;
//Progress bar&lt;br /&gt;
global string $gMainProgressBar;&lt;br /&gt;
&lt;br /&gt;
// Start the progress bar and adjust its max value for this operation.&lt;br /&gt;
    int $steps = size($selected_objects);&lt;br /&gt;
    progressBar -edit -beginProgress -isInterruptable true -status &amp;quot;Connecting shaders to mesh material ...&amp;quot; -maxValue $steps $gMainProgressBar;&lt;br /&gt;
 &lt;br /&gt;
for ($i = 0; $i &amp;lt; size($selected_objects); $i ++)&lt;br /&gt;
{&lt;br /&gt;
        parentConstraint -n parentConstraintMS $selected_objects[$i] $meshMaterial[$i];&lt;br /&gt;
        select -r $meshMaterial[$i] ;&lt;br /&gt;
        bakeResults -simulation true -t $PADDING -sampleBy 1 -oversamplingRate 1 -disableImplicitControl true -preserveOutsideKeys true -sparseAnimCurveBake false -removeBakedAttributeFromLayer false -removeBakedAnimFromLayer false -bakeOnOverrideLayer false -minimizeRotation true -controlPoints false -shape true {$meshMaterial[$i]};&lt;br /&gt;
        select -cl  ;&lt;br /&gt;
        select -r &amp;quot;*parentConstraintMS*&amp;quot;;&lt;br /&gt;
        doDelete;&lt;br /&gt;
// Update the progress bar.&lt;br /&gt;
progressBar -edit -step 1 $gMainProgressBar;&lt;br /&gt;
}&lt;br /&gt;
// End the progress.&lt;br /&gt;
progressBar -edit -endProgress $gMainProgressBar;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Delete hidden objects ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select objects&lt;br /&gt;
&lt;br /&gt;
for ( $object in `ls -sl` ) {&lt;br /&gt;
    $vis = getAttr ($object+&amp;quot;.visibility&amp;quot;);&lt;br /&gt;
    if ($vis == 0){&lt;br /&gt;
        select -r $object ;&lt;br /&gt;
        doDelete ;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== V-Ray - BAKE MATERIALS ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Made to work also with mayabatch.exe&lt;br /&gt;
&lt;br /&gt;
////////////////////////////////////////////&lt;br /&gt;
// BAKE VRAY CUSTOM VARIABLES&lt;br /&gt;
////////////////////////////////////////////&lt;br /&gt;
&lt;br /&gt;
// ASSET PATH&lt;br /&gt;
string $assetFileType = &amp;quot;mayaBinary&amp;quot;;&lt;br /&gt;
string $assetPath = &amp;quot;C:/YOUR_PATH/YOUR_SURFACING_ASSET.mb&amp;quot;;&lt;br /&gt;
string $assetName = &amp;quot;ASSET_NAME&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
// LIGHT RIG PATH&lt;br /&gt;
string $lightRigFileType = &amp;quot;mayaAscii&amp;quot;;&lt;br /&gt;
string $lightRigPath = &amp;quot;C:/YOUR_PATH/YOUR_LIGHT_RIG.mb&amp;quot;;&lt;br /&gt;
string $lightRigName = &amp;quot;DAY_LIGHTING&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
// BAKED TEXTURES PATH&lt;br /&gt;
string $bakedTexturesPath = (&amp;quot;C:/YOUR_PATH/BAKED_TEXTURES/&amp;quot; + $assetName + &amp;quot;_&amp;quot; + $lightRigName + &amp;quot;_Bake&amp;quot;);&lt;br /&gt;
print $bakedTexturesPath;&lt;br /&gt;
&lt;br /&gt;
// SET RESOLUTION FOR BAKED MAPS&lt;br /&gt;
$resWidth = 4096;&lt;br /&gt;
$resHeight = $resWidth;&lt;br /&gt;
&lt;br /&gt;
// COLOR SPACE FOR FILE TEXTURES&lt;br /&gt;
string $fileColorSpace = &amp;quot;ACES - ACEScg&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
////////////////////////////////////////////&lt;br /&gt;
// END OF CUSTOM VARIABLES&lt;br /&gt;
////////////////////////////////////////////&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
////////////////////////////////////////////&lt;br /&gt;
// RENDER SETTINGS&lt;br /&gt;
&lt;br /&gt;
// Set File Name Prefix&lt;br /&gt;
setAttr -type &amp;quot;string&amp;quot; vraySettings.fileNamePrefix &amp;quot;&amp;lt;Scene&amp;gt;/&amp;lt;Layer&amp;gt;/&amp;lt;Camera&amp;gt;_&amp;lt;Layer&amp;gt;_&amp;lt;Scene&amp;gt;&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
// Set resolution&lt;br /&gt;
$resWidthHalf = $resWidth/2;&lt;br /&gt;
$resHeightHalf = $resHeight/2;&lt;br /&gt;
setAttr &amp;quot;vraySettings.width&amp;quot; $resWidthHalf;&lt;br /&gt;
setAttr &amp;quot;vraySettings.height&amp;quot; $resHeightHalf;&lt;br /&gt;
&lt;br /&gt;
// Set Persp camera renderable&lt;br /&gt;
setAttr &amp;quot;perspShape.renderable&amp;quot; 1;&lt;br /&gt;
&lt;br /&gt;
// Set Image format&lt;br /&gt;
setAttr -type &amp;quot;string&amp;quot; &amp;quot;vraySettings.imageFormatStr&amp;quot; &amp;quot;exr (multichannel)&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
// Set Animation type on Standard&lt;br /&gt;
setAttr &amp;quot;vraySettings.animType&amp;quot; 0;&lt;br /&gt;
setAttr &amp;quot;vraySettings.animBatchOnly&amp;quot; 1;&lt;br /&gt;
&lt;br /&gt;
// Sampler type Bucket&lt;br /&gt;
setAttr &amp;quot;vraySettings.samplerType&amp;quot; 4;&lt;br /&gt;
&lt;br /&gt;
// Min Shading Rate&lt;br /&gt;
//setAttr &amp;quot;vraySettings.minShadeRate&amp;quot; 4;&lt;br /&gt;
setAttr &amp;quot;vraySettings.minShadeRate&amp;quot; 7;&lt;br /&gt;
&lt;br /&gt;
// Buckets subdivs&lt;br /&gt;
//setAttr &amp;quot;vraySettings.dmcMinSubdivs&amp;quot; 1;&lt;br /&gt;
//setAttr &amp;quot;vraySettings.dmcMaxSubdivs&amp;quot; 8;&lt;br /&gt;
//setAttr &amp;quot;vraySettings.dmcThreshold&amp;quot; 0.1;&lt;br /&gt;
setAttr &amp;quot;vraySettings.dmcMinSubdivs&amp;quot; 1;&lt;br /&gt;
setAttr &amp;quot;vraySettings.dmcMaxSubdivs&amp;quot; 15;&lt;br /&gt;
setAttr &amp;quot;vraySettings.dmcThreshold&amp;quot; 0.01;&lt;br /&gt;
&lt;br /&gt;
// Color mapping Linear&lt;br /&gt;
setAttr &amp;quot;vraySettings.cmap_type&amp;quot; 0;&lt;br /&gt;
&lt;br /&gt;
// GI on&lt;br /&gt;
setAttr &amp;quot;vraySettings.giOn&amp;quot; 1;&lt;br /&gt;
//setAttr &amp;quot;vraySettings.subdivs&amp;quot; 400;&lt;br /&gt;
setAttr &amp;quot;vraySettings.subdivs&amp;quot; 1000;&lt;br /&gt;
&lt;br /&gt;
// Max subdivs&lt;br /&gt;
setAttr &amp;quot;vraySettings.ddisplac_maxSubdivs&amp;quot; 16;&lt;br /&gt;
&lt;br /&gt;
// Cache geometry and bitmaps&lt;br /&gt;
setAttr &amp;quot;vraySettings.globopt_cache_geom_plugins&amp;quot; 1;&lt;br /&gt;
setAttr &amp;quot;vraySettings.globopt_cache_bitmaps&amp;quot; 1;&lt;br /&gt;
&lt;br /&gt;
// Dynamic memory limit&lt;br /&gt;
setAttr &amp;quot;vraySettings.sys_rayc_dynMemLimit&amp;quot; 0;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
////////////////////////////////////////////&lt;br /&gt;
// IMPORT&lt;br /&gt;
&lt;br /&gt;
// IMPORT LIGHT RIG&lt;br /&gt;
file -import -type $lightRigFileType  -ignoreVersion -mergeNamespacesOnClash false -rpr &amp;quot;:&amp;quot; -options &amp;quot;v=0;&amp;quot; $lightRigPath;&lt;br /&gt;
&lt;br /&gt;
// IMPORT ASSET&lt;br /&gt;
file -import -type $assetFileType  -ignoreVersion -mergeNamespacesOnClash false -rpr &amp;quot;:&amp;quot; -options &amp;quot;v=0;&amp;quot; $assetPath;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
// CREATE SETS&lt;br /&gt;
select `ls -type &amp;quot;mesh&amp;quot;`;&lt;br /&gt;
sets -name &amp;quot;assetOriginal_Set&amp;quot; ;&lt;br /&gt;
duplicate -rr;&lt;br /&gt;
group -w -n (&amp;quot;GRP_&amp;quot; + $assetName + &amp;quot;_BAKE_&amp;quot; + `toupper $lightRigName`);&lt;br /&gt;
sets -name &amp;quot;assetBaked_Set&amp;quot; ;&lt;br /&gt;
&lt;br /&gt;
// REMOVE BAKED PARTS FROM ORIGINAL PARTS SET&lt;br /&gt;
select -r assetBaked_Set ;&lt;br /&gt;
string $selection[] = `ls -sl`;&lt;br /&gt;
string $polyGons[] = `filterExpand -sm 12 $selection`;&lt;br /&gt;
select -r $polyGons;&lt;br /&gt;
pickWalk -d down;&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    sets -rm assetOriginal_Set $object;&lt;br /&gt;
}&lt;br /&gt;
select -cl  ;&lt;br /&gt;
&lt;br /&gt;
// DELETE HIDDEN OBJECTS&lt;br /&gt;
select -r assetBaked_Set ;&lt;br /&gt;
string $selection[] = `ls -sl`;&lt;br /&gt;
string $polyGons[] = `filterExpand -sm 12 $selection`;&lt;br /&gt;
select -r $polyGons;&lt;br /&gt;
for ( $object in `ls -sl` ) {&lt;br /&gt;
    $vis = getAttr ($object+&amp;quot;.visibility&amp;quot;);&lt;br /&gt;
    if ($vis == 0){&lt;br /&gt;
        select -r $object ;&lt;br /&gt;
        doDelete ;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
select -cl  ;&lt;br /&gt;
&lt;br /&gt;
// fixShapeName - Thanks to Pinkwerks&lt;br /&gt;
global proc&lt;br /&gt;
fixShapeName()&lt;br /&gt;
{&lt;br /&gt;
    string $me = &amp;quot;fixShapeName&amp;quot;;&lt;br /&gt;
    string $shape;&lt;br /&gt;
    string $newShapeName;&lt;br /&gt;
    string $parent;&lt;br /&gt;
    string $tmpA[];&lt;br /&gt;
	string $selectedShapes[] = `ls -sl -l`;&lt;br /&gt;
    int $sizeOfShapes = `size $selectedShapes`;&lt;br /&gt;
&lt;br /&gt;
    if ( $sizeOfShapes == 0 )&lt;br /&gt;
    	error($me + &amp;quot; : Nothing shapes to process!&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
    for ( $shape in $selectedShapes )&lt;br /&gt;
    {&lt;br /&gt;
    	$tmpA = `listRelatives -p $shape`;&lt;br /&gt;
		$parent = $tmpA[0];&lt;br /&gt;
		$newShapeName = ($parent + &amp;quot;Shape&amp;quot;);&lt;br /&gt;
		rename $shape $newShapeName;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// APPLY FIXSHAPENAME TO BAKED ASSET PARTS&lt;br /&gt;
select -r assetBaked_Set ;&lt;br /&gt;
string $selection[] = `ls -sl`;&lt;br /&gt;
string $polyGons[] = `filterExpand -sm 12 $selection`;&lt;br /&gt;
select -r $polyGons;&lt;br /&gt;
pickWalk -d down;&lt;br /&gt;
fixShapeName();&lt;br /&gt;
select -cl  ;&lt;br /&gt;
&lt;br /&gt;
// DELETE OBJECTS WITHOUT UVS&lt;br /&gt;
select -r assetBaked_Set ;&lt;br /&gt;
string $selection[] = `ls -sl`;&lt;br /&gt;
string $polyGons[] = `filterExpand -sm 12 $selection`;&lt;br /&gt;
select -r $polyGons;&lt;br /&gt;
for ( $object in `ls -sl` ) {&lt;br /&gt;
    int $vertexCount[] = `polyEvaluate -uv $object`;&lt;br /&gt;
    print $vertexCount;&lt;br /&gt;
    string $uvCount = $vertexCount[0];&lt;br /&gt;
    if ($uvCount == 0){&lt;br /&gt;
        select -r $object ;&lt;br /&gt;
        doDelete ;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// CREATE VRAY BAKE OPTIONS&lt;br /&gt;
createNode &amp;quot;VRayBakeOptions&amp;quot; -n &amp;quot;vrayBakeOptions&amp;quot;;&lt;br /&gt;
select -r assetBaked_Set ;&lt;br /&gt;
string $selection[] = `ls -sl`;&lt;br /&gt;
string $polyGons[] = `filterExpand -sm 12 $selection`;&lt;br /&gt;
select -r $polyGons;&lt;br /&gt;
$selected=`ls -sl`;&lt;br /&gt;
for ($object in $selected){&lt;br /&gt;
    sets -edit -forceElement  vrayBakeOptions $object ;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// HIDE ORIGINAL ASSET&lt;br /&gt;
select -r assetOriginal_Set ;&lt;br /&gt;
pickWalk -d up;&lt;br /&gt;
hide `ls -sl`;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
// BAKE VRAY OPTIONS&lt;br /&gt;
setAttr &amp;quot;vrayBakeOptions.udimBaking&amp;quot; 1;&lt;br /&gt;
setAttr &amp;quot;vrayBakeOptions.resolutionX&amp;quot; $resWidth;&lt;br /&gt;
&lt;br /&gt;
optionVar -intValue &amp;quot;vrayBakeType&amp;quot; 2;&lt;br /&gt;
optionVar -intValue &amp;quot;vraySkipNodesWithoutBakeOptions&amp;quot; 1;&lt;br /&gt;
optionVar -intValue &amp;quot;vrayAssignBakedTextures&amp;quot; 1;&lt;br /&gt;
optionVar -stringValue &amp;quot;vrayBakeOutputPath&amp;quot; $bakedTexturesPath;&lt;br /&gt;
optionVar -intValue &amp;quot;vrayBakeProjectionBaking&amp;quot; 0;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
// GO BAKE GO&lt;br /&gt;
select -cl  ;&lt;br /&gt;
select -r assetBaked_Set ;&lt;br /&gt;
string $selection[] = `ls -sl`;&lt;br /&gt;
string $polyGons[] = `filterExpand -sm 12 $selection`;&lt;br /&gt;
select -r $polyGons;&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    vrayStartBake;&lt;br /&gt;
}&lt;br /&gt;
select -cl  ;&lt;br /&gt;
&lt;br /&gt;
// UV TILING UDIM AND ACES CG FOR FILES&lt;br /&gt;
for ( $object in `ls -type &amp;quot;file&amp;quot;` ) {&lt;br /&gt;
    setAttr ($object + &amp;quot;.filterType&amp;quot;) 0;&lt;br /&gt;
    setAttr ($object + &amp;quot;.uvTilingMode&amp;quot;) 3;&lt;br /&gt;
    setAttr ($object + &amp;quot;.cs&amp;quot;) -type &amp;quot;string&amp;quot; $fileColorSpace;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// CONNECT SHADERS&lt;br /&gt;
select -cl  ;&lt;br /&gt;
select -r assetBaked_Set ;&lt;br /&gt;
string $selection[] = `ls -sl`;&lt;br /&gt;
string $polyGons[] = `filterExpand -sm 12 $selection`;&lt;br /&gt;
for ( $object in $polyGons ) {&lt;br /&gt;
    string $shadingGroupName = ($object + &amp;quot;Shape_bakedmtlSG&amp;quot;);&lt;br /&gt;
    sets -e -forceElement $shadingGroupName $object;&lt;br /&gt;
}&lt;br /&gt;
select -cl  ;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
///////////////////////////////////&lt;br /&gt;
// SAVE&lt;br /&gt;
file -rename (&amp;quot;C:/YOUR_PATH/BAKED_ASSETS/&amp;quot; + $assetName + &amp;quot;_&amp;quot; + $lightRigName + &amp;quot;_BAKE_DEBUG.mb&amp;quot;);&lt;br /&gt;
file -f -save;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Arnold - Set all Standins display on Bouding box ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$selected=`ls -type &amp;quot;aiStandIn&amp;quot;`;&lt;br /&gt;
for ($object in $selected){&lt;br /&gt;
    setAttr ($object + &amp;quot;.mode&amp;quot;) 0;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Arnold - Set all Standins display on Point cloud ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$selected=`ls -type &amp;quot;aiStandIn&amp;quot;`;&lt;br /&gt;
for ($object in $selected){&lt;br /&gt;
    setAttr ($object + &amp;quot;.mode&amp;quot;) 4;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Alembic - Loop animation on all nodes ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$selected=`ls -type &amp;quot;AlembicNode&amp;quot;`;&lt;br /&gt;
for ($object in $selected){&lt;br /&gt;
    setAttr ($object + &amp;quot;.cycleType&amp;quot;) 1;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Mental Ray nodes error - Delete Mayatomr plugin ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
unknownPlugin -remove &amp;quot;Mayatomr&amp;quot;;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Delete Unknown nodes ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
select -r `ls -type unknown`;&lt;br /&gt;
delete;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Write text ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
string $exampleFileName = ( &amp;quot;D:/yolo.bat&amp;quot; );&lt;br /&gt;
string $linesToWrite[] = {&lt;br /&gt;
    &amp;quot;youpi&amp;quot;,&lt;br /&gt;
    &amp;quot;youhou&amp;quot;&lt;br /&gt;
    };&lt;br /&gt;
int $result = fwriteAllLines($exampleFileName,$linesToWrite);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Point Lock No Attach on selected follicles ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    setAttr ($object + &amp;quot;.pointLock&amp;quot;) 0;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Convert .ma cameras from Reality Capture into .abc files ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// List of assets&lt;br /&gt;
string $fileParts[] = {&amp;quot;asset_001&amp;quot;, &amp;quot;asset_002&amp;quot;};&lt;br /&gt;
&lt;br /&gt;
// Replace the PATH of your files&lt;br /&gt;
for ($filePart in $fileParts){&lt;br /&gt;
	string $fileName = $filePart + &amp;quot;_cam&amp;quot;;&lt;br /&gt;
	string $filePath = &amp;quot;//DISK/PATH/&amp;quot; + $filePart + &amp;quot;/&amp;quot; + $filePart +&amp;quot;_cam.ma&amp;quot;;&lt;br /&gt;
	file -import -type &amp;quot;mayaAscii&amp;quot;  -ignoreVersion -ra true -mergeNamespacesOnClash false -rpr $fileName -options &amp;quot;v=0;p=17;f=0&amp;quot;  -pr  -importFrameRate true  -importTimeRange &amp;quot;override&amp;quot; $filePath;&lt;br /&gt;
	select -cl;&lt;br /&gt;
	select `ls -type &amp;quot;imagePlane&amp;quot;`;&lt;br /&gt;
	pickWalk -d up;&lt;br /&gt;
	doDelete;&lt;br /&gt;
	select `ls -type &amp;quot;camera&amp;quot;`;&lt;br /&gt;
	pickWalk -d up;	&lt;br /&gt;
	string $abcPath = &amp;quot;//DISK/PATH/&amp;quot; + $filePart + &amp;quot;/&amp;quot; + $filePart +&amp;quot;_cam.abc&amp;quot;;&lt;br /&gt;
	string $abcExp = &amp;quot;-frameRange 1 1 -uvWrite -worldSpace -dataFormat ogawa -root |* -file &amp;quot; + $abcPath;&lt;br /&gt;
	AbcExport -j $abcExp;&lt;br /&gt;
	select -all;&lt;br /&gt;
	doDelete;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Combine objects ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select objects&lt;br /&gt;
&lt;br /&gt;
polyPerformAction polyUnite o 0; &lt;br /&gt;
DeleteHistory;&lt;br /&gt;
FreezeTransformations;&lt;br /&gt;
makeIdentity -apply true -t 1 -r 1 -s 1 -n 0 -pn 1;&lt;br /&gt;
CenterPivot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Unitize UVs (one square UV by face) ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select objects&lt;br /&gt;
&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    select -r ($object+&amp;quot;.e[*]&amp;quot;);&lt;br /&gt;
    hilite ($object+&amp;quot;.e[*]&amp;quot;) ;&lt;br /&gt;
    polyMapCut -ch 1 ($object+&amp;quot;.e[*]&amp;quot;);&lt;br /&gt;
    polyForceUV -unitize $object;&lt;br /&gt;
    select $object;&lt;br /&gt;
    DeleteHistory;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== ONE-CLICK Unfold UVs ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select seams edges first&lt;br /&gt;
&lt;br /&gt;
invertSelection;&lt;br /&gt;
string $selectedEdges [] = `ls -sl`;&lt;br /&gt;
&lt;br /&gt;
string $selectedObject [] = `ls -selection -objectsOnly`;&lt;br /&gt;
&lt;br /&gt;
select -r ($selectedObject[0]+&amp;quot;.e[*]&amp;quot;);&lt;br /&gt;
hilite ($selectedObject[0]+&amp;quot;.e[*]&amp;quot;) ;&lt;br /&gt;
polyMapCut -ch 1 ($selectedObject[0]+&amp;quot;.e[*]&amp;quot;);&lt;br /&gt;
polyForceUV -unitize $selectedObject[0];&lt;br /&gt;
&lt;br /&gt;
select $selectedObject[0];&lt;br /&gt;
polyMapSewMove -nf 10 -lps 0 -ch 1 $selectedEdges;&lt;br /&gt;
select -r ($selectedObject[0]+&amp;quot;.map[*]&amp;quot;);&lt;br /&gt;
u3dUnfold -ite 1 -p 0 -bi 1 -tf 1 -ms 1024 -rs 0 ($selectedObject[0]+&amp;quot;.map[*]&amp;quot;);&lt;br /&gt;
u3dLayout -res 256 -scl 1 -spc 0.001 -mar 0.01 -box 0 1 0 1 $selectedObject[0];&lt;br /&gt;
select $selectedObject[0];&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Create Texture Reference on all shapes from a group ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select top group first&lt;br /&gt;
&lt;br /&gt;
string $selection[] = `ls -sl`;&lt;br /&gt;
string $polyGons[] = `filterExpand -sm 12 $selection`;&lt;br /&gt;
&lt;br /&gt;
for ($i = 0; $i &amp;lt; size($polyGons); $i ++)&lt;br /&gt;
{&lt;br /&gt;
    select -r $polyGons[$i] ;&lt;br /&gt;
    CreateTextureReferenceObject;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
select -r $selection;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Search and select by name ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// If you want to select every object containing &amp;quot;tree&amp;quot;&lt;br /&gt;
// From NaughtyNathan on CGTalk&lt;br /&gt;
&lt;br /&gt;
select -r &amp;quot;*tree*&amp;quot;;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Walter</name></author>
		
	</entry>
	<entry>
		<id>http://antoinevienne.fr/wiki/index.php?title=Maya_Mel&amp;diff=262</id>
		<title>Maya Mel</title>
		<link rel="alternate" type="text/html" href="http://antoinevienne.fr/wiki/index.php?title=Maya_Mel&amp;diff=262"/>
		<updated>2023-10-02T08:09:18Z</updated>

		<summary type="html">&lt;p&gt;Walter: /* Unfold UVs */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Maya Mels Scripts=&lt;br /&gt;
=== Octane Render Baking group id - Assign id to multiple objects shapes ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// 0 is for Red, 2 for Green, 4 for Blue&lt;br /&gt;
// 3, 5 and 6 for Cyan, Magenta and Yellow&lt;br /&gt;
// Replace the number &amp;quot;0&amp;quot; by the number of your choice&lt;br /&gt;
// Baking group id is also avalaible in Attribute Spreadsheet Editor&lt;br /&gt;
&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    print($object+&amp;quot;\n&amp;quot;);&lt;br /&gt;
    setAttr ($object + &amp;quot;.octBakGrId&amp;quot;) (0);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Maxwell Render - Particles sequence - Force .abc file ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
//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&lt;br /&gt;
&lt;br /&gt;
global int $current_frame;&lt;br /&gt;
$current_frame = `currentTime -query`;&lt;br /&gt;
print $current_frame;&lt;br /&gt;
{&lt;br /&gt;
setAttr -type &amp;quot;string&amp;quot; maxwellRFRKParticles1.file (&amp;quot;/YOUR_PATH/YOUR_FILE&amp;quot; + $current_frame + &amp;quot;.abc&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Maxwell Render - Specify object ID color ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Specify object ID color&lt;br /&gt;
&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    print($object+&amp;quot;\n&amp;quot;);&lt;br /&gt;
    setAttr ($object + &amp;quot;.mxSpecifyObjIdColor&amp;quot;) (1);&lt;br /&gt;
    setAttr ($object + &amp;quot;.mxObjIdColor&amp;quot;) -type &amp;quot;double3&amp;quot; 1 0 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Redshift - Add blend attribute and set random value for objects selection ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Useful for blending between colors with RedshiftUserDataScalar&lt;br /&gt;
&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    print($object);&lt;br /&gt;
    addAttr -ln &amp;quot;blend&amp;quot; -at double  -min 0 -max 1 -dv 0 $object;&lt;br /&gt;
    setAttr ($object + &amp;quot;.blend&amp;quot;) (rand(1));&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Redshift - Set Primary visibility off for selection (layer override) ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Go in right render layer and select objects&lt;br /&gt;
&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    print($object+&amp;quot;\n&amp;quot;);&lt;br /&gt;
    setAttr ($object + &amp;quot;.rsEnableVisibilityOverrides&amp;quot;) (1);&lt;br /&gt;
    editRenderLayerAdjustment ($object + &amp;quot;.rsPrimaryRayVisible&amp;quot;);&lt;br /&gt;
    setAttr ($object + &amp;quot;.rsPrimaryRayVisible&amp;quot;) (0);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Convert Motion trail to curve ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select the motion trail first&lt;br /&gt;
&lt;br /&gt;
{&lt;br /&gt;
$selected=`ls -dag -et snapshotShape`;&lt;br /&gt;
for ($obj in $selected){&lt;br /&gt;
$pts=(getAttr($obj+&amp;quot;.pts&amp;quot;));&lt;br /&gt;
$size=size($pts);&lt;br /&gt;
$curve=`curve -d 1 -p $pts[0] $pts[1] $pts[2] -p $pts[4] $pts[5] $pts[6] -k 0 -k 1`;&lt;br /&gt;
for($i=8;$i&amp;lt;$size;$i+=4)&lt;br /&gt;
curve -os -a -p $pts[$i] $pts[$i+1] $pts[$i+2] $curve ;&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Quantize keyframes for selection ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Snap keys on frames for objects selection&lt;br /&gt;
&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    print($object+&amp;quot;\n&amp;quot;);&lt;br /&gt;
    snapKey $object;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Loop image sequence for texture ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// On File texture, check Image sequence, and edit expression&lt;br /&gt;
&lt;br /&gt;
file1.frameExtension=((frame%8)+1);&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Symmetrize - Duplicate &amp;amp; merge object ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select half object first&lt;br /&gt;
&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    print($object+&amp;quot;\n&amp;quot;);&lt;br /&gt;
    xform -piv 0 0 0 $object;&lt;br /&gt;
    duplicate -rr;&lt;br /&gt;
    setAttr ($object + &amp;quot;.scaleX&amp;quot;) (-1);&lt;br /&gt;
    select -add $object ;&lt;br /&gt;
    polyPerformAction polyUnite o 0;&lt;br /&gt;
    polyMergeVertex  -d 0.0001 -am 1 -ch 1;&lt;br /&gt;
    DeleteHistory;&lt;br /&gt;
    rename ($object);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Mirror object ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select object first&lt;br /&gt;
&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    print($object+&amp;quot;\n&amp;quot;);&lt;br /&gt;
    DeleteHistory;&lt;br /&gt;
    makeIdentity -apply true -t 1 -r 1 -s 1 -n 0 -pn 1;&lt;br /&gt;
    xform -piv 0 0 0 $object;&lt;br /&gt;
    duplicate -rr;&lt;br /&gt;
    setAttr ($object + &amp;quot;.scaleX&amp;quot;) (-1);&lt;br /&gt;
    DeleteHistory;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Group each object and rename ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select objects first&lt;br /&gt;
&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    string $name = ($object);&lt;br /&gt;
    select $object ;&lt;br /&gt;
    doGroup 0 1 1;&lt;br /&gt;
    rename ($name + &amp;quot;_GRP&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Change path in an Attribute ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Here the Attribute is &amp;quot;.filePrefix&amp;quot; - Select objects first&lt;br /&gt;
&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    string $path = getAttr ($object+&amp;quot;.filePrefix&amp;quot;);&lt;br /&gt;
    $path = `substitute &amp;quot;//OLD/PATH/&amp;quot; $path &amp;quot;//NEW/PATH/&amp;quot;`;&lt;br /&gt;
    setAttr -type &amp;quot;string&amp;quot; ($object+&amp;quot;.filePrefix&amp;quot;) ($path);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Change opacity mode on V-Ray shaders ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select shaders first&lt;br /&gt;
&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    if (attributeExists(&amp;quot;omode&amp;quot;,$object)) { //check if attribute exists&lt;br /&gt;
        CBunlockAttr ($object+&amp;quot;.omode&amp;quot;); //unlock opacity mode&lt;br /&gt;
    }&lt;br /&gt;
    if (attributeExists(&amp;quot;opacityMode&amp;quot;,$object)) {&lt;br /&gt;
        setAttr ($object+&amp;quot;.opacityMode&amp;quot;) 1; //set opacity mode in Clip - 0 pour Normal&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// Alternative&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    if (attributeExists(&amp;quot;opacityMode&amp;quot;,$object)) {&lt;br /&gt;
        setAttr ($object+&amp;quot;.opacityMode&amp;quot;) -l false; //unlock attribute if locked&lt;br /&gt;
    }&lt;br /&gt;
    if (attributeExists(&amp;quot;opacityMode&amp;quot;,$object)) {&lt;br /&gt;
        setAttr ($object+&amp;quot;.opacityMode&amp;quot;) 2; //set opacity mode in Clip - 0 pour Normal&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Change color space on selected fileTextures ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Useful to automatically convert Quixel Megascans by example from sRGB/Raw to ACES color spaces&lt;br /&gt;
&lt;br /&gt;
string $object_selection[] = (`ls -sl`);&lt;br /&gt;
for ($object in $object_selection) {&lt;br /&gt;
    if(`getAttr ($object+&amp;quot;.cs&amp;quot;)` == &amp;quot;sRGB&amp;quot;){&lt;br /&gt;
        setAttr ($object + &amp;quot;.cs&amp;quot;) -type &amp;quot;string&amp;quot; &amp;quot;Utility - sRGB - Texture&amp;quot;;&lt;br /&gt;
    }&lt;br /&gt;
    if(`getAttr ($object+&amp;quot;.cs&amp;quot;)` == &amp;quot;Raw&amp;quot;){&lt;br /&gt;
        setAttr ($object + &amp;quot;.cs&amp;quot;) -type &amp;quot;string&amp;quot; &amp;quot;Utility - Raw&amp;quot;;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Redshift - custom Tesselation on selected objects ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select objects first&lt;br /&gt;
&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    print($object+&amp;quot;\n&amp;quot;);&lt;br /&gt;
    setAttr ($object + &amp;quot;.rsMinTessellationLength&amp;quot;) (0.1);&lt;br /&gt;
    setAttr ($object + &amp;quot;.rsMaxTessellationSubdivs&amp;quot;) (2);&lt;br /&gt;
    setAttr ($object + &amp;quot;.rsOutOfFrustumTessellationFactor&amp;quot;) (4);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Change color on selected shaders ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select shaders first&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    print($object+&amp;quot;\n&amp;quot;);&lt;br /&gt;
    setAttr ($object + &amp;quot;.color&amp;quot;) -l false;&lt;br /&gt;
    setAttr ($object + &amp;quot;.color&amp;quot;) -type &amp;quot;double3&amp;quot; (0.18) (0.18) (0.18);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Change Filter Type on selected Files Textures ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select files textures first - 0 means Off&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    print($object+&amp;quot;\n&amp;quot;);&lt;br /&gt;
    setAttr ($object + &amp;quot;.filterType&amp;quot;) 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Clean Render Layers ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// In MEL&lt;br /&gt;
fixRenderLayerOutAdjustmentErrors;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Change Filter Type on selected Files Textures ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select files textures first - 0 means Off&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    print($object+&amp;quot;\n&amp;quot;);&lt;br /&gt;
    setAttr ($object + &amp;quot;.filterType&amp;quot;) 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Select by name ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select objects with &amp;quot;toto&amp;quot;&lt;br /&gt;
select -r &amp;quot;toto*&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Display color on shapes ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select objects&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    print($object+&amp;quot;\n&amp;quot;);&lt;br /&gt;
    setAttr ($object + &amp;quot;.displayColors&amp;quot;) 1;&lt;br /&gt;
    setDisplayColorChannelAttribute ($object + &amp;quot;.displayColorChannel&amp;quot;);&lt;br /&gt;
    polyColorPerVertex -r 1 -g 0 -b 0 -a 1 -cdo;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Geometry Constraint on multiple selection ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select objects to constrain&lt;br /&gt;
string $objectBase = &amp;quot;surfaceName&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    select -cl;&lt;br /&gt;
    select $objectBase;&lt;br /&gt;
    select -add $object;&lt;br /&gt;
    geometryConstraint -weight 1;&lt;br /&gt;
    select -r &amp;quot;*Constraint*&amp;quot;;&lt;br /&gt;
    doDelete;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
=== Speed up smokes rendering with V-Ray ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select smokes first&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    print($object+&amp;quot;\n&amp;quot;);&lt;br /&gt;
    setAttr ($object + &amp;quot;.rendStep&amp;quot;) 160;&lt;br /&gt;
    setAttr ($object + &amp;quot;.shadowStep&amp;quot;) 400;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Set bump multiplier on multiple V-Ray shaders ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select shaders&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    if (attributeExists(&amp;quot;bumpMult&amp;quot;,$object)) {&lt;br /&gt;
        setAttr ($object + &amp;quot;.bumpMult&amp;quot;) -1; //set bump multiplier at -1&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== STOP/START viewport ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// As seen on https://www.toadstorm.com/. - Put it in your shelf&lt;br /&gt;
paneLayout -e -manage false $gMainPane&lt;br /&gt;
&lt;br /&gt;
paneLayout -e -manage true $gMainPane&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Select curves by name ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select objects first - Replace &amp;quot;toto&amp;quot; by what you are looking for&lt;br /&gt;
&lt;br /&gt;
select `ls -type &amp;quot;nurbsCurve&amp;quot; &amp;quot;*toto*&amp;quot;`;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Noise expression ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Replace &amp;quot;pCube1&amp;quot;&lt;br /&gt;
&lt;br /&gt;
pCube1.translateX=sin(time*20)*0.01*noise(time*10);&lt;br /&gt;
pCube1.translateY=sin(time*4)*0.01*noise(time*10);&lt;br /&gt;
pCube1.translateZ=sin(time*12)*0.01*noise(time*10);&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== V-ray - Make curves renderables ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Replace VRayLightMtl1 at the end by your material&lt;br /&gt;
&lt;br /&gt;
$selected=`ls -dag -et curveShape`;&lt;br /&gt;
for ($object in $selected){&lt;br /&gt;
    // Add V-ray Extra attributes&lt;br /&gt;
    vray addAttributesFromGroup $object vray_nurbscurve_renderable 1;&lt;br /&gt;
    vrayAddAttr $object vraySeparator_vray_nurbscurve_renderable;&lt;br /&gt;
    vrayAddAttr $object vrayNurbsCurveRenderable;&lt;br /&gt;
    vrayAddAttr $object vrayNurbsCurveMaterial;&lt;br /&gt;
    vrayAddAttr $object vrayNurbsCurveTesselation;&lt;br /&gt;
    vrayAddAttr $object vrayNurbsCurveStartWidth;&lt;br /&gt;
    vrayAddAttr $object vrayNurbsCurveLockEndWidth;&lt;br /&gt;
    vrayAddAttr $object vrayNurbsCurveEndWidth;&lt;br /&gt;
    setUITemplate -pst attributeEditorTemplate;&lt;br /&gt;
// Activate renderable&lt;br /&gt;
setAttr ($object + &amp;quot;.vrayNurbsCurveRenderable&amp;quot;) 1;&lt;br /&gt;
// Replace VRayLightMtl1 by your material&lt;br /&gt;
connectAttr -force VRayLightMtl1.outColor ($object + &amp;quot;.vrayNurbsCurveMaterial&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Get object type ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Replace toto with the object whose type you want to know&lt;br /&gt;
&lt;br /&gt;
objectType toto;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Render layer override on specific object type ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Replace &amp;quot;Node&amp;quot; by the object type on which you want to act&lt;br /&gt;
&lt;br /&gt;
$selected=`ls -type &amp;quot;Node&amp;quot;`;&lt;br /&gt;
for ($object in $selected){&lt;br /&gt;
    // Create layer override on Primary Visibility attribute on current renderLayer&lt;br /&gt;
    editRenderLayerAdjustment ($object + &amp;quot;.primaryVisibility&amp;quot;);&lt;br /&gt;
    // Set Primary Visibility - 0 or 1&lt;br /&gt;
    setAttr ($object + &amp;quot;.primaryVisibility&amp;quot;) 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== V-ray - Make lights invisible ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$selected=`ls -type &amp;quot;VRayLightRectShape&amp;quot;`;&lt;br /&gt;
for ($object in $selected){&lt;br /&gt;
    setAttr ($object + &amp;quot;.invisible&amp;quot;) 1;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
$selected=`ls -type &amp;quot;VRayLightSphereShape&amp;quot;`;&lt;br /&gt;
for ($object in $selected){&lt;br /&gt;
    setAttr ($object + &amp;quot;.invisible&amp;quot;) 1;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
$selected=`ls -type &amp;quot;VRayLightDomeShape&amp;quot;`;&lt;br /&gt;
for ($object in $selected){&lt;br /&gt;
    setAttr ($object + &amp;quot;.invisible&amp;quot;) 1;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== V-ray - Select Rect Light ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
select `ls -type &amp;quot;VRayLightRectShape&amp;quot;`;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== V-ray - Rect Lights - Directional Preview - Always for all ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$selected=`ls -type &amp;quot;VRayLightRectShape&amp;quot;`;&lt;br /&gt;
for ($object in $selected){&lt;br /&gt;
    setAttr ($object + &amp;quot;.directionalPreview&amp;quot;) 1;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Randomize rotation on selected objects ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// As posted on CGTalk by NaughtyNathan&lt;br /&gt;
// &amp;quot;just set the vector values to the maximum random x,y,z rotations you want to apply to the selected transforms.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
vector $rndRot = &amp;lt;&amp;lt; 0,0,90 &amp;gt;&amp;gt;;	// x,y,z rotations&lt;br /&gt;
for ($object in `ls -sl -tr`){&lt;br /&gt;
    rotate `rand ($rndRot.x)` `rand ($rndRot.y)` `rand ($rndRot.z)` $object;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Quit Maya ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Brute force method&lt;br /&gt;
&lt;br /&gt;
$i = `getpid`; //application ID&lt;br /&gt;
    system(&amp;quot;taskkill /PID &amp;quot;  + $i +&amp;quot; /f&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
// In a gentle way&lt;br /&gt;
&lt;br /&gt;
evalDeferred(&amp;quot;quit -f&amp;quot;);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== V-ray - Import list of Alembics through Proxys Import ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// List of Alembics files - Replace by the name of your Alembics&lt;br /&gt;
string $alembicsParts[] = {&amp;quot;part1&amp;quot;,&amp;quot;part2&amp;quot;,&amp;quot;part3&amp;quot;};&lt;br /&gt;
&lt;br /&gt;
// Replace the PATH of your files - Scale by 100 for Houdini Alembics - &amp;lt;frame04&amp;gt; for sequences&lt;br /&gt;
for ($alembicsPart in $alembicsParts){&lt;br /&gt;
    vrayCreateProxy -node $alembicsPart -existing -dir (&amp;quot;C:/YOURPATH/&amp;quot;+$alembicsPart+&amp;quot;.&amp;lt;frame04&amp;gt;.abc&amp;quot;) -createProxyNode;&lt;br /&gt;
    setAttr ($alembicsPart+&amp;quot;_vraymesh.animType&amp;quot;) 1;&lt;br /&gt;
    setAttr ($alembicsPart+&amp;quot;.scaleZ&amp;quot;) 100;&lt;br /&gt;
    setAttr ($alembicsPart+&amp;quot;.scaleX&amp;quot;) 100;&lt;br /&gt;
    setAttr ($alembicsPart+&amp;quot;.scaleY&amp;quot;) 100;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== V-ray - Change path to VRayMesh for selected proxies ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Change path with your own .vrmesh&lt;br /&gt;
$selected=`ls -type &amp;quot;VRayMesh&amp;quot;`;&lt;br /&gt;
for ($object in $selected){&lt;br /&gt;
    setAttr -type &amp;quot;string&amp;quot; ($object + &amp;quot;.fileName2&amp;quot;) &amp;quot;//DISK/PATH/YOUR_VRMESH.vrmesh&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// If you want to change Geometry type - 4 for GPU mesh - add following in the loop&lt;br /&gt;
//    setAttr ($object + &amp;quot;.geomType&amp;quot;) 4;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Delete image planes ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Delete image plane if exists.&lt;br /&gt;
$selected=`ls -type &amp;quot;imagePlane&amp;quot;`;&lt;br /&gt;
select $selected;&lt;br /&gt;
for ($object in $selected){&lt;br /&gt;
    doDelete;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Merge alembic from set ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select objects in a set called EXPORT_SET&lt;br /&gt;
select -r EXPORT_SET ;&lt;br /&gt;
timeControl -edit -forceRedraw $gPlayBackSlider;&lt;br /&gt;
&lt;br /&gt;
// Create list of objects from EXPORT_SET&lt;br /&gt;
string $assetParts[] = `ls -sl`;&lt;br /&gt;
$assetPartsList = stringArrayToString($assetParts,&amp;quot; &amp;quot;);&lt;br /&gt;
&lt;br /&gt;
// Merge alembic with these objects&lt;br /&gt;
AbcImport -mode import -connect $assetPartsList &amp;quot;//DISK/PATH/alembic.abc&amp;quot;;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Create Texture reference ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// CREATE TEXTURE REFERENCE ON EXPORT SET&lt;br /&gt;
&lt;br /&gt;
select -r YOUR_GROUP ;&lt;br /&gt;
CreateTextureReferenceObject;&lt;br /&gt;
select -cl  ;&lt;br /&gt;
&lt;br /&gt;
// REMOVE REFERENCE OBJECTS FROM EXPORT SET&lt;br /&gt;
select -r YOUR_GROUP_reference ;&lt;br /&gt;
string $selection[] = `ls -sl`;&lt;br /&gt;
string $polyGons[] = `filterExpand -sm 12 $selection`;&lt;br /&gt;
select -r $polyGons;&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    sets -rm EXPORT_SET $object;&lt;br /&gt;
}&lt;br /&gt;
select -cl  ;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Replace animated objects with V-Ray proxies ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// First select animated objects to replace&lt;br /&gt;
// For each object create a proxy then constrain then bake simulation then delete constraint&lt;br /&gt;
&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
	vrayCreateProxy -node assetName -existing -dir (&amp;quot;//DISK/PATH/your_asset.vrmesh&amp;quot;) -createProxyNode;&lt;br /&gt;
	select -r $object ;&lt;br /&gt;
	select -add assetName ;&lt;br /&gt;
	doCreateParentConstraintArgList 1 { &amp;quot;0&amp;quot;,&amp;quot;0&amp;quot;,&amp;quot;0&amp;quot;,&amp;quot;0&amp;quot;,&amp;quot;0&amp;quot;,&amp;quot;0&amp;quot;,&amp;quot;0&amp;quot;,&amp;quot;0&amp;quot;,&amp;quot;1&amp;quot;,&amp;quot;&amp;quot;,&amp;quot;1&amp;quot; };&lt;br /&gt;
	parentConstraint -weight 1;&lt;br /&gt;
	bakeResults -simulation true -t &amp;quot;1000:1100&amp;quot; -sampleBy 1 -oversamplingRate 1 -disableImplicitControl true -preserveOutsideKeys true -sparseAnimCurveBake false -removeBakedAttributeFromLayer false -removeBakedAnimFromLayer false -bakeOnOverrideLayer false -minimizeRotation true -controlPoints false -shape true {&amp;quot;assetName&amp;quot;};&lt;br /&gt;
	select `ls -type &amp;quot;constraint&amp;quot;`;&lt;br /&gt;
	select -add $object ;&lt;br /&gt;
	doDelete;&lt;br /&gt;
	select -cl  ;&lt;br /&gt;
	rename &amp;quot;assetName&amp;quot; $object;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Select all meshes in a group ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// From cmadsenAniden on forums.autodesk.com&lt;br /&gt;
// Replace group1 by the name of your own group&lt;br /&gt;
&lt;br /&gt;
select -r group1 ;&lt;br /&gt;
string $selection[] = `ls -sl`;&lt;br /&gt;
string $polyGons[] = `filterExpand -sm 12 $selection`;&lt;br /&gt;
select -r $polyGons;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Select shot camera ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// CREATE VARIABLE FOR SHOT CAMERA AND SELECT IT&lt;br /&gt;
&lt;br /&gt;
select `ls -type &amp;quot;camera&amp;quot;`;&lt;br /&gt;
select -d sideShape frontShape topShape perspShape;&lt;br /&gt;
$camerashot = `ls -sl`;&lt;br /&gt;
string $shotcamera = $camerashot[0];&lt;br /&gt;
print $shotcamera;&lt;br /&gt;
select $shotcamera;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Get list of frames with keys on all transform objects ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$selected=`ls -dag -et transform`;&lt;br /&gt;
&lt;br /&gt;
float $arrathy[] = `keyframe -query $selected`;&lt;br /&gt;
&lt;br /&gt;
float $sorted[] = python(&amp;quot;import pymel.core as pm; list(set((pm.getMelGlobal(\&amp;quot;float[]\&amp;quot;, \&amp;quot;$arrathy\&amp;quot;))))&amp;quot;);&lt;br /&gt;
print $sorted;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== MULTI SNAP ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Replace a list of objects by another with bake of animation. Replace FSTART and FEND with your own padding.&lt;br /&gt;
&lt;br /&gt;
///////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
///////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
/*&lt;br /&gt;
Type the command MS() in MEL form to open UI.&lt;br /&gt;
*/&lt;br /&gt;
///////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
///////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
source &amp;quot;generateChannelMenu.mel&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
global proc MS ()&lt;br /&gt;
{&lt;br /&gt;
     global string $sourceObjects;&lt;br /&gt;
     global string $destinationObjects;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    // If the window exists already, delete it.&lt;br /&gt;
    if (`window -exists multiSnapWindow`)&lt;br /&gt;
    {&lt;br /&gt;
        deleteUI multiSnapWindow;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    // Build the window.&lt;br /&gt;
    global string $man_window;&lt;br /&gt;
    string $man_window = `window -title &amp;quot; MULTI SNAP&amp;quot; -sizeable 0 -w 300 multiSnapWindow`;&lt;br /&gt;
    frameLayout -label &amp;quot;Snap source objects on destination objects.&amp;quot;;&lt;br /&gt;
    rowLayout -width 540 -nc 2 -cw4 10 20 20 100;&lt;br /&gt;
    // Source objects section&lt;br /&gt;
    frameLayout -label &amp;quot;Source objects&amp;quot;;&lt;br /&gt;
    $sourceObjects = `textScrollList -width 600 -height 300`;&lt;br /&gt;
    rowLayout -width 240 -nc 2 -cw2 120 120;&lt;br /&gt;
    button -label &amp;quot;Add selected&amp;quot; -command &amp;quot;MS_addObjects ();&amp;quot; -width 120;&lt;br /&gt;
    button -label &amp;quot;Remove selected&amp;quot; -command &amp;quot;MS_removeObjects ();&amp;quot; -width 120;&lt;br /&gt;
    setParent ..;&lt;br /&gt;
    rowLayout -width 240 -nc 2 -cw2 120 120;&lt;br /&gt;
    button -label &amp;quot;Remove All&amp;quot; -command &amp;quot;MS_clearObjects ();&amp;quot; -width 240;&lt;br /&gt;
    setParent ..;&lt;br /&gt;
    setParent ..;&lt;br /&gt;
    rowLayout -nc 3;&lt;br /&gt;
    button -label &amp;quot;Create&amp;quot; -command &amp;quot;VRAYCONNECDO() &amp;quot; -width 140 -align center;&lt;br /&gt;
    button -label &amp;quot;Close&amp;quot; -command &amp;quot;DAC_CloseUI() &amp;quot; -width 140 -align center;&lt;br /&gt;
    setParent ..;&lt;br /&gt;
    setParent ..;&lt;br /&gt;
    // Destination objects section&lt;br /&gt;
    frameLayout -label &amp;quot;Destination objects&amp;quot;;&lt;br /&gt;
    $destinationObjects = `textScrollList -width 600 -height 300`;&lt;br /&gt;
    rowLayout -width 240 -nc 2 -cw2 120 120;&lt;br /&gt;
    button -label &amp;quot;Add selected&amp;quot; -command &amp;quot;MS_addMM ();&amp;quot; -width 120;&lt;br /&gt;
    button -label &amp;quot;Remove selected&amp;quot; -command &amp;quot;MS_removeMM ();&amp;quot; -width 120;&lt;br /&gt;
    setParent ..;&lt;br /&gt;
    setParent ..;&lt;br /&gt;
    rowLayout -nc 3;&lt;br /&gt;
    button -label &amp;quot;SNAP IT&amp;quot; -command &amp;quot;VRAYCONNECDO() &amp;quot; -width 140 -align center;&lt;br /&gt;
    button -label &amp;quot;Close&amp;quot; -command &amp;quot;DAC_CloseUI() &amp;quot; -width 140 -align center;&lt;br /&gt;
    setParent ..;&lt;br /&gt;
    setParent ..;&lt;br /&gt;
&lt;br /&gt;
// Show the window.&lt;br /&gt;
showWindow multiSnapWindow;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
global proc string[] getShaders(string $from)&lt;br /&gt;
{&lt;br /&gt;
// get the shapes from the input&lt;br /&gt;
string $shapes[] = ls(&amp;quot;-o&amp;quot;, &amp;quot;-dag&amp;quot;, &amp;quot;-s&amp;quot;, $from);&lt;br /&gt;
// give me the connected &amp;quot;shadingEngines&amp;quot;&lt;br /&gt;
string $shadingEngines[] = listConnections(&amp;quot;-type&amp;quot;,&amp;quot;shadingEngine&amp;quot;, $shapes);&lt;br /&gt;
// list the connected materials (shaders) from that&lt;br /&gt;
string $materials[] = ls(&amp;quot;-mat&amp;quot;, listConnections($shadingEngines));&lt;br /&gt;
// remove duplicate occurrences.&lt;br /&gt;
return (stringArrayRemoveDuplicates($materials));&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
//Add selected objects to list.&lt;br /&gt;
global proc MS_addObjects ()&lt;br /&gt;
{&lt;br /&gt;
      global string $sourceObjects;&lt;br /&gt;
      string $selectedshapes[] = `ls -sl -l`;&lt;br /&gt;
      //print $selectedshapes;&lt;br /&gt;
      int $count = 0;&lt;br /&gt;
&lt;br /&gt;
if ($selectedshapes[0] != &amp;quot;&amp;quot;)&lt;br /&gt;
{&lt;br /&gt;
   for ($i in $selectedshapes)&lt;br /&gt;
   {&lt;br /&gt;
     $count ++;&lt;br /&gt;
     textScrollList -edit -append $i $sourceObjects;&lt;br /&gt;
   }&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
//Add selected objects to list.&lt;br /&gt;
global proc MS_addMM ()&lt;br /&gt;
{&lt;br /&gt;
      global string $destinationObjects;&lt;br /&gt;
      string $selectedshapes[] = `ls -sl -l`;&lt;br /&gt;
      //print $selectedshapes;&lt;br /&gt;
      int $count = 0;&lt;br /&gt;
&lt;br /&gt;
if ($selectedshapes[0] != &amp;quot;&amp;quot;)&lt;br /&gt;
{&lt;br /&gt;
   for ($i in $selectedshapes)&lt;br /&gt;
   {&lt;br /&gt;
     $count ++;&lt;br /&gt;
     textScrollList -edit -append $i $destinationObjects;&lt;br /&gt;
   }&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// Clear objects from list.&lt;br /&gt;
global proc MS_clearObjects ()&lt;br /&gt;
{&lt;br /&gt;
    global string $sourceObjects;&lt;br /&gt;
textScrollList -e -ra $sourceObjects;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// Remove selected object from list.&lt;br /&gt;
global proc MS_removeObjects ()&lt;br /&gt;
{&lt;br /&gt;
   global string $sourceObjects;&lt;br /&gt;
&lt;br /&gt;
    int $index [] = `textScrollList -query -selectIndexedItem $sourceObjects`;&lt;br /&gt;
    if ($index [0] != 0)&lt;br /&gt;
    {&lt;br /&gt;
        textScrollList -edit -removeIndexedItem $index [0] $sourceObjects;&lt;br /&gt;
    }&lt;br /&gt;
   global string $sourceObjects;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
global proc VRAYCONNECDO()&lt;br /&gt;
{&lt;br /&gt;
    // UI Elements&lt;br /&gt;
global string $sourceObjects;&lt;br /&gt;
global string $destinationObjects;&lt;br /&gt;
// Define user selected objects&lt;br /&gt;
string $selected_objects[] = `textScrollList -query -allItems $sourceObjects`;&lt;br /&gt;
string $meshMaterial[] = `textScrollList -query -allItems $destinationObjects`;&lt;br /&gt;
int $i = 0;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
// SET PADDING&lt;br /&gt;
string $FSTART = &amp;quot;1&amp;quot;;&lt;br /&gt;
string $FEND = &amp;quot;100&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
print $FSTART;&lt;br /&gt;
print $FEND;&lt;br /&gt;
&lt;br /&gt;
string $PADDING = $FSTART + &amp;quot;:&amp;quot; + $FEND;&lt;br /&gt;
&lt;br /&gt;
//Progress bar&lt;br /&gt;
global string $gMainProgressBar;&lt;br /&gt;
&lt;br /&gt;
// Start the progress bar and adjust its max value for this operation.&lt;br /&gt;
    int $steps = size($selected_objects);&lt;br /&gt;
    progressBar -edit -beginProgress -isInterruptable true -status &amp;quot;Connecting shaders to mesh material ...&amp;quot; -maxValue $steps $gMainProgressBar;&lt;br /&gt;
 &lt;br /&gt;
for ($i = 0; $i &amp;lt; size($selected_objects); $i ++)&lt;br /&gt;
{&lt;br /&gt;
        parentConstraint -n parentConstraintMS $selected_objects[$i] $meshMaterial[$i];&lt;br /&gt;
        select -r $meshMaterial[$i] ;&lt;br /&gt;
        bakeResults -simulation true -t $PADDING -sampleBy 1 -oversamplingRate 1 -disableImplicitControl true -preserveOutsideKeys true -sparseAnimCurveBake false -removeBakedAttributeFromLayer false -removeBakedAnimFromLayer false -bakeOnOverrideLayer false -minimizeRotation true -controlPoints false -shape true {$meshMaterial[$i]};&lt;br /&gt;
        select -cl  ;&lt;br /&gt;
        select -r &amp;quot;*parentConstraintMS*&amp;quot;;&lt;br /&gt;
        doDelete;&lt;br /&gt;
// Update the progress bar.&lt;br /&gt;
progressBar -edit -step 1 $gMainProgressBar;&lt;br /&gt;
}&lt;br /&gt;
// End the progress.&lt;br /&gt;
progressBar -edit -endProgress $gMainProgressBar;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Delete hidden objects ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select objects&lt;br /&gt;
&lt;br /&gt;
for ( $object in `ls -sl` ) {&lt;br /&gt;
    $vis = getAttr ($object+&amp;quot;.visibility&amp;quot;);&lt;br /&gt;
    if ($vis == 0){&lt;br /&gt;
        select -r $object ;&lt;br /&gt;
        doDelete ;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== V-Ray - BAKE MATERIALS ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Made to work also with mayabatch.exe&lt;br /&gt;
&lt;br /&gt;
////////////////////////////////////////////&lt;br /&gt;
// BAKE VRAY CUSTOM VARIABLES&lt;br /&gt;
////////////////////////////////////////////&lt;br /&gt;
&lt;br /&gt;
// ASSET PATH&lt;br /&gt;
string $assetFileType = &amp;quot;mayaBinary&amp;quot;;&lt;br /&gt;
string $assetPath = &amp;quot;C:/YOUR_PATH/YOUR_SURFACING_ASSET.mb&amp;quot;;&lt;br /&gt;
string $assetName = &amp;quot;ASSET_NAME&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
// LIGHT RIG PATH&lt;br /&gt;
string $lightRigFileType = &amp;quot;mayaAscii&amp;quot;;&lt;br /&gt;
string $lightRigPath = &amp;quot;C:/YOUR_PATH/YOUR_LIGHT_RIG.mb&amp;quot;;&lt;br /&gt;
string $lightRigName = &amp;quot;DAY_LIGHTING&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
// BAKED TEXTURES PATH&lt;br /&gt;
string $bakedTexturesPath = (&amp;quot;C:/YOUR_PATH/BAKED_TEXTURES/&amp;quot; + $assetName + &amp;quot;_&amp;quot; + $lightRigName + &amp;quot;_Bake&amp;quot;);&lt;br /&gt;
print $bakedTexturesPath;&lt;br /&gt;
&lt;br /&gt;
// SET RESOLUTION FOR BAKED MAPS&lt;br /&gt;
$resWidth = 4096;&lt;br /&gt;
$resHeight = $resWidth;&lt;br /&gt;
&lt;br /&gt;
// COLOR SPACE FOR FILE TEXTURES&lt;br /&gt;
string $fileColorSpace = &amp;quot;ACES - ACEScg&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
////////////////////////////////////////////&lt;br /&gt;
// END OF CUSTOM VARIABLES&lt;br /&gt;
////////////////////////////////////////////&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
////////////////////////////////////////////&lt;br /&gt;
// RENDER SETTINGS&lt;br /&gt;
&lt;br /&gt;
// Set File Name Prefix&lt;br /&gt;
setAttr -type &amp;quot;string&amp;quot; vraySettings.fileNamePrefix &amp;quot;&amp;lt;Scene&amp;gt;/&amp;lt;Layer&amp;gt;/&amp;lt;Camera&amp;gt;_&amp;lt;Layer&amp;gt;_&amp;lt;Scene&amp;gt;&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
// Set resolution&lt;br /&gt;
$resWidthHalf = $resWidth/2;&lt;br /&gt;
$resHeightHalf = $resHeight/2;&lt;br /&gt;
setAttr &amp;quot;vraySettings.width&amp;quot; $resWidthHalf;&lt;br /&gt;
setAttr &amp;quot;vraySettings.height&amp;quot; $resHeightHalf;&lt;br /&gt;
&lt;br /&gt;
// Set Persp camera renderable&lt;br /&gt;
setAttr &amp;quot;perspShape.renderable&amp;quot; 1;&lt;br /&gt;
&lt;br /&gt;
// Set Image format&lt;br /&gt;
setAttr -type &amp;quot;string&amp;quot; &amp;quot;vraySettings.imageFormatStr&amp;quot; &amp;quot;exr (multichannel)&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
// Set Animation type on Standard&lt;br /&gt;
setAttr &amp;quot;vraySettings.animType&amp;quot; 0;&lt;br /&gt;
setAttr &amp;quot;vraySettings.animBatchOnly&amp;quot; 1;&lt;br /&gt;
&lt;br /&gt;
// Sampler type Bucket&lt;br /&gt;
setAttr &amp;quot;vraySettings.samplerType&amp;quot; 4;&lt;br /&gt;
&lt;br /&gt;
// Min Shading Rate&lt;br /&gt;
//setAttr &amp;quot;vraySettings.minShadeRate&amp;quot; 4;&lt;br /&gt;
setAttr &amp;quot;vraySettings.minShadeRate&amp;quot; 7;&lt;br /&gt;
&lt;br /&gt;
// Buckets subdivs&lt;br /&gt;
//setAttr &amp;quot;vraySettings.dmcMinSubdivs&amp;quot; 1;&lt;br /&gt;
//setAttr &amp;quot;vraySettings.dmcMaxSubdivs&amp;quot; 8;&lt;br /&gt;
//setAttr &amp;quot;vraySettings.dmcThreshold&amp;quot; 0.1;&lt;br /&gt;
setAttr &amp;quot;vraySettings.dmcMinSubdivs&amp;quot; 1;&lt;br /&gt;
setAttr &amp;quot;vraySettings.dmcMaxSubdivs&amp;quot; 15;&lt;br /&gt;
setAttr &amp;quot;vraySettings.dmcThreshold&amp;quot; 0.01;&lt;br /&gt;
&lt;br /&gt;
// Color mapping Linear&lt;br /&gt;
setAttr &amp;quot;vraySettings.cmap_type&amp;quot; 0;&lt;br /&gt;
&lt;br /&gt;
// GI on&lt;br /&gt;
setAttr &amp;quot;vraySettings.giOn&amp;quot; 1;&lt;br /&gt;
//setAttr &amp;quot;vraySettings.subdivs&amp;quot; 400;&lt;br /&gt;
setAttr &amp;quot;vraySettings.subdivs&amp;quot; 1000;&lt;br /&gt;
&lt;br /&gt;
// Max subdivs&lt;br /&gt;
setAttr &amp;quot;vraySettings.ddisplac_maxSubdivs&amp;quot; 16;&lt;br /&gt;
&lt;br /&gt;
// Cache geometry and bitmaps&lt;br /&gt;
setAttr &amp;quot;vraySettings.globopt_cache_geom_plugins&amp;quot; 1;&lt;br /&gt;
setAttr &amp;quot;vraySettings.globopt_cache_bitmaps&amp;quot; 1;&lt;br /&gt;
&lt;br /&gt;
// Dynamic memory limit&lt;br /&gt;
setAttr &amp;quot;vraySettings.sys_rayc_dynMemLimit&amp;quot; 0;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
////////////////////////////////////////////&lt;br /&gt;
// IMPORT&lt;br /&gt;
&lt;br /&gt;
// IMPORT LIGHT RIG&lt;br /&gt;
file -import -type $lightRigFileType  -ignoreVersion -mergeNamespacesOnClash false -rpr &amp;quot;:&amp;quot; -options &amp;quot;v=0;&amp;quot; $lightRigPath;&lt;br /&gt;
&lt;br /&gt;
// IMPORT ASSET&lt;br /&gt;
file -import -type $assetFileType  -ignoreVersion -mergeNamespacesOnClash false -rpr &amp;quot;:&amp;quot; -options &amp;quot;v=0;&amp;quot; $assetPath;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
// CREATE SETS&lt;br /&gt;
select `ls -type &amp;quot;mesh&amp;quot;`;&lt;br /&gt;
sets -name &amp;quot;assetOriginal_Set&amp;quot; ;&lt;br /&gt;
duplicate -rr;&lt;br /&gt;
group -w -n (&amp;quot;GRP_&amp;quot; + $assetName + &amp;quot;_BAKE_&amp;quot; + `toupper $lightRigName`);&lt;br /&gt;
sets -name &amp;quot;assetBaked_Set&amp;quot; ;&lt;br /&gt;
&lt;br /&gt;
// REMOVE BAKED PARTS FROM ORIGINAL PARTS SET&lt;br /&gt;
select -r assetBaked_Set ;&lt;br /&gt;
string $selection[] = `ls -sl`;&lt;br /&gt;
string $polyGons[] = `filterExpand -sm 12 $selection`;&lt;br /&gt;
select -r $polyGons;&lt;br /&gt;
pickWalk -d down;&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    sets -rm assetOriginal_Set $object;&lt;br /&gt;
}&lt;br /&gt;
select -cl  ;&lt;br /&gt;
&lt;br /&gt;
// DELETE HIDDEN OBJECTS&lt;br /&gt;
select -r assetBaked_Set ;&lt;br /&gt;
string $selection[] = `ls -sl`;&lt;br /&gt;
string $polyGons[] = `filterExpand -sm 12 $selection`;&lt;br /&gt;
select -r $polyGons;&lt;br /&gt;
for ( $object in `ls -sl` ) {&lt;br /&gt;
    $vis = getAttr ($object+&amp;quot;.visibility&amp;quot;);&lt;br /&gt;
    if ($vis == 0){&lt;br /&gt;
        select -r $object ;&lt;br /&gt;
        doDelete ;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
select -cl  ;&lt;br /&gt;
&lt;br /&gt;
// fixShapeName - Thanks to Pinkwerks&lt;br /&gt;
global proc&lt;br /&gt;
fixShapeName()&lt;br /&gt;
{&lt;br /&gt;
    string $me = &amp;quot;fixShapeName&amp;quot;;&lt;br /&gt;
    string $shape;&lt;br /&gt;
    string $newShapeName;&lt;br /&gt;
    string $parent;&lt;br /&gt;
    string $tmpA[];&lt;br /&gt;
	string $selectedShapes[] = `ls -sl -l`;&lt;br /&gt;
    int $sizeOfShapes = `size $selectedShapes`;&lt;br /&gt;
&lt;br /&gt;
    if ( $sizeOfShapes == 0 )&lt;br /&gt;
    	error($me + &amp;quot; : Nothing shapes to process!&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
    for ( $shape in $selectedShapes )&lt;br /&gt;
    {&lt;br /&gt;
    	$tmpA = `listRelatives -p $shape`;&lt;br /&gt;
		$parent = $tmpA[0];&lt;br /&gt;
		$newShapeName = ($parent + &amp;quot;Shape&amp;quot;);&lt;br /&gt;
		rename $shape $newShapeName;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// APPLY FIXSHAPENAME TO BAKED ASSET PARTS&lt;br /&gt;
select -r assetBaked_Set ;&lt;br /&gt;
string $selection[] = `ls -sl`;&lt;br /&gt;
string $polyGons[] = `filterExpand -sm 12 $selection`;&lt;br /&gt;
select -r $polyGons;&lt;br /&gt;
pickWalk -d down;&lt;br /&gt;
fixShapeName();&lt;br /&gt;
select -cl  ;&lt;br /&gt;
&lt;br /&gt;
// DELETE OBJECTS WITHOUT UVS&lt;br /&gt;
select -r assetBaked_Set ;&lt;br /&gt;
string $selection[] = `ls -sl`;&lt;br /&gt;
string $polyGons[] = `filterExpand -sm 12 $selection`;&lt;br /&gt;
select -r $polyGons;&lt;br /&gt;
for ( $object in `ls -sl` ) {&lt;br /&gt;
    int $vertexCount[] = `polyEvaluate -uv $object`;&lt;br /&gt;
    print $vertexCount;&lt;br /&gt;
    string $uvCount = $vertexCount[0];&lt;br /&gt;
    if ($uvCount == 0){&lt;br /&gt;
        select -r $object ;&lt;br /&gt;
        doDelete ;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// CREATE VRAY BAKE OPTIONS&lt;br /&gt;
createNode &amp;quot;VRayBakeOptions&amp;quot; -n &amp;quot;vrayBakeOptions&amp;quot;;&lt;br /&gt;
select -r assetBaked_Set ;&lt;br /&gt;
string $selection[] = `ls -sl`;&lt;br /&gt;
string $polyGons[] = `filterExpand -sm 12 $selection`;&lt;br /&gt;
select -r $polyGons;&lt;br /&gt;
$selected=`ls -sl`;&lt;br /&gt;
for ($object in $selected){&lt;br /&gt;
    sets -edit -forceElement  vrayBakeOptions $object ;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// HIDE ORIGINAL ASSET&lt;br /&gt;
select -r assetOriginal_Set ;&lt;br /&gt;
pickWalk -d up;&lt;br /&gt;
hide `ls -sl`;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
// BAKE VRAY OPTIONS&lt;br /&gt;
setAttr &amp;quot;vrayBakeOptions.udimBaking&amp;quot; 1;&lt;br /&gt;
setAttr &amp;quot;vrayBakeOptions.resolutionX&amp;quot; $resWidth;&lt;br /&gt;
&lt;br /&gt;
optionVar -intValue &amp;quot;vrayBakeType&amp;quot; 2;&lt;br /&gt;
optionVar -intValue &amp;quot;vraySkipNodesWithoutBakeOptions&amp;quot; 1;&lt;br /&gt;
optionVar -intValue &amp;quot;vrayAssignBakedTextures&amp;quot; 1;&lt;br /&gt;
optionVar -stringValue &amp;quot;vrayBakeOutputPath&amp;quot; $bakedTexturesPath;&lt;br /&gt;
optionVar -intValue &amp;quot;vrayBakeProjectionBaking&amp;quot; 0;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
// GO BAKE GO&lt;br /&gt;
select -cl  ;&lt;br /&gt;
select -r assetBaked_Set ;&lt;br /&gt;
string $selection[] = `ls -sl`;&lt;br /&gt;
string $polyGons[] = `filterExpand -sm 12 $selection`;&lt;br /&gt;
select -r $polyGons;&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    vrayStartBake;&lt;br /&gt;
}&lt;br /&gt;
select -cl  ;&lt;br /&gt;
&lt;br /&gt;
// UV TILING UDIM AND ACES CG FOR FILES&lt;br /&gt;
for ( $object in `ls -type &amp;quot;file&amp;quot;` ) {&lt;br /&gt;
    setAttr ($object + &amp;quot;.filterType&amp;quot;) 0;&lt;br /&gt;
    setAttr ($object + &amp;quot;.uvTilingMode&amp;quot;) 3;&lt;br /&gt;
    setAttr ($object + &amp;quot;.cs&amp;quot;) -type &amp;quot;string&amp;quot; $fileColorSpace;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// CONNECT SHADERS&lt;br /&gt;
select -cl  ;&lt;br /&gt;
select -r assetBaked_Set ;&lt;br /&gt;
string $selection[] = `ls -sl`;&lt;br /&gt;
string $polyGons[] = `filterExpand -sm 12 $selection`;&lt;br /&gt;
for ( $object in $polyGons ) {&lt;br /&gt;
    string $shadingGroupName = ($object + &amp;quot;Shape_bakedmtlSG&amp;quot;);&lt;br /&gt;
    sets -e -forceElement $shadingGroupName $object;&lt;br /&gt;
}&lt;br /&gt;
select -cl  ;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
///////////////////////////////////&lt;br /&gt;
// SAVE&lt;br /&gt;
file -rename (&amp;quot;C:/YOUR_PATH/BAKED_ASSETS/&amp;quot; + $assetName + &amp;quot;_&amp;quot; + $lightRigName + &amp;quot;_BAKE_DEBUG.mb&amp;quot;);&lt;br /&gt;
file -f -save;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Arnold - Set all Standins display on Bouding box ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$selected=`ls -type &amp;quot;aiStandIn&amp;quot;`;&lt;br /&gt;
for ($object in $selected){&lt;br /&gt;
    setAttr ($object + &amp;quot;.mode&amp;quot;) 0;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Arnold - Set all Standins display on Point cloud ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$selected=`ls -type &amp;quot;aiStandIn&amp;quot;`;&lt;br /&gt;
for ($object in $selected){&lt;br /&gt;
    setAttr ($object + &amp;quot;.mode&amp;quot;) 4;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Alembic - Loop animation on all nodes ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$selected=`ls -type &amp;quot;AlembicNode&amp;quot;`;&lt;br /&gt;
for ($object in $selected){&lt;br /&gt;
    setAttr ($object + &amp;quot;.cycleType&amp;quot;) 1;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Mental Ray nodes error - Delete Mayatomr plugin ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
unknownPlugin -remove &amp;quot;Mayatomr&amp;quot;;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Delete Unknown nodes ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
select -r `ls -type unknown`;&lt;br /&gt;
delete;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Write text ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
string $exampleFileName = ( &amp;quot;D:/yolo.bat&amp;quot; );&lt;br /&gt;
string $linesToWrite[] = {&lt;br /&gt;
    &amp;quot;youpi&amp;quot;,&lt;br /&gt;
    &amp;quot;youhou&amp;quot;&lt;br /&gt;
    };&lt;br /&gt;
int $result = fwriteAllLines($exampleFileName,$linesToWrite);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Point Lock No Attach on selected follicles ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    setAttr ($object + &amp;quot;.pointLock&amp;quot;) 0;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Convert .ma cameras from Reality Capture into .abc files ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// List of assets&lt;br /&gt;
string $fileParts[] = {&amp;quot;asset_001&amp;quot;, &amp;quot;asset_002&amp;quot;};&lt;br /&gt;
&lt;br /&gt;
// Replace the PATH of your files&lt;br /&gt;
for ($filePart in $fileParts){&lt;br /&gt;
	string $fileName = $filePart + &amp;quot;_cam&amp;quot;;&lt;br /&gt;
	string $filePath = &amp;quot;//DISK/PATH/&amp;quot; + $filePart + &amp;quot;/&amp;quot; + $filePart +&amp;quot;_cam.ma&amp;quot;;&lt;br /&gt;
	file -import -type &amp;quot;mayaAscii&amp;quot;  -ignoreVersion -ra true -mergeNamespacesOnClash false -rpr $fileName -options &amp;quot;v=0;p=17;f=0&amp;quot;  -pr  -importFrameRate true  -importTimeRange &amp;quot;override&amp;quot; $filePath;&lt;br /&gt;
	select -cl;&lt;br /&gt;
	select `ls -type &amp;quot;imagePlane&amp;quot;`;&lt;br /&gt;
	pickWalk -d up;&lt;br /&gt;
	doDelete;&lt;br /&gt;
	select `ls -type &amp;quot;camera&amp;quot;`;&lt;br /&gt;
	pickWalk -d up;	&lt;br /&gt;
	string $abcPath = &amp;quot;//DISK/PATH/&amp;quot; + $filePart + &amp;quot;/&amp;quot; + $filePart +&amp;quot;_cam.abc&amp;quot;;&lt;br /&gt;
	string $abcExp = &amp;quot;-frameRange 1 1 -uvWrite -worldSpace -dataFormat ogawa -root |* -file &amp;quot; + $abcPath;&lt;br /&gt;
	AbcExport -j $abcExp;&lt;br /&gt;
	select -all;&lt;br /&gt;
	doDelete;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Combine objects ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select objects&lt;br /&gt;
&lt;br /&gt;
polyPerformAction polyUnite o 0; &lt;br /&gt;
DeleteHistory;&lt;br /&gt;
FreezeTransformations;&lt;br /&gt;
makeIdentity -apply true -t 1 -r 1 -s 1 -n 0 -pn 1;&lt;br /&gt;
CenterPivot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Unitize UVs (one square UV by face) ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select objects&lt;br /&gt;
&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    select -r ($object+&amp;quot;.e[*]&amp;quot;);&lt;br /&gt;
    hilite ($object+&amp;quot;.e[*]&amp;quot;) ;&lt;br /&gt;
    polyMapCut -ch 1 ($object+&amp;quot;.e[*]&amp;quot;);&lt;br /&gt;
    polyForceUV -unitize $object;&lt;br /&gt;
    select $object;&lt;br /&gt;
    DeleteHistory;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== ONE-CLICK Unfold UVs ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select seams edges first&lt;br /&gt;
&lt;br /&gt;
invertSelection;&lt;br /&gt;
string $selectedEdges [] = `ls -sl`;&lt;br /&gt;
&lt;br /&gt;
string $selectedObject [] = `ls -selection -objectsOnly`;&lt;br /&gt;
&lt;br /&gt;
select -r ($selectedObject[0]+&amp;quot;.e[*]&amp;quot;);&lt;br /&gt;
hilite ($selectedObject[0]+&amp;quot;.e[*]&amp;quot;) ;&lt;br /&gt;
polyMapCut -ch 1 ($selectedObject[0]+&amp;quot;.e[*]&amp;quot;);&lt;br /&gt;
polyForceUV -unitize $selectedObject[0];&lt;br /&gt;
&lt;br /&gt;
select $selectedObject[0];&lt;br /&gt;
polyMapSewMove -nf 10 -lps 0 -ch 1 $selectedEdges;&lt;br /&gt;
select -r ($selectedObject[0]+&amp;quot;.map[*]&amp;quot;);&lt;br /&gt;
u3dUnfold -ite 1 -p 0 -bi 1 -tf 1 -ms 1024 -rs 0 ($selectedObject[0]+&amp;quot;.map[*]&amp;quot;);&lt;br /&gt;
u3dLayout -res 256 -scl 1 -spc 0.001 -mar 0.01 -box 0 1 0 1 $selectedObject[0];&lt;br /&gt;
select $selectedObject[0];&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Create Texture Reference on all shapes from a group ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select top group first&lt;br /&gt;
&lt;br /&gt;
string $selection[] = `ls -sl`;&lt;br /&gt;
string $polyGons[] = `filterExpand -sm 12 $selection`;&lt;br /&gt;
&lt;br /&gt;
for ($i = 0; $i &amp;lt; size($polyGons); $i ++)&lt;br /&gt;
{&lt;br /&gt;
    select -r $polyGons[$i] ;&lt;br /&gt;
    CreateTextureReferenceObject;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
select -r $selection;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Walter</name></author>
		
	</entry>
	<entry>
		<id>http://antoinevienne.fr/wiki/index.php?title=Maya_tmp&amp;diff=261</id>
		<title>Maya tmp</title>
		<link rel="alternate" type="text/html" href="http://antoinevienne.fr/wiki/index.php?title=Maya_tmp&amp;diff=261"/>
		<updated>2023-09-29T13:09:05Z</updated>

		<summary type="html">&lt;p&gt;Walter: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Maya tmp Scripts=&lt;br /&gt;
=== Maya Python - Create object &amp;amp; Randomize Translate ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
from maya import cmds&lt;br /&gt;
import random&lt;br /&gt;
&lt;br /&gt;
numObjects = 4&lt;br /&gt;
&lt;br /&gt;
for n in range(numObjects):&lt;br /&gt;
    obj = cmds.polyCube()&lt;br /&gt;
    cmds.setAttr(obj[0]+'.translateX', random.randint(0, 5))&lt;br /&gt;
    cmds.setAttr(obj[0]+'.translateY', random.randint(0, 5))&lt;br /&gt;
    cmds.setAttr(obj[0]+'.translateZ', random.randint(0, 5))&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Maya Python - Randomize translate of selection #1===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
from maya import cmds&lt;br /&gt;
import random&lt;br /&gt;
&lt;br /&gt;
objList = cmds.ls(selection=True)&lt;br /&gt;
&lt;br /&gt;
print objList&lt;br /&gt;
&lt;br /&gt;
for obj in objList:&lt;br /&gt;
    cmds.setAttr(obj+'.translateX', random.randint(0, 5))&lt;br /&gt;
    cmds.setAttr(obj+'.translateY', random.randint(0, 5))&lt;br /&gt;
    cmds.setAttr(obj+'.translateZ', random.randint(0, 5))&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Maya Python - Randomize translate of selection #2===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#La meme chose en utilisant une fonction&lt;br /&gt;
from maya import cmds&lt;br /&gt;
import random&lt;br /&gt;
&lt;br /&gt;
objList = cmds.ls(selection=True)&lt;br /&gt;
&lt;br /&gt;
print objList&lt;br /&gt;
&lt;br /&gt;
#On definit la fonction&lt;br /&gt;
def randomize(minValue=0, maxValue=5):&lt;br /&gt;
    for obj in objList:&lt;br /&gt;
        cmds.setAttr(obj+'.translateX', random.randint(minValue, maxValue))&lt;br /&gt;
        cmds.setAttr(obj+'.translateY', random.randint(minValue, maxValue))&lt;br /&gt;
        cmds.setAttr(obj+'.translateZ', random.randint(minValue, maxValue))&lt;br /&gt;
&lt;br /&gt;
#On change si besoin les valeurs par defaut avant d'executer la fonction&lt;br /&gt;
randomize(minValue=4, maxValue=20)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Maya Mel - Replace path - getAttr/setAttr===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    $path = getAttr ($object+&amp;quot;.filePrefix&amp;quot;);   &lt;br /&gt;
    setAttr -type &amp;quot;string&amp;quot; ($object+&amp;quot;.filePrefix&amp;quot;) ($path+&amp;quot;yo&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
for ( $object in `ls -sl -l` ) {    &lt;br /&gt;
    setAttr -type &amp;quot;string&amp;quot; ($object+&amp;quot;.filePrefix&amp;quot;) (&amp;quot;//blabla/bla.abc&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Maya Mel - Auto Uvs and Layout===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
polyMultiLayoutUV -scale 1 -rotateForBestFit 0 -layout 2;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Instance and Snap ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
//DE-PARENT meshs&lt;br /&gt;
string $VRMeshs = &amp;quot;*VR&amp;quot;;&lt;br /&gt;
select -r $VRMeshs;&lt;br /&gt;
parent -w;&lt;br /&gt;
select -cl;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
////Basket Grass&lt;br /&gt;
//replace_locator_by_object&lt;br /&gt;
string $objectCible = &amp;quot;Basket_Grass_VR&amp;quot;;&lt;br /&gt;
string $locatorPlacement = &amp;quot;Basket_Grass_AR*&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
select -cl;&lt;br /&gt;
select -r $locatorPlacement;&lt;br /&gt;
//pickWalk -d up;&lt;br /&gt;
string $selLocatorPlacement[] = `ls -sl`;&lt;br /&gt;
int $nbreLocatorPlacement = size ($selLocatorPlacement);&lt;br /&gt;
&lt;br /&gt;
select -r $objectCible;&lt;br /&gt;
for ($i=1; $i&amp;lt;$nbreLocatorPlacement; ++$i)&lt;br /&gt;
{&lt;br /&gt;
    instance -st;&lt;br /&gt;
}&lt;br /&gt;
select -cl;&lt;br /&gt;
&lt;br /&gt;
////////////////&lt;br /&gt;
string $objectCibleI = &amp;quot;Basket_Grass_VR*&amp;quot;;&lt;br /&gt;
select -r $objectCibleI;&lt;br /&gt;
pickWalk -d up;&lt;br /&gt;
string $selObjectCible[] = `ls -sl`;&lt;br /&gt;
int $nbreObjectCible = size ($selObjectCible);&lt;br /&gt;
&lt;br /&gt;
select -cl;&lt;br /&gt;
&lt;br /&gt;
for ($i=0; $i&amp;lt;$nbreObjectCible; ++$i)&lt;br /&gt;
{&lt;br /&gt;
    select -r $selLocatorPlacement[$i];&lt;br /&gt;
    select -add $selObjectCible[$i];&lt;br /&gt;
    pointConstraint -offset 0 0 0 -weight 1;&lt;br /&gt;
    orientConstraint -offset 0 0 0 -weight 1;&lt;br /&gt;
    scaleConstraint -offset 1 1 1 -weight 1;&lt;br /&gt;
    select -r &amp;quot;*Constraint*&amp;quot;;&lt;br /&gt;
    doDelete;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
select -cl;&lt;br /&gt;
&lt;br /&gt;
select -r $locatorPlacement;&lt;br /&gt;
doDelete;&lt;br /&gt;
select -cl;&lt;br /&gt;
////////////////&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Maya Mel - Primary visibility off===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    print($object+&amp;quot;\n&amp;quot;);&lt;br /&gt;
    setAttr ($object + &amp;quot;.primaryVisibility&amp;quot;) 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== V-ray - Create and connect VRayMtls, files and place2dTextures for a set of objects ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Replace assetBaked_Set by the name of your set&lt;br /&gt;
&lt;br /&gt;
select -cl  ;&lt;br /&gt;
select -r assetBaked_Set ;&lt;br /&gt;
string $selection[] = `ls -sl`;&lt;br /&gt;
string $polyGons[] = `filterExpand -sm 12 $selection`;&lt;br /&gt;
select $polyGons;&lt;br /&gt;
for($object in `ls -sl`){&lt;br /&gt;
&lt;br /&gt;
    string $shaderName = ($object + &amp;quot;_BAKE_&amp;quot; + `toupper $lightRigName` + &amp;quot;_SHD&amp;quot;);&lt;br /&gt;
    string $shadingGroupName = ($object + &amp;quot;_BAKE_&amp;quot; + `toupper $lightRigName` + &amp;quot;_SG&amp;quot;);&lt;br /&gt;
    shadingNode -asShader VRayMtl -n $shaderName;&lt;br /&gt;
    sets -renderable true -noSurfaceShader true -empty -name $shadingGroupName;&lt;br /&gt;
    &lt;br /&gt;
    string $shaderNameC = substituteAllString($shaderName, &amp;quot;|&amp;quot;, &amp;quot;&amp;quot;);&lt;br /&gt;
    string $shadingGroupNameC = substituteAllString($shadingGroupName, &amp;quot;|&amp;quot;, &amp;quot;&amp;quot;);&lt;br /&gt;
    connectAttr -f ($shaderNameC + &amp;quot;.outColor&amp;quot;) ($shadingGroupNameC + &amp;quot;.surfaceShader&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
    setAttr ($shaderNameC + &amp;quot;.color&amp;quot;) -type double3 0 0 0 ;&lt;br /&gt;
&lt;br /&gt;
    string $fileName = (&amp;quot;file_&amp;quot; + $object);&lt;br /&gt;
    string $place2dTextureName = (&amp;quot;place2dTexture_&amp;quot; + $object);&lt;br /&gt;
    shadingNode -asTexture -isColorManaged file -n $fileName;&lt;br /&gt;
    shadingNode -asUtility place2dTexture -n $place2dTextureName;&lt;br /&gt;
&lt;br /&gt;
    string $objectC = substituteAllString($object, &amp;quot;|&amp;quot;, &amp;quot;&amp;quot;);&lt;br /&gt;
    string $fileNameC = (&amp;quot;file_&amp;quot; + $objectC);&lt;br /&gt;
    string $place2dTextureNameC = (&amp;quot;place2dTexture_&amp;quot; + $objectC);&lt;br /&gt;
    &lt;br /&gt;
    setAttr ($fileNameC + &amp;quot;.filterType&amp;quot;) 0;&lt;br /&gt;
    setAttr ($fileNameC + &amp;quot;.uvTilingMode&amp;quot;) 3;&lt;br /&gt;
    setAttr ($fileNameC + &amp;quot;.cs&amp;quot;) -type &amp;quot;string&amp;quot; &amp;quot;ACES - ACEScg&amp;quot;;&lt;br /&gt;
    &lt;br /&gt;
    connectAttr -f ($place2dTextureNameC + &amp;quot;.coverage&amp;quot;) ($fileNameC + &amp;quot;.coverage&amp;quot;);&lt;br /&gt;
    connectAttr -f ($place2dTextureNameC + &amp;quot;.translateFrame&amp;quot;) ($fileNameC + &amp;quot;.translateFrame&amp;quot;);&lt;br /&gt;
    connectAttr -f ($place2dTextureNameC + &amp;quot;.rotateFrame&amp;quot;) ($fileNameC + &amp;quot;.rotateFrame&amp;quot;);&lt;br /&gt;
    connectAttr -f ($place2dTextureNameC + &amp;quot;.mirrorU&amp;quot;) ($fileNameC + &amp;quot;.mirrorU&amp;quot;);&lt;br /&gt;
    connectAttr -f ($place2dTextureNameC + &amp;quot;.mirrorV&amp;quot;) ($fileNameC + &amp;quot;.mirrorV&amp;quot;);&lt;br /&gt;
    connectAttr -f ($place2dTextureNameC + &amp;quot;.stagger&amp;quot;) ($fileNameC + &amp;quot;.stagger&amp;quot;);&lt;br /&gt;
    connectAttr -f ($place2dTextureNameC + &amp;quot;.wrapU&amp;quot;) ($fileNameC + &amp;quot;.wrapU&amp;quot;);&lt;br /&gt;
    connectAttr -f ($place2dTextureNameC + &amp;quot;.wrapV&amp;quot;) ($fileNameC + &amp;quot;.wrapV&amp;quot;);&lt;br /&gt;
    connectAttr -f ($place2dTextureNameC + &amp;quot;.repeatUV&amp;quot;) ($fileNameC + &amp;quot;.repeatUV&amp;quot;);&lt;br /&gt;
    connectAttr -f ($place2dTextureNameC + &amp;quot;.offset&amp;quot;) ($fileNameC + &amp;quot;.offset&amp;quot;);&lt;br /&gt;
    connectAttr -f ($place2dTextureNameC + &amp;quot;.rotateUV&amp;quot;) ($fileNameC + &amp;quot;.rotateUV&amp;quot;);&lt;br /&gt;
    connectAttr -f ($place2dTextureNameC + &amp;quot;.noiseUV&amp;quot;) ($fileNameC + &amp;quot;.noiseUV&amp;quot;);&lt;br /&gt;
    connectAttr -f ($place2dTextureNameC + &amp;quot;.vertexUvOne&amp;quot;) ($fileNameC + &amp;quot;.vertexUvOne&amp;quot;);&lt;br /&gt;
    connectAttr -f ($place2dTextureNameC + &amp;quot;.vertexUvTwo&amp;quot;) ($fileNameC + &amp;quot;.vertexUvTwo&amp;quot;);&lt;br /&gt;
    connectAttr -f ($place2dTextureNameC + &amp;quot;.vertexUvThree&amp;quot;) ($fileNameC + &amp;quot;.vertexUvThree&amp;quot;);&lt;br /&gt;
    connectAttr -f ($place2dTextureNameC + &amp;quot;.vertexCameraOne&amp;quot;) ($fileNameC + &amp;quot;.vertexCameraOne&amp;quot;);&lt;br /&gt;
    connectAttr ($place2dTextureNameC + &amp;quot;.outUV&amp;quot;) ($fileNameC + &amp;quot;.uv&amp;quot;);&lt;br /&gt;
    connectAttr ($place2dTextureNameC + &amp;quot;.outUvFilterSize&amp;quot;) ($fileNameC + &amp;quot;.uvFilterSize&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
    connectAttr -f ($fileNameC + &amp;quot;.outColor&amp;quot;) ($shaderNameC + &amp;quot;.illumColor&amp;quot;);&lt;br /&gt;
    &lt;br /&gt;
    sets -e -forceElement $shadingGroupNameC $object;&lt;br /&gt;
}&lt;br /&gt;
select -cl  ;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Maya Mel - Shift Translate for each objects of a group ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select top group first&lt;br /&gt;
&lt;br /&gt;
string $selection[] = `ls -sl`;&lt;br /&gt;
string $polyGons[] = `filterExpand -sm 12 $selection`;&lt;br /&gt;
&lt;br /&gt;
for ($i = 0; $i &amp;lt; size($polyGons); $i ++)&lt;br /&gt;
{&lt;br /&gt;
    setAttr ($polyGons[$i] + &amp;quot;.translateX&amp;quot;) ($i*2);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
select -r $selection;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Walter</name></author>
		
	</entry>
	<entry>
		<id>http://antoinevienne.fr/wiki/index.php?title=Maya_Mel&amp;diff=260</id>
		<title>Maya Mel</title>
		<link rel="alternate" type="text/html" href="http://antoinevienne.fr/wiki/index.php?title=Maya_Mel&amp;diff=260"/>
		<updated>2023-09-29T13:04:30Z</updated>

		<summary type="html">&lt;p&gt;Walter: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Maya Mels Scripts=&lt;br /&gt;
=== Octane Render Baking group id - Assign id to multiple objects shapes ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// 0 is for Red, 2 for Green, 4 for Blue&lt;br /&gt;
// 3, 5 and 6 for Cyan, Magenta and Yellow&lt;br /&gt;
// Replace the number &amp;quot;0&amp;quot; by the number of your choice&lt;br /&gt;
// Baking group id is also avalaible in Attribute Spreadsheet Editor&lt;br /&gt;
&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    print($object+&amp;quot;\n&amp;quot;);&lt;br /&gt;
    setAttr ($object + &amp;quot;.octBakGrId&amp;quot;) (0);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Maxwell Render - Particles sequence - Force .abc file ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
//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&lt;br /&gt;
&lt;br /&gt;
global int $current_frame;&lt;br /&gt;
$current_frame = `currentTime -query`;&lt;br /&gt;
print $current_frame;&lt;br /&gt;
{&lt;br /&gt;
setAttr -type &amp;quot;string&amp;quot; maxwellRFRKParticles1.file (&amp;quot;/YOUR_PATH/YOUR_FILE&amp;quot; + $current_frame + &amp;quot;.abc&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Maxwell Render - Specify object ID color ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Specify object ID color&lt;br /&gt;
&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    print($object+&amp;quot;\n&amp;quot;);&lt;br /&gt;
    setAttr ($object + &amp;quot;.mxSpecifyObjIdColor&amp;quot;) (1);&lt;br /&gt;
    setAttr ($object + &amp;quot;.mxObjIdColor&amp;quot;) -type &amp;quot;double3&amp;quot; 1 0 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Redshift - Add blend attribute and set random value for objects selection ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Useful for blending between colors with RedshiftUserDataScalar&lt;br /&gt;
&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    print($object);&lt;br /&gt;
    addAttr -ln &amp;quot;blend&amp;quot; -at double  -min 0 -max 1 -dv 0 $object;&lt;br /&gt;
    setAttr ($object + &amp;quot;.blend&amp;quot;) (rand(1));&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Redshift - Set Primary visibility off for selection (layer override) ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Go in right render layer and select objects&lt;br /&gt;
&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    print($object+&amp;quot;\n&amp;quot;);&lt;br /&gt;
    setAttr ($object + &amp;quot;.rsEnableVisibilityOverrides&amp;quot;) (1);&lt;br /&gt;
    editRenderLayerAdjustment ($object + &amp;quot;.rsPrimaryRayVisible&amp;quot;);&lt;br /&gt;
    setAttr ($object + &amp;quot;.rsPrimaryRayVisible&amp;quot;) (0);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Convert Motion trail to curve ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select the motion trail first&lt;br /&gt;
&lt;br /&gt;
{&lt;br /&gt;
$selected=`ls -dag -et snapshotShape`;&lt;br /&gt;
for ($obj in $selected){&lt;br /&gt;
$pts=(getAttr($obj+&amp;quot;.pts&amp;quot;));&lt;br /&gt;
$size=size($pts);&lt;br /&gt;
$curve=`curve -d 1 -p $pts[0] $pts[1] $pts[2] -p $pts[4] $pts[5] $pts[6] -k 0 -k 1`;&lt;br /&gt;
for($i=8;$i&amp;lt;$size;$i+=4)&lt;br /&gt;
curve -os -a -p $pts[$i] $pts[$i+1] $pts[$i+2] $curve ;&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Quantize keyframes for selection ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Snap keys on frames for objects selection&lt;br /&gt;
&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    print($object+&amp;quot;\n&amp;quot;);&lt;br /&gt;
    snapKey $object;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Loop image sequence for texture ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// On File texture, check Image sequence, and edit expression&lt;br /&gt;
&lt;br /&gt;
file1.frameExtension=((frame%8)+1);&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Symmetrize - Duplicate &amp;amp; merge object ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select half object first&lt;br /&gt;
&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    print($object+&amp;quot;\n&amp;quot;);&lt;br /&gt;
    xform -piv 0 0 0 $object;&lt;br /&gt;
    duplicate -rr;&lt;br /&gt;
    setAttr ($object + &amp;quot;.scaleX&amp;quot;) (-1);&lt;br /&gt;
    select -add $object ;&lt;br /&gt;
    polyPerformAction polyUnite o 0;&lt;br /&gt;
    polyMergeVertex  -d 0.0001 -am 1 -ch 1;&lt;br /&gt;
    DeleteHistory;&lt;br /&gt;
    rename ($object);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Mirror object ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select object first&lt;br /&gt;
&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    print($object+&amp;quot;\n&amp;quot;);&lt;br /&gt;
    DeleteHistory;&lt;br /&gt;
    makeIdentity -apply true -t 1 -r 1 -s 1 -n 0 -pn 1;&lt;br /&gt;
    xform -piv 0 0 0 $object;&lt;br /&gt;
    duplicate -rr;&lt;br /&gt;
    setAttr ($object + &amp;quot;.scaleX&amp;quot;) (-1);&lt;br /&gt;
    DeleteHistory;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Group each object and rename ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select objects first&lt;br /&gt;
&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    string $name = ($object);&lt;br /&gt;
    select $object ;&lt;br /&gt;
    doGroup 0 1 1;&lt;br /&gt;
    rename ($name + &amp;quot;_GRP&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Change path in an Attribute ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Here the Attribute is &amp;quot;.filePrefix&amp;quot; - Select objects first&lt;br /&gt;
&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    string $path = getAttr ($object+&amp;quot;.filePrefix&amp;quot;);&lt;br /&gt;
    $path = `substitute &amp;quot;//OLD/PATH/&amp;quot; $path &amp;quot;//NEW/PATH/&amp;quot;`;&lt;br /&gt;
    setAttr -type &amp;quot;string&amp;quot; ($object+&amp;quot;.filePrefix&amp;quot;) ($path);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Change opacity mode on V-Ray shaders ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select shaders first&lt;br /&gt;
&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    if (attributeExists(&amp;quot;omode&amp;quot;,$object)) { //check if attribute exists&lt;br /&gt;
        CBunlockAttr ($object+&amp;quot;.omode&amp;quot;); //unlock opacity mode&lt;br /&gt;
    }&lt;br /&gt;
    if (attributeExists(&amp;quot;opacityMode&amp;quot;,$object)) {&lt;br /&gt;
        setAttr ($object+&amp;quot;.opacityMode&amp;quot;) 1; //set opacity mode in Clip - 0 pour Normal&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// Alternative&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    if (attributeExists(&amp;quot;opacityMode&amp;quot;,$object)) {&lt;br /&gt;
        setAttr ($object+&amp;quot;.opacityMode&amp;quot;) -l false; //unlock attribute if locked&lt;br /&gt;
    }&lt;br /&gt;
    if (attributeExists(&amp;quot;opacityMode&amp;quot;,$object)) {&lt;br /&gt;
        setAttr ($object+&amp;quot;.opacityMode&amp;quot;) 2; //set opacity mode in Clip - 0 pour Normal&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Change color space on selected fileTextures ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Useful to automatically convert Quixel Megascans by example from sRGB/Raw to ACES color spaces&lt;br /&gt;
&lt;br /&gt;
string $object_selection[] = (`ls -sl`);&lt;br /&gt;
for ($object in $object_selection) {&lt;br /&gt;
    if(`getAttr ($object+&amp;quot;.cs&amp;quot;)` == &amp;quot;sRGB&amp;quot;){&lt;br /&gt;
        setAttr ($object + &amp;quot;.cs&amp;quot;) -type &amp;quot;string&amp;quot; &amp;quot;Utility - sRGB - Texture&amp;quot;;&lt;br /&gt;
    }&lt;br /&gt;
    if(`getAttr ($object+&amp;quot;.cs&amp;quot;)` == &amp;quot;Raw&amp;quot;){&lt;br /&gt;
        setAttr ($object + &amp;quot;.cs&amp;quot;) -type &amp;quot;string&amp;quot; &amp;quot;Utility - Raw&amp;quot;;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Redshift - custom Tesselation on selected objects ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select objects first&lt;br /&gt;
&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    print($object+&amp;quot;\n&amp;quot;);&lt;br /&gt;
    setAttr ($object + &amp;quot;.rsMinTessellationLength&amp;quot;) (0.1);&lt;br /&gt;
    setAttr ($object + &amp;quot;.rsMaxTessellationSubdivs&amp;quot;) (2);&lt;br /&gt;
    setAttr ($object + &amp;quot;.rsOutOfFrustumTessellationFactor&amp;quot;) (4);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Change color on selected shaders ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select shaders first&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    print($object+&amp;quot;\n&amp;quot;);&lt;br /&gt;
    setAttr ($object + &amp;quot;.color&amp;quot;) -l false;&lt;br /&gt;
    setAttr ($object + &amp;quot;.color&amp;quot;) -type &amp;quot;double3&amp;quot; (0.18) (0.18) (0.18);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Change Filter Type on selected Files Textures ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select files textures first - 0 means Off&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    print($object+&amp;quot;\n&amp;quot;);&lt;br /&gt;
    setAttr ($object + &amp;quot;.filterType&amp;quot;) 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Clean Render Layers ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// In MEL&lt;br /&gt;
fixRenderLayerOutAdjustmentErrors;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Change Filter Type on selected Files Textures ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select files textures first - 0 means Off&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    print($object+&amp;quot;\n&amp;quot;);&lt;br /&gt;
    setAttr ($object + &amp;quot;.filterType&amp;quot;) 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Select by name ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select objects with &amp;quot;toto&amp;quot;&lt;br /&gt;
select -r &amp;quot;toto*&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Display color on shapes ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select objects&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    print($object+&amp;quot;\n&amp;quot;);&lt;br /&gt;
    setAttr ($object + &amp;quot;.displayColors&amp;quot;) 1;&lt;br /&gt;
    setDisplayColorChannelAttribute ($object + &amp;quot;.displayColorChannel&amp;quot;);&lt;br /&gt;
    polyColorPerVertex -r 1 -g 0 -b 0 -a 1 -cdo;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Geometry Constraint on multiple selection ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select objects to constrain&lt;br /&gt;
string $objectBase = &amp;quot;surfaceName&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    select -cl;&lt;br /&gt;
    select $objectBase;&lt;br /&gt;
    select -add $object;&lt;br /&gt;
    geometryConstraint -weight 1;&lt;br /&gt;
    select -r &amp;quot;*Constraint*&amp;quot;;&lt;br /&gt;
    doDelete;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
=== Speed up smokes rendering with V-Ray ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select smokes first&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    print($object+&amp;quot;\n&amp;quot;);&lt;br /&gt;
    setAttr ($object + &amp;quot;.rendStep&amp;quot;) 160;&lt;br /&gt;
    setAttr ($object + &amp;quot;.shadowStep&amp;quot;) 400;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Set bump multiplier on multiple V-Ray shaders ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select shaders&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    if (attributeExists(&amp;quot;bumpMult&amp;quot;,$object)) {&lt;br /&gt;
        setAttr ($object + &amp;quot;.bumpMult&amp;quot;) -1; //set bump multiplier at -1&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== STOP/START viewport ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// As seen on https://www.toadstorm.com/. - Put it in your shelf&lt;br /&gt;
paneLayout -e -manage false $gMainPane&lt;br /&gt;
&lt;br /&gt;
paneLayout -e -manage true $gMainPane&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Select curves by name ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select objects first - Replace &amp;quot;toto&amp;quot; by what you are looking for&lt;br /&gt;
&lt;br /&gt;
select `ls -type &amp;quot;nurbsCurve&amp;quot; &amp;quot;*toto*&amp;quot;`;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Noise expression ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Replace &amp;quot;pCube1&amp;quot;&lt;br /&gt;
&lt;br /&gt;
pCube1.translateX=sin(time*20)*0.01*noise(time*10);&lt;br /&gt;
pCube1.translateY=sin(time*4)*0.01*noise(time*10);&lt;br /&gt;
pCube1.translateZ=sin(time*12)*0.01*noise(time*10);&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== V-ray - Make curves renderables ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Replace VRayLightMtl1 at the end by your material&lt;br /&gt;
&lt;br /&gt;
$selected=`ls -dag -et curveShape`;&lt;br /&gt;
for ($object in $selected){&lt;br /&gt;
    // Add V-ray Extra attributes&lt;br /&gt;
    vray addAttributesFromGroup $object vray_nurbscurve_renderable 1;&lt;br /&gt;
    vrayAddAttr $object vraySeparator_vray_nurbscurve_renderable;&lt;br /&gt;
    vrayAddAttr $object vrayNurbsCurveRenderable;&lt;br /&gt;
    vrayAddAttr $object vrayNurbsCurveMaterial;&lt;br /&gt;
    vrayAddAttr $object vrayNurbsCurveTesselation;&lt;br /&gt;
    vrayAddAttr $object vrayNurbsCurveStartWidth;&lt;br /&gt;
    vrayAddAttr $object vrayNurbsCurveLockEndWidth;&lt;br /&gt;
    vrayAddAttr $object vrayNurbsCurveEndWidth;&lt;br /&gt;
    setUITemplate -pst attributeEditorTemplate;&lt;br /&gt;
// Activate renderable&lt;br /&gt;
setAttr ($object + &amp;quot;.vrayNurbsCurveRenderable&amp;quot;) 1;&lt;br /&gt;
// Replace VRayLightMtl1 by your material&lt;br /&gt;
connectAttr -force VRayLightMtl1.outColor ($object + &amp;quot;.vrayNurbsCurveMaterial&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Get object type ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Replace toto with the object whose type you want to know&lt;br /&gt;
&lt;br /&gt;
objectType toto;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Render layer override on specific object type ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Replace &amp;quot;Node&amp;quot; by the object type on which you want to act&lt;br /&gt;
&lt;br /&gt;
$selected=`ls -type &amp;quot;Node&amp;quot;`;&lt;br /&gt;
for ($object in $selected){&lt;br /&gt;
    // Create layer override on Primary Visibility attribute on current renderLayer&lt;br /&gt;
    editRenderLayerAdjustment ($object + &amp;quot;.primaryVisibility&amp;quot;);&lt;br /&gt;
    // Set Primary Visibility - 0 or 1&lt;br /&gt;
    setAttr ($object + &amp;quot;.primaryVisibility&amp;quot;) 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== V-ray - Make lights invisible ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$selected=`ls -type &amp;quot;VRayLightRectShape&amp;quot;`;&lt;br /&gt;
for ($object in $selected){&lt;br /&gt;
    setAttr ($object + &amp;quot;.invisible&amp;quot;) 1;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
$selected=`ls -type &amp;quot;VRayLightSphereShape&amp;quot;`;&lt;br /&gt;
for ($object in $selected){&lt;br /&gt;
    setAttr ($object + &amp;quot;.invisible&amp;quot;) 1;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
$selected=`ls -type &amp;quot;VRayLightDomeShape&amp;quot;`;&lt;br /&gt;
for ($object in $selected){&lt;br /&gt;
    setAttr ($object + &amp;quot;.invisible&amp;quot;) 1;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== V-ray - Select Rect Light ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
select `ls -type &amp;quot;VRayLightRectShape&amp;quot;`;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== V-ray - Rect Lights - Directional Preview - Always for all ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$selected=`ls -type &amp;quot;VRayLightRectShape&amp;quot;`;&lt;br /&gt;
for ($object in $selected){&lt;br /&gt;
    setAttr ($object + &amp;quot;.directionalPreview&amp;quot;) 1;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Randomize rotation on selected objects ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// As posted on CGTalk by NaughtyNathan&lt;br /&gt;
// &amp;quot;just set the vector values to the maximum random x,y,z rotations you want to apply to the selected transforms.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
vector $rndRot = &amp;lt;&amp;lt; 0,0,90 &amp;gt;&amp;gt;;	// x,y,z rotations&lt;br /&gt;
for ($object in `ls -sl -tr`){&lt;br /&gt;
    rotate `rand ($rndRot.x)` `rand ($rndRot.y)` `rand ($rndRot.z)` $object;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Quit Maya ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Brute force method&lt;br /&gt;
&lt;br /&gt;
$i = `getpid`; //application ID&lt;br /&gt;
    system(&amp;quot;taskkill /PID &amp;quot;  + $i +&amp;quot; /f&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
// In a gentle way&lt;br /&gt;
&lt;br /&gt;
evalDeferred(&amp;quot;quit -f&amp;quot;);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== V-ray - Import list of Alembics through Proxys Import ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// List of Alembics files - Replace by the name of your Alembics&lt;br /&gt;
string $alembicsParts[] = {&amp;quot;part1&amp;quot;,&amp;quot;part2&amp;quot;,&amp;quot;part3&amp;quot;};&lt;br /&gt;
&lt;br /&gt;
// Replace the PATH of your files - Scale by 100 for Houdini Alembics - &amp;lt;frame04&amp;gt; for sequences&lt;br /&gt;
for ($alembicsPart in $alembicsParts){&lt;br /&gt;
    vrayCreateProxy -node $alembicsPart -existing -dir (&amp;quot;C:/YOURPATH/&amp;quot;+$alembicsPart+&amp;quot;.&amp;lt;frame04&amp;gt;.abc&amp;quot;) -createProxyNode;&lt;br /&gt;
    setAttr ($alembicsPart+&amp;quot;_vraymesh.animType&amp;quot;) 1;&lt;br /&gt;
    setAttr ($alembicsPart+&amp;quot;.scaleZ&amp;quot;) 100;&lt;br /&gt;
    setAttr ($alembicsPart+&amp;quot;.scaleX&amp;quot;) 100;&lt;br /&gt;
    setAttr ($alembicsPart+&amp;quot;.scaleY&amp;quot;) 100;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== V-ray - Change path to VRayMesh for selected proxies ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Change path with your own .vrmesh&lt;br /&gt;
$selected=`ls -type &amp;quot;VRayMesh&amp;quot;`;&lt;br /&gt;
for ($object in $selected){&lt;br /&gt;
    setAttr -type &amp;quot;string&amp;quot; ($object + &amp;quot;.fileName2&amp;quot;) &amp;quot;//DISK/PATH/YOUR_VRMESH.vrmesh&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// If you want to change Geometry type - 4 for GPU mesh - add following in the loop&lt;br /&gt;
//    setAttr ($object + &amp;quot;.geomType&amp;quot;) 4;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Delete image planes ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Delete image plane if exists.&lt;br /&gt;
$selected=`ls -type &amp;quot;imagePlane&amp;quot;`;&lt;br /&gt;
select $selected;&lt;br /&gt;
for ($object in $selected){&lt;br /&gt;
    doDelete;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Merge alembic from set ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select objects in a set called EXPORT_SET&lt;br /&gt;
select -r EXPORT_SET ;&lt;br /&gt;
timeControl -edit -forceRedraw $gPlayBackSlider;&lt;br /&gt;
&lt;br /&gt;
// Create list of objects from EXPORT_SET&lt;br /&gt;
string $assetParts[] = `ls -sl`;&lt;br /&gt;
$assetPartsList = stringArrayToString($assetParts,&amp;quot; &amp;quot;);&lt;br /&gt;
&lt;br /&gt;
// Merge alembic with these objects&lt;br /&gt;
AbcImport -mode import -connect $assetPartsList &amp;quot;//DISK/PATH/alembic.abc&amp;quot;;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Create Texture reference ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// CREATE TEXTURE REFERENCE ON EXPORT SET&lt;br /&gt;
&lt;br /&gt;
select -r YOUR_GROUP ;&lt;br /&gt;
CreateTextureReferenceObject;&lt;br /&gt;
select -cl  ;&lt;br /&gt;
&lt;br /&gt;
// REMOVE REFERENCE OBJECTS FROM EXPORT SET&lt;br /&gt;
select -r YOUR_GROUP_reference ;&lt;br /&gt;
string $selection[] = `ls -sl`;&lt;br /&gt;
string $polyGons[] = `filterExpand -sm 12 $selection`;&lt;br /&gt;
select -r $polyGons;&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    sets -rm EXPORT_SET $object;&lt;br /&gt;
}&lt;br /&gt;
select -cl  ;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Replace animated objects with V-Ray proxies ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// First select animated objects to replace&lt;br /&gt;
// For each object create a proxy then constrain then bake simulation then delete constraint&lt;br /&gt;
&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
	vrayCreateProxy -node assetName -existing -dir (&amp;quot;//DISK/PATH/your_asset.vrmesh&amp;quot;) -createProxyNode;&lt;br /&gt;
	select -r $object ;&lt;br /&gt;
	select -add assetName ;&lt;br /&gt;
	doCreateParentConstraintArgList 1 { &amp;quot;0&amp;quot;,&amp;quot;0&amp;quot;,&amp;quot;0&amp;quot;,&amp;quot;0&amp;quot;,&amp;quot;0&amp;quot;,&amp;quot;0&amp;quot;,&amp;quot;0&amp;quot;,&amp;quot;0&amp;quot;,&amp;quot;1&amp;quot;,&amp;quot;&amp;quot;,&amp;quot;1&amp;quot; };&lt;br /&gt;
	parentConstraint -weight 1;&lt;br /&gt;
	bakeResults -simulation true -t &amp;quot;1000:1100&amp;quot; -sampleBy 1 -oversamplingRate 1 -disableImplicitControl true -preserveOutsideKeys true -sparseAnimCurveBake false -removeBakedAttributeFromLayer false -removeBakedAnimFromLayer false -bakeOnOverrideLayer false -minimizeRotation true -controlPoints false -shape true {&amp;quot;assetName&amp;quot;};&lt;br /&gt;
	select `ls -type &amp;quot;constraint&amp;quot;`;&lt;br /&gt;
	select -add $object ;&lt;br /&gt;
	doDelete;&lt;br /&gt;
	select -cl  ;&lt;br /&gt;
	rename &amp;quot;assetName&amp;quot; $object;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Select all meshes in a group ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// From cmadsenAniden on forums.autodesk.com&lt;br /&gt;
// Replace group1 by the name of your own group&lt;br /&gt;
&lt;br /&gt;
select -r group1 ;&lt;br /&gt;
string $selection[] = `ls -sl`;&lt;br /&gt;
string $polyGons[] = `filterExpand -sm 12 $selection`;&lt;br /&gt;
select -r $polyGons;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Select shot camera ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// CREATE VARIABLE FOR SHOT CAMERA AND SELECT IT&lt;br /&gt;
&lt;br /&gt;
select `ls -type &amp;quot;camera&amp;quot;`;&lt;br /&gt;
select -d sideShape frontShape topShape perspShape;&lt;br /&gt;
$camerashot = `ls -sl`;&lt;br /&gt;
string $shotcamera = $camerashot[0];&lt;br /&gt;
print $shotcamera;&lt;br /&gt;
select $shotcamera;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Get list of frames with keys on all transform objects ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$selected=`ls -dag -et transform`;&lt;br /&gt;
&lt;br /&gt;
float $arrathy[] = `keyframe -query $selected`;&lt;br /&gt;
&lt;br /&gt;
float $sorted[] = python(&amp;quot;import pymel.core as pm; list(set((pm.getMelGlobal(\&amp;quot;float[]\&amp;quot;, \&amp;quot;$arrathy\&amp;quot;))))&amp;quot;);&lt;br /&gt;
print $sorted;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== MULTI SNAP ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Replace a list of objects by another with bake of animation. Replace FSTART and FEND with your own padding.&lt;br /&gt;
&lt;br /&gt;
///////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
///////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
/*&lt;br /&gt;
Type the command MS() in MEL form to open UI.&lt;br /&gt;
*/&lt;br /&gt;
///////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
///////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
source &amp;quot;generateChannelMenu.mel&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
global proc MS ()&lt;br /&gt;
{&lt;br /&gt;
     global string $sourceObjects;&lt;br /&gt;
     global string $destinationObjects;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    // If the window exists already, delete it.&lt;br /&gt;
    if (`window -exists multiSnapWindow`)&lt;br /&gt;
    {&lt;br /&gt;
        deleteUI multiSnapWindow;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    // Build the window.&lt;br /&gt;
    global string $man_window;&lt;br /&gt;
    string $man_window = `window -title &amp;quot; MULTI SNAP&amp;quot; -sizeable 0 -w 300 multiSnapWindow`;&lt;br /&gt;
    frameLayout -label &amp;quot;Snap source objects on destination objects.&amp;quot;;&lt;br /&gt;
    rowLayout -width 540 -nc 2 -cw4 10 20 20 100;&lt;br /&gt;
    // Source objects section&lt;br /&gt;
    frameLayout -label &amp;quot;Source objects&amp;quot;;&lt;br /&gt;
    $sourceObjects = `textScrollList -width 600 -height 300`;&lt;br /&gt;
    rowLayout -width 240 -nc 2 -cw2 120 120;&lt;br /&gt;
    button -label &amp;quot;Add selected&amp;quot; -command &amp;quot;MS_addObjects ();&amp;quot; -width 120;&lt;br /&gt;
    button -label &amp;quot;Remove selected&amp;quot; -command &amp;quot;MS_removeObjects ();&amp;quot; -width 120;&lt;br /&gt;
    setParent ..;&lt;br /&gt;
    rowLayout -width 240 -nc 2 -cw2 120 120;&lt;br /&gt;
    button -label &amp;quot;Remove All&amp;quot; -command &amp;quot;MS_clearObjects ();&amp;quot; -width 240;&lt;br /&gt;
    setParent ..;&lt;br /&gt;
    setParent ..;&lt;br /&gt;
    rowLayout -nc 3;&lt;br /&gt;
    button -label &amp;quot;Create&amp;quot; -command &amp;quot;VRAYCONNECDO() &amp;quot; -width 140 -align center;&lt;br /&gt;
    button -label &amp;quot;Close&amp;quot; -command &amp;quot;DAC_CloseUI() &amp;quot; -width 140 -align center;&lt;br /&gt;
    setParent ..;&lt;br /&gt;
    setParent ..;&lt;br /&gt;
    // Destination objects section&lt;br /&gt;
    frameLayout -label &amp;quot;Destination objects&amp;quot;;&lt;br /&gt;
    $destinationObjects = `textScrollList -width 600 -height 300`;&lt;br /&gt;
    rowLayout -width 240 -nc 2 -cw2 120 120;&lt;br /&gt;
    button -label &amp;quot;Add selected&amp;quot; -command &amp;quot;MS_addMM ();&amp;quot; -width 120;&lt;br /&gt;
    button -label &amp;quot;Remove selected&amp;quot; -command &amp;quot;MS_removeMM ();&amp;quot; -width 120;&lt;br /&gt;
    setParent ..;&lt;br /&gt;
    setParent ..;&lt;br /&gt;
    rowLayout -nc 3;&lt;br /&gt;
    button -label &amp;quot;SNAP IT&amp;quot; -command &amp;quot;VRAYCONNECDO() &amp;quot; -width 140 -align center;&lt;br /&gt;
    button -label &amp;quot;Close&amp;quot; -command &amp;quot;DAC_CloseUI() &amp;quot; -width 140 -align center;&lt;br /&gt;
    setParent ..;&lt;br /&gt;
    setParent ..;&lt;br /&gt;
&lt;br /&gt;
// Show the window.&lt;br /&gt;
showWindow multiSnapWindow;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
global proc string[] getShaders(string $from)&lt;br /&gt;
{&lt;br /&gt;
// get the shapes from the input&lt;br /&gt;
string $shapes[] = ls(&amp;quot;-o&amp;quot;, &amp;quot;-dag&amp;quot;, &amp;quot;-s&amp;quot;, $from);&lt;br /&gt;
// give me the connected &amp;quot;shadingEngines&amp;quot;&lt;br /&gt;
string $shadingEngines[] = listConnections(&amp;quot;-type&amp;quot;,&amp;quot;shadingEngine&amp;quot;, $shapes);&lt;br /&gt;
// list the connected materials (shaders) from that&lt;br /&gt;
string $materials[] = ls(&amp;quot;-mat&amp;quot;, listConnections($shadingEngines));&lt;br /&gt;
// remove duplicate occurrences.&lt;br /&gt;
return (stringArrayRemoveDuplicates($materials));&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
//Add selected objects to list.&lt;br /&gt;
global proc MS_addObjects ()&lt;br /&gt;
{&lt;br /&gt;
      global string $sourceObjects;&lt;br /&gt;
      string $selectedshapes[] = `ls -sl -l`;&lt;br /&gt;
      //print $selectedshapes;&lt;br /&gt;
      int $count = 0;&lt;br /&gt;
&lt;br /&gt;
if ($selectedshapes[0] != &amp;quot;&amp;quot;)&lt;br /&gt;
{&lt;br /&gt;
   for ($i in $selectedshapes)&lt;br /&gt;
   {&lt;br /&gt;
     $count ++;&lt;br /&gt;
     textScrollList -edit -append $i $sourceObjects;&lt;br /&gt;
   }&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
//Add selected objects to list.&lt;br /&gt;
global proc MS_addMM ()&lt;br /&gt;
{&lt;br /&gt;
      global string $destinationObjects;&lt;br /&gt;
      string $selectedshapes[] = `ls -sl -l`;&lt;br /&gt;
      //print $selectedshapes;&lt;br /&gt;
      int $count = 0;&lt;br /&gt;
&lt;br /&gt;
if ($selectedshapes[0] != &amp;quot;&amp;quot;)&lt;br /&gt;
{&lt;br /&gt;
   for ($i in $selectedshapes)&lt;br /&gt;
   {&lt;br /&gt;
     $count ++;&lt;br /&gt;
     textScrollList -edit -append $i $destinationObjects;&lt;br /&gt;
   }&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// Clear objects from list.&lt;br /&gt;
global proc MS_clearObjects ()&lt;br /&gt;
{&lt;br /&gt;
    global string $sourceObjects;&lt;br /&gt;
textScrollList -e -ra $sourceObjects;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// Remove selected object from list.&lt;br /&gt;
global proc MS_removeObjects ()&lt;br /&gt;
{&lt;br /&gt;
   global string $sourceObjects;&lt;br /&gt;
&lt;br /&gt;
    int $index [] = `textScrollList -query -selectIndexedItem $sourceObjects`;&lt;br /&gt;
    if ($index [0] != 0)&lt;br /&gt;
    {&lt;br /&gt;
        textScrollList -edit -removeIndexedItem $index [0] $sourceObjects;&lt;br /&gt;
    }&lt;br /&gt;
   global string $sourceObjects;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
global proc VRAYCONNECDO()&lt;br /&gt;
{&lt;br /&gt;
    // UI Elements&lt;br /&gt;
global string $sourceObjects;&lt;br /&gt;
global string $destinationObjects;&lt;br /&gt;
// Define user selected objects&lt;br /&gt;
string $selected_objects[] = `textScrollList -query -allItems $sourceObjects`;&lt;br /&gt;
string $meshMaterial[] = `textScrollList -query -allItems $destinationObjects`;&lt;br /&gt;
int $i = 0;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
// SET PADDING&lt;br /&gt;
string $FSTART = &amp;quot;1&amp;quot;;&lt;br /&gt;
string $FEND = &amp;quot;100&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
print $FSTART;&lt;br /&gt;
print $FEND;&lt;br /&gt;
&lt;br /&gt;
string $PADDING = $FSTART + &amp;quot;:&amp;quot; + $FEND;&lt;br /&gt;
&lt;br /&gt;
//Progress bar&lt;br /&gt;
global string $gMainProgressBar;&lt;br /&gt;
&lt;br /&gt;
// Start the progress bar and adjust its max value for this operation.&lt;br /&gt;
    int $steps = size($selected_objects);&lt;br /&gt;
    progressBar -edit -beginProgress -isInterruptable true -status &amp;quot;Connecting shaders to mesh material ...&amp;quot; -maxValue $steps $gMainProgressBar;&lt;br /&gt;
 &lt;br /&gt;
for ($i = 0; $i &amp;lt; size($selected_objects); $i ++)&lt;br /&gt;
{&lt;br /&gt;
        parentConstraint -n parentConstraintMS $selected_objects[$i] $meshMaterial[$i];&lt;br /&gt;
        select -r $meshMaterial[$i] ;&lt;br /&gt;
        bakeResults -simulation true -t $PADDING -sampleBy 1 -oversamplingRate 1 -disableImplicitControl true -preserveOutsideKeys true -sparseAnimCurveBake false -removeBakedAttributeFromLayer false -removeBakedAnimFromLayer false -bakeOnOverrideLayer false -minimizeRotation true -controlPoints false -shape true {$meshMaterial[$i]};&lt;br /&gt;
        select -cl  ;&lt;br /&gt;
        select -r &amp;quot;*parentConstraintMS*&amp;quot;;&lt;br /&gt;
        doDelete;&lt;br /&gt;
// Update the progress bar.&lt;br /&gt;
progressBar -edit -step 1 $gMainProgressBar;&lt;br /&gt;
}&lt;br /&gt;
// End the progress.&lt;br /&gt;
progressBar -edit -endProgress $gMainProgressBar;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Delete hidden objects ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select objects&lt;br /&gt;
&lt;br /&gt;
for ( $object in `ls -sl` ) {&lt;br /&gt;
    $vis = getAttr ($object+&amp;quot;.visibility&amp;quot;);&lt;br /&gt;
    if ($vis == 0){&lt;br /&gt;
        select -r $object ;&lt;br /&gt;
        doDelete ;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== V-Ray - BAKE MATERIALS ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Made to work also with mayabatch.exe&lt;br /&gt;
&lt;br /&gt;
////////////////////////////////////////////&lt;br /&gt;
// BAKE VRAY CUSTOM VARIABLES&lt;br /&gt;
////////////////////////////////////////////&lt;br /&gt;
&lt;br /&gt;
// ASSET PATH&lt;br /&gt;
string $assetFileType = &amp;quot;mayaBinary&amp;quot;;&lt;br /&gt;
string $assetPath = &amp;quot;C:/YOUR_PATH/YOUR_SURFACING_ASSET.mb&amp;quot;;&lt;br /&gt;
string $assetName = &amp;quot;ASSET_NAME&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
// LIGHT RIG PATH&lt;br /&gt;
string $lightRigFileType = &amp;quot;mayaAscii&amp;quot;;&lt;br /&gt;
string $lightRigPath = &amp;quot;C:/YOUR_PATH/YOUR_LIGHT_RIG.mb&amp;quot;;&lt;br /&gt;
string $lightRigName = &amp;quot;DAY_LIGHTING&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
// BAKED TEXTURES PATH&lt;br /&gt;
string $bakedTexturesPath = (&amp;quot;C:/YOUR_PATH/BAKED_TEXTURES/&amp;quot; + $assetName + &amp;quot;_&amp;quot; + $lightRigName + &amp;quot;_Bake&amp;quot;);&lt;br /&gt;
print $bakedTexturesPath;&lt;br /&gt;
&lt;br /&gt;
// SET RESOLUTION FOR BAKED MAPS&lt;br /&gt;
$resWidth = 4096;&lt;br /&gt;
$resHeight = $resWidth;&lt;br /&gt;
&lt;br /&gt;
// COLOR SPACE FOR FILE TEXTURES&lt;br /&gt;
string $fileColorSpace = &amp;quot;ACES - ACEScg&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
////////////////////////////////////////////&lt;br /&gt;
// END OF CUSTOM VARIABLES&lt;br /&gt;
////////////////////////////////////////////&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
////////////////////////////////////////////&lt;br /&gt;
// RENDER SETTINGS&lt;br /&gt;
&lt;br /&gt;
// Set File Name Prefix&lt;br /&gt;
setAttr -type &amp;quot;string&amp;quot; vraySettings.fileNamePrefix &amp;quot;&amp;lt;Scene&amp;gt;/&amp;lt;Layer&amp;gt;/&amp;lt;Camera&amp;gt;_&amp;lt;Layer&amp;gt;_&amp;lt;Scene&amp;gt;&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
// Set resolution&lt;br /&gt;
$resWidthHalf = $resWidth/2;&lt;br /&gt;
$resHeightHalf = $resHeight/2;&lt;br /&gt;
setAttr &amp;quot;vraySettings.width&amp;quot; $resWidthHalf;&lt;br /&gt;
setAttr &amp;quot;vraySettings.height&amp;quot; $resHeightHalf;&lt;br /&gt;
&lt;br /&gt;
// Set Persp camera renderable&lt;br /&gt;
setAttr &amp;quot;perspShape.renderable&amp;quot; 1;&lt;br /&gt;
&lt;br /&gt;
// Set Image format&lt;br /&gt;
setAttr -type &amp;quot;string&amp;quot; &amp;quot;vraySettings.imageFormatStr&amp;quot; &amp;quot;exr (multichannel)&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
// Set Animation type on Standard&lt;br /&gt;
setAttr &amp;quot;vraySettings.animType&amp;quot; 0;&lt;br /&gt;
setAttr &amp;quot;vraySettings.animBatchOnly&amp;quot; 1;&lt;br /&gt;
&lt;br /&gt;
// Sampler type Bucket&lt;br /&gt;
setAttr &amp;quot;vraySettings.samplerType&amp;quot; 4;&lt;br /&gt;
&lt;br /&gt;
// Min Shading Rate&lt;br /&gt;
//setAttr &amp;quot;vraySettings.minShadeRate&amp;quot; 4;&lt;br /&gt;
setAttr &amp;quot;vraySettings.minShadeRate&amp;quot; 7;&lt;br /&gt;
&lt;br /&gt;
// Buckets subdivs&lt;br /&gt;
//setAttr &amp;quot;vraySettings.dmcMinSubdivs&amp;quot; 1;&lt;br /&gt;
//setAttr &amp;quot;vraySettings.dmcMaxSubdivs&amp;quot; 8;&lt;br /&gt;
//setAttr &amp;quot;vraySettings.dmcThreshold&amp;quot; 0.1;&lt;br /&gt;
setAttr &amp;quot;vraySettings.dmcMinSubdivs&amp;quot; 1;&lt;br /&gt;
setAttr &amp;quot;vraySettings.dmcMaxSubdivs&amp;quot; 15;&lt;br /&gt;
setAttr &amp;quot;vraySettings.dmcThreshold&amp;quot; 0.01;&lt;br /&gt;
&lt;br /&gt;
// Color mapping Linear&lt;br /&gt;
setAttr &amp;quot;vraySettings.cmap_type&amp;quot; 0;&lt;br /&gt;
&lt;br /&gt;
// GI on&lt;br /&gt;
setAttr &amp;quot;vraySettings.giOn&amp;quot; 1;&lt;br /&gt;
//setAttr &amp;quot;vraySettings.subdivs&amp;quot; 400;&lt;br /&gt;
setAttr &amp;quot;vraySettings.subdivs&amp;quot; 1000;&lt;br /&gt;
&lt;br /&gt;
// Max subdivs&lt;br /&gt;
setAttr &amp;quot;vraySettings.ddisplac_maxSubdivs&amp;quot; 16;&lt;br /&gt;
&lt;br /&gt;
// Cache geometry and bitmaps&lt;br /&gt;
setAttr &amp;quot;vraySettings.globopt_cache_geom_plugins&amp;quot; 1;&lt;br /&gt;
setAttr &amp;quot;vraySettings.globopt_cache_bitmaps&amp;quot; 1;&lt;br /&gt;
&lt;br /&gt;
// Dynamic memory limit&lt;br /&gt;
setAttr &amp;quot;vraySettings.sys_rayc_dynMemLimit&amp;quot; 0;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
////////////////////////////////////////////&lt;br /&gt;
// IMPORT&lt;br /&gt;
&lt;br /&gt;
// IMPORT LIGHT RIG&lt;br /&gt;
file -import -type $lightRigFileType  -ignoreVersion -mergeNamespacesOnClash false -rpr &amp;quot;:&amp;quot; -options &amp;quot;v=0;&amp;quot; $lightRigPath;&lt;br /&gt;
&lt;br /&gt;
// IMPORT ASSET&lt;br /&gt;
file -import -type $assetFileType  -ignoreVersion -mergeNamespacesOnClash false -rpr &amp;quot;:&amp;quot; -options &amp;quot;v=0;&amp;quot; $assetPath;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
// CREATE SETS&lt;br /&gt;
select `ls -type &amp;quot;mesh&amp;quot;`;&lt;br /&gt;
sets -name &amp;quot;assetOriginal_Set&amp;quot; ;&lt;br /&gt;
duplicate -rr;&lt;br /&gt;
group -w -n (&amp;quot;GRP_&amp;quot; + $assetName + &amp;quot;_BAKE_&amp;quot; + `toupper $lightRigName`);&lt;br /&gt;
sets -name &amp;quot;assetBaked_Set&amp;quot; ;&lt;br /&gt;
&lt;br /&gt;
// REMOVE BAKED PARTS FROM ORIGINAL PARTS SET&lt;br /&gt;
select -r assetBaked_Set ;&lt;br /&gt;
string $selection[] = `ls -sl`;&lt;br /&gt;
string $polyGons[] = `filterExpand -sm 12 $selection`;&lt;br /&gt;
select -r $polyGons;&lt;br /&gt;
pickWalk -d down;&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    sets -rm assetOriginal_Set $object;&lt;br /&gt;
}&lt;br /&gt;
select -cl  ;&lt;br /&gt;
&lt;br /&gt;
// DELETE HIDDEN OBJECTS&lt;br /&gt;
select -r assetBaked_Set ;&lt;br /&gt;
string $selection[] = `ls -sl`;&lt;br /&gt;
string $polyGons[] = `filterExpand -sm 12 $selection`;&lt;br /&gt;
select -r $polyGons;&lt;br /&gt;
for ( $object in `ls -sl` ) {&lt;br /&gt;
    $vis = getAttr ($object+&amp;quot;.visibility&amp;quot;);&lt;br /&gt;
    if ($vis == 0){&lt;br /&gt;
        select -r $object ;&lt;br /&gt;
        doDelete ;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
select -cl  ;&lt;br /&gt;
&lt;br /&gt;
// fixShapeName - Thanks to Pinkwerks&lt;br /&gt;
global proc&lt;br /&gt;
fixShapeName()&lt;br /&gt;
{&lt;br /&gt;
    string $me = &amp;quot;fixShapeName&amp;quot;;&lt;br /&gt;
    string $shape;&lt;br /&gt;
    string $newShapeName;&lt;br /&gt;
    string $parent;&lt;br /&gt;
    string $tmpA[];&lt;br /&gt;
	string $selectedShapes[] = `ls -sl -l`;&lt;br /&gt;
    int $sizeOfShapes = `size $selectedShapes`;&lt;br /&gt;
&lt;br /&gt;
    if ( $sizeOfShapes == 0 )&lt;br /&gt;
    	error($me + &amp;quot; : Nothing shapes to process!&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
    for ( $shape in $selectedShapes )&lt;br /&gt;
    {&lt;br /&gt;
    	$tmpA = `listRelatives -p $shape`;&lt;br /&gt;
		$parent = $tmpA[0];&lt;br /&gt;
		$newShapeName = ($parent + &amp;quot;Shape&amp;quot;);&lt;br /&gt;
		rename $shape $newShapeName;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// APPLY FIXSHAPENAME TO BAKED ASSET PARTS&lt;br /&gt;
select -r assetBaked_Set ;&lt;br /&gt;
string $selection[] = `ls -sl`;&lt;br /&gt;
string $polyGons[] = `filterExpand -sm 12 $selection`;&lt;br /&gt;
select -r $polyGons;&lt;br /&gt;
pickWalk -d down;&lt;br /&gt;
fixShapeName();&lt;br /&gt;
select -cl  ;&lt;br /&gt;
&lt;br /&gt;
// DELETE OBJECTS WITHOUT UVS&lt;br /&gt;
select -r assetBaked_Set ;&lt;br /&gt;
string $selection[] = `ls -sl`;&lt;br /&gt;
string $polyGons[] = `filterExpand -sm 12 $selection`;&lt;br /&gt;
select -r $polyGons;&lt;br /&gt;
for ( $object in `ls -sl` ) {&lt;br /&gt;
    int $vertexCount[] = `polyEvaluate -uv $object`;&lt;br /&gt;
    print $vertexCount;&lt;br /&gt;
    string $uvCount = $vertexCount[0];&lt;br /&gt;
    if ($uvCount == 0){&lt;br /&gt;
        select -r $object ;&lt;br /&gt;
        doDelete ;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// CREATE VRAY BAKE OPTIONS&lt;br /&gt;
createNode &amp;quot;VRayBakeOptions&amp;quot; -n &amp;quot;vrayBakeOptions&amp;quot;;&lt;br /&gt;
select -r assetBaked_Set ;&lt;br /&gt;
string $selection[] = `ls -sl`;&lt;br /&gt;
string $polyGons[] = `filterExpand -sm 12 $selection`;&lt;br /&gt;
select -r $polyGons;&lt;br /&gt;
$selected=`ls -sl`;&lt;br /&gt;
for ($object in $selected){&lt;br /&gt;
    sets -edit -forceElement  vrayBakeOptions $object ;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// HIDE ORIGINAL ASSET&lt;br /&gt;
select -r assetOriginal_Set ;&lt;br /&gt;
pickWalk -d up;&lt;br /&gt;
hide `ls -sl`;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
// BAKE VRAY OPTIONS&lt;br /&gt;
setAttr &amp;quot;vrayBakeOptions.udimBaking&amp;quot; 1;&lt;br /&gt;
setAttr &amp;quot;vrayBakeOptions.resolutionX&amp;quot; $resWidth;&lt;br /&gt;
&lt;br /&gt;
optionVar -intValue &amp;quot;vrayBakeType&amp;quot; 2;&lt;br /&gt;
optionVar -intValue &amp;quot;vraySkipNodesWithoutBakeOptions&amp;quot; 1;&lt;br /&gt;
optionVar -intValue &amp;quot;vrayAssignBakedTextures&amp;quot; 1;&lt;br /&gt;
optionVar -stringValue &amp;quot;vrayBakeOutputPath&amp;quot; $bakedTexturesPath;&lt;br /&gt;
optionVar -intValue &amp;quot;vrayBakeProjectionBaking&amp;quot; 0;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
// GO BAKE GO&lt;br /&gt;
select -cl  ;&lt;br /&gt;
select -r assetBaked_Set ;&lt;br /&gt;
string $selection[] = `ls -sl`;&lt;br /&gt;
string $polyGons[] = `filterExpand -sm 12 $selection`;&lt;br /&gt;
select -r $polyGons;&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    vrayStartBake;&lt;br /&gt;
}&lt;br /&gt;
select -cl  ;&lt;br /&gt;
&lt;br /&gt;
// UV TILING UDIM AND ACES CG FOR FILES&lt;br /&gt;
for ( $object in `ls -type &amp;quot;file&amp;quot;` ) {&lt;br /&gt;
    setAttr ($object + &amp;quot;.filterType&amp;quot;) 0;&lt;br /&gt;
    setAttr ($object + &amp;quot;.uvTilingMode&amp;quot;) 3;&lt;br /&gt;
    setAttr ($object + &amp;quot;.cs&amp;quot;) -type &amp;quot;string&amp;quot; $fileColorSpace;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// CONNECT SHADERS&lt;br /&gt;
select -cl  ;&lt;br /&gt;
select -r assetBaked_Set ;&lt;br /&gt;
string $selection[] = `ls -sl`;&lt;br /&gt;
string $polyGons[] = `filterExpand -sm 12 $selection`;&lt;br /&gt;
for ( $object in $polyGons ) {&lt;br /&gt;
    string $shadingGroupName = ($object + &amp;quot;Shape_bakedmtlSG&amp;quot;);&lt;br /&gt;
    sets -e -forceElement $shadingGroupName $object;&lt;br /&gt;
}&lt;br /&gt;
select -cl  ;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
///////////////////////////////////&lt;br /&gt;
// SAVE&lt;br /&gt;
file -rename (&amp;quot;C:/YOUR_PATH/BAKED_ASSETS/&amp;quot; + $assetName + &amp;quot;_&amp;quot; + $lightRigName + &amp;quot;_BAKE_DEBUG.mb&amp;quot;);&lt;br /&gt;
file -f -save;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Arnold - Set all Standins display on Bouding box ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$selected=`ls -type &amp;quot;aiStandIn&amp;quot;`;&lt;br /&gt;
for ($object in $selected){&lt;br /&gt;
    setAttr ($object + &amp;quot;.mode&amp;quot;) 0;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Arnold - Set all Standins display on Point cloud ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$selected=`ls -type &amp;quot;aiStandIn&amp;quot;`;&lt;br /&gt;
for ($object in $selected){&lt;br /&gt;
    setAttr ($object + &amp;quot;.mode&amp;quot;) 4;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Alembic - Loop animation on all nodes ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$selected=`ls -type &amp;quot;AlembicNode&amp;quot;`;&lt;br /&gt;
for ($object in $selected){&lt;br /&gt;
    setAttr ($object + &amp;quot;.cycleType&amp;quot;) 1;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Mental Ray nodes error - Delete Mayatomr plugin ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
unknownPlugin -remove &amp;quot;Mayatomr&amp;quot;;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Delete Unknown nodes ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
select -r `ls -type unknown`;&lt;br /&gt;
delete;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Write text ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
string $exampleFileName = ( &amp;quot;D:/yolo.bat&amp;quot; );&lt;br /&gt;
string $linesToWrite[] = {&lt;br /&gt;
    &amp;quot;youpi&amp;quot;,&lt;br /&gt;
    &amp;quot;youhou&amp;quot;&lt;br /&gt;
    };&lt;br /&gt;
int $result = fwriteAllLines($exampleFileName,$linesToWrite);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Point Lock No Attach on selected follicles ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    setAttr ($object + &amp;quot;.pointLock&amp;quot;) 0;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Convert .ma cameras from Reality Capture into .abc files ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// List of assets&lt;br /&gt;
string $fileParts[] = {&amp;quot;asset_001&amp;quot;, &amp;quot;asset_002&amp;quot;};&lt;br /&gt;
&lt;br /&gt;
// Replace the PATH of your files&lt;br /&gt;
for ($filePart in $fileParts){&lt;br /&gt;
	string $fileName = $filePart + &amp;quot;_cam&amp;quot;;&lt;br /&gt;
	string $filePath = &amp;quot;//DISK/PATH/&amp;quot; + $filePart + &amp;quot;/&amp;quot; + $filePart +&amp;quot;_cam.ma&amp;quot;;&lt;br /&gt;
	file -import -type &amp;quot;mayaAscii&amp;quot;  -ignoreVersion -ra true -mergeNamespacesOnClash false -rpr $fileName -options &amp;quot;v=0;p=17;f=0&amp;quot;  -pr  -importFrameRate true  -importTimeRange &amp;quot;override&amp;quot; $filePath;&lt;br /&gt;
	select -cl;&lt;br /&gt;
	select `ls -type &amp;quot;imagePlane&amp;quot;`;&lt;br /&gt;
	pickWalk -d up;&lt;br /&gt;
	doDelete;&lt;br /&gt;
	select `ls -type &amp;quot;camera&amp;quot;`;&lt;br /&gt;
	pickWalk -d up;	&lt;br /&gt;
	string $abcPath = &amp;quot;//DISK/PATH/&amp;quot; + $filePart + &amp;quot;/&amp;quot; + $filePart +&amp;quot;_cam.abc&amp;quot;;&lt;br /&gt;
	string $abcExp = &amp;quot;-frameRange 1 1 -uvWrite -worldSpace -dataFormat ogawa -root |* -file &amp;quot; + $abcPath;&lt;br /&gt;
	AbcExport -j $abcExp;&lt;br /&gt;
	select -all;&lt;br /&gt;
	doDelete;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Combine objects ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select objects&lt;br /&gt;
&lt;br /&gt;
polyPerformAction polyUnite o 0; &lt;br /&gt;
DeleteHistory;&lt;br /&gt;
FreezeTransformations;&lt;br /&gt;
makeIdentity -apply true -t 1 -r 1 -s 1 -n 0 -pn 1;&lt;br /&gt;
CenterPivot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Unitize UVs (one square UV by face) ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select objects&lt;br /&gt;
&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    select -r ($object+&amp;quot;.e[*]&amp;quot;);&lt;br /&gt;
    hilite ($object+&amp;quot;.e[*]&amp;quot;) ;&lt;br /&gt;
    polyMapCut -ch 1 ($object+&amp;quot;.e[*]&amp;quot;);&lt;br /&gt;
    polyForceUV -unitize $object;&lt;br /&gt;
    select $object;&lt;br /&gt;
    DeleteHistory;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Unfold UVs ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select seams edges first&lt;br /&gt;
&lt;br /&gt;
invertSelection;&lt;br /&gt;
string $selectedEdges [] = `ls -sl`;&lt;br /&gt;
polyMapSewMove -nf 10 -lps 0 -ch 1 $selectedEdges;&lt;br /&gt;
select -r ($object+&amp;quot;.map[*]&amp;quot;);&lt;br /&gt;
u3dUnfold -ite 1 -p 0 -bi 1 -tf 1 -ms 1024 -rs 0 ($object+&amp;quot;.map[*]&amp;quot;);&lt;br /&gt;
u3dLayout -res 256 -scl 1 -spc 0.001 -mar 0.01 -box 0 1 0 1 $object;&lt;br /&gt;
select -cl;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Create Texture Reference on all shapes from a group ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select top group first&lt;br /&gt;
&lt;br /&gt;
string $selection[] = `ls -sl`;&lt;br /&gt;
string $polyGons[] = `filterExpand -sm 12 $selection`;&lt;br /&gt;
&lt;br /&gt;
for ($i = 0; $i &amp;lt; size($polyGons); $i ++)&lt;br /&gt;
{&lt;br /&gt;
    select -r $polyGons[$i] ;&lt;br /&gt;
    CreateTextureReferenceObject;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
select -r $selection;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Walter</name></author>
		
	</entry>
	<entry>
		<id>http://antoinevienne.fr/wiki/index.php?title=Nuke_Python&amp;diff=259</id>
		<title>Nuke Python</title>
		<link rel="alternate" type="text/html" href="http://antoinevienne.fr/wiki/index.php?title=Nuke_Python&amp;diff=259"/>
		<updated>2023-09-28T15:15:06Z</updated>

		<summary type="html">&lt;p&gt;Walter: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Nuke Python Scripts=&lt;br /&gt;
&lt;br /&gt;
=== Getting advanced settings/Knobs informations ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#For a specific knob, here for &amp;quot;mov32_settings&amp;quot; in a Write node&lt;br /&gt;
i = nuke.selectedNode()&lt;br /&gt;
print i.knob('mov32_settings').value()&lt;br /&gt;
&lt;br /&gt;
#Or for the whole node - https://berniebernie.fr/wiki/&lt;br /&gt;
print(nuke.selectedNode())&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Create multiple Writes nodes for multiples Reads - With RGBA channels activated ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
//Select Read nodes first&lt;br /&gt;
&lt;br /&gt;
root_frame_path = &amp;quot;/YOUR_PATH&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
nodes = nuke.selectedNodes()&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
for n in nodes:&lt;br /&gt;
&lt;br /&gt;
    roto_name = n.name()&lt;br /&gt;
&lt;br /&gt;
    n.setSelected(True)&lt;br /&gt;
&lt;br /&gt;
    w = nuke.createNode( &amp;quot;Write&amp;quot; )&lt;br /&gt;
&lt;br /&gt;
    write_name = roto_name.replace(&amp;quot;Roto&amp;quot;, &amp;quot;Write_&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
    w.knob(&amp;quot;name&amp;quot;).setValue(write_name)&lt;br /&gt;
&lt;br /&gt;
    image_path = &amp;quot;{root_frame_path}/{write_name}.png&amp;quot;.format(root_frame_path=root_frame_path, write_name=write_name)&lt;br /&gt;
&lt;br /&gt;
    w.knob(&amp;quot;file&amp;quot;).setValue(image_path)&lt;br /&gt;
&lt;br /&gt;
for a in nuke.allNodes('Write'):&lt;br /&gt;
&lt;br /&gt;
    a['channels'].setValue('rgba')&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Change specific attribute on all nodes ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
//Works also with &amp;quot;selectedNodes&amp;quot;&lt;br /&gt;
//&amp;quot;render_mode&amp;quot; and &amp;quot;textured+wireframe&amp;quot; are examples of attributes to be changed.&lt;br /&gt;
&lt;br /&gt;
sn = nuke.allNodes()&lt;br /&gt;
&lt;br /&gt;
for n in sn:&lt;br /&gt;
&lt;br /&gt;
        n.knob('render_mode').setValue(&amp;quot;textured+wireframe&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
//Alternative script for selectedNodes:&lt;br /&gt;
&lt;br /&gt;
for a in nuke.selectedNodes('Write'):&lt;br /&gt;
&lt;br /&gt;
a['channels'].setValue('rgba')&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
//Alternative script for allNodes:&lt;br /&gt;
&lt;br /&gt;
for a in nuke.allNodes('Write'):&lt;br /&gt;
&lt;br /&gt;
a['channels'].setValue('rgba')&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Set localizationPolicy off on all Read nodes ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sn = nuke.allNodes()&lt;br /&gt;
&lt;br /&gt;
for n in sn:&lt;br /&gt;
&lt;br /&gt;
        n.knob('localizationPolicy').setValue(&amp;quot;off&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Set value of BBox parameter in Merge nodes to B ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
for n in nuke.allNodes('Merge2'):&lt;br /&gt;
&lt;br /&gt;
    n['bbox'].setValue(&amp;quot;B&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Count selected nodes ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
len(nuke.selectedNodes())&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Export multiple files in DXV ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#This script comes from the great Benjamin Vedrenne. DXV is the codec made by and for Resolume.&lt;br /&gt;
#Select all Read nodes or sources first.&lt;br /&gt;
#This script create a write node under each selected read nodes. Easy for fast and massive file conversion TO VIDEO.&lt;br /&gt;
&lt;br /&gt;
for oReadNode in nuke.selectedNodes():&lt;br /&gt;
&lt;br /&gt;
    oPath =  oReadNode['file'].value()&lt;br /&gt;
    first =  oReadNode['first'].value()&lt;br /&gt;
    last =  oReadNode['last'].value()&lt;br /&gt;
    newPath = oPath.split('/')[-2]&lt;br /&gt;
    oReadNode['selected'].setValue(True)&lt;br /&gt;
    Write = nuke.createNode (&amp;quot;Write&amp;quot;)   &lt;br /&gt;
&lt;br /&gt;
    #Specify file path here&lt;br /&gt;
    osdir = 'C:/DXV/tmp'&lt;br /&gt;
    &lt;br /&gt;
    Write.knob(&amp;quot;beforeRender&amp;quot;).setValue(&amp;quot;import os\nif not os.path.isdir(os.path.dirname(nuke.thisNode()['file'].evaluate())):\n  os.makedirs(os.path.dirname(nuke.thisNode()['file'].evaluate()))&amp;quot;)&lt;br /&gt;
    Write.knob('channels').setValue('rgba')&lt;br /&gt;
    Write.knob('file').setValue(osdir+'/'+newPath+&amp;quot;.mov&amp;quot;)&lt;br /&gt;
    Write.knob('file_type').setValue('mov')&lt;br /&gt;
    Write.knob('meta_codec').setValue('DXD3')&lt;br /&gt;
    Write.knob('mov32_fps').setValue(24)&lt;br /&gt;
    Write.knob('use_limit').setValue(True)&lt;br /&gt;
    Write.knob('first').setValue(first)&lt;br /&gt;
    Write.knob('last').setValue(last)&lt;br /&gt;
    Write.knob('mov32_settings').setValue('000000000000000000000000000001b67365616e000000010000000100000000000001a276696465000000010000000f00000000000000227370746c00000001000000000000000044584433000000000020000003ff000000207470726c000000010000000000000000000000000018000000000000000000246472617400000001000000000000000000000000000000530000010000000100000000156d70736f00000001000000000000000000000000186d66726100000001000000000000000000000000000000187073667200000001000000000000000000000000000000156266726100000001000000000000000000000000166d70657300000001000000000000000000000000002868617264000000010000000000000000000000000000000000000000000000000000000000000016656e647300000001000000000000000000000000001663666c67000000010000000000000000004400000018636d667200000001000000000000000052534c4d00000014636c75740000000100000000000000000000001c6364656300000001000000000000000043736552030000000000001c766572730000000100000000000000000003001c00010000')&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Reformat selected Read nodes and Write it ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#Select Read nodes and put the right path below&lt;br /&gt;
&lt;br /&gt;
for oReadNode in nuke.selectedNodes():&lt;br /&gt;
&lt;br /&gt;
    oPath =  oReadNode['file'].value()&lt;br /&gt;
    first =  oReadNode['first'].value()&lt;br /&gt;
    last =  oReadNode['last'].value()&lt;br /&gt;
    newPath = oPath.split('/')[-1]&lt;br /&gt;
    oReadNode['selected'].setValue(True)&lt;br /&gt;
    Reformat = nuke.createNode (&amp;quot;Reformat&amp;quot;)&lt;br /&gt;
    Reformat.knob('format').setValue('square_1K')&lt;br /&gt;
    Write = nuke.createNode (&amp;quot;Write&amp;quot;)   &lt;br /&gt;
&lt;br /&gt;
    #Specify file path here&lt;br /&gt;
    osdir = 'C:/YOUR_PATH'&lt;br /&gt;
    &lt;br /&gt;
    Write.knob(&amp;quot;beforeRender&amp;quot;).setValue(&amp;quot;import os\nif not os.path.isdir(os.path.dirname(nuke.thisNode()['file'].evaluate())):\n  os.makedirs(os.path.dirname(nuke.thisNode()['file'].evaluate()))&amp;quot;)&lt;br /&gt;
    Write.knob('channels').setValue('rgb')&lt;br /&gt;
    Write.knob('file').setValue(osdir+'/'+newPath)&lt;br /&gt;
    Write.knob('file_type').setValue('jpeg')&lt;br /&gt;
    Write.knob('_jpeg_quality').setValue(1)&lt;br /&gt;
    Write.knob('use_limit').setValue(True)&lt;br /&gt;
    Write.knob('first').setValue(first)&lt;br /&gt;
    Write.knob('last').setValue(last)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Start selected Read nodes at frame 1 ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
for n in nuke.selectedNodes('Read'):&lt;br /&gt;
&lt;br /&gt;
    n['frame_mode'].setValue(&amp;quot;1&amp;quot;)&lt;br /&gt;
    n['frame'].setValue(&amp;quot;1&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== DPX Writes in sRGB (D60 sim.) from Read nodes ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
for oReadNode in nuke.selectedNodes():&lt;br /&gt;
&lt;br /&gt;
    oPath =  oReadNode['file'].value()&lt;br /&gt;
    first =  oReadNode['first'].value()&lt;br /&gt;
    last =  oReadNode['last'].value()&lt;br /&gt;
    newPath = oPath.split('/')[-1]&lt;br /&gt;
    oReadNode['selected'].setValue(True)&lt;br /&gt;
&lt;br /&gt;
    Write = nuke.createNode (&amp;quot;Write&amp;quot;)   &lt;br /&gt;
&lt;br /&gt;
    #Specify file path here&lt;br /&gt;
    osdir ='C:/YOUR_PATH'&lt;br /&gt;
    &lt;br /&gt;
    Write.knob('channels').setValue('rgb')&lt;br /&gt;
    Write.knob('colorspace').setValue('83)')&lt;br /&gt;
    Write.knob('file').setValue(osdir+'/'+newPath)&lt;br /&gt;
    Write.knob('file_type').setValue('dpx')&lt;br /&gt;
    Write.knob('use_limit').setValue(True)&lt;br /&gt;
    Write.knob('first').setValue(first)&lt;br /&gt;
    Write.knob('last').setValue(last)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Set Create directories ON on all Write nodes ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
for n in nuke.allNodes('Write'):&lt;br /&gt;
&lt;br /&gt;
    n['create_directories'].setValue(True)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== DPX Writes from Read nodes - Starting at frame 1 ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
for oReadNode in nuke.selectedNodes():&lt;br /&gt;
&lt;br /&gt;
    oPath =  oReadNode['file'].value()&lt;br /&gt;
    first =  oReadNode['first'].value()&lt;br /&gt;
    last =  oReadNode['last'].value()&lt;br /&gt;
    newPath = oPath.split('/')[-1]&lt;br /&gt;
    oReadNode['selected'].setValue(True)&lt;br /&gt;
&lt;br /&gt;
    Write = nuke.createNode (&amp;quot;Write&amp;quot;)   &lt;br /&gt;
&lt;br /&gt;
    #Specify file path here&lt;br /&gt;
    osdir ='C:/YOUR_PATH'&lt;br /&gt;
    &lt;br /&gt;
    Write.knob('channels').setValue('rgb')&lt;br /&gt;
    Write.knob('colorspace').setValue('0)')&lt;br /&gt;
    Write.knob('file').setValue(osdir+'/'+newPath)&lt;br /&gt;
    Write.knob('file_type').setValue('dpx')&lt;br /&gt;
    Write.knob('use_limit').setValue(True)&lt;br /&gt;
    Write.knob('first').setValue(1)&lt;br /&gt;
    Write.knob('last').setValue(last-first+1)&lt;br /&gt;
    Write.knob('create_directories').setValue(True)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== JPG Writes from Read nodes - With LUT transform ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
for oReadNode in nuke.selectedNodes():&lt;br /&gt;
&lt;br /&gt;
    oPath =  oReadNode['file'].value()&lt;br /&gt;
    first =  oReadNode['first'].value()&lt;br /&gt;
    last =  oReadNode['last'].value()&lt;br /&gt;
    newPath = oPath.split('/')[-2]&lt;br /&gt;
    oReadNode['selected'].setValue(True)&lt;br /&gt;
    OCIOFileTransform = nuke.createNode (&amp;quot;OCIOFileTransform&amp;quot;)&lt;br /&gt;
    OCIOFileTransform.knob('working_space').setValue('sRGB')&lt;br /&gt;
&lt;br /&gt;
    #Specify lut path here&lt;br /&gt;
    lutpath = 'C:/YOUR_PATH/YOUR_LUT.3dl'&lt;br /&gt;
&lt;br /&gt;
    OCIOFileTransform.knob('file').setValue(lutpath)&lt;br /&gt;
    Write = nuke.createNode (&amp;quot;Write&amp;quot;)   &lt;br /&gt;
&lt;br /&gt;
    #Specify file path here&lt;br /&gt;
    osdir = 'C:/YOUR_PATH'&lt;br /&gt;
    &lt;br /&gt;
    Write.knob(&amp;quot;beforeRender&amp;quot;).setValue(&amp;quot;import os\nif not os.path.isdir(os.path.dirname(nuke.thisNode()['file'].evaluate())):\n  os.makedirs(os.path.dirname(nuke.thisNode()['file'].evaluate()))&amp;quot;)&lt;br /&gt;
    Write.knob('channels').setValue('rgb')&lt;br /&gt;
    Write.knob('file').setValue(osdir+'/'+newPath+'/'+newPath+&amp;quot;.####.jpg&amp;quot;)&lt;br /&gt;
    Write.knob('file_type').setValue('jpeg')&lt;br /&gt;
    Write.knob('_jpeg_quality').setValue(1)&lt;br /&gt;
    Write.knob('use_limit').setValue(True)&lt;br /&gt;
    Write.knob('first').setValue(first)&lt;br /&gt;
    Write.knob('last').setValue(last)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== EXR Writes from Read nodes - Out Rec 709 to AcesCG ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
for oReadNode in nuke.selectedNodes():&lt;br /&gt;
&lt;br /&gt;
    oReadNode['colorspace'].setValue('out_rec709')&lt;br /&gt;
    oPath =  oReadNode['file'].value()&lt;br /&gt;
    first =  oReadNode['first'].value()&lt;br /&gt;
    last =  oReadNode['last'].value()&lt;br /&gt;
    newPath = oPath.split('/')[-2]&lt;br /&gt;
    oReadNode['selected'].setValue(True)&lt;br /&gt;
&lt;br /&gt;
    Write = nuke.createNode (&amp;quot;Write&amp;quot;)       &lt;br /&gt;
    Write.knob(&amp;quot;beforeRender&amp;quot;).setValue(&amp;quot;import os\nif not os.path.isdir(os.path.dirname(nuke.thisNode()['file'].evaluate())):\n  os.makedirs(os.path.dirname(nuke.thisNode()['file'].evaluate()))&amp;quot;)&lt;br /&gt;
    Write.knob('channels').setValue('rgb')&lt;br /&gt;
    oPath = oPath.replace('.%04d.png', '_ACEScg.%04d.exr')&lt;br /&gt;
    oPath = oPath.replace('.1001.png', '_ACEScg.1001.exr')&lt;br /&gt;
    Write.knob('file').setValue(oPath)&lt;br /&gt;
    Write.knob('colorspace').setValue('ACES - ACEScg')&lt;br /&gt;
    Write.knob('file_type').setValue('exr')&lt;br /&gt;
    Write.knob('use_limit').setValue(True)&lt;br /&gt;
    Write.knob('first').setValue(first)&lt;br /&gt;
    Write.knob('last').setValue(last)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== All Read nodes set on nearest frame ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
for n in nuke.allNodes('Read'):&lt;br /&gt;
&lt;br /&gt;
    n['on_error'].setValue(3)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Same frame on all FrameHolds ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
for n in nuke.allNodes('FrameHold'):&lt;br /&gt;
&lt;br /&gt;
    n['first_frame'].setValue(993)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== All Reformats on Cubic ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
for n in nuke.allNodes('Reformat'):&lt;br /&gt;
&lt;br /&gt;
    n['filter'].setValue(1)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Enable all Read nodes ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
for node in nuke.allNodes('Read'):&lt;br /&gt;
    nuke.toNode(node.name()).knob('disable').setValue(False)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Walter</name></author>
		
	</entry>
	<entry>
		<id>http://antoinevienne.fr/wiki/index.php?title=Maya_Mel&amp;diff=258</id>
		<title>Maya Mel</title>
		<link rel="alternate" type="text/html" href="http://antoinevienne.fr/wiki/index.php?title=Maya_Mel&amp;diff=258"/>
		<updated>2023-09-27T12:34:04Z</updated>

		<summary type="html">&lt;p&gt;Walter: /* Unfold UVs (one square UV by face) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Maya Mels Scripts=&lt;br /&gt;
=== Octane Render Baking group id - Assign id to multiple objects shapes ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// 0 is for Red, 2 for Green, 4 for Blue&lt;br /&gt;
// 3, 5 and 6 for Cyan, Magenta and Yellow&lt;br /&gt;
// Replace the number &amp;quot;0&amp;quot; by the number of your choice&lt;br /&gt;
// Baking group id is also avalaible in Attribute Spreadsheet Editor&lt;br /&gt;
&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    print($object+&amp;quot;\n&amp;quot;);&lt;br /&gt;
    setAttr ($object + &amp;quot;.octBakGrId&amp;quot;) (0);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Maxwell Render - Particles sequence - Force .abc file ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
//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&lt;br /&gt;
&lt;br /&gt;
global int $current_frame;&lt;br /&gt;
$current_frame = `currentTime -query`;&lt;br /&gt;
print $current_frame;&lt;br /&gt;
{&lt;br /&gt;
setAttr -type &amp;quot;string&amp;quot; maxwellRFRKParticles1.file (&amp;quot;/YOUR_PATH/YOUR_FILE&amp;quot; + $current_frame + &amp;quot;.abc&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Maxwell Render - Specify object ID color ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Specify object ID color&lt;br /&gt;
&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    print($object+&amp;quot;\n&amp;quot;);&lt;br /&gt;
    setAttr ($object + &amp;quot;.mxSpecifyObjIdColor&amp;quot;) (1);&lt;br /&gt;
    setAttr ($object + &amp;quot;.mxObjIdColor&amp;quot;) -type &amp;quot;double3&amp;quot; 1 0 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Redshift - Add blend attribute and set random value for objects selection ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Useful for blending between colors with RedshiftUserDataScalar&lt;br /&gt;
&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    print($object);&lt;br /&gt;
    addAttr -ln &amp;quot;blend&amp;quot; -at double  -min 0 -max 1 -dv 0 $object;&lt;br /&gt;
    setAttr ($object + &amp;quot;.blend&amp;quot;) (rand(1));&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Redshift - Set Primary visibility off for selection (layer override) ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Go in right render layer and select objects&lt;br /&gt;
&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    print($object+&amp;quot;\n&amp;quot;);&lt;br /&gt;
    setAttr ($object + &amp;quot;.rsEnableVisibilityOverrides&amp;quot;) (1);&lt;br /&gt;
    editRenderLayerAdjustment ($object + &amp;quot;.rsPrimaryRayVisible&amp;quot;);&lt;br /&gt;
    setAttr ($object + &amp;quot;.rsPrimaryRayVisible&amp;quot;) (0);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Convert Motion trail to curve ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select the motion trail first&lt;br /&gt;
&lt;br /&gt;
{&lt;br /&gt;
$selected=`ls -dag -et snapshotShape`;&lt;br /&gt;
for ($obj in $selected){&lt;br /&gt;
$pts=(getAttr($obj+&amp;quot;.pts&amp;quot;));&lt;br /&gt;
$size=size($pts);&lt;br /&gt;
$curve=`curve -d 1 -p $pts[0] $pts[1] $pts[2] -p $pts[4] $pts[5] $pts[6] -k 0 -k 1`;&lt;br /&gt;
for($i=8;$i&amp;lt;$size;$i+=4)&lt;br /&gt;
curve -os -a -p $pts[$i] $pts[$i+1] $pts[$i+2] $curve ;&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Quantize keyframes for selection ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Snap keys on frames for objects selection&lt;br /&gt;
&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    print($object+&amp;quot;\n&amp;quot;);&lt;br /&gt;
    snapKey $object;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Loop image sequence for texture ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// On File texture, check Image sequence, and edit expression&lt;br /&gt;
&lt;br /&gt;
file1.frameExtension=((frame%8)+1);&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Symmetrize - Duplicate &amp;amp; merge object ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select half object first&lt;br /&gt;
&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    print($object+&amp;quot;\n&amp;quot;);&lt;br /&gt;
    xform -piv 0 0 0 $object;&lt;br /&gt;
    duplicate -rr;&lt;br /&gt;
    setAttr ($object + &amp;quot;.scaleX&amp;quot;) (-1);&lt;br /&gt;
    select -add $object ;&lt;br /&gt;
    polyPerformAction polyUnite o 0;&lt;br /&gt;
    polyMergeVertex  -d 0.0001 -am 1 -ch 1;&lt;br /&gt;
    DeleteHistory;&lt;br /&gt;
    rename ($object);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Mirror object ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select object first&lt;br /&gt;
&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    print($object+&amp;quot;\n&amp;quot;);&lt;br /&gt;
    DeleteHistory;&lt;br /&gt;
    makeIdentity -apply true -t 1 -r 1 -s 1 -n 0 -pn 1;&lt;br /&gt;
    xform -piv 0 0 0 $object;&lt;br /&gt;
    duplicate -rr;&lt;br /&gt;
    setAttr ($object + &amp;quot;.scaleX&amp;quot;) (-1);&lt;br /&gt;
    DeleteHistory;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Group each object and rename ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select objects first&lt;br /&gt;
&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    string $name = ($object);&lt;br /&gt;
    select $object ;&lt;br /&gt;
    doGroup 0 1 1;&lt;br /&gt;
    rename ($name + &amp;quot;_GRP&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Change path in an Attribute ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Here the Attribute is &amp;quot;.filePrefix&amp;quot; - Select objects first&lt;br /&gt;
&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    string $path = getAttr ($object+&amp;quot;.filePrefix&amp;quot;);&lt;br /&gt;
    $path = `substitute &amp;quot;//OLD/PATH/&amp;quot; $path &amp;quot;//NEW/PATH/&amp;quot;`;&lt;br /&gt;
    setAttr -type &amp;quot;string&amp;quot; ($object+&amp;quot;.filePrefix&amp;quot;) ($path);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Change opacity mode on V-Ray shaders ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select shaders first&lt;br /&gt;
&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    if (attributeExists(&amp;quot;omode&amp;quot;,$object)) { //check if attribute exists&lt;br /&gt;
        CBunlockAttr ($object+&amp;quot;.omode&amp;quot;); //unlock opacity mode&lt;br /&gt;
    }&lt;br /&gt;
    if (attributeExists(&amp;quot;opacityMode&amp;quot;,$object)) {&lt;br /&gt;
        setAttr ($object+&amp;quot;.opacityMode&amp;quot;) 1; //set opacity mode in Clip - 0 pour Normal&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// Alternative&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    if (attributeExists(&amp;quot;opacityMode&amp;quot;,$object)) {&lt;br /&gt;
        setAttr ($object+&amp;quot;.opacityMode&amp;quot;) -l false; //unlock attribute if locked&lt;br /&gt;
    }&lt;br /&gt;
    if (attributeExists(&amp;quot;opacityMode&amp;quot;,$object)) {&lt;br /&gt;
        setAttr ($object+&amp;quot;.opacityMode&amp;quot;) 2; //set opacity mode in Clip - 0 pour Normal&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Change color space on selected fileTextures ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Useful to automatically convert Quixel Megascans by example from sRGB/Raw to ACES color spaces&lt;br /&gt;
&lt;br /&gt;
string $object_selection[] = (`ls -sl`);&lt;br /&gt;
for ($object in $object_selection) {&lt;br /&gt;
    if(`getAttr ($object+&amp;quot;.cs&amp;quot;)` == &amp;quot;sRGB&amp;quot;){&lt;br /&gt;
        setAttr ($object + &amp;quot;.cs&amp;quot;) -type &amp;quot;string&amp;quot; &amp;quot;Utility - sRGB - Texture&amp;quot;;&lt;br /&gt;
    }&lt;br /&gt;
    if(`getAttr ($object+&amp;quot;.cs&amp;quot;)` == &amp;quot;Raw&amp;quot;){&lt;br /&gt;
        setAttr ($object + &amp;quot;.cs&amp;quot;) -type &amp;quot;string&amp;quot; &amp;quot;Utility - Raw&amp;quot;;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Redshift - custom Tesselation on selected objects ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select objects first&lt;br /&gt;
&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    print($object+&amp;quot;\n&amp;quot;);&lt;br /&gt;
    setAttr ($object + &amp;quot;.rsMinTessellationLength&amp;quot;) (0.1);&lt;br /&gt;
    setAttr ($object + &amp;quot;.rsMaxTessellationSubdivs&amp;quot;) (2);&lt;br /&gt;
    setAttr ($object + &amp;quot;.rsOutOfFrustumTessellationFactor&amp;quot;) (4);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Change color on selected shaders ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select shaders first&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    print($object+&amp;quot;\n&amp;quot;);&lt;br /&gt;
    setAttr ($object + &amp;quot;.color&amp;quot;) -l false;&lt;br /&gt;
    setAttr ($object + &amp;quot;.color&amp;quot;) -type &amp;quot;double3&amp;quot; (0.18) (0.18) (0.18);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Change Filter Type on selected Files Textures ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select files textures first - 0 means Off&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    print($object+&amp;quot;\n&amp;quot;);&lt;br /&gt;
    setAttr ($object + &amp;quot;.filterType&amp;quot;) 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Clean Render Layers ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// In MEL&lt;br /&gt;
fixRenderLayerOutAdjustmentErrors;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Change Filter Type on selected Files Textures ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select files textures first - 0 means Off&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    print($object+&amp;quot;\n&amp;quot;);&lt;br /&gt;
    setAttr ($object + &amp;quot;.filterType&amp;quot;) 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Select by name ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select objects with &amp;quot;toto&amp;quot;&lt;br /&gt;
select -r &amp;quot;toto*&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Display color on shapes ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select objects&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    print($object+&amp;quot;\n&amp;quot;);&lt;br /&gt;
    setAttr ($object + &amp;quot;.displayColors&amp;quot;) 1;&lt;br /&gt;
    setDisplayColorChannelAttribute ($object + &amp;quot;.displayColorChannel&amp;quot;);&lt;br /&gt;
    polyColorPerVertex -r 1 -g 0 -b 0 -a 1 -cdo;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Geometry Constraint on multiple selection ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select objects to constrain&lt;br /&gt;
string $objectBase = &amp;quot;surfaceName&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    select -cl;&lt;br /&gt;
    select $objectBase;&lt;br /&gt;
    select -add $object;&lt;br /&gt;
    geometryConstraint -weight 1;&lt;br /&gt;
    select -r &amp;quot;*Constraint*&amp;quot;;&lt;br /&gt;
    doDelete;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
=== Speed up smokes rendering with V-Ray ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select smokes first&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    print($object+&amp;quot;\n&amp;quot;);&lt;br /&gt;
    setAttr ($object + &amp;quot;.rendStep&amp;quot;) 160;&lt;br /&gt;
    setAttr ($object + &amp;quot;.shadowStep&amp;quot;) 400;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Set bump multiplier on multiple V-Ray shaders ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select shaders&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    if (attributeExists(&amp;quot;bumpMult&amp;quot;,$object)) {&lt;br /&gt;
        setAttr ($object + &amp;quot;.bumpMult&amp;quot;) -1; //set bump multiplier at -1&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== STOP/START viewport ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// As seen on https://www.toadstorm.com/. - Put it in your shelf&lt;br /&gt;
paneLayout -e -manage false $gMainPane&lt;br /&gt;
&lt;br /&gt;
paneLayout -e -manage true $gMainPane&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Select curves by name ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select objects first - Replace &amp;quot;toto&amp;quot; by what you are looking for&lt;br /&gt;
&lt;br /&gt;
select `ls -type &amp;quot;nurbsCurve&amp;quot; &amp;quot;*toto*&amp;quot;`;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Noise expression ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Replace &amp;quot;pCube1&amp;quot;&lt;br /&gt;
&lt;br /&gt;
pCube1.translateX=sin(time*20)*0.01*noise(time*10);&lt;br /&gt;
pCube1.translateY=sin(time*4)*0.01*noise(time*10);&lt;br /&gt;
pCube1.translateZ=sin(time*12)*0.01*noise(time*10);&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== V-ray - Make curves renderables ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Replace VRayLightMtl1 at the end by your material&lt;br /&gt;
&lt;br /&gt;
$selected=`ls -dag -et curveShape`;&lt;br /&gt;
for ($object in $selected){&lt;br /&gt;
    // Add V-ray Extra attributes&lt;br /&gt;
    vray addAttributesFromGroup $object vray_nurbscurve_renderable 1;&lt;br /&gt;
    vrayAddAttr $object vraySeparator_vray_nurbscurve_renderable;&lt;br /&gt;
    vrayAddAttr $object vrayNurbsCurveRenderable;&lt;br /&gt;
    vrayAddAttr $object vrayNurbsCurveMaterial;&lt;br /&gt;
    vrayAddAttr $object vrayNurbsCurveTesselation;&lt;br /&gt;
    vrayAddAttr $object vrayNurbsCurveStartWidth;&lt;br /&gt;
    vrayAddAttr $object vrayNurbsCurveLockEndWidth;&lt;br /&gt;
    vrayAddAttr $object vrayNurbsCurveEndWidth;&lt;br /&gt;
    setUITemplate -pst attributeEditorTemplate;&lt;br /&gt;
// Activate renderable&lt;br /&gt;
setAttr ($object + &amp;quot;.vrayNurbsCurveRenderable&amp;quot;) 1;&lt;br /&gt;
// Replace VRayLightMtl1 by your material&lt;br /&gt;
connectAttr -force VRayLightMtl1.outColor ($object + &amp;quot;.vrayNurbsCurveMaterial&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Get object type ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Replace toto with the object whose type you want to know&lt;br /&gt;
&lt;br /&gt;
objectType toto;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Render layer override on specific object type ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Replace &amp;quot;Node&amp;quot; by the object type on which you want to act&lt;br /&gt;
&lt;br /&gt;
$selected=`ls -type &amp;quot;Node&amp;quot;`;&lt;br /&gt;
for ($object in $selected){&lt;br /&gt;
    // Create layer override on Primary Visibility attribute on current renderLayer&lt;br /&gt;
    editRenderLayerAdjustment ($object + &amp;quot;.primaryVisibility&amp;quot;);&lt;br /&gt;
    // Set Primary Visibility - 0 or 1&lt;br /&gt;
    setAttr ($object + &amp;quot;.primaryVisibility&amp;quot;) 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== V-ray - Make lights invisible ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$selected=`ls -type &amp;quot;VRayLightRectShape&amp;quot;`;&lt;br /&gt;
for ($object in $selected){&lt;br /&gt;
    setAttr ($object + &amp;quot;.invisible&amp;quot;) 1;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
$selected=`ls -type &amp;quot;VRayLightSphereShape&amp;quot;`;&lt;br /&gt;
for ($object in $selected){&lt;br /&gt;
    setAttr ($object + &amp;quot;.invisible&amp;quot;) 1;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
$selected=`ls -type &amp;quot;VRayLightDomeShape&amp;quot;`;&lt;br /&gt;
for ($object in $selected){&lt;br /&gt;
    setAttr ($object + &amp;quot;.invisible&amp;quot;) 1;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== V-ray - Select Rect Light ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
select `ls -type &amp;quot;VRayLightRectShape&amp;quot;`;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== V-ray - Rect Lights - Directional Preview - Always for all ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$selected=`ls -type &amp;quot;VRayLightRectShape&amp;quot;`;&lt;br /&gt;
for ($object in $selected){&lt;br /&gt;
    setAttr ($object + &amp;quot;.directionalPreview&amp;quot;) 1;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Randomize rotation on selected objects ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// As posted on CGTalk by NaughtyNathan&lt;br /&gt;
// &amp;quot;just set the vector values to the maximum random x,y,z rotations you want to apply to the selected transforms.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
vector $rndRot = &amp;lt;&amp;lt; 0,0,90 &amp;gt;&amp;gt;;	// x,y,z rotations&lt;br /&gt;
for ($object in `ls -sl -tr`){&lt;br /&gt;
    rotate `rand ($rndRot.x)` `rand ($rndRot.y)` `rand ($rndRot.z)` $object;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Quit Maya ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Brute force method&lt;br /&gt;
&lt;br /&gt;
$i = `getpid`; //application ID&lt;br /&gt;
    system(&amp;quot;taskkill /PID &amp;quot;  + $i +&amp;quot; /f&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
// In a gentle way&lt;br /&gt;
&lt;br /&gt;
evalDeferred(&amp;quot;quit -f&amp;quot;);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== V-ray - Import list of Alembics through Proxys Import ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// List of Alembics files - Replace by the name of your Alembics&lt;br /&gt;
string $alembicsParts[] = {&amp;quot;part1&amp;quot;,&amp;quot;part2&amp;quot;,&amp;quot;part3&amp;quot;};&lt;br /&gt;
&lt;br /&gt;
// Replace the PATH of your files - Scale by 100 for Houdini Alembics - &amp;lt;frame04&amp;gt; for sequences&lt;br /&gt;
for ($alembicsPart in $alembicsParts){&lt;br /&gt;
    vrayCreateProxy -node $alembicsPart -existing -dir (&amp;quot;C:/YOURPATH/&amp;quot;+$alembicsPart+&amp;quot;.&amp;lt;frame04&amp;gt;.abc&amp;quot;) -createProxyNode;&lt;br /&gt;
    setAttr ($alembicsPart+&amp;quot;_vraymesh.animType&amp;quot;) 1;&lt;br /&gt;
    setAttr ($alembicsPart+&amp;quot;.scaleZ&amp;quot;) 100;&lt;br /&gt;
    setAttr ($alembicsPart+&amp;quot;.scaleX&amp;quot;) 100;&lt;br /&gt;
    setAttr ($alembicsPart+&amp;quot;.scaleY&amp;quot;) 100;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== V-ray - Change path to VRayMesh for selected proxies ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Change path with your own .vrmesh&lt;br /&gt;
$selected=`ls -type &amp;quot;VRayMesh&amp;quot;`;&lt;br /&gt;
for ($object in $selected){&lt;br /&gt;
    setAttr -type &amp;quot;string&amp;quot; ($object + &amp;quot;.fileName2&amp;quot;) &amp;quot;//DISK/PATH/YOUR_VRMESH.vrmesh&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// If you want to change Geometry type - 4 for GPU mesh - add following in the loop&lt;br /&gt;
//    setAttr ($object + &amp;quot;.geomType&amp;quot;) 4;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Delete image planes ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Delete image plane if exists.&lt;br /&gt;
$selected=`ls -type &amp;quot;imagePlane&amp;quot;`;&lt;br /&gt;
select $selected;&lt;br /&gt;
for ($object in $selected){&lt;br /&gt;
    doDelete;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Merge alembic from set ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select objects in a set called EXPORT_SET&lt;br /&gt;
select -r EXPORT_SET ;&lt;br /&gt;
timeControl -edit -forceRedraw $gPlayBackSlider;&lt;br /&gt;
&lt;br /&gt;
// Create list of objects from EXPORT_SET&lt;br /&gt;
string $assetParts[] = `ls -sl`;&lt;br /&gt;
$assetPartsList = stringArrayToString($assetParts,&amp;quot; &amp;quot;);&lt;br /&gt;
&lt;br /&gt;
// Merge alembic with these objects&lt;br /&gt;
AbcImport -mode import -connect $assetPartsList &amp;quot;//DISK/PATH/alembic.abc&amp;quot;;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Create Texture reference ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// CREATE TEXTURE REFERENCE ON EXPORT SET&lt;br /&gt;
&lt;br /&gt;
select -r YOUR_GROUP ;&lt;br /&gt;
CreateTextureReferenceObject;&lt;br /&gt;
select -cl  ;&lt;br /&gt;
&lt;br /&gt;
// REMOVE REFERENCE OBJECTS FROM EXPORT SET&lt;br /&gt;
select -r YOUR_GROUP_reference ;&lt;br /&gt;
string $selection[] = `ls -sl`;&lt;br /&gt;
string $polyGons[] = `filterExpand -sm 12 $selection`;&lt;br /&gt;
select -r $polyGons;&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    sets -rm EXPORT_SET $object;&lt;br /&gt;
}&lt;br /&gt;
select -cl  ;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Replace animated objects with V-Ray proxies ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// First select animated objects to replace&lt;br /&gt;
// For each object create a proxy then constrain then bake simulation then delete constraint&lt;br /&gt;
&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
	vrayCreateProxy -node assetName -existing -dir (&amp;quot;//DISK/PATH/your_asset.vrmesh&amp;quot;) -createProxyNode;&lt;br /&gt;
	select -r $object ;&lt;br /&gt;
	select -add assetName ;&lt;br /&gt;
	doCreateParentConstraintArgList 1 { &amp;quot;0&amp;quot;,&amp;quot;0&amp;quot;,&amp;quot;0&amp;quot;,&amp;quot;0&amp;quot;,&amp;quot;0&amp;quot;,&amp;quot;0&amp;quot;,&amp;quot;0&amp;quot;,&amp;quot;0&amp;quot;,&amp;quot;1&amp;quot;,&amp;quot;&amp;quot;,&amp;quot;1&amp;quot; };&lt;br /&gt;
	parentConstraint -weight 1;&lt;br /&gt;
	bakeResults -simulation true -t &amp;quot;1000:1100&amp;quot; -sampleBy 1 -oversamplingRate 1 -disableImplicitControl true -preserveOutsideKeys true -sparseAnimCurveBake false -removeBakedAttributeFromLayer false -removeBakedAnimFromLayer false -bakeOnOverrideLayer false -minimizeRotation true -controlPoints false -shape true {&amp;quot;assetName&amp;quot;};&lt;br /&gt;
	select `ls -type &amp;quot;constraint&amp;quot;`;&lt;br /&gt;
	select -add $object ;&lt;br /&gt;
	doDelete;&lt;br /&gt;
	select -cl  ;&lt;br /&gt;
	rename &amp;quot;assetName&amp;quot; $object;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Select all meshes in a group ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// From cmadsenAniden on forums.autodesk.com&lt;br /&gt;
// Replace group1 by the name of your own group&lt;br /&gt;
&lt;br /&gt;
select -r group1 ;&lt;br /&gt;
string $selection[] = `ls -sl`;&lt;br /&gt;
string $polyGons[] = `filterExpand -sm 12 $selection`;&lt;br /&gt;
select -r $polyGons;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Select shot camera ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// CREATE VARIABLE FOR SHOT CAMERA AND SELECT IT&lt;br /&gt;
&lt;br /&gt;
select `ls -type &amp;quot;camera&amp;quot;`;&lt;br /&gt;
select -d sideShape frontShape topShape perspShape;&lt;br /&gt;
$camerashot = `ls -sl`;&lt;br /&gt;
string $shotcamera = $camerashot[0];&lt;br /&gt;
print $shotcamera;&lt;br /&gt;
select $shotcamera;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Get list of frames with keys on all transform objects ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$selected=`ls -dag -et transform`;&lt;br /&gt;
&lt;br /&gt;
float $arrathy[] = `keyframe -query $selected`;&lt;br /&gt;
&lt;br /&gt;
float $sorted[] = python(&amp;quot;import pymel.core as pm; list(set((pm.getMelGlobal(\&amp;quot;float[]\&amp;quot;, \&amp;quot;$arrathy\&amp;quot;))))&amp;quot;);&lt;br /&gt;
print $sorted;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== MULTI SNAP ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Replace a list of objects by another with bake of animation. Replace FSTART and FEND with your own padding.&lt;br /&gt;
&lt;br /&gt;
///////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
///////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
/*&lt;br /&gt;
Type the command MS() in MEL form to open UI.&lt;br /&gt;
*/&lt;br /&gt;
///////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
///////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
source &amp;quot;generateChannelMenu.mel&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
global proc MS ()&lt;br /&gt;
{&lt;br /&gt;
     global string $sourceObjects;&lt;br /&gt;
     global string $destinationObjects;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    // If the window exists already, delete it.&lt;br /&gt;
    if (`window -exists multiSnapWindow`)&lt;br /&gt;
    {&lt;br /&gt;
        deleteUI multiSnapWindow;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    // Build the window.&lt;br /&gt;
    global string $man_window;&lt;br /&gt;
    string $man_window = `window -title &amp;quot; MULTI SNAP&amp;quot; -sizeable 0 -w 300 multiSnapWindow`;&lt;br /&gt;
    frameLayout -label &amp;quot;Snap source objects on destination objects.&amp;quot;;&lt;br /&gt;
    rowLayout -width 540 -nc 2 -cw4 10 20 20 100;&lt;br /&gt;
    // Source objects section&lt;br /&gt;
    frameLayout -label &amp;quot;Source objects&amp;quot;;&lt;br /&gt;
    $sourceObjects = `textScrollList -width 600 -height 300`;&lt;br /&gt;
    rowLayout -width 240 -nc 2 -cw2 120 120;&lt;br /&gt;
    button -label &amp;quot;Add selected&amp;quot; -command &amp;quot;MS_addObjects ();&amp;quot; -width 120;&lt;br /&gt;
    button -label &amp;quot;Remove selected&amp;quot; -command &amp;quot;MS_removeObjects ();&amp;quot; -width 120;&lt;br /&gt;
    setParent ..;&lt;br /&gt;
    rowLayout -width 240 -nc 2 -cw2 120 120;&lt;br /&gt;
    button -label &amp;quot;Remove All&amp;quot; -command &amp;quot;MS_clearObjects ();&amp;quot; -width 240;&lt;br /&gt;
    setParent ..;&lt;br /&gt;
    setParent ..;&lt;br /&gt;
    rowLayout -nc 3;&lt;br /&gt;
    button -label &amp;quot;Create&amp;quot; -command &amp;quot;VRAYCONNECDO() &amp;quot; -width 140 -align center;&lt;br /&gt;
    button -label &amp;quot;Close&amp;quot; -command &amp;quot;DAC_CloseUI() &amp;quot; -width 140 -align center;&lt;br /&gt;
    setParent ..;&lt;br /&gt;
    setParent ..;&lt;br /&gt;
    // Destination objects section&lt;br /&gt;
    frameLayout -label &amp;quot;Destination objects&amp;quot;;&lt;br /&gt;
    $destinationObjects = `textScrollList -width 600 -height 300`;&lt;br /&gt;
    rowLayout -width 240 -nc 2 -cw2 120 120;&lt;br /&gt;
    button -label &amp;quot;Add selected&amp;quot; -command &amp;quot;MS_addMM ();&amp;quot; -width 120;&lt;br /&gt;
    button -label &amp;quot;Remove selected&amp;quot; -command &amp;quot;MS_removeMM ();&amp;quot; -width 120;&lt;br /&gt;
    setParent ..;&lt;br /&gt;
    setParent ..;&lt;br /&gt;
    rowLayout -nc 3;&lt;br /&gt;
    button -label &amp;quot;SNAP IT&amp;quot; -command &amp;quot;VRAYCONNECDO() &amp;quot; -width 140 -align center;&lt;br /&gt;
    button -label &amp;quot;Close&amp;quot; -command &amp;quot;DAC_CloseUI() &amp;quot; -width 140 -align center;&lt;br /&gt;
    setParent ..;&lt;br /&gt;
    setParent ..;&lt;br /&gt;
&lt;br /&gt;
// Show the window.&lt;br /&gt;
showWindow multiSnapWindow;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
global proc string[] getShaders(string $from)&lt;br /&gt;
{&lt;br /&gt;
// get the shapes from the input&lt;br /&gt;
string $shapes[] = ls(&amp;quot;-o&amp;quot;, &amp;quot;-dag&amp;quot;, &amp;quot;-s&amp;quot;, $from);&lt;br /&gt;
// give me the connected &amp;quot;shadingEngines&amp;quot;&lt;br /&gt;
string $shadingEngines[] = listConnections(&amp;quot;-type&amp;quot;,&amp;quot;shadingEngine&amp;quot;, $shapes);&lt;br /&gt;
// list the connected materials (shaders) from that&lt;br /&gt;
string $materials[] = ls(&amp;quot;-mat&amp;quot;, listConnections($shadingEngines));&lt;br /&gt;
// remove duplicate occurrences.&lt;br /&gt;
return (stringArrayRemoveDuplicates($materials));&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
//Add selected objects to list.&lt;br /&gt;
global proc MS_addObjects ()&lt;br /&gt;
{&lt;br /&gt;
      global string $sourceObjects;&lt;br /&gt;
      string $selectedshapes[] = `ls -sl -l`;&lt;br /&gt;
      //print $selectedshapes;&lt;br /&gt;
      int $count = 0;&lt;br /&gt;
&lt;br /&gt;
if ($selectedshapes[0] != &amp;quot;&amp;quot;)&lt;br /&gt;
{&lt;br /&gt;
   for ($i in $selectedshapes)&lt;br /&gt;
   {&lt;br /&gt;
     $count ++;&lt;br /&gt;
     textScrollList -edit -append $i $sourceObjects;&lt;br /&gt;
   }&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
//Add selected objects to list.&lt;br /&gt;
global proc MS_addMM ()&lt;br /&gt;
{&lt;br /&gt;
      global string $destinationObjects;&lt;br /&gt;
      string $selectedshapes[] = `ls -sl -l`;&lt;br /&gt;
      //print $selectedshapes;&lt;br /&gt;
      int $count = 0;&lt;br /&gt;
&lt;br /&gt;
if ($selectedshapes[0] != &amp;quot;&amp;quot;)&lt;br /&gt;
{&lt;br /&gt;
   for ($i in $selectedshapes)&lt;br /&gt;
   {&lt;br /&gt;
     $count ++;&lt;br /&gt;
     textScrollList -edit -append $i $destinationObjects;&lt;br /&gt;
   }&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// Clear objects from list.&lt;br /&gt;
global proc MS_clearObjects ()&lt;br /&gt;
{&lt;br /&gt;
    global string $sourceObjects;&lt;br /&gt;
textScrollList -e -ra $sourceObjects;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// Remove selected object from list.&lt;br /&gt;
global proc MS_removeObjects ()&lt;br /&gt;
{&lt;br /&gt;
   global string $sourceObjects;&lt;br /&gt;
&lt;br /&gt;
    int $index [] = `textScrollList -query -selectIndexedItem $sourceObjects`;&lt;br /&gt;
    if ($index [0] != 0)&lt;br /&gt;
    {&lt;br /&gt;
        textScrollList -edit -removeIndexedItem $index [0] $sourceObjects;&lt;br /&gt;
    }&lt;br /&gt;
   global string $sourceObjects;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
global proc VRAYCONNECDO()&lt;br /&gt;
{&lt;br /&gt;
    // UI Elements&lt;br /&gt;
global string $sourceObjects;&lt;br /&gt;
global string $destinationObjects;&lt;br /&gt;
// Define user selected objects&lt;br /&gt;
string $selected_objects[] = `textScrollList -query -allItems $sourceObjects`;&lt;br /&gt;
string $meshMaterial[] = `textScrollList -query -allItems $destinationObjects`;&lt;br /&gt;
int $i = 0;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
// SET PADDING&lt;br /&gt;
string $FSTART = &amp;quot;1&amp;quot;;&lt;br /&gt;
string $FEND = &amp;quot;100&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
print $FSTART;&lt;br /&gt;
print $FEND;&lt;br /&gt;
&lt;br /&gt;
string $PADDING = $FSTART + &amp;quot;:&amp;quot; + $FEND;&lt;br /&gt;
&lt;br /&gt;
//Progress bar&lt;br /&gt;
global string $gMainProgressBar;&lt;br /&gt;
&lt;br /&gt;
// Start the progress bar and adjust its max value for this operation.&lt;br /&gt;
    int $steps = size($selected_objects);&lt;br /&gt;
    progressBar -edit -beginProgress -isInterruptable true -status &amp;quot;Connecting shaders to mesh material ...&amp;quot; -maxValue $steps $gMainProgressBar;&lt;br /&gt;
 &lt;br /&gt;
for ($i = 0; $i &amp;lt; size($selected_objects); $i ++)&lt;br /&gt;
{&lt;br /&gt;
        parentConstraint -n parentConstraintMS $selected_objects[$i] $meshMaterial[$i];&lt;br /&gt;
        select -r $meshMaterial[$i] ;&lt;br /&gt;
        bakeResults -simulation true -t $PADDING -sampleBy 1 -oversamplingRate 1 -disableImplicitControl true -preserveOutsideKeys true -sparseAnimCurveBake false -removeBakedAttributeFromLayer false -removeBakedAnimFromLayer false -bakeOnOverrideLayer false -minimizeRotation true -controlPoints false -shape true {$meshMaterial[$i]};&lt;br /&gt;
        select -cl  ;&lt;br /&gt;
        select -r &amp;quot;*parentConstraintMS*&amp;quot;;&lt;br /&gt;
        doDelete;&lt;br /&gt;
// Update the progress bar.&lt;br /&gt;
progressBar -edit -step 1 $gMainProgressBar;&lt;br /&gt;
}&lt;br /&gt;
// End the progress.&lt;br /&gt;
progressBar -edit -endProgress $gMainProgressBar;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Delete hidden objects ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select objects&lt;br /&gt;
&lt;br /&gt;
for ( $object in `ls -sl` ) {&lt;br /&gt;
    $vis = getAttr ($object+&amp;quot;.visibility&amp;quot;);&lt;br /&gt;
    if ($vis == 0){&lt;br /&gt;
        select -r $object ;&lt;br /&gt;
        doDelete ;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== V-Ray - BAKE MATERIALS ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Made to work also with mayabatch.exe&lt;br /&gt;
&lt;br /&gt;
////////////////////////////////////////////&lt;br /&gt;
// BAKE VRAY CUSTOM VARIABLES&lt;br /&gt;
////////////////////////////////////////////&lt;br /&gt;
&lt;br /&gt;
// ASSET PATH&lt;br /&gt;
string $assetFileType = &amp;quot;mayaBinary&amp;quot;;&lt;br /&gt;
string $assetPath = &amp;quot;C:/YOUR_PATH/YOUR_SURFACING_ASSET.mb&amp;quot;;&lt;br /&gt;
string $assetName = &amp;quot;ASSET_NAME&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
// LIGHT RIG PATH&lt;br /&gt;
string $lightRigFileType = &amp;quot;mayaAscii&amp;quot;;&lt;br /&gt;
string $lightRigPath = &amp;quot;C:/YOUR_PATH/YOUR_LIGHT_RIG.mb&amp;quot;;&lt;br /&gt;
string $lightRigName = &amp;quot;DAY_LIGHTING&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
// BAKED TEXTURES PATH&lt;br /&gt;
string $bakedTexturesPath = (&amp;quot;C:/YOUR_PATH/BAKED_TEXTURES/&amp;quot; + $assetName + &amp;quot;_&amp;quot; + $lightRigName + &amp;quot;_Bake&amp;quot;);&lt;br /&gt;
print $bakedTexturesPath;&lt;br /&gt;
&lt;br /&gt;
// SET RESOLUTION FOR BAKED MAPS&lt;br /&gt;
$resWidth = 4096;&lt;br /&gt;
$resHeight = $resWidth;&lt;br /&gt;
&lt;br /&gt;
// COLOR SPACE FOR FILE TEXTURES&lt;br /&gt;
string $fileColorSpace = &amp;quot;ACES - ACEScg&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
////////////////////////////////////////////&lt;br /&gt;
// END OF CUSTOM VARIABLES&lt;br /&gt;
////////////////////////////////////////////&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
////////////////////////////////////////////&lt;br /&gt;
// RENDER SETTINGS&lt;br /&gt;
&lt;br /&gt;
// Set File Name Prefix&lt;br /&gt;
setAttr -type &amp;quot;string&amp;quot; vraySettings.fileNamePrefix &amp;quot;&amp;lt;Scene&amp;gt;/&amp;lt;Layer&amp;gt;/&amp;lt;Camera&amp;gt;_&amp;lt;Layer&amp;gt;_&amp;lt;Scene&amp;gt;&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
// Set resolution&lt;br /&gt;
$resWidthHalf = $resWidth/2;&lt;br /&gt;
$resHeightHalf = $resHeight/2;&lt;br /&gt;
setAttr &amp;quot;vraySettings.width&amp;quot; $resWidthHalf;&lt;br /&gt;
setAttr &amp;quot;vraySettings.height&amp;quot; $resHeightHalf;&lt;br /&gt;
&lt;br /&gt;
// Set Persp camera renderable&lt;br /&gt;
setAttr &amp;quot;perspShape.renderable&amp;quot; 1;&lt;br /&gt;
&lt;br /&gt;
// Set Image format&lt;br /&gt;
setAttr -type &amp;quot;string&amp;quot; &amp;quot;vraySettings.imageFormatStr&amp;quot; &amp;quot;exr (multichannel)&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
// Set Animation type on Standard&lt;br /&gt;
setAttr &amp;quot;vraySettings.animType&amp;quot; 0;&lt;br /&gt;
setAttr &amp;quot;vraySettings.animBatchOnly&amp;quot; 1;&lt;br /&gt;
&lt;br /&gt;
// Sampler type Bucket&lt;br /&gt;
setAttr &amp;quot;vraySettings.samplerType&amp;quot; 4;&lt;br /&gt;
&lt;br /&gt;
// Min Shading Rate&lt;br /&gt;
//setAttr &amp;quot;vraySettings.minShadeRate&amp;quot; 4;&lt;br /&gt;
setAttr &amp;quot;vraySettings.minShadeRate&amp;quot; 7;&lt;br /&gt;
&lt;br /&gt;
// Buckets subdivs&lt;br /&gt;
//setAttr &amp;quot;vraySettings.dmcMinSubdivs&amp;quot; 1;&lt;br /&gt;
//setAttr &amp;quot;vraySettings.dmcMaxSubdivs&amp;quot; 8;&lt;br /&gt;
//setAttr &amp;quot;vraySettings.dmcThreshold&amp;quot; 0.1;&lt;br /&gt;
setAttr &amp;quot;vraySettings.dmcMinSubdivs&amp;quot; 1;&lt;br /&gt;
setAttr &amp;quot;vraySettings.dmcMaxSubdivs&amp;quot; 15;&lt;br /&gt;
setAttr &amp;quot;vraySettings.dmcThreshold&amp;quot; 0.01;&lt;br /&gt;
&lt;br /&gt;
// Color mapping Linear&lt;br /&gt;
setAttr &amp;quot;vraySettings.cmap_type&amp;quot; 0;&lt;br /&gt;
&lt;br /&gt;
// GI on&lt;br /&gt;
setAttr &amp;quot;vraySettings.giOn&amp;quot; 1;&lt;br /&gt;
//setAttr &amp;quot;vraySettings.subdivs&amp;quot; 400;&lt;br /&gt;
setAttr &amp;quot;vraySettings.subdivs&amp;quot; 1000;&lt;br /&gt;
&lt;br /&gt;
// Max subdivs&lt;br /&gt;
setAttr &amp;quot;vraySettings.ddisplac_maxSubdivs&amp;quot; 16;&lt;br /&gt;
&lt;br /&gt;
// Cache geometry and bitmaps&lt;br /&gt;
setAttr &amp;quot;vraySettings.globopt_cache_geom_plugins&amp;quot; 1;&lt;br /&gt;
setAttr &amp;quot;vraySettings.globopt_cache_bitmaps&amp;quot; 1;&lt;br /&gt;
&lt;br /&gt;
// Dynamic memory limit&lt;br /&gt;
setAttr &amp;quot;vraySettings.sys_rayc_dynMemLimit&amp;quot; 0;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
////////////////////////////////////////////&lt;br /&gt;
// IMPORT&lt;br /&gt;
&lt;br /&gt;
// IMPORT LIGHT RIG&lt;br /&gt;
file -import -type $lightRigFileType  -ignoreVersion -mergeNamespacesOnClash false -rpr &amp;quot;:&amp;quot; -options &amp;quot;v=0;&amp;quot; $lightRigPath;&lt;br /&gt;
&lt;br /&gt;
// IMPORT ASSET&lt;br /&gt;
file -import -type $assetFileType  -ignoreVersion -mergeNamespacesOnClash false -rpr &amp;quot;:&amp;quot; -options &amp;quot;v=0;&amp;quot; $assetPath;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
// CREATE SETS&lt;br /&gt;
select `ls -type &amp;quot;mesh&amp;quot;`;&lt;br /&gt;
sets -name &amp;quot;assetOriginal_Set&amp;quot; ;&lt;br /&gt;
duplicate -rr;&lt;br /&gt;
group -w -n (&amp;quot;GRP_&amp;quot; + $assetName + &amp;quot;_BAKE_&amp;quot; + `toupper $lightRigName`);&lt;br /&gt;
sets -name &amp;quot;assetBaked_Set&amp;quot; ;&lt;br /&gt;
&lt;br /&gt;
// REMOVE BAKED PARTS FROM ORIGINAL PARTS SET&lt;br /&gt;
select -r assetBaked_Set ;&lt;br /&gt;
string $selection[] = `ls -sl`;&lt;br /&gt;
string $polyGons[] = `filterExpand -sm 12 $selection`;&lt;br /&gt;
select -r $polyGons;&lt;br /&gt;
pickWalk -d down;&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    sets -rm assetOriginal_Set $object;&lt;br /&gt;
}&lt;br /&gt;
select -cl  ;&lt;br /&gt;
&lt;br /&gt;
// DELETE HIDDEN OBJECTS&lt;br /&gt;
select -r assetBaked_Set ;&lt;br /&gt;
string $selection[] = `ls -sl`;&lt;br /&gt;
string $polyGons[] = `filterExpand -sm 12 $selection`;&lt;br /&gt;
select -r $polyGons;&lt;br /&gt;
for ( $object in `ls -sl` ) {&lt;br /&gt;
    $vis = getAttr ($object+&amp;quot;.visibility&amp;quot;);&lt;br /&gt;
    if ($vis == 0){&lt;br /&gt;
        select -r $object ;&lt;br /&gt;
        doDelete ;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
select -cl  ;&lt;br /&gt;
&lt;br /&gt;
// fixShapeName - Thanks to Pinkwerks&lt;br /&gt;
global proc&lt;br /&gt;
fixShapeName()&lt;br /&gt;
{&lt;br /&gt;
    string $me = &amp;quot;fixShapeName&amp;quot;;&lt;br /&gt;
    string $shape;&lt;br /&gt;
    string $newShapeName;&lt;br /&gt;
    string $parent;&lt;br /&gt;
    string $tmpA[];&lt;br /&gt;
	string $selectedShapes[] = `ls -sl -l`;&lt;br /&gt;
    int $sizeOfShapes = `size $selectedShapes`;&lt;br /&gt;
&lt;br /&gt;
    if ( $sizeOfShapes == 0 )&lt;br /&gt;
    	error($me + &amp;quot; : Nothing shapes to process!&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
    for ( $shape in $selectedShapes )&lt;br /&gt;
    {&lt;br /&gt;
    	$tmpA = `listRelatives -p $shape`;&lt;br /&gt;
		$parent = $tmpA[0];&lt;br /&gt;
		$newShapeName = ($parent + &amp;quot;Shape&amp;quot;);&lt;br /&gt;
		rename $shape $newShapeName;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// APPLY FIXSHAPENAME TO BAKED ASSET PARTS&lt;br /&gt;
select -r assetBaked_Set ;&lt;br /&gt;
string $selection[] = `ls -sl`;&lt;br /&gt;
string $polyGons[] = `filterExpand -sm 12 $selection`;&lt;br /&gt;
select -r $polyGons;&lt;br /&gt;
pickWalk -d down;&lt;br /&gt;
fixShapeName();&lt;br /&gt;
select -cl  ;&lt;br /&gt;
&lt;br /&gt;
// DELETE OBJECTS WITHOUT UVS&lt;br /&gt;
select -r assetBaked_Set ;&lt;br /&gt;
string $selection[] = `ls -sl`;&lt;br /&gt;
string $polyGons[] = `filterExpand -sm 12 $selection`;&lt;br /&gt;
select -r $polyGons;&lt;br /&gt;
for ( $object in `ls -sl` ) {&lt;br /&gt;
    int $vertexCount[] = `polyEvaluate -uv $object`;&lt;br /&gt;
    print $vertexCount;&lt;br /&gt;
    string $uvCount = $vertexCount[0];&lt;br /&gt;
    if ($uvCount == 0){&lt;br /&gt;
        select -r $object ;&lt;br /&gt;
        doDelete ;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// CREATE VRAY BAKE OPTIONS&lt;br /&gt;
createNode &amp;quot;VRayBakeOptions&amp;quot; -n &amp;quot;vrayBakeOptions&amp;quot;;&lt;br /&gt;
select -r assetBaked_Set ;&lt;br /&gt;
string $selection[] = `ls -sl`;&lt;br /&gt;
string $polyGons[] = `filterExpand -sm 12 $selection`;&lt;br /&gt;
select -r $polyGons;&lt;br /&gt;
$selected=`ls -sl`;&lt;br /&gt;
for ($object in $selected){&lt;br /&gt;
    sets -edit -forceElement  vrayBakeOptions $object ;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// HIDE ORIGINAL ASSET&lt;br /&gt;
select -r assetOriginal_Set ;&lt;br /&gt;
pickWalk -d up;&lt;br /&gt;
hide `ls -sl`;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
// BAKE VRAY OPTIONS&lt;br /&gt;
setAttr &amp;quot;vrayBakeOptions.udimBaking&amp;quot; 1;&lt;br /&gt;
setAttr &amp;quot;vrayBakeOptions.resolutionX&amp;quot; $resWidth;&lt;br /&gt;
&lt;br /&gt;
optionVar -intValue &amp;quot;vrayBakeType&amp;quot; 2;&lt;br /&gt;
optionVar -intValue &amp;quot;vraySkipNodesWithoutBakeOptions&amp;quot; 1;&lt;br /&gt;
optionVar -intValue &amp;quot;vrayAssignBakedTextures&amp;quot; 1;&lt;br /&gt;
optionVar -stringValue &amp;quot;vrayBakeOutputPath&amp;quot; $bakedTexturesPath;&lt;br /&gt;
optionVar -intValue &amp;quot;vrayBakeProjectionBaking&amp;quot; 0;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
// GO BAKE GO&lt;br /&gt;
select -cl  ;&lt;br /&gt;
select -r assetBaked_Set ;&lt;br /&gt;
string $selection[] = `ls -sl`;&lt;br /&gt;
string $polyGons[] = `filterExpand -sm 12 $selection`;&lt;br /&gt;
select -r $polyGons;&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    vrayStartBake;&lt;br /&gt;
}&lt;br /&gt;
select -cl  ;&lt;br /&gt;
&lt;br /&gt;
// UV TILING UDIM AND ACES CG FOR FILES&lt;br /&gt;
for ( $object in `ls -type &amp;quot;file&amp;quot;` ) {&lt;br /&gt;
    setAttr ($object + &amp;quot;.filterType&amp;quot;) 0;&lt;br /&gt;
    setAttr ($object + &amp;quot;.uvTilingMode&amp;quot;) 3;&lt;br /&gt;
    setAttr ($object + &amp;quot;.cs&amp;quot;) -type &amp;quot;string&amp;quot; $fileColorSpace;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// CONNECT SHADERS&lt;br /&gt;
select -cl  ;&lt;br /&gt;
select -r assetBaked_Set ;&lt;br /&gt;
string $selection[] = `ls -sl`;&lt;br /&gt;
string $polyGons[] = `filterExpand -sm 12 $selection`;&lt;br /&gt;
for ( $object in $polyGons ) {&lt;br /&gt;
    string $shadingGroupName = ($object + &amp;quot;Shape_bakedmtlSG&amp;quot;);&lt;br /&gt;
    sets -e -forceElement $shadingGroupName $object;&lt;br /&gt;
}&lt;br /&gt;
select -cl  ;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
///////////////////////////////////&lt;br /&gt;
// SAVE&lt;br /&gt;
file -rename (&amp;quot;C:/YOUR_PATH/BAKED_ASSETS/&amp;quot; + $assetName + &amp;quot;_&amp;quot; + $lightRigName + &amp;quot;_BAKE_DEBUG.mb&amp;quot;);&lt;br /&gt;
file -f -save;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Arnold - Set all Standins display on Bouding box ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$selected=`ls -type &amp;quot;aiStandIn&amp;quot;`;&lt;br /&gt;
for ($object in $selected){&lt;br /&gt;
    setAttr ($object + &amp;quot;.mode&amp;quot;) 0;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Arnold - Set all Standins display on Point cloud ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$selected=`ls -type &amp;quot;aiStandIn&amp;quot;`;&lt;br /&gt;
for ($object in $selected){&lt;br /&gt;
    setAttr ($object + &amp;quot;.mode&amp;quot;) 4;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Alembic - Loop animation on all nodes ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$selected=`ls -type &amp;quot;AlembicNode&amp;quot;`;&lt;br /&gt;
for ($object in $selected){&lt;br /&gt;
    setAttr ($object + &amp;quot;.cycleType&amp;quot;) 1;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Mental Ray nodes error - Delete Mayatomr plugin ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
unknownPlugin -remove &amp;quot;Mayatomr&amp;quot;;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Delete Unknown nodes ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
select -r `ls -type unknown`;&lt;br /&gt;
delete;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Write text ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
string $exampleFileName = ( &amp;quot;D:/yolo.bat&amp;quot; );&lt;br /&gt;
string $linesToWrite[] = {&lt;br /&gt;
    &amp;quot;youpi&amp;quot;,&lt;br /&gt;
    &amp;quot;youhou&amp;quot;&lt;br /&gt;
    };&lt;br /&gt;
int $result = fwriteAllLines($exampleFileName,$linesToWrite);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Point Lock No Attach on selected follicles ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    setAttr ($object + &amp;quot;.pointLock&amp;quot;) 0;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Convert .ma cameras from Reality Capture into .abc files ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// List of assets&lt;br /&gt;
string $fileParts[] = {&amp;quot;asset_001&amp;quot;, &amp;quot;asset_002&amp;quot;};&lt;br /&gt;
&lt;br /&gt;
// Replace the PATH of your files&lt;br /&gt;
for ($filePart in $fileParts){&lt;br /&gt;
	string $fileName = $filePart + &amp;quot;_cam&amp;quot;;&lt;br /&gt;
	string $filePath = &amp;quot;//DISK/PATH/&amp;quot; + $filePart + &amp;quot;/&amp;quot; + $filePart +&amp;quot;_cam.ma&amp;quot;;&lt;br /&gt;
	file -import -type &amp;quot;mayaAscii&amp;quot;  -ignoreVersion -ra true -mergeNamespacesOnClash false -rpr $fileName -options &amp;quot;v=0;p=17;f=0&amp;quot;  -pr  -importFrameRate true  -importTimeRange &amp;quot;override&amp;quot; $filePath;&lt;br /&gt;
	select -cl;&lt;br /&gt;
	select `ls -type &amp;quot;imagePlane&amp;quot;`;&lt;br /&gt;
	pickWalk -d up;&lt;br /&gt;
	doDelete;&lt;br /&gt;
	select `ls -type &amp;quot;camera&amp;quot;`;&lt;br /&gt;
	pickWalk -d up;	&lt;br /&gt;
	string $abcPath = &amp;quot;//DISK/PATH/&amp;quot; + $filePart + &amp;quot;/&amp;quot; + $filePart +&amp;quot;_cam.abc&amp;quot;;&lt;br /&gt;
	string $abcExp = &amp;quot;-frameRange 1 1 -uvWrite -worldSpace -dataFormat ogawa -root |* -file &amp;quot; + $abcPath;&lt;br /&gt;
	AbcExport -j $abcExp;&lt;br /&gt;
	select -all;&lt;br /&gt;
	doDelete;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Combine objects ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select objects&lt;br /&gt;
&lt;br /&gt;
polyPerformAction polyUnite o 0; &lt;br /&gt;
DeleteHistory;&lt;br /&gt;
FreezeTransformations;&lt;br /&gt;
makeIdentity -apply true -t 1 -r 1 -s 1 -n 0 -pn 1;&lt;br /&gt;
CenterPivot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Unitize UVs (one square UV by face) ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select objects&lt;br /&gt;
&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    select -r ($object+&amp;quot;.e[*]&amp;quot;);&lt;br /&gt;
    hilite ($object+&amp;quot;.e[*]&amp;quot;) ;&lt;br /&gt;
    polyMapCut -ch 1 ($object+&amp;quot;.e[*]&amp;quot;);&lt;br /&gt;
    polyForceUV -unitize $object;&lt;br /&gt;
    select $object;&lt;br /&gt;
    DeleteHistory;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Unfold UVs ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select seams edges first&lt;br /&gt;
&lt;br /&gt;
invertSelection;&lt;br /&gt;
string $selectedEdges [] = `ls -sl`;&lt;br /&gt;
polyMapSewMove -nf 10 -lps 0 -ch 1 $selectedEdges;&lt;br /&gt;
select -r ($object+&amp;quot;.map[*]&amp;quot;);&lt;br /&gt;
u3dUnfold -ite 1 -p 0 -bi 1 -tf 1 -ms 1024 -rs 0 ($object+&amp;quot;.map[*]&amp;quot;);&lt;br /&gt;
u3dLayout -res 256 -scl 1 -spc 0.001 -mar 0.01 -box 0 1 0 1 $object;&lt;br /&gt;
select -cl;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Walter</name></author>
		
	</entry>
	<entry>
		<id>http://antoinevienne.fr/wiki/index.php?title=Maya_Mel&amp;diff=257</id>
		<title>Maya Mel</title>
		<link rel="alternate" type="text/html" href="http://antoinevienne.fr/wiki/index.php?title=Maya_Mel&amp;diff=257"/>
		<updated>2023-09-27T12:33:53Z</updated>

		<summary type="html">&lt;p&gt;Walter: /* Unfold UVs (one square UV by face) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Maya Mels Scripts=&lt;br /&gt;
=== Octane Render Baking group id - Assign id to multiple objects shapes ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// 0 is for Red, 2 for Green, 4 for Blue&lt;br /&gt;
// 3, 5 and 6 for Cyan, Magenta and Yellow&lt;br /&gt;
// Replace the number &amp;quot;0&amp;quot; by the number of your choice&lt;br /&gt;
// Baking group id is also avalaible in Attribute Spreadsheet Editor&lt;br /&gt;
&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    print($object+&amp;quot;\n&amp;quot;);&lt;br /&gt;
    setAttr ($object + &amp;quot;.octBakGrId&amp;quot;) (0);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Maxwell Render - Particles sequence - Force .abc file ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
//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&lt;br /&gt;
&lt;br /&gt;
global int $current_frame;&lt;br /&gt;
$current_frame = `currentTime -query`;&lt;br /&gt;
print $current_frame;&lt;br /&gt;
{&lt;br /&gt;
setAttr -type &amp;quot;string&amp;quot; maxwellRFRKParticles1.file (&amp;quot;/YOUR_PATH/YOUR_FILE&amp;quot; + $current_frame + &amp;quot;.abc&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Maxwell Render - Specify object ID color ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Specify object ID color&lt;br /&gt;
&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    print($object+&amp;quot;\n&amp;quot;);&lt;br /&gt;
    setAttr ($object + &amp;quot;.mxSpecifyObjIdColor&amp;quot;) (1);&lt;br /&gt;
    setAttr ($object + &amp;quot;.mxObjIdColor&amp;quot;) -type &amp;quot;double3&amp;quot; 1 0 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Redshift - Add blend attribute and set random value for objects selection ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Useful for blending between colors with RedshiftUserDataScalar&lt;br /&gt;
&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    print($object);&lt;br /&gt;
    addAttr -ln &amp;quot;blend&amp;quot; -at double  -min 0 -max 1 -dv 0 $object;&lt;br /&gt;
    setAttr ($object + &amp;quot;.blend&amp;quot;) (rand(1));&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Redshift - Set Primary visibility off for selection (layer override) ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Go in right render layer and select objects&lt;br /&gt;
&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    print($object+&amp;quot;\n&amp;quot;);&lt;br /&gt;
    setAttr ($object + &amp;quot;.rsEnableVisibilityOverrides&amp;quot;) (1);&lt;br /&gt;
    editRenderLayerAdjustment ($object + &amp;quot;.rsPrimaryRayVisible&amp;quot;);&lt;br /&gt;
    setAttr ($object + &amp;quot;.rsPrimaryRayVisible&amp;quot;) (0);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Convert Motion trail to curve ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select the motion trail first&lt;br /&gt;
&lt;br /&gt;
{&lt;br /&gt;
$selected=`ls -dag -et snapshotShape`;&lt;br /&gt;
for ($obj in $selected){&lt;br /&gt;
$pts=(getAttr($obj+&amp;quot;.pts&amp;quot;));&lt;br /&gt;
$size=size($pts);&lt;br /&gt;
$curve=`curve -d 1 -p $pts[0] $pts[1] $pts[2] -p $pts[4] $pts[5] $pts[6] -k 0 -k 1`;&lt;br /&gt;
for($i=8;$i&amp;lt;$size;$i+=4)&lt;br /&gt;
curve -os -a -p $pts[$i] $pts[$i+1] $pts[$i+2] $curve ;&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Quantize keyframes for selection ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Snap keys on frames for objects selection&lt;br /&gt;
&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    print($object+&amp;quot;\n&amp;quot;);&lt;br /&gt;
    snapKey $object;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Loop image sequence for texture ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// On File texture, check Image sequence, and edit expression&lt;br /&gt;
&lt;br /&gt;
file1.frameExtension=((frame%8)+1);&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Symmetrize - Duplicate &amp;amp; merge object ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select half object first&lt;br /&gt;
&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    print($object+&amp;quot;\n&amp;quot;);&lt;br /&gt;
    xform -piv 0 0 0 $object;&lt;br /&gt;
    duplicate -rr;&lt;br /&gt;
    setAttr ($object + &amp;quot;.scaleX&amp;quot;) (-1);&lt;br /&gt;
    select -add $object ;&lt;br /&gt;
    polyPerformAction polyUnite o 0;&lt;br /&gt;
    polyMergeVertex  -d 0.0001 -am 1 -ch 1;&lt;br /&gt;
    DeleteHistory;&lt;br /&gt;
    rename ($object);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Mirror object ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select object first&lt;br /&gt;
&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    print($object+&amp;quot;\n&amp;quot;);&lt;br /&gt;
    DeleteHistory;&lt;br /&gt;
    makeIdentity -apply true -t 1 -r 1 -s 1 -n 0 -pn 1;&lt;br /&gt;
    xform -piv 0 0 0 $object;&lt;br /&gt;
    duplicate -rr;&lt;br /&gt;
    setAttr ($object + &amp;quot;.scaleX&amp;quot;) (-1);&lt;br /&gt;
    DeleteHistory;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Group each object and rename ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select objects first&lt;br /&gt;
&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    string $name = ($object);&lt;br /&gt;
    select $object ;&lt;br /&gt;
    doGroup 0 1 1;&lt;br /&gt;
    rename ($name + &amp;quot;_GRP&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Change path in an Attribute ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Here the Attribute is &amp;quot;.filePrefix&amp;quot; - Select objects first&lt;br /&gt;
&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    string $path = getAttr ($object+&amp;quot;.filePrefix&amp;quot;);&lt;br /&gt;
    $path = `substitute &amp;quot;//OLD/PATH/&amp;quot; $path &amp;quot;//NEW/PATH/&amp;quot;`;&lt;br /&gt;
    setAttr -type &amp;quot;string&amp;quot; ($object+&amp;quot;.filePrefix&amp;quot;) ($path);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Change opacity mode on V-Ray shaders ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select shaders first&lt;br /&gt;
&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    if (attributeExists(&amp;quot;omode&amp;quot;,$object)) { //check if attribute exists&lt;br /&gt;
        CBunlockAttr ($object+&amp;quot;.omode&amp;quot;); //unlock opacity mode&lt;br /&gt;
    }&lt;br /&gt;
    if (attributeExists(&amp;quot;opacityMode&amp;quot;,$object)) {&lt;br /&gt;
        setAttr ($object+&amp;quot;.opacityMode&amp;quot;) 1; //set opacity mode in Clip - 0 pour Normal&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// Alternative&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    if (attributeExists(&amp;quot;opacityMode&amp;quot;,$object)) {&lt;br /&gt;
        setAttr ($object+&amp;quot;.opacityMode&amp;quot;) -l false; //unlock attribute if locked&lt;br /&gt;
    }&lt;br /&gt;
    if (attributeExists(&amp;quot;opacityMode&amp;quot;,$object)) {&lt;br /&gt;
        setAttr ($object+&amp;quot;.opacityMode&amp;quot;) 2; //set opacity mode in Clip - 0 pour Normal&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Change color space on selected fileTextures ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Useful to automatically convert Quixel Megascans by example from sRGB/Raw to ACES color spaces&lt;br /&gt;
&lt;br /&gt;
string $object_selection[] = (`ls -sl`);&lt;br /&gt;
for ($object in $object_selection) {&lt;br /&gt;
    if(`getAttr ($object+&amp;quot;.cs&amp;quot;)` == &amp;quot;sRGB&amp;quot;){&lt;br /&gt;
        setAttr ($object + &amp;quot;.cs&amp;quot;) -type &amp;quot;string&amp;quot; &amp;quot;Utility - sRGB - Texture&amp;quot;;&lt;br /&gt;
    }&lt;br /&gt;
    if(`getAttr ($object+&amp;quot;.cs&amp;quot;)` == &amp;quot;Raw&amp;quot;){&lt;br /&gt;
        setAttr ($object + &amp;quot;.cs&amp;quot;) -type &amp;quot;string&amp;quot; &amp;quot;Utility - Raw&amp;quot;;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Redshift - custom Tesselation on selected objects ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select objects first&lt;br /&gt;
&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    print($object+&amp;quot;\n&amp;quot;);&lt;br /&gt;
    setAttr ($object + &amp;quot;.rsMinTessellationLength&amp;quot;) (0.1);&lt;br /&gt;
    setAttr ($object + &amp;quot;.rsMaxTessellationSubdivs&amp;quot;) (2);&lt;br /&gt;
    setAttr ($object + &amp;quot;.rsOutOfFrustumTessellationFactor&amp;quot;) (4);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Change color on selected shaders ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select shaders first&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    print($object+&amp;quot;\n&amp;quot;);&lt;br /&gt;
    setAttr ($object + &amp;quot;.color&amp;quot;) -l false;&lt;br /&gt;
    setAttr ($object + &amp;quot;.color&amp;quot;) -type &amp;quot;double3&amp;quot; (0.18) (0.18) (0.18);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Change Filter Type on selected Files Textures ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select files textures first - 0 means Off&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    print($object+&amp;quot;\n&amp;quot;);&lt;br /&gt;
    setAttr ($object + &amp;quot;.filterType&amp;quot;) 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Clean Render Layers ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// In MEL&lt;br /&gt;
fixRenderLayerOutAdjustmentErrors;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Change Filter Type on selected Files Textures ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select files textures first - 0 means Off&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    print($object+&amp;quot;\n&amp;quot;);&lt;br /&gt;
    setAttr ($object + &amp;quot;.filterType&amp;quot;) 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Select by name ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select objects with &amp;quot;toto&amp;quot;&lt;br /&gt;
select -r &amp;quot;toto*&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Display color on shapes ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select objects&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    print($object+&amp;quot;\n&amp;quot;);&lt;br /&gt;
    setAttr ($object + &amp;quot;.displayColors&amp;quot;) 1;&lt;br /&gt;
    setDisplayColorChannelAttribute ($object + &amp;quot;.displayColorChannel&amp;quot;);&lt;br /&gt;
    polyColorPerVertex -r 1 -g 0 -b 0 -a 1 -cdo;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Geometry Constraint on multiple selection ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select objects to constrain&lt;br /&gt;
string $objectBase = &amp;quot;surfaceName&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    select -cl;&lt;br /&gt;
    select $objectBase;&lt;br /&gt;
    select -add $object;&lt;br /&gt;
    geometryConstraint -weight 1;&lt;br /&gt;
    select -r &amp;quot;*Constraint*&amp;quot;;&lt;br /&gt;
    doDelete;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
=== Speed up smokes rendering with V-Ray ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select smokes first&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    print($object+&amp;quot;\n&amp;quot;);&lt;br /&gt;
    setAttr ($object + &amp;quot;.rendStep&amp;quot;) 160;&lt;br /&gt;
    setAttr ($object + &amp;quot;.shadowStep&amp;quot;) 400;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Set bump multiplier on multiple V-Ray shaders ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select shaders&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    if (attributeExists(&amp;quot;bumpMult&amp;quot;,$object)) {&lt;br /&gt;
        setAttr ($object + &amp;quot;.bumpMult&amp;quot;) -1; //set bump multiplier at -1&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== STOP/START viewport ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// As seen on https://www.toadstorm.com/. - Put it in your shelf&lt;br /&gt;
paneLayout -e -manage false $gMainPane&lt;br /&gt;
&lt;br /&gt;
paneLayout -e -manage true $gMainPane&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Select curves by name ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select objects first - Replace &amp;quot;toto&amp;quot; by what you are looking for&lt;br /&gt;
&lt;br /&gt;
select `ls -type &amp;quot;nurbsCurve&amp;quot; &amp;quot;*toto*&amp;quot;`;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Noise expression ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Replace &amp;quot;pCube1&amp;quot;&lt;br /&gt;
&lt;br /&gt;
pCube1.translateX=sin(time*20)*0.01*noise(time*10);&lt;br /&gt;
pCube1.translateY=sin(time*4)*0.01*noise(time*10);&lt;br /&gt;
pCube1.translateZ=sin(time*12)*0.01*noise(time*10);&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== V-ray - Make curves renderables ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Replace VRayLightMtl1 at the end by your material&lt;br /&gt;
&lt;br /&gt;
$selected=`ls -dag -et curveShape`;&lt;br /&gt;
for ($object in $selected){&lt;br /&gt;
    // Add V-ray Extra attributes&lt;br /&gt;
    vray addAttributesFromGroup $object vray_nurbscurve_renderable 1;&lt;br /&gt;
    vrayAddAttr $object vraySeparator_vray_nurbscurve_renderable;&lt;br /&gt;
    vrayAddAttr $object vrayNurbsCurveRenderable;&lt;br /&gt;
    vrayAddAttr $object vrayNurbsCurveMaterial;&lt;br /&gt;
    vrayAddAttr $object vrayNurbsCurveTesselation;&lt;br /&gt;
    vrayAddAttr $object vrayNurbsCurveStartWidth;&lt;br /&gt;
    vrayAddAttr $object vrayNurbsCurveLockEndWidth;&lt;br /&gt;
    vrayAddAttr $object vrayNurbsCurveEndWidth;&lt;br /&gt;
    setUITemplate -pst attributeEditorTemplate;&lt;br /&gt;
// Activate renderable&lt;br /&gt;
setAttr ($object + &amp;quot;.vrayNurbsCurveRenderable&amp;quot;) 1;&lt;br /&gt;
// Replace VRayLightMtl1 by your material&lt;br /&gt;
connectAttr -force VRayLightMtl1.outColor ($object + &amp;quot;.vrayNurbsCurveMaterial&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Get object type ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Replace toto with the object whose type you want to know&lt;br /&gt;
&lt;br /&gt;
objectType toto;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Render layer override on specific object type ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Replace &amp;quot;Node&amp;quot; by the object type on which you want to act&lt;br /&gt;
&lt;br /&gt;
$selected=`ls -type &amp;quot;Node&amp;quot;`;&lt;br /&gt;
for ($object in $selected){&lt;br /&gt;
    // Create layer override on Primary Visibility attribute on current renderLayer&lt;br /&gt;
    editRenderLayerAdjustment ($object + &amp;quot;.primaryVisibility&amp;quot;);&lt;br /&gt;
    // Set Primary Visibility - 0 or 1&lt;br /&gt;
    setAttr ($object + &amp;quot;.primaryVisibility&amp;quot;) 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== V-ray - Make lights invisible ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$selected=`ls -type &amp;quot;VRayLightRectShape&amp;quot;`;&lt;br /&gt;
for ($object in $selected){&lt;br /&gt;
    setAttr ($object + &amp;quot;.invisible&amp;quot;) 1;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
$selected=`ls -type &amp;quot;VRayLightSphereShape&amp;quot;`;&lt;br /&gt;
for ($object in $selected){&lt;br /&gt;
    setAttr ($object + &amp;quot;.invisible&amp;quot;) 1;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
$selected=`ls -type &amp;quot;VRayLightDomeShape&amp;quot;`;&lt;br /&gt;
for ($object in $selected){&lt;br /&gt;
    setAttr ($object + &amp;quot;.invisible&amp;quot;) 1;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== V-ray - Select Rect Light ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
select `ls -type &amp;quot;VRayLightRectShape&amp;quot;`;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== V-ray - Rect Lights - Directional Preview - Always for all ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$selected=`ls -type &amp;quot;VRayLightRectShape&amp;quot;`;&lt;br /&gt;
for ($object in $selected){&lt;br /&gt;
    setAttr ($object + &amp;quot;.directionalPreview&amp;quot;) 1;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Randomize rotation on selected objects ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// As posted on CGTalk by NaughtyNathan&lt;br /&gt;
// &amp;quot;just set the vector values to the maximum random x,y,z rotations you want to apply to the selected transforms.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
vector $rndRot = &amp;lt;&amp;lt; 0,0,90 &amp;gt;&amp;gt;;	// x,y,z rotations&lt;br /&gt;
for ($object in `ls -sl -tr`){&lt;br /&gt;
    rotate `rand ($rndRot.x)` `rand ($rndRot.y)` `rand ($rndRot.z)` $object;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Quit Maya ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Brute force method&lt;br /&gt;
&lt;br /&gt;
$i = `getpid`; //application ID&lt;br /&gt;
    system(&amp;quot;taskkill /PID &amp;quot;  + $i +&amp;quot; /f&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
// In a gentle way&lt;br /&gt;
&lt;br /&gt;
evalDeferred(&amp;quot;quit -f&amp;quot;);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== V-ray - Import list of Alembics through Proxys Import ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// List of Alembics files - Replace by the name of your Alembics&lt;br /&gt;
string $alembicsParts[] = {&amp;quot;part1&amp;quot;,&amp;quot;part2&amp;quot;,&amp;quot;part3&amp;quot;};&lt;br /&gt;
&lt;br /&gt;
// Replace the PATH of your files - Scale by 100 for Houdini Alembics - &amp;lt;frame04&amp;gt; for sequences&lt;br /&gt;
for ($alembicsPart in $alembicsParts){&lt;br /&gt;
    vrayCreateProxy -node $alembicsPart -existing -dir (&amp;quot;C:/YOURPATH/&amp;quot;+$alembicsPart+&amp;quot;.&amp;lt;frame04&amp;gt;.abc&amp;quot;) -createProxyNode;&lt;br /&gt;
    setAttr ($alembicsPart+&amp;quot;_vraymesh.animType&amp;quot;) 1;&lt;br /&gt;
    setAttr ($alembicsPart+&amp;quot;.scaleZ&amp;quot;) 100;&lt;br /&gt;
    setAttr ($alembicsPart+&amp;quot;.scaleX&amp;quot;) 100;&lt;br /&gt;
    setAttr ($alembicsPart+&amp;quot;.scaleY&amp;quot;) 100;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== V-ray - Change path to VRayMesh for selected proxies ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Change path with your own .vrmesh&lt;br /&gt;
$selected=`ls -type &amp;quot;VRayMesh&amp;quot;`;&lt;br /&gt;
for ($object in $selected){&lt;br /&gt;
    setAttr -type &amp;quot;string&amp;quot; ($object + &amp;quot;.fileName2&amp;quot;) &amp;quot;//DISK/PATH/YOUR_VRMESH.vrmesh&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// If you want to change Geometry type - 4 for GPU mesh - add following in the loop&lt;br /&gt;
//    setAttr ($object + &amp;quot;.geomType&amp;quot;) 4;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Delete image planes ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Delete image plane if exists.&lt;br /&gt;
$selected=`ls -type &amp;quot;imagePlane&amp;quot;`;&lt;br /&gt;
select $selected;&lt;br /&gt;
for ($object in $selected){&lt;br /&gt;
    doDelete;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Merge alembic from set ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select objects in a set called EXPORT_SET&lt;br /&gt;
select -r EXPORT_SET ;&lt;br /&gt;
timeControl -edit -forceRedraw $gPlayBackSlider;&lt;br /&gt;
&lt;br /&gt;
// Create list of objects from EXPORT_SET&lt;br /&gt;
string $assetParts[] = `ls -sl`;&lt;br /&gt;
$assetPartsList = stringArrayToString($assetParts,&amp;quot; &amp;quot;);&lt;br /&gt;
&lt;br /&gt;
// Merge alembic with these objects&lt;br /&gt;
AbcImport -mode import -connect $assetPartsList &amp;quot;//DISK/PATH/alembic.abc&amp;quot;;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Create Texture reference ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// CREATE TEXTURE REFERENCE ON EXPORT SET&lt;br /&gt;
&lt;br /&gt;
select -r YOUR_GROUP ;&lt;br /&gt;
CreateTextureReferenceObject;&lt;br /&gt;
select -cl  ;&lt;br /&gt;
&lt;br /&gt;
// REMOVE REFERENCE OBJECTS FROM EXPORT SET&lt;br /&gt;
select -r YOUR_GROUP_reference ;&lt;br /&gt;
string $selection[] = `ls -sl`;&lt;br /&gt;
string $polyGons[] = `filterExpand -sm 12 $selection`;&lt;br /&gt;
select -r $polyGons;&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    sets -rm EXPORT_SET $object;&lt;br /&gt;
}&lt;br /&gt;
select -cl  ;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Replace animated objects with V-Ray proxies ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// First select animated objects to replace&lt;br /&gt;
// For each object create a proxy then constrain then bake simulation then delete constraint&lt;br /&gt;
&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
	vrayCreateProxy -node assetName -existing -dir (&amp;quot;//DISK/PATH/your_asset.vrmesh&amp;quot;) -createProxyNode;&lt;br /&gt;
	select -r $object ;&lt;br /&gt;
	select -add assetName ;&lt;br /&gt;
	doCreateParentConstraintArgList 1 { &amp;quot;0&amp;quot;,&amp;quot;0&amp;quot;,&amp;quot;0&amp;quot;,&amp;quot;0&amp;quot;,&amp;quot;0&amp;quot;,&amp;quot;0&amp;quot;,&amp;quot;0&amp;quot;,&amp;quot;0&amp;quot;,&amp;quot;1&amp;quot;,&amp;quot;&amp;quot;,&amp;quot;1&amp;quot; };&lt;br /&gt;
	parentConstraint -weight 1;&lt;br /&gt;
	bakeResults -simulation true -t &amp;quot;1000:1100&amp;quot; -sampleBy 1 -oversamplingRate 1 -disableImplicitControl true -preserveOutsideKeys true -sparseAnimCurveBake false -removeBakedAttributeFromLayer false -removeBakedAnimFromLayer false -bakeOnOverrideLayer false -minimizeRotation true -controlPoints false -shape true {&amp;quot;assetName&amp;quot;};&lt;br /&gt;
	select `ls -type &amp;quot;constraint&amp;quot;`;&lt;br /&gt;
	select -add $object ;&lt;br /&gt;
	doDelete;&lt;br /&gt;
	select -cl  ;&lt;br /&gt;
	rename &amp;quot;assetName&amp;quot; $object;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Select all meshes in a group ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// From cmadsenAniden on forums.autodesk.com&lt;br /&gt;
// Replace group1 by the name of your own group&lt;br /&gt;
&lt;br /&gt;
select -r group1 ;&lt;br /&gt;
string $selection[] = `ls -sl`;&lt;br /&gt;
string $polyGons[] = `filterExpand -sm 12 $selection`;&lt;br /&gt;
select -r $polyGons;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Select shot camera ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// CREATE VARIABLE FOR SHOT CAMERA AND SELECT IT&lt;br /&gt;
&lt;br /&gt;
select `ls -type &amp;quot;camera&amp;quot;`;&lt;br /&gt;
select -d sideShape frontShape topShape perspShape;&lt;br /&gt;
$camerashot = `ls -sl`;&lt;br /&gt;
string $shotcamera = $camerashot[0];&lt;br /&gt;
print $shotcamera;&lt;br /&gt;
select $shotcamera;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Get list of frames with keys on all transform objects ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$selected=`ls -dag -et transform`;&lt;br /&gt;
&lt;br /&gt;
float $arrathy[] = `keyframe -query $selected`;&lt;br /&gt;
&lt;br /&gt;
float $sorted[] = python(&amp;quot;import pymel.core as pm; list(set((pm.getMelGlobal(\&amp;quot;float[]\&amp;quot;, \&amp;quot;$arrathy\&amp;quot;))))&amp;quot;);&lt;br /&gt;
print $sorted;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== MULTI SNAP ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Replace a list of objects by another with bake of animation. Replace FSTART and FEND with your own padding.&lt;br /&gt;
&lt;br /&gt;
///////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
///////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
/*&lt;br /&gt;
Type the command MS() in MEL form to open UI.&lt;br /&gt;
*/&lt;br /&gt;
///////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
///////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
source &amp;quot;generateChannelMenu.mel&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
global proc MS ()&lt;br /&gt;
{&lt;br /&gt;
     global string $sourceObjects;&lt;br /&gt;
     global string $destinationObjects;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    // If the window exists already, delete it.&lt;br /&gt;
    if (`window -exists multiSnapWindow`)&lt;br /&gt;
    {&lt;br /&gt;
        deleteUI multiSnapWindow;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    // Build the window.&lt;br /&gt;
    global string $man_window;&lt;br /&gt;
    string $man_window = `window -title &amp;quot; MULTI SNAP&amp;quot; -sizeable 0 -w 300 multiSnapWindow`;&lt;br /&gt;
    frameLayout -label &amp;quot;Snap source objects on destination objects.&amp;quot;;&lt;br /&gt;
    rowLayout -width 540 -nc 2 -cw4 10 20 20 100;&lt;br /&gt;
    // Source objects section&lt;br /&gt;
    frameLayout -label &amp;quot;Source objects&amp;quot;;&lt;br /&gt;
    $sourceObjects = `textScrollList -width 600 -height 300`;&lt;br /&gt;
    rowLayout -width 240 -nc 2 -cw2 120 120;&lt;br /&gt;
    button -label &amp;quot;Add selected&amp;quot; -command &amp;quot;MS_addObjects ();&amp;quot; -width 120;&lt;br /&gt;
    button -label &amp;quot;Remove selected&amp;quot; -command &amp;quot;MS_removeObjects ();&amp;quot; -width 120;&lt;br /&gt;
    setParent ..;&lt;br /&gt;
    rowLayout -width 240 -nc 2 -cw2 120 120;&lt;br /&gt;
    button -label &amp;quot;Remove All&amp;quot; -command &amp;quot;MS_clearObjects ();&amp;quot; -width 240;&lt;br /&gt;
    setParent ..;&lt;br /&gt;
    setParent ..;&lt;br /&gt;
    rowLayout -nc 3;&lt;br /&gt;
    button -label &amp;quot;Create&amp;quot; -command &amp;quot;VRAYCONNECDO() &amp;quot; -width 140 -align center;&lt;br /&gt;
    button -label &amp;quot;Close&amp;quot; -command &amp;quot;DAC_CloseUI() &amp;quot; -width 140 -align center;&lt;br /&gt;
    setParent ..;&lt;br /&gt;
    setParent ..;&lt;br /&gt;
    // Destination objects section&lt;br /&gt;
    frameLayout -label &amp;quot;Destination objects&amp;quot;;&lt;br /&gt;
    $destinationObjects = `textScrollList -width 600 -height 300`;&lt;br /&gt;
    rowLayout -width 240 -nc 2 -cw2 120 120;&lt;br /&gt;
    button -label &amp;quot;Add selected&amp;quot; -command &amp;quot;MS_addMM ();&amp;quot; -width 120;&lt;br /&gt;
    button -label &amp;quot;Remove selected&amp;quot; -command &amp;quot;MS_removeMM ();&amp;quot; -width 120;&lt;br /&gt;
    setParent ..;&lt;br /&gt;
    setParent ..;&lt;br /&gt;
    rowLayout -nc 3;&lt;br /&gt;
    button -label &amp;quot;SNAP IT&amp;quot; -command &amp;quot;VRAYCONNECDO() &amp;quot; -width 140 -align center;&lt;br /&gt;
    button -label &amp;quot;Close&amp;quot; -command &amp;quot;DAC_CloseUI() &amp;quot; -width 140 -align center;&lt;br /&gt;
    setParent ..;&lt;br /&gt;
    setParent ..;&lt;br /&gt;
&lt;br /&gt;
// Show the window.&lt;br /&gt;
showWindow multiSnapWindow;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
global proc string[] getShaders(string $from)&lt;br /&gt;
{&lt;br /&gt;
// get the shapes from the input&lt;br /&gt;
string $shapes[] = ls(&amp;quot;-o&amp;quot;, &amp;quot;-dag&amp;quot;, &amp;quot;-s&amp;quot;, $from);&lt;br /&gt;
// give me the connected &amp;quot;shadingEngines&amp;quot;&lt;br /&gt;
string $shadingEngines[] = listConnections(&amp;quot;-type&amp;quot;,&amp;quot;shadingEngine&amp;quot;, $shapes);&lt;br /&gt;
// list the connected materials (shaders) from that&lt;br /&gt;
string $materials[] = ls(&amp;quot;-mat&amp;quot;, listConnections($shadingEngines));&lt;br /&gt;
// remove duplicate occurrences.&lt;br /&gt;
return (stringArrayRemoveDuplicates($materials));&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
//Add selected objects to list.&lt;br /&gt;
global proc MS_addObjects ()&lt;br /&gt;
{&lt;br /&gt;
      global string $sourceObjects;&lt;br /&gt;
      string $selectedshapes[] = `ls -sl -l`;&lt;br /&gt;
      //print $selectedshapes;&lt;br /&gt;
      int $count = 0;&lt;br /&gt;
&lt;br /&gt;
if ($selectedshapes[0] != &amp;quot;&amp;quot;)&lt;br /&gt;
{&lt;br /&gt;
   for ($i in $selectedshapes)&lt;br /&gt;
   {&lt;br /&gt;
     $count ++;&lt;br /&gt;
     textScrollList -edit -append $i $sourceObjects;&lt;br /&gt;
   }&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
//Add selected objects to list.&lt;br /&gt;
global proc MS_addMM ()&lt;br /&gt;
{&lt;br /&gt;
      global string $destinationObjects;&lt;br /&gt;
      string $selectedshapes[] = `ls -sl -l`;&lt;br /&gt;
      //print $selectedshapes;&lt;br /&gt;
      int $count = 0;&lt;br /&gt;
&lt;br /&gt;
if ($selectedshapes[0] != &amp;quot;&amp;quot;)&lt;br /&gt;
{&lt;br /&gt;
   for ($i in $selectedshapes)&lt;br /&gt;
   {&lt;br /&gt;
     $count ++;&lt;br /&gt;
     textScrollList -edit -append $i $destinationObjects;&lt;br /&gt;
   }&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// Clear objects from list.&lt;br /&gt;
global proc MS_clearObjects ()&lt;br /&gt;
{&lt;br /&gt;
    global string $sourceObjects;&lt;br /&gt;
textScrollList -e -ra $sourceObjects;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// Remove selected object from list.&lt;br /&gt;
global proc MS_removeObjects ()&lt;br /&gt;
{&lt;br /&gt;
   global string $sourceObjects;&lt;br /&gt;
&lt;br /&gt;
    int $index [] = `textScrollList -query -selectIndexedItem $sourceObjects`;&lt;br /&gt;
    if ($index [0] != 0)&lt;br /&gt;
    {&lt;br /&gt;
        textScrollList -edit -removeIndexedItem $index [0] $sourceObjects;&lt;br /&gt;
    }&lt;br /&gt;
   global string $sourceObjects;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
global proc VRAYCONNECDO()&lt;br /&gt;
{&lt;br /&gt;
    // UI Elements&lt;br /&gt;
global string $sourceObjects;&lt;br /&gt;
global string $destinationObjects;&lt;br /&gt;
// Define user selected objects&lt;br /&gt;
string $selected_objects[] = `textScrollList -query -allItems $sourceObjects`;&lt;br /&gt;
string $meshMaterial[] = `textScrollList -query -allItems $destinationObjects`;&lt;br /&gt;
int $i = 0;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
// SET PADDING&lt;br /&gt;
string $FSTART = &amp;quot;1&amp;quot;;&lt;br /&gt;
string $FEND = &amp;quot;100&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
print $FSTART;&lt;br /&gt;
print $FEND;&lt;br /&gt;
&lt;br /&gt;
string $PADDING = $FSTART + &amp;quot;:&amp;quot; + $FEND;&lt;br /&gt;
&lt;br /&gt;
//Progress bar&lt;br /&gt;
global string $gMainProgressBar;&lt;br /&gt;
&lt;br /&gt;
// Start the progress bar and adjust its max value for this operation.&lt;br /&gt;
    int $steps = size($selected_objects);&lt;br /&gt;
    progressBar -edit -beginProgress -isInterruptable true -status &amp;quot;Connecting shaders to mesh material ...&amp;quot; -maxValue $steps $gMainProgressBar;&lt;br /&gt;
 &lt;br /&gt;
for ($i = 0; $i &amp;lt; size($selected_objects); $i ++)&lt;br /&gt;
{&lt;br /&gt;
        parentConstraint -n parentConstraintMS $selected_objects[$i] $meshMaterial[$i];&lt;br /&gt;
        select -r $meshMaterial[$i] ;&lt;br /&gt;
        bakeResults -simulation true -t $PADDING -sampleBy 1 -oversamplingRate 1 -disableImplicitControl true -preserveOutsideKeys true -sparseAnimCurveBake false -removeBakedAttributeFromLayer false -removeBakedAnimFromLayer false -bakeOnOverrideLayer false -minimizeRotation true -controlPoints false -shape true {$meshMaterial[$i]};&lt;br /&gt;
        select -cl  ;&lt;br /&gt;
        select -r &amp;quot;*parentConstraintMS*&amp;quot;;&lt;br /&gt;
        doDelete;&lt;br /&gt;
// Update the progress bar.&lt;br /&gt;
progressBar -edit -step 1 $gMainProgressBar;&lt;br /&gt;
}&lt;br /&gt;
// End the progress.&lt;br /&gt;
progressBar -edit -endProgress $gMainProgressBar;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Delete hidden objects ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select objects&lt;br /&gt;
&lt;br /&gt;
for ( $object in `ls -sl` ) {&lt;br /&gt;
    $vis = getAttr ($object+&amp;quot;.visibility&amp;quot;);&lt;br /&gt;
    if ($vis == 0){&lt;br /&gt;
        select -r $object ;&lt;br /&gt;
        doDelete ;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== V-Ray - BAKE MATERIALS ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Made to work also with mayabatch.exe&lt;br /&gt;
&lt;br /&gt;
////////////////////////////////////////////&lt;br /&gt;
// BAKE VRAY CUSTOM VARIABLES&lt;br /&gt;
////////////////////////////////////////////&lt;br /&gt;
&lt;br /&gt;
// ASSET PATH&lt;br /&gt;
string $assetFileType = &amp;quot;mayaBinary&amp;quot;;&lt;br /&gt;
string $assetPath = &amp;quot;C:/YOUR_PATH/YOUR_SURFACING_ASSET.mb&amp;quot;;&lt;br /&gt;
string $assetName = &amp;quot;ASSET_NAME&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
// LIGHT RIG PATH&lt;br /&gt;
string $lightRigFileType = &amp;quot;mayaAscii&amp;quot;;&lt;br /&gt;
string $lightRigPath = &amp;quot;C:/YOUR_PATH/YOUR_LIGHT_RIG.mb&amp;quot;;&lt;br /&gt;
string $lightRigName = &amp;quot;DAY_LIGHTING&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
// BAKED TEXTURES PATH&lt;br /&gt;
string $bakedTexturesPath = (&amp;quot;C:/YOUR_PATH/BAKED_TEXTURES/&amp;quot; + $assetName + &amp;quot;_&amp;quot; + $lightRigName + &amp;quot;_Bake&amp;quot;);&lt;br /&gt;
print $bakedTexturesPath;&lt;br /&gt;
&lt;br /&gt;
// SET RESOLUTION FOR BAKED MAPS&lt;br /&gt;
$resWidth = 4096;&lt;br /&gt;
$resHeight = $resWidth;&lt;br /&gt;
&lt;br /&gt;
// COLOR SPACE FOR FILE TEXTURES&lt;br /&gt;
string $fileColorSpace = &amp;quot;ACES - ACEScg&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
////////////////////////////////////////////&lt;br /&gt;
// END OF CUSTOM VARIABLES&lt;br /&gt;
////////////////////////////////////////////&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
////////////////////////////////////////////&lt;br /&gt;
// RENDER SETTINGS&lt;br /&gt;
&lt;br /&gt;
// Set File Name Prefix&lt;br /&gt;
setAttr -type &amp;quot;string&amp;quot; vraySettings.fileNamePrefix &amp;quot;&amp;lt;Scene&amp;gt;/&amp;lt;Layer&amp;gt;/&amp;lt;Camera&amp;gt;_&amp;lt;Layer&amp;gt;_&amp;lt;Scene&amp;gt;&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
// Set resolution&lt;br /&gt;
$resWidthHalf = $resWidth/2;&lt;br /&gt;
$resHeightHalf = $resHeight/2;&lt;br /&gt;
setAttr &amp;quot;vraySettings.width&amp;quot; $resWidthHalf;&lt;br /&gt;
setAttr &amp;quot;vraySettings.height&amp;quot; $resHeightHalf;&lt;br /&gt;
&lt;br /&gt;
// Set Persp camera renderable&lt;br /&gt;
setAttr &amp;quot;perspShape.renderable&amp;quot; 1;&lt;br /&gt;
&lt;br /&gt;
// Set Image format&lt;br /&gt;
setAttr -type &amp;quot;string&amp;quot; &amp;quot;vraySettings.imageFormatStr&amp;quot; &amp;quot;exr (multichannel)&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
// Set Animation type on Standard&lt;br /&gt;
setAttr &amp;quot;vraySettings.animType&amp;quot; 0;&lt;br /&gt;
setAttr &amp;quot;vraySettings.animBatchOnly&amp;quot; 1;&lt;br /&gt;
&lt;br /&gt;
// Sampler type Bucket&lt;br /&gt;
setAttr &amp;quot;vraySettings.samplerType&amp;quot; 4;&lt;br /&gt;
&lt;br /&gt;
// Min Shading Rate&lt;br /&gt;
//setAttr &amp;quot;vraySettings.minShadeRate&amp;quot; 4;&lt;br /&gt;
setAttr &amp;quot;vraySettings.minShadeRate&amp;quot; 7;&lt;br /&gt;
&lt;br /&gt;
// Buckets subdivs&lt;br /&gt;
//setAttr &amp;quot;vraySettings.dmcMinSubdivs&amp;quot; 1;&lt;br /&gt;
//setAttr &amp;quot;vraySettings.dmcMaxSubdivs&amp;quot; 8;&lt;br /&gt;
//setAttr &amp;quot;vraySettings.dmcThreshold&amp;quot; 0.1;&lt;br /&gt;
setAttr &amp;quot;vraySettings.dmcMinSubdivs&amp;quot; 1;&lt;br /&gt;
setAttr &amp;quot;vraySettings.dmcMaxSubdivs&amp;quot; 15;&lt;br /&gt;
setAttr &amp;quot;vraySettings.dmcThreshold&amp;quot; 0.01;&lt;br /&gt;
&lt;br /&gt;
// Color mapping Linear&lt;br /&gt;
setAttr &amp;quot;vraySettings.cmap_type&amp;quot; 0;&lt;br /&gt;
&lt;br /&gt;
// GI on&lt;br /&gt;
setAttr &amp;quot;vraySettings.giOn&amp;quot; 1;&lt;br /&gt;
//setAttr &amp;quot;vraySettings.subdivs&amp;quot; 400;&lt;br /&gt;
setAttr &amp;quot;vraySettings.subdivs&amp;quot; 1000;&lt;br /&gt;
&lt;br /&gt;
// Max subdivs&lt;br /&gt;
setAttr &amp;quot;vraySettings.ddisplac_maxSubdivs&amp;quot; 16;&lt;br /&gt;
&lt;br /&gt;
// Cache geometry and bitmaps&lt;br /&gt;
setAttr &amp;quot;vraySettings.globopt_cache_geom_plugins&amp;quot; 1;&lt;br /&gt;
setAttr &amp;quot;vraySettings.globopt_cache_bitmaps&amp;quot; 1;&lt;br /&gt;
&lt;br /&gt;
// Dynamic memory limit&lt;br /&gt;
setAttr &amp;quot;vraySettings.sys_rayc_dynMemLimit&amp;quot; 0;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
////////////////////////////////////////////&lt;br /&gt;
// IMPORT&lt;br /&gt;
&lt;br /&gt;
// IMPORT LIGHT RIG&lt;br /&gt;
file -import -type $lightRigFileType  -ignoreVersion -mergeNamespacesOnClash false -rpr &amp;quot;:&amp;quot; -options &amp;quot;v=0;&amp;quot; $lightRigPath;&lt;br /&gt;
&lt;br /&gt;
// IMPORT ASSET&lt;br /&gt;
file -import -type $assetFileType  -ignoreVersion -mergeNamespacesOnClash false -rpr &amp;quot;:&amp;quot; -options &amp;quot;v=0;&amp;quot; $assetPath;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
// CREATE SETS&lt;br /&gt;
select `ls -type &amp;quot;mesh&amp;quot;`;&lt;br /&gt;
sets -name &amp;quot;assetOriginal_Set&amp;quot; ;&lt;br /&gt;
duplicate -rr;&lt;br /&gt;
group -w -n (&amp;quot;GRP_&amp;quot; + $assetName + &amp;quot;_BAKE_&amp;quot; + `toupper $lightRigName`);&lt;br /&gt;
sets -name &amp;quot;assetBaked_Set&amp;quot; ;&lt;br /&gt;
&lt;br /&gt;
// REMOVE BAKED PARTS FROM ORIGINAL PARTS SET&lt;br /&gt;
select -r assetBaked_Set ;&lt;br /&gt;
string $selection[] = `ls -sl`;&lt;br /&gt;
string $polyGons[] = `filterExpand -sm 12 $selection`;&lt;br /&gt;
select -r $polyGons;&lt;br /&gt;
pickWalk -d down;&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    sets -rm assetOriginal_Set $object;&lt;br /&gt;
}&lt;br /&gt;
select -cl  ;&lt;br /&gt;
&lt;br /&gt;
// DELETE HIDDEN OBJECTS&lt;br /&gt;
select -r assetBaked_Set ;&lt;br /&gt;
string $selection[] = `ls -sl`;&lt;br /&gt;
string $polyGons[] = `filterExpand -sm 12 $selection`;&lt;br /&gt;
select -r $polyGons;&lt;br /&gt;
for ( $object in `ls -sl` ) {&lt;br /&gt;
    $vis = getAttr ($object+&amp;quot;.visibility&amp;quot;);&lt;br /&gt;
    if ($vis == 0){&lt;br /&gt;
        select -r $object ;&lt;br /&gt;
        doDelete ;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
select -cl  ;&lt;br /&gt;
&lt;br /&gt;
// fixShapeName - Thanks to Pinkwerks&lt;br /&gt;
global proc&lt;br /&gt;
fixShapeName()&lt;br /&gt;
{&lt;br /&gt;
    string $me = &amp;quot;fixShapeName&amp;quot;;&lt;br /&gt;
    string $shape;&lt;br /&gt;
    string $newShapeName;&lt;br /&gt;
    string $parent;&lt;br /&gt;
    string $tmpA[];&lt;br /&gt;
	string $selectedShapes[] = `ls -sl -l`;&lt;br /&gt;
    int $sizeOfShapes = `size $selectedShapes`;&lt;br /&gt;
&lt;br /&gt;
    if ( $sizeOfShapes == 0 )&lt;br /&gt;
    	error($me + &amp;quot; : Nothing shapes to process!&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
    for ( $shape in $selectedShapes )&lt;br /&gt;
    {&lt;br /&gt;
    	$tmpA = `listRelatives -p $shape`;&lt;br /&gt;
		$parent = $tmpA[0];&lt;br /&gt;
		$newShapeName = ($parent + &amp;quot;Shape&amp;quot;);&lt;br /&gt;
		rename $shape $newShapeName;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// APPLY FIXSHAPENAME TO BAKED ASSET PARTS&lt;br /&gt;
select -r assetBaked_Set ;&lt;br /&gt;
string $selection[] = `ls -sl`;&lt;br /&gt;
string $polyGons[] = `filterExpand -sm 12 $selection`;&lt;br /&gt;
select -r $polyGons;&lt;br /&gt;
pickWalk -d down;&lt;br /&gt;
fixShapeName();&lt;br /&gt;
select -cl  ;&lt;br /&gt;
&lt;br /&gt;
// DELETE OBJECTS WITHOUT UVS&lt;br /&gt;
select -r assetBaked_Set ;&lt;br /&gt;
string $selection[] = `ls -sl`;&lt;br /&gt;
string $polyGons[] = `filterExpand -sm 12 $selection`;&lt;br /&gt;
select -r $polyGons;&lt;br /&gt;
for ( $object in `ls -sl` ) {&lt;br /&gt;
    int $vertexCount[] = `polyEvaluate -uv $object`;&lt;br /&gt;
    print $vertexCount;&lt;br /&gt;
    string $uvCount = $vertexCount[0];&lt;br /&gt;
    if ($uvCount == 0){&lt;br /&gt;
        select -r $object ;&lt;br /&gt;
        doDelete ;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// CREATE VRAY BAKE OPTIONS&lt;br /&gt;
createNode &amp;quot;VRayBakeOptions&amp;quot; -n &amp;quot;vrayBakeOptions&amp;quot;;&lt;br /&gt;
select -r assetBaked_Set ;&lt;br /&gt;
string $selection[] = `ls -sl`;&lt;br /&gt;
string $polyGons[] = `filterExpand -sm 12 $selection`;&lt;br /&gt;
select -r $polyGons;&lt;br /&gt;
$selected=`ls -sl`;&lt;br /&gt;
for ($object in $selected){&lt;br /&gt;
    sets -edit -forceElement  vrayBakeOptions $object ;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// HIDE ORIGINAL ASSET&lt;br /&gt;
select -r assetOriginal_Set ;&lt;br /&gt;
pickWalk -d up;&lt;br /&gt;
hide `ls -sl`;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
// BAKE VRAY OPTIONS&lt;br /&gt;
setAttr &amp;quot;vrayBakeOptions.udimBaking&amp;quot; 1;&lt;br /&gt;
setAttr &amp;quot;vrayBakeOptions.resolutionX&amp;quot; $resWidth;&lt;br /&gt;
&lt;br /&gt;
optionVar -intValue &amp;quot;vrayBakeType&amp;quot; 2;&lt;br /&gt;
optionVar -intValue &amp;quot;vraySkipNodesWithoutBakeOptions&amp;quot; 1;&lt;br /&gt;
optionVar -intValue &amp;quot;vrayAssignBakedTextures&amp;quot; 1;&lt;br /&gt;
optionVar -stringValue &amp;quot;vrayBakeOutputPath&amp;quot; $bakedTexturesPath;&lt;br /&gt;
optionVar -intValue &amp;quot;vrayBakeProjectionBaking&amp;quot; 0;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
// GO BAKE GO&lt;br /&gt;
select -cl  ;&lt;br /&gt;
select -r assetBaked_Set ;&lt;br /&gt;
string $selection[] = `ls -sl`;&lt;br /&gt;
string $polyGons[] = `filterExpand -sm 12 $selection`;&lt;br /&gt;
select -r $polyGons;&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    vrayStartBake;&lt;br /&gt;
}&lt;br /&gt;
select -cl  ;&lt;br /&gt;
&lt;br /&gt;
// UV TILING UDIM AND ACES CG FOR FILES&lt;br /&gt;
for ( $object in `ls -type &amp;quot;file&amp;quot;` ) {&lt;br /&gt;
    setAttr ($object + &amp;quot;.filterType&amp;quot;) 0;&lt;br /&gt;
    setAttr ($object + &amp;quot;.uvTilingMode&amp;quot;) 3;&lt;br /&gt;
    setAttr ($object + &amp;quot;.cs&amp;quot;) -type &amp;quot;string&amp;quot; $fileColorSpace;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// CONNECT SHADERS&lt;br /&gt;
select -cl  ;&lt;br /&gt;
select -r assetBaked_Set ;&lt;br /&gt;
string $selection[] = `ls -sl`;&lt;br /&gt;
string $polyGons[] = `filterExpand -sm 12 $selection`;&lt;br /&gt;
for ( $object in $polyGons ) {&lt;br /&gt;
    string $shadingGroupName = ($object + &amp;quot;Shape_bakedmtlSG&amp;quot;);&lt;br /&gt;
    sets -e -forceElement $shadingGroupName $object;&lt;br /&gt;
}&lt;br /&gt;
select -cl  ;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
///////////////////////////////////&lt;br /&gt;
// SAVE&lt;br /&gt;
file -rename (&amp;quot;C:/YOUR_PATH/BAKED_ASSETS/&amp;quot; + $assetName + &amp;quot;_&amp;quot; + $lightRigName + &amp;quot;_BAKE_DEBUG.mb&amp;quot;);&lt;br /&gt;
file -f -save;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Arnold - Set all Standins display on Bouding box ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$selected=`ls -type &amp;quot;aiStandIn&amp;quot;`;&lt;br /&gt;
for ($object in $selected){&lt;br /&gt;
    setAttr ($object + &amp;quot;.mode&amp;quot;) 0;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Arnold - Set all Standins display on Point cloud ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$selected=`ls -type &amp;quot;aiStandIn&amp;quot;`;&lt;br /&gt;
for ($object in $selected){&lt;br /&gt;
    setAttr ($object + &amp;quot;.mode&amp;quot;) 4;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Alembic - Loop animation on all nodes ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$selected=`ls -type &amp;quot;AlembicNode&amp;quot;`;&lt;br /&gt;
for ($object in $selected){&lt;br /&gt;
    setAttr ($object + &amp;quot;.cycleType&amp;quot;) 1;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Mental Ray nodes error - Delete Mayatomr plugin ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
unknownPlugin -remove &amp;quot;Mayatomr&amp;quot;;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Delete Unknown nodes ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
select -r `ls -type unknown`;&lt;br /&gt;
delete;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Write text ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
string $exampleFileName = ( &amp;quot;D:/yolo.bat&amp;quot; );&lt;br /&gt;
string $linesToWrite[] = {&lt;br /&gt;
    &amp;quot;youpi&amp;quot;,&lt;br /&gt;
    &amp;quot;youhou&amp;quot;&lt;br /&gt;
    };&lt;br /&gt;
int $result = fwriteAllLines($exampleFileName,$linesToWrite);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Point Lock No Attach on selected follicles ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    setAttr ($object + &amp;quot;.pointLock&amp;quot;) 0;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Convert .ma cameras from Reality Capture into .abc files ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// List of assets&lt;br /&gt;
string $fileParts[] = {&amp;quot;asset_001&amp;quot;, &amp;quot;asset_002&amp;quot;};&lt;br /&gt;
&lt;br /&gt;
// Replace the PATH of your files&lt;br /&gt;
for ($filePart in $fileParts){&lt;br /&gt;
	string $fileName = $filePart + &amp;quot;_cam&amp;quot;;&lt;br /&gt;
	string $filePath = &amp;quot;//DISK/PATH/&amp;quot; + $filePart + &amp;quot;/&amp;quot; + $filePart +&amp;quot;_cam.ma&amp;quot;;&lt;br /&gt;
	file -import -type &amp;quot;mayaAscii&amp;quot;  -ignoreVersion -ra true -mergeNamespacesOnClash false -rpr $fileName -options &amp;quot;v=0;p=17;f=0&amp;quot;  -pr  -importFrameRate true  -importTimeRange &amp;quot;override&amp;quot; $filePath;&lt;br /&gt;
	select -cl;&lt;br /&gt;
	select `ls -type &amp;quot;imagePlane&amp;quot;`;&lt;br /&gt;
	pickWalk -d up;&lt;br /&gt;
	doDelete;&lt;br /&gt;
	select `ls -type &amp;quot;camera&amp;quot;`;&lt;br /&gt;
	pickWalk -d up;	&lt;br /&gt;
	string $abcPath = &amp;quot;//DISK/PATH/&amp;quot; + $filePart + &amp;quot;/&amp;quot; + $filePart +&amp;quot;_cam.abc&amp;quot;;&lt;br /&gt;
	string $abcExp = &amp;quot;-frameRange 1 1 -uvWrite -worldSpace -dataFormat ogawa -root |* -file &amp;quot; + $abcPath;&lt;br /&gt;
	AbcExport -j $abcExp;&lt;br /&gt;
	select -all;&lt;br /&gt;
	doDelete;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Combine objects ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select objects&lt;br /&gt;
&lt;br /&gt;
polyPerformAction polyUnite o 0; &lt;br /&gt;
DeleteHistory;&lt;br /&gt;
FreezeTransformations;&lt;br /&gt;
makeIdentity -apply true -t 1 -r 1 -s 1 -n 0 -pn 1;&lt;br /&gt;
CenterPivot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Unitize UVs (one square UV by face) ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select objects&lt;br /&gt;
&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    select -r ($object+&amp;quot;.e[*]&amp;quot;);&lt;br /&gt;
    hilite ($object+&amp;quot;.e[*]&amp;quot;) ;&lt;br /&gt;
    polyMapCut -ch 1 ($object+&amp;quot;.e[*]&amp;quot;);&lt;br /&gt;
    polyForceUV -unitize $object;&lt;br /&gt;
    select $object;&lt;br /&gt;
    DeleteHistory;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Unfold UVs (one square UV by face) ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select seams edges first&lt;br /&gt;
&lt;br /&gt;
invertSelection;&lt;br /&gt;
string $selectedEdges [] = `ls -sl`;&lt;br /&gt;
polyMapSewMove -nf 10 -lps 0 -ch 1 $selectedEdges;&lt;br /&gt;
select -r ($object+&amp;quot;.map[*]&amp;quot;);&lt;br /&gt;
u3dUnfold -ite 1 -p 0 -bi 1 -tf 1 -ms 1024 -rs 0 ($object+&amp;quot;.map[*]&amp;quot;);&lt;br /&gt;
u3dLayout -res 256 -scl 1 -spc 0.001 -mar 0.01 -box 0 1 0 1 $object;&lt;br /&gt;
select -cl;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Walter</name></author>
		
	</entry>
	<entry>
		<id>http://antoinevienne.fr/wiki/index.php?title=Maya_Mel&amp;diff=256</id>
		<title>Maya Mel</title>
		<link rel="alternate" type="text/html" href="http://antoinevienne.fr/wiki/index.php?title=Maya_Mel&amp;diff=256"/>
		<updated>2023-09-27T12:33:43Z</updated>

		<summary type="html">&lt;p&gt;Walter: /* Unitize UVs (one square UV by face) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Maya Mels Scripts=&lt;br /&gt;
=== Octane Render Baking group id - Assign id to multiple objects shapes ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// 0 is for Red, 2 for Green, 4 for Blue&lt;br /&gt;
// 3, 5 and 6 for Cyan, Magenta and Yellow&lt;br /&gt;
// Replace the number &amp;quot;0&amp;quot; by the number of your choice&lt;br /&gt;
// Baking group id is also avalaible in Attribute Spreadsheet Editor&lt;br /&gt;
&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    print($object+&amp;quot;\n&amp;quot;);&lt;br /&gt;
    setAttr ($object + &amp;quot;.octBakGrId&amp;quot;) (0);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Maxwell Render - Particles sequence - Force .abc file ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
//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&lt;br /&gt;
&lt;br /&gt;
global int $current_frame;&lt;br /&gt;
$current_frame = `currentTime -query`;&lt;br /&gt;
print $current_frame;&lt;br /&gt;
{&lt;br /&gt;
setAttr -type &amp;quot;string&amp;quot; maxwellRFRKParticles1.file (&amp;quot;/YOUR_PATH/YOUR_FILE&amp;quot; + $current_frame + &amp;quot;.abc&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Maxwell Render - Specify object ID color ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Specify object ID color&lt;br /&gt;
&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    print($object+&amp;quot;\n&amp;quot;);&lt;br /&gt;
    setAttr ($object + &amp;quot;.mxSpecifyObjIdColor&amp;quot;) (1);&lt;br /&gt;
    setAttr ($object + &amp;quot;.mxObjIdColor&amp;quot;) -type &amp;quot;double3&amp;quot; 1 0 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Redshift - Add blend attribute and set random value for objects selection ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Useful for blending between colors with RedshiftUserDataScalar&lt;br /&gt;
&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    print($object);&lt;br /&gt;
    addAttr -ln &amp;quot;blend&amp;quot; -at double  -min 0 -max 1 -dv 0 $object;&lt;br /&gt;
    setAttr ($object + &amp;quot;.blend&amp;quot;) (rand(1));&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Redshift - Set Primary visibility off for selection (layer override) ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Go in right render layer and select objects&lt;br /&gt;
&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    print($object+&amp;quot;\n&amp;quot;);&lt;br /&gt;
    setAttr ($object + &amp;quot;.rsEnableVisibilityOverrides&amp;quot;) (1);&lt;br /&gt;
    editRenderLayerAdjustment ($object + &amp;quot;.rsPrimaryRayVisible&amp;quot;);&lt;br /&gt;
    setAttr ($object + &amp;quot;.rsPrimaryRayVisible&amp;quot;) (0);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Convert Motion trail to curve ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select the motion trail first&lt;br /&gt;
&lt;br /&gt;
{&lt;br /&gt;
$selected=`ls -dag -et snapshotShape`;&lt;br /&gt;
for ($obj in $selected){&lt;br /&gt;
$pts=(getAttr($obj+&amp;quot;.pts&amp;quot;));&lt;br /&gt;
$size=size($pts);&lt;br /&gt;
$curve=`curve -d 1 -p $pts[0] $pts[1] $pts[2] -p $pts[4] $pts[5] $pts[6] -k 0 -k 1`;&lt;br /&gt;
for($i=8;$i&amp;lt;$size;$i+=4)&lt;br /&gt;
curve -os -a -p $pts[$i] $pts[$i+1] $pts[$i+2] $curve ;&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Quantize keyframes for selection ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Snap keys on frames for objects selection&lt;br /&gt;
&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    print($object+&amp;quot;\n&amp;quot;);&lt;br /&gt;
    snapKey $object;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Loop image sequence for texture ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// On File texture, check Image sequence, and edit expression&lt;br /&gt;
&lt;br /&gt;
file1.frameExtension=((frame%8)+1);&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Symmetrize - Duplicate &amp;amp; merge object ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select half object first&lt;br /&gt;
&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    print($object+&amp;quot;\n&amp;quot;);&lt;br /&gt;
    xform -piv 0 0 0 $object;&lt;br /&gt;
    duplicate -rr;&lt;br /&gt;
    setAttr ($object + &amp;quot;.scaleX&amp;quot;) (-1);&lt;br /&gt;
    select -add $object ;&lt;br /&gt;
    polyPerformAction polyUnite o 0;&lt;br /&gt;
    polyMergeVertex  -d 0.0001 -am 1 -ch 1;&lt;br /&gt;
    DeleteHistory;&lt;br /&gt;
    rename ($object);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Mirror object ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select object first&lt;br /&gt;
&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    print($object+&amp;quot;\n&amp;quot;);&lt;br /&gt;
    DeleteHistory;&lt;br /&gt;
    makeIdentity -apply true -t 1 -r 1 -s 1 -n 0 -pn 1;&lt;br /&gt;
    xform -piv 0 0 0 $object;&lt;br /&gt;
    duplicate -rr;&lt;br /&gt;
    setAttr ($object + &amp;quot;.scaleX&amp;quot;) (-1);&lt;br /&gt;
    DeleteHistory;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Group each object and rename ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select objects first&lt;br /&gt;
&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    string $name = ($object);&lt;br /&gt;
    select $object ;&lt;br /&gt;
    doGroup 0 1 1;&lt;br /&gt;
    rename ($name + &amp;quot;_GRP&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Change path in an Attribute ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Here the Attribute is &amp;quot;.filePrefix&amp;quot; - Select objects first&lt;br /&gt;
&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    string $path = getAttr ($object+&amp;quot;.filePrefix&amp;quot;);&lt;br /&gt;
    $path = `substitute &amp;quot;//OLD/PATH/&amp;quot; $path &amp;quot;//NEW/PATH/&amp;quot;`;&lt;br /&gt;
    setAttr -type &amp;quot;string&amp;quot; ($object+&amp;quot;.filePrefix&amp;quot;) ($path);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Change opacity mode on V-Ray shaders ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select shaders first&lt;br /&gt;
&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    if (attributeExists(&amp;quot;omode&amp;quot;,$object)) { //check if attribute exists&lt;br /&gt;
        CBunlockAttr ($object+&amp;quot;.omode&amp;quot;); //unlock opacity mode&lt;br /&gt;
    }&lt;br /&gt;
    if (attributeExists(&amp;quot;opacityMode&amp;quot;,$object)) {&lt;br /&gt;
        setAttr ($object+&amp;quot;.opacityMode&amp;quot;) 1; //set opacity mode in Clip - 0 pour Normal&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// Alternative&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    if (attributeExists(&amp;quot;opacityMode&amp;quot;,$object)) {&lt;br /&gt;
        setAttr ($object+&amp;quot;.opacityMode&amp;quot;) -l false; //unlock attribute if locked&lt;br /&gt;
    }&lt;br /&gt;
    if (attributeExists(&amp;quot;opacityMode&amp;quot;,$object)) {&lt;br /&gt;
        setAttr ($object+&amp;quot;.opacityMode&amp;quot;) 2; //set opacity mode in Clip - 0 pour Normal&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Change color space on selected fileTextures ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Useful to automatically convert Quixel Megascans by example from sRGB/Raw to ACES color spaces&lt;br /&gt;
&lt;br /&gt;
string $object_selection[] = (`ls -sl`);&lt;br /&gt;
for ($object in $object_selection) {&lt;br /&gt;
    if(`getAttr ($object+&amp;quot;.cs&amp;quot;)` == &amp;quot;sRGB&amp;quot;){&lt;br /&gt;
        setAttr ($object + &amp;quot;.cs&amp;quot;) -type &amp;quot;string&amp;quot; &amp;quot;Utility - sRGB - Texture&amp;quot;;&lt;br /&gt;
    }&lt;br /&gt;
    if(`getAttr ($object+&amp;quot;.cs&amp;quot;)` == &amp;quot;Raw&amp;quot;){&lt;br /&gt;
        setAttr ($object + &amp;quot;.cs&amp;quot;) -type &amp;quot;string&amp;quot; &amp;quot;Utility - Raw&amp;quot;;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Redshift - custom Tesselation on selected objects ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select objects first&lt;br /&gt;
&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    print($object+&amp;quot;\n&amp;quot;);&lt;br /&gt;
    setAttr ($object + &amp;quot;.rsMinTessellationLength&amp;quot;) (0.1);&lt;br /&gt;
    setAttr ($object + &amp;quot;.rsMaxTessellationSubdivs&amp;quot;) (2);&lt;br /&gt;
    setAttr ($object + &amp;quot;.rsOutOfFrustumTessellationFactor&amp;quot;) (4);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Change color on selected shaders ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select shaders first&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    print($object+&amp;quot;\n&amp;quot;);&lt;br /&gt;
    setAttr ($object + &amp;quot;.color&amp;quot;) -l false;&lt;br /&gt;
    setAttr ($object + &amp;quot;.color&amp;quot;) -type &amp;quot;double3&amp;quot; (0.18) (0.18) (0.18);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Change Filter Type on selected Files Textures ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select files textures first - 0 means Off&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    print($object+&amp;quot;\n&amp;quot;);&lt;br /&gt;
    setAttr ($object + &amp;quot;.filterType&amp;quot;) 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Clean Render Layers ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// In MEL&lt;br /&gt;
fixRenderLayerOutAdjustmentErrors;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Change Filter Type on selected Files Textures ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select files textures first - 0 means Off&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    print($object+&amp;quot;\n&amp;quot;);&lt;br /&gt;
    setAttr ($object + &amp;quot;.filterType&amp;quot;) 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Select by name ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select objects with &amp;quot;toto&amp;quot;&lt;br /&gt;
select -r &amp;quot;toto*&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Display color on shapes ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select objects&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    print($object+&amp;quot;\n&amp;quot;);&lt;br /&gt;
    setAttr ($object + &amp;quot;.displayColors&amp;quot;) 1;&lt;br /&gt;
    setDisplayColorChannelAttribute ($object + &amp;quot;.displayColorChannel&amp;quot;);&lt;br /&gt;
    polyColorPerVertex -r 1 -g 0 -b 0 -a 1 -cdo;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Geometry Constraint on multiple selection ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select objects to constrain&lt;br /&gt;
string $objectBase = &amp;quot;surfaceName&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    select -cl;&lt;br /&gt;
    select $objectBase;&lt;br /&gt;
    select -add $object;&lt;br /&gt;
    geometryConstraint -weight 1;&lt;br /&gt;
    select -r &amp;quot;*Constraint*&amp;quot;;&lt;br /&gt;
    doDelete;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
=== Speed up smokes rendering with V-Ray ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select smokes first&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    print($object+&amp;quot;\n&amp;quot;);&lt;br /&gt;
    setAttr ($object + &amp;quot;.rendStep&amp;quot;) 160;&lt;br /&gt;
    setAttr ($object + &amp;quot;.shadowStep&amp;quot;) 400;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Set bump multiplier on multiple V-Ray shaders ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select shaders&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    if (attributeExists(&amp;quot;bumpMult&amp;quot;,$object)) {&lt;br /&gt;
        setAttr ($object + &amp;quot;.bumpMult&amp;quot;) -1; //set bump multiplier at -1&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== STOP/START viewport ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// As seen on https://www.toadstorm.com/. - Put it in your shelf&lt;br /&gt;
paneLayout -e -manage false $gMainPane&lt;br /&gt;
&lt;br /&gt;
paneLayout -e -manage true $gMainPane&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Select curves by name ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select objects first - Replace &amp;quot;toto&amp;quot; by what you are looking for&lt;br /&gt;
&lt;br /&gt;
select `ls -type &amp;quot;nurbsCurve&amp;quot; &amp;quot;*toto*&amp;quot;`;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Noise expression ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Replace &amp;quot;pCube1&amp;quot;&lt;br /&gt;
&lt;br /&gt;
pCube1.translateX=sin(time*20)*0.01*noise(time*10);&lt;br /&gt;
pCube1.translateY=sin(time*4)*0.01*noise(time*10);&lt;br /&gt;
pCube1.translateZ=sin(time*12)*0.01*noise(time*10);&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== V-ray - Make curves renderables ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Replace VRayLightMtl1 at the end by your material&lt;br /&gt;
&lt;br /&gt;
$selected=`ls -dag -et curveShape`;&lt;br /&gt;
for ($object in $selected){&lt;br /&gt;
    // Add V-ray Extra attributes&lt;br /&gt;
    vray addAttributesFromGroup $object vray_nurbscurve_renderable 1;&lt;br /&gt;
    vrayAddAttr $object vraySeparator_vray_nurbscurve_renderable;&lt;br /&gt;
    vrayAddAttr $object vrayNurbsCurveRenderable;&lt;br /&gt;
    vrayAddAttr $object vrayNurbsCurveMaterial;&lt;br /&gt;
    vrayAddAttr $object vrayNurbsCurveTesselation;&lt;br /&gt;
    vrayAddAttr $object vrayNurbsCurveStartWidth;&lt;br /&gt;
    vrayAddAttr $object vrayNurbsCurveLockEndWidth;&lt;br /&gt;
    vrayAddAttr $object vrayNurbsCurveEndWidth;&lt;br /&gt;
    setUITemplate -pst attributeEditorTemplate;&lt;br /&gt;
// Activate renderable&lt;br /&gt;
setAttr ($object + &amp;quot;.vrayNurbsCurveRenderable&amp;quot;) 1;&lt;br /&gt;
// Replace VRayLightMtl1 by your material&lt;br /&gt;
connectAttr -force VRayLightMtl1.outColor ($object + &amp;quot;.vrayNurbsCurveMaterial&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Get object type ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Replace toto with the object whose type you want to know&lt;br /&gt;
&lt;br /&gt;
objectType toto;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Render layer override on specific object type ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Replace &amp;quot;Node&amp;quot; by the object type on which you want to act&lt;br /&gt;
&lt;br /&gt;
$selected=`ls -type &amp;quot;Node&amp;quot;`;&lt;br /&gt;
for ($object in $selected){&lt;br /&gt;
    // Create layer override on Primary Visibility attribute on current renderLayer&lt;br /&gt;
    editRenderLayerAdjustment ($object + &amp;quot;.primaryVisibility&amp;quot;);&lt;br /&gt;
    // Set Primary Visibility - 0 or 1&lt;br /&gt;
    setAttr ($object + &amp;quot;.primaryVisibility&amp;quot;) 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== V-ray - Make lights invisible ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$selected=`ls -type &amp;quot;VRayLightRectShape&amp;quot;`;&lt;br /&gt;
for ($object in $selected){&lt;br /&gt;
    setAttr ($object + &amp;quot;.invisible&amp;quot;) 1;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
$selected=`ls -type &amp;quot;VRayLightSphereShape&amp;quot;`;&lt;br /&gt;
for ($object in $selected){&lt;br /&gt;
    setAttr ($object + &amp;quot;.invisible&amp;quot;) 1;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
$selected=`ls -type &amp;quot;VRayLightDomeShape&amp;quot;`;&lt;br /&gt;
for ($object in $selected){&lt;br /&gt;
    setAttr ($object + &amp;quot;.invisible&amp;quot;) 1;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== V-ray - Select Rect Light ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
select `ls -type &amp;quot;VRayLightRectShape&amp;quot;`;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== V-ray - Rect Lights - Directional Preview - Always for all ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$selected=`ls -type &amp;quot;VRayLightRectShape&amp;quot;`;&lt;br /&gt;
for ($object in $selected){&lt;br /&gt;
    setAttr ($object + &amp;quot;.directionalPreview&amp;quot;) 1;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Randomize rotation on selected objects ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// As posted on CGTalk by NaughtyNathan&lt;br /&gt;
// &amp;quot;just set the vector values to the maximum random x,y,z rotations you want to apply to the selected transforms.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
vector $rndRot = &amp;lt;&amp;lt; 0,0,90 &amp;gt;&amp;gt;;	// x,y,z rotations&lt;br /&gt;
for ($object in `ls -sl -tr`){&lt;br /&gt;
    rotate `rand ($rndRot.x)` `rand ($rndRot.y)` `rand ($rndRot.z)` $object;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Quit Maya ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Brute force method&lt;br /&gt;
&lt;br /&gt;
$i = `getpid`; //application ID&lt;br /&gt;
    system(&amp;quot;taskkill /PID &amp;quot;  + $i +&amp;quot; /f&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
// In a gentle way&lt;br /&gt;
&lt;br /&gt;
evalDeferred(&amp;quot;quit -f&amp;quot;);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== V-ray - Import list of Alembics through Proxys Import ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// List of Alembics files - Replace by the name of your Alembics&lt;br /&gt;
string $alembicsParts[] = {&amp;quot;part1&amp;quot;,&amp;quot;part2&amp;quot;,&amp;quot;part3&amp;quot;};&lt;br /&gt;
&lt;br /&gt;
// Replace the PATH of your files - Scale by 100 for Houdini Alembics - &amp;lt;frame04&amp;gt; for sequences&lt;br /&gt;
for ($alembicsPart in $alembicsParts){&lt;br /&gt;
    vrayCreateProxy -node $alembicsPart -existing -dir (&amp;quot;C:/YOURPATH/&amp;quot;+$alembicsPart+&amp;quot;.&amp;lt;frame04&amp;gt;.abc&amp;quot;) -createProxyNode;&lt;br /&gt;
    setAttr ($alembicsPart+&amp;quot;_vraymesh.animType&amp;quot;) 1;&lt;br /&gt;
    setAttr ($alembicsPart+&amp;quot;.scaleZ&amp;quot;) 100;&lt;br /&gt;
    setAttr ($alembicsPart+&amp;quot;.scaleX&amp;quot;) 100;&lt;br /&gt;
    setAttr ($alembicsPart+&amp;quot;.scaleY&amp;quot;) 100;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== V-ray - Change path to VRayMesh for selected proxies ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Change path with your own .vrmesh&lt;br /&gt;
$selected=`ls -type &amp;quot;VRayMesh&amp;quot;`;&lt;br /&gt;
for ($object in $selected){&lt;br /&gt;
    setAttr -type &amp;quot;string&amp;quot; ($object + &amp;quot;.fileName2&amp;quot;) &amp;quot;//DISK/PATH/YOUR_VRMESH.vrmesh&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// If you want to change Geometry type - 4 for GPU mesh - add following in the loop&lt;br /&gt;
//    setAttr ($object + &amp;quot;.geomType&amp;quot;) 4;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Delete image planes ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Delete image plane if exists.&lt;br /&gt;
$selected=`ls -type &amp;quot;imagePlane&amp;quot;`;&lt;br /&gt;
select $selected;&lt;br /&gt;
for ($object in $selected){&lt;br /&gt;
    doDelete;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Merge alembic from set ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select objects in a set called EXPORT_SET&lt;br /&gt;
select -r EXPORT_SET ;&lt;br /&gt;
timeControl -edit -forceRedraw $gPlayBackSlider;&lt;br /&gt;
&lt;br /&gt;
// Create list of objects from EXPORT_SET&lt;br /&gt;
string $assetParts[] = `ls -sl`;&lt;br /&gt;
$assetPartsList = stringArrayToString($assetParts,&amp;quot; &amp;quot;);&lt;br /&gt;
&lt;br /&gt;
// Merge alembic with these objects&lt;br /&gt;
AbcImport -mode import -connect $assetPartsList &amp;quot;//DISK/PATH/alembic.abc&amp;quot;;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Create Texture reference ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// CREATE TEXTURE REFERENCE ON EXPORT SET&lt;br /&gt;
&lt;br /&gt;
select -r YOUR_GROUP ;&lt;br /&gt;
CreateTextureReferenceObject;&lt;br /&gt;
select -cl  ;&lt;br /&gt;
&lt;br /&gt;
// REMOVE REFERENCE OBJECTS FROM EXPORT SET&lt;br /&gt;
select -r YOUR_GROUP_reference ;&lt;br /&gt;
string $selection[] = `ls -sl`;&lt;br /&gt;
string $polyGons[] = `filterExpand -sm 12 $selection`;&lt;br /&gt;
select -r $polyGons;&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    sets -rm EXPORT_SET $object;&lt;br /&gt;
}&lt;br /&gt;
select -cl  ;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Replace animated objects with V-Ray proxies ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// First select animated objects to replace&lt;br /&gt;
// For each object create a proxy then constrain then bake simulation then delete constraint&lt;br /&gt;
&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
	vrayCreateProxy -node assetName -existing -dir (&amp;quot;//DISK/PATH/your_asset.vrmesh&amp;quot;) -createProxyNode;&lt;br /&gt;
	select -r $object ;&lt;br /&gt;
	select -add assetName ;&lt;br /&gt;
	doCreateParentConstraintArgList 1 { &amp;quot;0&amp;quot;,&amp;quot;0&amp;quot;,&amp;quot;0&amp;quot;,&amp;quot;0&amp;quot;,&amp;quot;0&amp;quot;,&amp;quot;0&amp;quot;,&amp;quot;0&amp;quot;,&amp;quot;0&amp;quot;,&amp;quot;1&amp;quot;,&amp;quot;&amp;quot;,&amp;quot;1&amp;quot; };&lt;br /&gt;
	parentConstraint -weight 1;&lt;br /&gt;
	bakeResults -simulation true -t &amp;quot;1000:1100&amp;quot; -sampleBy 1 -oversamplingRate 1 -disableImplicitControl true -preserveOutsideKeys true -sparseAnimCurveBake false -removeBakedAttributeFromLayer false -removeBakedAnimFromLayer false -bakeOnOverrideLayer false -minimizeRotation true -controlPoints false -shape true {&amp;quot;assetName&amp;quot;};&lt;br /&gt;
	select `ls -type &amp;quot;constraint&amp;quot;`;&lt;br /&gt;
	select -add $object ;&lt;br /&gt;
	doDelete;&lt;br /&gt;
	select -cl  ;&lt;br /&gt;
	rename &amp;quot;assetName&amp;quot; $object;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Select all meshes in a group ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// From cmadsenAniden on forums.autodesk.com&lt;br /&gt;
// Replace group1 by the name of your own group&lt;br /&gt;
&lt;br /&gt;
select -r group1 ;&lt;br /&gt;
string $selection[] = `ls -sl`;&lt;br /&gt;
string $polyGons[] = `filterExpand -sm 12 $selection`;&lt;br /&gt;
select -r $polyGons;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Select shot camera ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// CREATE VARIABLE FOR SHOT CAMERA AND SELECT IT&lt;br /&gt;
&lt;br /&gt;
select `ls -type &amp;quot;camera&amp;quot;`;&lt;br /&gt;
select -d sideShape frontShape topShape perspShape;&lt;br /&gt;
$camerashot = `ls -sl`;&lt;br /&gt;
string $shotcamera = $camerashot[0];&lt;br /&gt;
print $shotcamera;&lt;br /&gt;
select $shotcamera;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Get list of frames with keys on all transform objects ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$selected=`ls -dag -et transform`;&lt;br /&gt;
&lt;br /&gt;
float $arrathy[] = `keyframe -query $selected`;&lt;br /&gt;
&lt;br /&gt;
float $sorted[] = python(&amp;quot;import pymel.core as pm; list(set((pm.getMelGlobal(\&amp;quot;float[]\&amp;quot;, \&amp;quot;$arrathy\&amp;quot;))))&amp;quot;);&lt;br /&gt;
print $sorted;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== MULTI SNAP ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Replace a list of objects by another with bake of animation. Replace FSTART and FEND with your own padding.&lt;br /&gt;
&lt;br /&gt;
///////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
///////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
/*&lt;br /&gt;
Type the command MS() in MEL form to open UI.&lt;br /&gt;
*/&lt;br /&gt;
///////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
///////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
source &amp;quot;generateChannelMenu.mel&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
global proc MS ()&lt;br /&gt;
{&lt;br /&gt;
     global string $sourceObjects;&lt;br /&gt;
     global string $destinationObjects;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    // If the window exists already, delete it.&lt;br /&gt;
    if (`window -exists multiSnapWindow`)&lt;br /&gt;
    {&lt;br /&gt;
        deleteUI multiSnapWindow;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    // Build the window.&lt;br /&gt;
    global string $man_window;&lt;br /&gt;
    string $man_window = `window -title &amp;quot; MULTI SNAP&amp;quot; -sizeable 0 -w 300 multiSnapWindow`;&lt;br /&gt;
    frameLayout -label &amp;quot;Snap source objects on destination objects.&amp;quot;;&lt;br /&gt;
    rowLayout -width 540 -nc 2 -cw4 10 20 20 100;&lt;br /&gt;
    // Source objects section&lt;br /&gt;
    frameLayout -label &amp;quot;Source objects&amp;quot;;&lt;br /&gt;
    $sourceObjects = `textScrollList -width 600 -height 300`;&lt;br /&gt;
    rowLayout -width 240 -nc 2 -cw2 120 120;&lt;br /&gt;
    button -label &amp;quot;Add selected&amp;quot; -command &amp;quot;MS_addObjects ();&amp;quot; -width 120;&lt;br /&gt;
    button -label &amp;quot;Remove selected&amp;quot; -command &amp;quot;MS_removeObjects ();&amp;quot; -width 120;&lt;br /&gt;
    setParent ..;&lt;br /&gt;
    rowLayout -width 240 -nc 2 -cw2 120 120;&lt;br /&gt;
    button -label &amp;quot;Remove All&amp;quot; -command &amp;quot;MS_clearObjects ();&amp;quot; -width 240;&lt;br /&gt;
    setParent ..;&lt;br /&gt;
    setParent ..;&lt;br /&gt;
    rowLayout -nc 3;&lt;br /&gt;
    button -label &amp;quot;Create&amp;quot; -command &amp;quot;VRAYCONNECDO() &amp;quot; -width 140 -align center;&lt;br /&gt;
    button -label &amp;quot;Close&amp;quot; -command &amp;quot;DAC_CloseUI() &amp;quot; -width 140 -align center;&lt;br /&gt;
    setParent ..;&lt;br /&gt;
    setParent ..;&lt;br /&gt;
    // Destination objects section&lt;br /&gt;
    frameLayout -label &amp;quot;Destination objects&amp;quot;;&lt;br /&gt;
    $destinationObjects = `textScrollList -width 600 -height 300`;&lt;br /&gt;
    rowLayout -width 240 -nc 2 -cw2 120 120;&lt;br /&gt;
    button -label &amp;quot;Add selected&amp;quot; -command &amp;quot;MS_addMM ();&amp;quot; -width 120;&lt;br /&gt;
    button -label &amp;quot;Remove selected&amp;quot; -command &amp;quot;MS_removeMM ();&amp;quot; -width 120;&lt;br /&gt;
    setParent ..;&lt;br /&gt;
    setParent ..;&lt;br /&gt;
    rowLayout -nc 3;&lt;br /&gt;
    button -label &amp;quot;SNAP IT&amp;quot; -command &amp;quot;VRAYCONNECDO() &amp;quot; -width 140 -align center;&lt;br /&gt;
    button -label &amp;quot;Close&amp;quot; -command &amp;quot;DAC_CloseUI() &amp;quot; -width 140 -align center;&lt;br /&gt;
    setParent ..;&lt;br /&gt;
    setParent ..;&lt;br /&gt;
&lt;br /&gt;
// Show the window.&lt;br /&gt;
showWindow multiSnapWindow;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
global proc string[] getShaders(string $from)&lt;br /&gt;
{&lt;br /&gt;
// get the shapes from the input&lt;br /&gt;
string $shapes[] = ls(&amp;quot;-o&amp;quot;, &amp;quot;-dag&amp;quot;, &amp;quot;-s&amp;quot;, $from);&lt;br /&gt;
// give me the connected &amp;quot;shadingEngines&amp;quot;&lt;br /&gt;
string $shadingEngines[] = listConnections(&amp;quot;-type&amp;quot;,&amp;quot;shadingEngine&amp;quot;, $shapes);&lt;br /&gt;
// list the connected materials (shaders) from that&lt;br /&gt;
string $materials[] = ls(&amp;quot;-mat&amp;quot;, listConnections($shadingEngines));&lt;br /&gt;
// remove duplicate occurrences.&lt;br /&gt;
return (stringArrayRemoveDuplicates($materials));&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
//Add selected objects to list.&lt;br /&gt;
global proc MS_addObjects ()&lt;br /&gt;
{&lt;br /&gt;
      global string $sourceObjects;&lt;br /&gt;
      string $selectedshapes[] = `ls -sl -l`;&lt;br /&gt;
      //print $selectedshapes;&lt;br /&gt;
      int $count = 0;&lt;br /&gt;
&lt;br /&gt;
if ($selectedshapes[0] != &amp;quot;&amp;quot;)&lt;br /&gt;
{&lt;br /&gt;
   for ($i in $selectedshapes)&lt;br /&gt;
   {&lt;br /&gt;
     $count ++;&lt;br /&gt;
     textScrollList -edit -append $i $sourceObjects;&lt;br /&gt;
   }&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
//Add selected objects to list.&lt;br /&gt;
global proc MS_addMM ()&lt;br /&gt;
{&lt;br /&gt;
      global string $destinationObjects;&lt;br /&gt;
      string $selectedshapes[] = `ls -sl -l`;&lt;br /&gt;
      //print $selectedshapes;&lt;br /&gt;
      int $count = 0;&lt;br /&gt;
&lt;br /&gt;
if ($selectedshapes[0] != &amp;quot;&amp;quot;)&lt;br /&gt;
{&lt;br /&gt;
   for ($i in $selectedshapes)&lt;br /&gt;
   {&lt;br /&gt;
     $count ++;&lt;br /&gt;
     textScrollList -edit -append $i $destinationObjects;&lt;br /&gt;
   }&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// Clear objects from list.&lt;br /&gt;
global proc MS_clearObjects ()&lt;br /&gt;
{&lt;br /&gt;
    global string $sourceObjects;&lt;br /&gt;
textScrollList -e -ra $sourceObjects;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// Remove selected object from list.&lt;br /&gt;
global proc MS_removeObjects ()&lt;br /&gt;
{&lt;br /&gt;
   global string $sourceObjects;&lt;br /&gt;
&lt;br /&gt;
    int $index [] = `textScrollList -query -selectIndexedItem $sourceObjects`;&lt;br /&gt;
    if ($index [0] != 0)&lt;br /&gt;
    {&lt;br /&gt;
        textScrollList -edit -removeIndexedItem $index [0] $sourceObjects;&lt;br /&gt;
    }&lt;br /&gt;
   global string $sourceObjects;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
global proc VRAYCONNECDO()&lt;br /&gt;
{&lt;br /&gt;
    // UI Elements&lt;br /&gt;
global string $sourceObjects;&lt;br /&gt;
global string $destinationObjects;&lt;br /&gt;
// Define user selected objects&lt;br /&gt;
string $selected_objects[] = `textScrollList -query -allItems $sourceObjects`;&lt;br /&gt;
string $meshMaterial[] = `textScrollList -query -allItems $destinationObjects`;&lt;br /&gt;
int $i = 0;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
// SET PADDING&lt;br /&gt;
string $FSTART = &amp;quot;1&amp;quot;;&lt;br /&gt;
string $FEND = &amp;quot;100&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
print $FSTART;&lt;br /&gt;
print $FEND;&lt;br /&gt;
&lt;br /&gt;
string $PADDING = $FSTART + &amp;quot;:&amp;quot; + $FEND;&lt;br /&gt;
&lt;br /&gt;
//Progress bar&lt;br /&gt;
global string $gMainProgressBar;&lt;br /&gt;
&lt;br /&gt;
// Start the progress bar and adjust its max value for this operation.&lt;br /&gt;
    int $steps = size($selected_objects);&lt;br /&gt;
    progressBar -edit -beginProgress -isInterruptable true -status &amp;quot;Connecting shaders to mesh material ...&amp;quot; -maxValue $steps $gMainProgressBar;&lt;br /&gt;
 &lt;br /&gt;
for ($i = 0; $i &amp;lt; size($selected_objects); $i ++)&lt;br /&gt;
{&lt;br /&gt;
        parentConstraint -n parentConstraintMS $selected_objects[$i] $meshMaterial[$i];&lt;br /&gt;
        select -r $meshMaterial[$i] ;&lt;br /&gt;
        bakeResults -simulation true -t $PADDING -sampleBy 1 -oversamplingRate 1 -disableImplicitControl true -preserveOutsideKeys true -sparseAnimCurveBake false -removeBakedAttributeFromLayer false -removeBakedAnimFromLayer false -bakeOnOverrideLayer false -minimizeRotation true -controlPoints false -shape true {$meshMaterial[$i]};&lt;br /&gt;
        select -cl  ;&lt;br /&gt;
        select -r &amp;quot;*parentConstraintMS*&amp;quot;;&lt;br /&gt;
        doDelete;&lt;br /&gt;
// Update the progress bar.&lt;br /&gt;
progressBar -edit -step 1 $gMainProgressBar;&lt;br /&gt;
}&lt;br /&gt;
// End the progress.&lt;br /&gt;
progressBar -edit -endProgress $gMainProgressBar;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Delete hidden objects ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select objects&lt;br /&gt;
&lt;br /&gt;
for ( $object in `ls -sl` ) {&lt;br /&gt;
    $vis = getAttr ($object+&amp;quot;.visibility&amp;quot;);&lt;br /&gt;
    if ($vis == 0){&lt;br /&gt;
        select -r $object ;&lt;br /&gt;
        doDelete ;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== V-Ray - BAKE MATERIALS ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Made to work also with mayabatch.exe&lt;br /&gt;
&lt;br /&gt;
////////////////////////////////////////////&lt;br /&gt;
// BAKE VRAY CUSTOM VARIABLES&lt;br /&gt;
////////////////////////////////////////////&lt;br /&gt;
&lt;br /&gt;
// ASSET PATH&lt;br /&gt;
string $assetFileType = &amp;quot;mayaBinary&amp;quot;;&lt;br /&gt;
string $assetPath = &amp;quot;C:/YOUR_PATH/YOUR_SURFACING_ASSET.mb&amp;quot;;&lt;br /&gt;
string $assetName = &amp;quot;ASSET_NAME&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
// LIGHT RIG PATH&lt;br /&gt;
string $lightRigFileType = &amp;quot;mayaAscii&amp;quot;;&lt;br /&gt;
string $lightRigPath = &amp;quot;C:/YOUR_PATH/YOUR_LIGHT_RIG.mb&amp;quot;;&lt;br /&gt;
string $lightRigName = &amp;quot;DAY_LIGHTING&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
// BAKED TEXTURES PATH&lt;br /&gt;
string $bakedTexturesPath = (&amp;quot;C:/YOUR_PATH/BAKED_TEXTURES/&amp;quot; + $assetName + &amp;quot;_&amp;quot; + $lightRigName + &amp;quot;_Bake&amp;quot;);&lt;br /&gt;
print $bakedTexturesPath;&lt;br /&gt;
&lt;br /&gt;
// SET RESOLUTION FOR BAKED MAPS&lt;br /&gt;
$resWidth = 4096;&lt;br /&gt;
$resHeight = $resWidth;&lt;br /&gt;
&lt;br /&gt;
// COLOR SPACE FOR FILE TEXTURES&lt;br /&gt;
string $fileColorSpace = &amp;quot;ACES - ACEScg&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
////////////////////////////////////////////&lt;br /&gt;
// END OF CUSTOM VARIABLES&lt;br /&gt;
////////////////////////////////////////////&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
////////////////////////////////////////////&lt;br /&gt;
// RENDER SETTINGS&lt;br /&gt;
&lt;br /&gt;
// Set File Name Prefix&lt;br /&gt;
setAttr -type &amp;quot;string&amp;quot; vraySettings.fileNamePrefix &amp;quot;&amp;lt;Scene&amp;gt;/&amp;lt;Layer&amp;gt;/&amp;lt;Camera&amp;gt;_&amp;lt;Layer&amp;gt;_&amp;lt;Scene&amp;gt;&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
// Set resolution&lt;br /&gt;
$resWidthHalf = $resWidth/2;&lt;br /&gt;
$resHeightHalf = $resHeight/2;&lt;br /&gt;
setAttr &amp;quot;vraySettings.width&amp;quot; $resWidthHalf;&lt;br /&gt;
setAttr &amp;quot;vraySettings.height&amp;quot; $resHeightHalf;&lt;br /&gt;
&lt;br /&gt;
// Set Persp camera renderable&lt;br /&gt;
setAttr &amp;quot;perspShape.renderable&amp;quot; 1;&lt;br /&gt;
&lt;br /&gt;
// Set Image format&lt;br /&gt;
setAttr -type &amp;quot;string&amp;quot; &amp;quot;vraySettings.imageFormatStr&amp;quot; &amp;quot;exr (multichannel)&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
// Set Animation type on Standard&lt;br /&gt;
setAttr &amp;quot;vraySettings.animType&amp;quot; 0;&lt;br /&gt;
setAttr &amp;quot;vraySettings.animBatchOnly&amp;quot; 1;&lt;br /&gt;
&lt;br /&gt;
// Sampler type Bucket&lt;br /&gt;
setAttr &amp;quot;vraySettings.samplerType&amp;quot; 4;&lt;br /&gt;
&lt;br /&gt;
// Min Shading Rate&lt;br /&gt;
//setAttr &amp;quot;vraySettings.minShadeRate&amp;quot; 4;&lt;br /&gt;
setAttr &amp;quot;vraySettings.minShadeRate&amp;quot; 7;&lt;br /&gt;
&lt;br /&gt;
// Buckets subdivs&lt;br /&gt;
//setAttr &amp;quot;vraySettings.dmcMinSubdivs&amp;quot; 1;&lt;br /&gt;
//setAttr &amp;quot;vraySettings.dmcMaxSubdivs&amp;quot; 8;&lt;br /&gt;
//setAttr &amp;quot;vraySettings.dmcThreshold&amp;quot; 0.1;&lt;br /&gt;
setAttr &amp;quot;vraySettings.dmcMinSubdivs&amp;quot; 1;&lt;br /&gt;
setAttr &amp;quot;vraySettings.dmcMaxSubdivs&amp;quot; 15;&lt;br /&gt;
setAttr &amp;quot;vraySettings.dmcThreshold&amp;quot; 0.01;&lt;br /&gt;
&lt;br /&gt;
// Color mapping Linear&lt;br /&gt;
setAttr &amp;quot;vraySettings.cmap_type&amp;quot; 0;&lt;br /&gt;
&lt;br /&gt;
// GI on&lt;br /&gt;
setAttr &amp;quot;vraySettings.giOn&amp;quot; 1;&lt;br /&gt;
//setAttr &amp;quot;vraySettings.subdivs&amp;quot; 400;&lt;br /&gt;
setAttr &amp;quot;vraySettings.subdivs&amp;quot; 1000;&lt;br /&gt;
&lt;br /&gt;
// Max subdivs&lt;br /&gt;
setAttr &amp;quot;vraySettings.ddisplac_maxSubdivs&amp;quot; 16;&lt;br /&gt;
&lt;br /&gt;
// Cache geometry and bitmaps&lt;br /&gt;
setAttr &amp;quot;vraySettings.globopt_cache_geom_plugins&amp;quot; 1;&lt;br /&gt;
setAttr &amp;quot;vraySettings.globopt_cache_bitmaps&amp;quot; 1;&lt;br /&gt;
&lt;br /&gt;
// Dynamic memory limit&lt;br /&gt;
setAttr &amp;quot;vraySettings.sys_rayc_dynMemLimit&amp;quot; 0;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
////////////////////////////////////////////&lt;br /&gt;
// IMPORT&lt;br /&gt;
&lt;br /&gt;
// IMPORT LIGHT RIG&lt;br /&gt;
file -import -type $lightRigFileType  -ignoreVersion -mergeNamespacesOnClash false -rpr &amp;quot;:&amp;quot; -options &amp;quot;v=0;&amp;quot; $lightRigPath;&lt;br /&gt;
&lt;br /&gt;
// IMPORT ASSET&lt;br /&gt;
file -import -type $assetFileType  -ignoreVersion -mergeNamespacesOnClash false -rpr &amp;quot;:&amp;quot; -options &amp;quot;v=0;&amp;quot; $assetPath;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
// CREATE SETS&lt;br /&gt;
select `ls -type &amp;quot;mesh&amp;quot;`;&lt;br /&gt;
sets -name &amp;quot;assetOriginal_Set&amp;quot; ;&lt;br /&gt;
duplicate -rr;&lt;br /&gt;
group -w -n (&amp;quot;GRP_&amp;quot; + $assetName + &amp;quot;_BAKE_&amp;quot; + `toupper $lightRigName`);&lt;br /&gt;
sets -name &amp;quot;assetBaked_Set&amp;quot; ;&lt;br /&gt;
&lt;br /&gt;
// REMOVE BAKED PARTS FROM ORIGINAL PARTS SET&lt;br /&gt;
select -r assetBaked_Set ;&lt;br /&gt;
string $selection[] = `ls -sl`;&lt;br /&gt;
string $polyGons[] = `filterExpand -sm 12 $selection`;&lt;br /&gt;
select -r $polyGons;&lt;br /&gt;
pickWalk -d down;&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    sets -rm assetOriginal_Set $object;&lt;br /&gt;
}&lt;br /&gt;
select -cl  ;&lt;br /&gt;
&lt;br /&gt;
// DELETE HIDDEN OBJECTS&lt;br /&gt;
select -r assetBaked_Set ;&lt;br /&gt;
string $selection[] = `ls -sl`;&lt;br /&gt;
string $polyGons[] = `filterExpand -sm 12 $selection`;&lt;br /&gt;
select -r $polyGons;&lt;br /&gt;
for ( $object in `ls -sl` ) {&lt;br /&gt;
    $vis = getAttr ($object+&amp;quot;.visibility&amp;quot;);&lt;br /&gt;
    if ($vis == 0){&lt;br /&gt;
        select -r $object ;&lt;br /&gt;
        doDelete ;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
select -cl  ;&lt;br /&gt;
&lt;br /&gt;
// fixShapeName - Thanks to Pinkwerks&lt;br /&gt;
global proc&lt;br /&gt;
fixShapeName()&lt;br /&gt;
{&lt;br /&gt;
    string $me = &amp;quot;fixShapeName&amp;quot;;&lt;br /&gt;
    string $shape;&lt;br /&gt;
    string $newShapeName;&lt;br /&gt;
    string $parent;&lt;br /&gt;
    string $tmpA[];&lt;br /&gt;
	string $selectedShapes[] = `ls -sl -l`;&lt;br /&gt;
    int $sizeOfShapes = `size $selectedShapes`;&lt;br /&gt;
&lt;br /&gt;
    if ( $sizeOfShapes == 0 )&lt;br /&gt;
    	error($me + &amp;quot; : Nothing shapes to process!&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
    for ( $shape in $selectedShapes )&lt;br /&gt;
    {&lt;br /&gt;
    	$tmpA = `listRelatives -p $shape`;&lt;br /&gt;
		$parent = $tmpA[0];&lt;br /&gt;
		$newShapeName = ($parent + &amp;quot;Shape&amp;quot;);&lt;br /&gt;
		rename $shape $newShapeName;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// APPLY FIXSHAPENAME TO BAKED ASSET PARTS&lt;br /&gt;
select -r assetBaked_Set ;&lt;br /&gt;
string $selection[] = `ls -sl`;&lt;br /&gt;
string $polyGons[] = `filterExpand -sm 12 $selection`;&lt;br /&gt;
select -r $polyGons;&lt;br /&gt;
pickWalk -d down;&lt;br /&gt;
fixShapeName();&lt;br /&gt;
select -cl  ;&lt;br /&gt;
&lt;br /&gt;
// DELETE OBJECTS WITHOUT UVS&lt;br /&gt;
select -r assetBaked_Set ;&lt;br /&gt;
string $selection[] = `ls -sl`;&lt;br /&gt;
string $polyGons[] = `filterExpand -sm 12 $selection`;&lt;br /&gt;
select -r $polyGons;&lt;br /&gt;
for ( $object in `ls -sl` ) {&lt;br /&gt;
    int $vertexCount[] = `polyEvaluate -uv $object`;&lt;br /&gt;
    print $vertexCount;&lt;br /&gt;
    string $uvCount = $vertexCount[0];&lt;br /&gt;
    if ($uvCount == 0){&lt;br /&gt;
        select -r $object ;&lt;br /&gt;
        doDelete ;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// CREATE VRAY BAKE OPTIONS&lt;br /&gt;
createNode &amp;quot;VRayBakeOptions&amp;quot; -n &amp;quot;vrayBakeOptions&amp;quot;;&lt;br /&gt;
select -r assetBaked_Set ;&lt;br /&gt;
string $selection[] = `ls -sl`;&lt;br /&gt;
string $polyGons[] = `filterExpand -sm 12 $selection`;&lt;br /&gt;
select -r $polyGons;&lt;br /&gt;
$selected=`ls -sl`;&lt;br /&gt;
for ($object in $selected){&lt;br /&gt;
    sets -edit -forceElement  vrayBakeOptions $object ;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// HIDE ORIGINAL ASSET&lt;br /&gt;
select -r assetOriginal_Set ;&lt;br /&gt;
pickWalk -d up;&lt;br /&gt;
hide `ls -sl`;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
// BAKE VRAY OPTIONS&lt;br /&gt;
setAttr &amp;quot;vrayBakeOptions.udimBaking&amp;quot; 1;&lt;br /&gt;
setAttr &amp;quot;vrayBakeOptions.resolutionX&amp;quot; $resWidth;&lt;br /&gt;
&lt;br /&gt;
optionVar -intValue &amp;quot;vrayBakeType&amp;quot; 2;&lt;br /&gt;
optionVar -intValue &amp;quot;vraySkipNodesWithoutBakeOptions&amp;quot; 1;&lt;br /&gt;
optionVar -intValue &amp;quot;vrayAssignBakedTextures&amp;quot; 1;&lt;br /&gt;
optionVar -stringValue &amp;quot;vrayBakeOutputPath&amp;quot; $bakedTexturesPath;&lt;br /&gt;
optionVar -intValue &amp;quot;vrayBakeProjectionBaking&amp;quot; 0;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
// GO BAKE GO&lt;br /&gt;
select -cl  ;&lt;br /&gt;
select -r assetBaked_Set ;&lt;br /&gt;
string $selection[] = `ls -sl`;&lt;br /&gt;
string $polyGons[] = `filterExpand -sm 12 $selection`;&lt;br /&gt;
select -r $polyGons;&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    vrayStartBake;&lt;br /&gt;
}&lt;br /&gt;
select -cl  ;&lt;br /&gt;
&lt;br /&gt;
// UV TILING UDIM AND ACES CG FOR FILES&lt;br /&gt;
for ( $object in `ls -type &amp;quot;file&amp;quot;` ) {&lt;br /&gt;
    setAttr ($object + &amp;quot;.filterType&amp;quot;) 0;&lt;br /&gt;
    setAttr ($object + &amp;quot;.uvTilingMode&amp;quot;) 3;&lt;br /&gt;
    setAttr ($object + &amp;quot;.cs&amp;quot;) -type &amp;quot;string&amp;quot; $fileColorSpace;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// CONNECT SHADERS&lt;br /&gt;
select -cl  ;&lt;br /&gt;
select -r assetBaked_Set ;&lt;br /&gt;
string $selection[] = `ls -sl`;&lt;br /&gt;
string $polyGons[] = `filterExpand -sm 12 $selection`;&lt;br /&gt;
for ( $object in $polyGons ) {&lt;br /&gt;
    string $shadingGroupName = ($object + &amp;quot;Shape_bakedmtlSG&amp;quot;);&lt;br /&gt;
    sets -e -forceElement $shadingGroupName $object;&lt;br /&gt;
}&lt;br /&gt;
select -cl  ;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
///////////////////////////////////&lt;br /&gt;
// SAVE&lt;br /&gt;
file -rename (&amp;quot;C:/YOUR_PATH/BAKED_ASSETS/&amp;quot; + $assetName + &amp;quot;_&amp;quot; + $lightRigName + &amp;quot;_BAKE_DEBUG.mb&amp;quot;);&lt;br /&gt;
file -f -save;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Arnold - Set all Standins display on Bouding box ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$selected=`ls -type &amp;quot;aiStandIn&amp;quot;`;&lt;br /&gt;
for ($object in $selected){&lt;br /&gt;
    setAttr ($object + &amp;quot;.mode&amp;quot;) 0;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Arnold - Set all Standins display on Point cloud ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$selected=`ls -type &amp;quot;aiStandIn&amp;quot;`;&lt;br /&gt;
for ($object in $selected){&lt;br /&gt;
    setAttr ($object + &amp;quot;.mode&amp;quot;) 4;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Alembic - Loop animation on all nodes ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$selected=`ls -type &amp;quot;AlembicNode&amp;quot;`;&lt;br /&gt;
for ($object in $selected){&lt;br /&gt;
    setAttr ($object + &amp;quot;.cycleType&amp;quot;) 1;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Mental Ray nodes error - Delete Mayatomr plugin ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
unknownPlugin -remove &amp;quot;Mayatomr&amp;quot;;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Delete Unknown nodes ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
select -r `ls -type unknown`;&lt;br /&gt;
delete;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Write text ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
string $exampleFileName = ( &amp;quot;D:/yolo.bat&amp;quot; );&lt;br /&gt;
string $linesToWrite[] = {&lt;br /&gt;
    &amp;quot;youpi&amp;quot;,&lt;br /&gt;
    &amp;quot;youhou&amp;quot;&lt;br /&gt;
    };&lt;br /&gt;
int $result = fwriteAllLines($exampleFileName,$linesToWrite);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Point Lock No Attach on selected follicles ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    setAttr ($object + &amp;quot;.pointLock&amp;quot;) 0;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Convert .ma cameras from Reality Capture into .abc files ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// List of assets&lt;br /&gt;
string $fileParts[] = {&amp;quot;asset_001&amp;quot;, &amp;quot;asset_002&amp;quot;};&lt;br /&gt;
&lt;br /&gt;
// Replace the PATH of your files&lt;br /&gt;
for ($filePart in $fileParts){&lt;br /&gt;
	string $fileName = $filePart + &amp;quot;_cam&amp;quot;;&lt;br /&gt;
	string $filePath = &amp;quot;//DISK/PATH/&amp;quot; + $filePart + &amp;quot;/&amp;quot; + $filePart +&amp;quot;_cam.ma&amp;quot;;&lt;br /&gt;
	file -import -type &amp;quot;mayaAscii&amp;quot;  -ignoreVersion -ra true -mergeNamespacesOnClash false -rpr $fileName -options &amp;quot;v=0;p=17;f=0&amp;quot;  -pr  -importFrameRate true  -importTimeRange &amp;quot;override&amp;quot; $filePath;&lt;br /&gt;
	select -cl;&lt;br /&gt;
	select `ls -type &amp;quot;imagePlane&amp;quot;`;&lt;br /&gt;
	pickWalk -d up;&lt;br /&gt;
	doDelete;&lt;br /&gt;
	select `ls -type &amp;quot;camera&amp;quot;`;&lt;br /&gt;
	pickWalk -d up;	&lt;br /&gt;
	string $abcPath = &amp;quot;//DISK/PATH/&amp;quot; + $filePart + &amp;quot;/&amp;quot; + $filePart +&amp;quot;_cam.abc&amp;quot;;&lt;br /&gt;
	string $abcExp = &amp;quot;-frameRange 1 1 -uvWrite -worldSpace -dataFormat ogawa -root |* -file &amp;quot; + $abcPath;&lt;br /&gt;
	AbcExport -j $abcExp;&lt;br /&gt;
	select -all;&lt;br /&gt;
	doDelete;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Combine objects ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select objects&lt;br /&gt;
&lt;br /&gt;
polyPerformAction polyUnite o 0; &lt;br /&gt;
DeleteHistory;&lt;br /&gt;
FreezeTransformations;&lt;br /&gt;
makeIdentity -apply true -t 1 -r 1 -s 1 -n 0 -pn 1;&lt;br /&gt;
CenterPivot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Unitize UVs (one square UV by face) ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select objects&lt;br /&gt;
&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    select -r ($object+&amp;quot;.e[*]&amp;quot;);&lt;br /&gt;
    hilite ($object+&amp;quot;.e[*]&amp;quot;) ;&lt;br /&gt;
    polyMapCut -ch 1 ($object+&amp;quot;.e[*]&amp;quot;);&lt;br /&gt;
    polyForceUV -unitize $object;&lt;br /&gt;
    select $object;&lt;br /&gt;
    DeleteHistory;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Unfold UVs (one square UV by face) ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select seams edges first&lt;br /&gt;
&lt;br /&gt;
invertSelection;&lt;br /&gt;
string $selectedEdges [] = `ls -sl`;&lt;br /&gt;
polyMapSewMove -nf 10 -lps 0 -ch 1 $selectedEdges;&lt;br /&gt;
select -r ($object+&amp;quot;.map[*]&amp;quot;);&lt;br /&gt;
u3dUnfold -ite 1 -p 0 -bi 1 -tf 1 -ms 1024 -rs 0 ($object+&amp;quot;.map[*]&amp;quot;);&lt;br /&gt;
u3dLayout -res 256 -scl 1 -spc 0.001 -mar 0.01 -box 0 1 0 1 $object;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Walter</name></author>
		
	</entry>
	<entry>
		<id>http://antoinevienne.fr/wiki/index.php?title=Maya_Mel&amp;diff=255</id>
		<title>Maya Mel</title>
		<link rel="alternate" type="text/html" href="http://antoinevienne.fr/wiki/index.php?title=Maya_Mel&amp;diff=255"/>
		<updated>2023-09-27T12:28:49Z</updated>

		<summary type="html">&lt;p&gt;Walter: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Maya Mels Scripts=&lt;br /&gt;
=== Octane Render Baking group id - Assign id to multiple objects shapes ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// 0 is for Red, 2 for Green, 4 for Blue&lt;br /&gt;
// 3, 5 and 6 for Cyan, Magenta and Yellow&lt;br /&gt;
// Replace the number &amp;quot;0&amp;quot; by the number of your choice&lt;br /&gt;
// Baking group id is also avalaible in Attribute Spreadsheet Editor&lt;br /&gt;
&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    print($object+&amp;quot;\n&amp;quot;);&lt;br /&gt;
    setAttr ($object + &amp;quot;.octBakGrId&amp;quot;) (0);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Maxwell Render - Particles sequence - Force .abc file ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
//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&lt;br /&gt;
&lt;br /&gt;
global int $current_frame;&lt;br /&gt;
$current_frame = `currentTime -query`;&lt;br /&gt;
print $current_frame;&lt;br /&gt;
{&lt;br /&gt;
setAttr -type &amp;quot;string&amp;quot; maxwellRFRKParticles1.file (&amp;quot;/YOUR_PATH/YOUR_FILE&amp;quot; + $current_frame + &amp;quot;.abc&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Maxwell Render - Specify object ID color ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Specify object ID color&lt;br /&gt;
&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    print($object+&amp;quot;\n&amp;quot;);&lt;br /&gt;
    setAttr ($object + &amp;quot;.mxSpecifyObjIdColor&amp;quot;) (1);&lt;br /&gt;
    setAttr ($object + &amp;quot;.mxObjIdColor&amp;quot;) -type &amp;quot;double3&amp;quot; 1 0 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Redshift - Add blend attribute and set random value for objects selection ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Useful for blending between colors with RedshiftUserDataScalar&lt;br /&gt;
&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    print($object);&lt;br /&gt;
    addAttr -ln &amp;quot;blend&amp;quot; -at double  -min 0 -max 1 -dv 0 $object;&lt;br /&gt;
    setAttr ($object + &amp;quot;.blend&amp;quot;) (rand(1));&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Redshift - Set Primary visibility off for selection (layer override) ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Go in right render layer and select objects&lt;br /&gt;
&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    print($object+&amp;quot;\n&amp;quot;);&lt;br /&gt;
    setAttr ($object + &amp;quot;.rsEnableVisibilityOverrides&amp;quot;) (1);&lt;br /&gt;
    editRenderLayerAdjustment ($object + &amp;quot;.rsPrimaryRayVisible&amp;quot;);&lt;br /&gt;
    setAttr ($object + &amp;quot;.rsPrimaryRayVisible&amp;quot;) (0);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Convert Motion trail to curve ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select the motion trail first&lt;br /&gt;
&lt;br /&gt;
{&lt;br /&gt;
$selected=`ls -dag -et snapshotShape`;&lt;br /&gt;
for ($obj in $selected){&lt;br /&gt;
$pts=(getAttr($obj+&amp;quot;.pts&amp;quot;));&lt;br /&gt;
$size=size($pts);&lt;br /&gt;
$curve=`curve -d 1 -p $pts[0] $pts[1] $pts[2] -p $pts[4] $pts[5] $pts[6] -k 0 -k 1`;&lt;br /&gt;
for($i=8;$i&amp;lt;$size;$i+=4)&lt;br /&gt;
curve -os -a -p $pts[$i] $pts[$i+1] $pts[$i+2] $curve ;&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Quantize keyframes for selection ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Snap keys on frames for objects selection&lt;br /&gt;
&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    print($object+&amp;quot;\n&amp;quot;);&lt;br /&gt;
    snapKey $object;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Loop image sequence for texture ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// On File texture, check Image sequence, and edit expression&lt;br /&gt;
&lt;br /&gt;
file1.frameExtension=((frame%8)+1);&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Symmetrize - Duplicate &amp;amp; merge object ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select half object first&lt;br /&gt;
&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    print($object+&amp;quot;\n&amp;quot;);&lt;br /&gt;
    xform -piv 0 0 0 $object;&lt;br /&gt;
    duplicate -rr;&lt;br /&gt;
    setAttr ($object + &amp;quot;.scaleX&amp;quot;) (-1);&lt;br /&gt;
    select -add $object ;&lt;br /&gt;
    polyPerformAction polyUnite o 0;&lt;br /&gt;
    polyMergeVertex  -d 0.0001 -am 1 -ch 1;&lt;br /&gt;
    DeleteHistory;&lt;br /&gt;
    rename ($object);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Mirror object ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select object first&lt;br /&gt;
&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    print($object+&amp;quot;\n&amp;quot;);&lt;br /&gt;
    DeleteHistory;&lt;br /&gt;
    makeIdentity -apply true -t 1 -r 1 -s 1 -n 0 -pn 1;&lt;br /&gt;
    xform -piv 0 0 0 $object;&lt;br /&gt;
    duplicate -rr;&lt;br /&gt;
    setAttr ($object + &amp;quot;.scaleX&amp;quot;) (-1);&lt;br /&gt;
    DeleteHistory;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Group each object and rename ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select objects first&lt;br /&gt;
&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    string $name = ($object);&lt;br /&gt;
    select $object ;&lt;br /&gt;
    doGroup 0 1 1;&lt;br /&gt;
    rename ($name + &amp;quot;_GRP&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Change path in an Attribute ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Here the Attribute is &amp;quot;.filePrefix&amp;quot; - Select objects first&lt;br /&gt;
&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    string $path = getAttr ($object+&amp;quot;.filePrefix&amp;quot;);&lt;br /&gt;
    $path = `substitute &amp;quot;//OLD/PATH/&amp;quot; $path &amp;quot;//NEW/PATH/&amp;quot;`;&lt;br /&gt;
    setAttr -type &amp;quot;string&amp;quot; ($object+&amp;quot;.filePrefix&amp;quot;) ($path);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Change opacity mode on V-Ray shaders ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select shaders first&lt;br /&gt;
&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    if (attributeExists(&amp;quot;omode&amp;quot;,$object)) { //check if attribute exists&lt;br /&gt;
        CBunlockAttr ($object+&amp;quot;.omode&amp;quot;); //unlock opacity mode&lt;br /&gt;
    }&lt;br /&gt;
    if (attributeExists(&amp;quot;opacityMode&amp;quot;,$object)) {&lt;br /&gt;
        setAttr ($object+&amp;quot;.opacityMode&amp;quot;) 1; //set opacity mode in Clip - 0 pour Normal&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// Alternative&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    if (attributeExists(&amp;quot;opacityMode&amp;quot;,$object)) {&lt;br /&gt;
        setAttr ($object+&amp;quot;.opacityMode&amp;quot;) -l false; //unlock attribute if locked&lt;br /&gt;
    }&lt;br /&gt;
    if (attributeExists(&amp;quot;opacityMode&amp;quot;,$object)) {&lt;br /&gt;
        setAttr ($object+&amp;quot;.opacityMode&amp;quot;) 2; //set opacity mode in Clip - 0 pour Normal&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Change color space on selected fileTextures ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Useful to automatically convert Quixel Megascans by example from sRGB/Raw to ACES color spaces&lt;br /&gt;
&lt;br /&gt;
string $object_selection[] = (`ls -sl`);&lt;br /&gt;
for ($object in $object_selection) {&lt;br /&gt;
    if(`getAttr ($object+&amp;quot;.cs&amp;quot;)` == &amp;quot;sRGB&amp;quot;){&lt;br /&gt;
        setAttr ($object + &amp;quot;.cs&amp;quot;) -type &amp;quot;string&amp;quot; &amp;quot;Utility - sRGB - Texture&amp;quot;;&lt;br /&gt;
    }&lt;br /&gt;
    if(`getAttr ($object+&amp;quot;.cs&amp;quot;)` == &amp;quot;Raw&amp;quot;){&lt;br /&gt;
        setAttr ($object + &amp;quot;.cs&amp;quot;) -type &amp;quot;string&amp;quot; &amp;quot;Utility - Raw&amp;quot;;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Redshift - custom Tesselation on selected objects ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select objects first&lt;br /&gt;
&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    print($object+&amp;quot;\n&amp;quot;);&lt;br /&gt;
    setAttr ($object + &amp;quot;.rsMinTessellationLength&amp;quot;) (0.1);&lt;br /&gt;
    setAttr ($object + &amp;quot;.rsMaxTessellationSubdivs&amp;quot;) (2);&lt;br /&gt;
    setAttr ($object + &amp;quot;.rsOutOfFrustumTessellationFactor&amp;quot;) (4);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Change color on selected shaders ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select shaders first&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    print($object+&amp;quot;\n&amp;quot;);&lt;br /&gt;
    setAttr ($object + &amp;quot;.color&amp;quot;) -l false;&lt;br /&gt;
    setAttr ($object + &amp;quot;.color&amp;quot;) -type &amp;quot;double3&amp;quot; (0.18) (0.18) (0.18);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Change Filter Type on selected Files Textures ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select files textures first - 0 means Off&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    print($object+&amp;quot;\n&amp;quot;);&lt;br /&gt;
    setAttr ($object + &amp;quot;.filterType&amp;quot;) 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Clean Render Layers ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// In MEL&lt;br /&gt;
fixRenderLayerOutAdjustmentErrors;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Change Filter Type on selected Files Textures ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select files textures first - 0 means Off&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    print($object+&amp;quot;\n&amp;quot;);&lt;br /&gt;
    setAttr ($object + &amp;quot;.filterType&amp;quot;) 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Select by name ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select objects with &amp;quot;toto&amp;quot;&lt;br /&gt;
select -r &amp;quot;toto*&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Display color on shapes ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select objects&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    print($object+&amp;quot;\n&amp;quot;);&lt;br /&gt;
    setAttr ($object + &amp;quot;.displayColors&amp;quot;) 1;&lt;br /&gt;
    setDisplayColorChannelAttribute ($object + &amp;quot;.displayColorChannel&amp;quot;);&lt;br /&gt;
    polyColorPerVertex -r 1 -g 0 -b 0 -a 1 -cdo;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Geometry Constraint on multiple selection ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select objects to constrain&lt;br /&gt;
string $objectBase = &amp;quot;surfaceName&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    select -cl;&lt;br /&gt;
    select $objectBase;&lt;br /&gt;
    select -add $object;&lt;br /&gt;
    geometryConstraint -weight 1;&lt;br /&gt;
    select -r &amp;quot;*Constraint*&amp;quot;;&lt;br /&gt;
    doDelete;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
=== Speed up smokes rendering with V-Ray ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select smokes first&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    print($object+&amp;quot;\n&amp;quot;);&lt;br /&gt;
    setAttr ($object + &amp;quot;.rendStep&amp;quot;) 160;&lt;br /&gt;
    setAttr ($object + &amp;quot;.shadowStep&amp;quot;) 400;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Set bump multiplier on multiple V-Ray shaders ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select shaders&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    if (attributeExists(&amp;quot;bumpMult&amp;quot;,$object)) {&lt;br /&gt;
        setAttr ($object + &amp;quot;.bumpMult&amp;quot;) -1; //set bump multiplier at -1&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== STOP/START viewport ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// As seen on https://www.toadstorm.com/. - Put it in your shelf&lt;br /&gt;
paneLayout -e -manage false $gMainPane&lt;br /&gt;
&lt;br /&gt;
paneLayout -e -manage true $gMainPane&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Select curves by name ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select objects first - Replace &amp;quot;toto&amp;quot; by what you are looking for&lt;br /&gt;
&lt;br /&gt;
select `ls -type &amp;quot;nurbsCurve&amp;quot; &amp;quot;*toto*&amp;quot;`;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Noise expression ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Replace &amp;quot;pCube1&amp;quot;&lt;br /&gt;
&lt;br /&gt;
pCube1.translateX=sin(time*20)*0.01*noise(time*10);&lt;br /&gt;
pCube1.translateY=sin(time*4)*0.01*noise(time*10);&lt;br /&gt;
pCube1.translateZ=sin(time*12)*0.01*noise(time*10);&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== V-ray - Make curves renderables ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Replace VRayLightMtl1 at the end by your material&lt;br /&gt;
&lt;br /&gt;
$selected=`ls -dag -et curveShape`;&lt;br /&gt;
for ($object in $selected){&lt;br /&gt;
    // Add V-ray Extra attributes&lt;br /&gt;
    vray addAttributesFromGroup $object vray_nurbscurve_renderable 1;&lt;br /&gt;
    vrayAddAttr $object vraySeparator_vray_nurbscurve_renderable;&lt;br /&gt;
    vrayAddAttr $object vrayNurbsCurveRenderable;&lt;br /&gt;
    vrayAddAttr $object vrayNurbsCurveMaterial;&lt;br /&gt;
    vrayAddAttr $object vrayNurbsCurveTesselation;&lt;br /&gt;
    vrayAddAttr $object vrayNurbsCurveStartWidth;&lt;br /&gt;
    vrayAddAttr $object vrayNurbsCurveLockEndWidth;&lt;br /&gt;
    vrayAddAttr $object vrayNurbsCurveEndWidth;&lt;br /&gt;
    setUITemplate -pst attributeEditorTemplate;&lt;br /&gt;
// Activate renderable&lt;br /&gt;
setAttr ($object + &amp;quot;.vrayNurbsCurveRenderable&amp;quot;) 1;&lt;br /&gt;
// Replace VRayLightMtl1 by your material&lt;br /&gt;
connectAttr -force VRayLightMtl1.outColor ($object + &amp;quot;.vrayNurbsCurveMaterial&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Get object type ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Replace toto with the object whose type you want to know&lt;br /&gt;
&lt;br /&gt;
objectType toto;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Render layer override on specific object type ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Replace &amp;quot;Node&amp;quot; by the object type on which you want to act&lt;br /&gt;
&lt;br /&gt;
$selected=`ls -type &amp;quot;Node&amp;quot;`;&lt;br /&gt;
for ($object in $selected){&lt;br /&gt;
    // Create layer override on Primary Visibility attribute on current renderLayer&lt;br /&gt;
    editRenderLayerAdjustment ($object + &amp;quot;.primaryVisibility&amp;quot;);&lt;br /&gt;
    // Set Primary Visibility - 0 or 1&lt;br /&gt;
    setAttr ($object + &amp;quot;.primaryVisibility&amp;quot;) 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== V-ray - Make lights invisible ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$selected=`ls -type &amp;quot;VRayLightRectShape&amp;quot;`;&lt;br /&gt;
for ($object in $selected){&lt;br /&gt;
    setAttr ($object + &amp;quot;.invisible&amp;quot;) 1;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
$selected=`ls -type &amp;quot;VRayLightSphereShape&amp;quot;`;&lt;br /&gt;
for ($object in $selected){&lt;br /&gt;
    setAttr ($object + &amp;quot;.invisible&amp;quot;) 1;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
$selected=`ls -type &amp;quot;VRayLightDomeShape&amp;quot;`;&lt;br /&gt;
for ($object in $selected){&lt;br /&gt;
    setAttr ($object + &amp;quot;.invisible&amp;quot;) 1;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== V-ray - Select Rect Light ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
select `ls -type &amp;quot;VRayLightRectShape&amp;quot;`;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== V-ray - Rect Lights - Directional Preview - Always for all ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$selected=`ls -type &amp;quot;VRayLightRectShape&amp;quot;`;&lt;br /&gt;
for ($object in $selected){&lt;br /&gt;
    setAttr ($object + &amp;quot;.directionalPreview&amp;quot;) 1;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Randomize rotation on selected objects ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// As posted on CGTalk by NaughtyNathan&lt;br /&gt;
// &amp;quot;just set the vector values to the maximum random x,y,z rotations you want to apply to the selected transforms.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
vector $rndRot = &amp;lt;&amp;lt; 0,0,90 &amp;gt;&amp;gt;;	// x,y,z rotations&lt;br /&gt;
for ($object in `ls -sl -tr`){&lt;br /&gt;
    rotate `rand ($rndRot.x)` `rand ($rndRot.y)` `rand ($rndRot.z)` $object;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Quit Maya ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Brute force method&lt;br /&gt;
&lt;br /&gt;
$i = `getpid`; //application ID&lt;br /&gt;
    system(&amp;quot;taskkill /PID &amp;quot;  + $i +&amp;quot; /f&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
// In a gentle way&lt;br /&gt;
&lt;br /&gt;
evalDeferred(&amp;quot;quit -f&amp;quot;);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== V-ray - Import list of Alembics through Proxys Import ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// List of Alembics files - Replace by the name of your Alembics&lt;br /&gt;
string $alembicsParts[] = {&amp;quot;part1&amp;quot;,&amp;quot;part2&amp;quot;,&amp;quot;part3&amp;quot;};&lt;br /&gt;
&lt;br /&gt;
// Replace the PATH of your files - Scale by 100 for Houdini Alembics - &amp;lt;frame04&amp;gt; for sequences&lt;br /&gt;
for ($alembicsPart in $alembicsParts){&lt;br /&gt;
    vrayCreateProxy -node $alembicsPart -existing -dir (&amp;quot;C:/YOURPATH/&amp;quot;+$alembicsPart+&amp;quot;.&amp;lt;frame04&amp;gt;.abc&amp;quot;) -createProxyNode;&lt;br /&gt;
    setAttr ($alembicsPart+&amp;quot;_vraymesh.animType&amp;quot;) 1;&lt;br /&gt;
    setAttr ($alembicsPart+&amp;quot;.scaleZ&amp;quot;) 100;&lt;br /&gt;
    setAttr ($alembicsPart+&amp;quot;.scaleX&amp;quot;) 100;&lt;br /&gt;
    setAttr ($alembicsPart+&amp;quot;.scaleY&amp;quot;) 100;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== V-ray - Change path to VRayMesh for selected proxies ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Change path with your own .vrmesh&lt;br /&gt;
$selected=`ls -type &amp;quot;VRayMesh&amp;quot;`;&lt;br /&gt;
for ($object in $selected){&lt;br /&gt;
    setAttr -type &amp;quot;string&amp;quot; ($object + &amp;quot;.fileName2&amp;quot;) &amp;quot;//DISK/PATH/YOUR_VRMESH.vrmesh&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// If you want to change Geometry type - 4 for GPU mesh - add following in the loop&lt;br /&gt;
//    setAttr ($object + &amp;quot;.geomType&amp;quot;) 4;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Delete image planes ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Delete image plane if exists.&lt;br /&gt;
$selected=`ls -type &amp;quot;imagePlane&amp;quot;`;&lt;br /&gt;
select $selected;&lt;br /&gt;
for ($object in $selected){&lt;br /&gt;
    doDelete;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Merge alembic from set ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select objects in a set called EXPORT_SET&lt;br /&gt;
select -r EXPORT_SET ;&lt;br /&gt;
timeControl -edit -forceRedraw $gPlayBackSlider;&lt;br /&gt;
&lt;br /&gt;
// Create list of objects from EXPORT_SET&lt;br /&gt;
string $assetParts[] = `ls -sl`;&lt;br /&gt;
$assetPartsList = stringArrayToString($assetParts,&amp;quot; &amp;quot;);&lt;br /&gt;
&lt;br /&gt;
// Merge alembic with these objects&lt;br /&gt;
AbcImport -mode import -connect $assetPartsList &amp;quot;//DISK/PATH/alembic.abc&amp;quot;;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Create Texture reference ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// CREATE TEXTURE REFERENCE ON EXPORT SET&lt;br /&gt;
&lt;br /&gt;
select -r YOUR_GROUP ;&lt;br /&gt;
CreateTextureReferenceObject;&lt;br /&gt;
select -cl  ;&lt;br /&gt;
&lt;br /&gt;
// REMOVE REFERENCE OBJECTS FROM EXPORT SET&lt;br /&gt;
select -r YOUR_GROUP_reference ;&lt;br /&gt;
string $selection[] = `ls -sl`;&lt;br /&gt;
string $polyGons[] = `filterExpand -sm 12 $selection`;&lt;br /&gt;
select -r $polyGons;&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    sets -rm EXPORT_SET $object;&lt;br /&gt;
}&lt;br /&gt;
select -cl  ;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Replace animated objects with V-Ray proxies ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// First select animated objects to replace&lt;br /&gt;
// For each object create a proxy then constrain then bake simulation then delete constraint&lt;br /&gt;
&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
	vrayCreateProxy -node assetName -existing -dir (&amp;quot;//DISK/PATH/your_asset.vrmesh&amp;quot;) -createProxyNode;&lt;br /&gt;
	select -r $object ;&lt;br /&gt;
	select -add assetName ;&lt;br /&gt;
	doCreateParentConstraintArgList 1 { &amp;quot;0&amp;quot;,&amp;quot;0&amp;quot;,&amp;quot;0&amp;quot;,&amp;quot;0&amp;quot;,&amp;quot;0&amp;quot;,&amp;quot;0&amp;quot;,&amp;quot;0&amp;quot;,&amp;quot;0&amp;quot;,&amp;quot;1&amp;quot;,&amp;quot;&amp;quot;,&amp;quot;1&amp;quot; };&lt;br /&gt;
	parentConstraint -weight 1;&lt;br /&gt;
	bakeResults -simulation true -t &amp;quot;1000:1100&amp;quot; -sampleBy 1 -oversamplingRate 1 -disableImplicitControl true -preserveOutsideKeys true -sparseAnimCurveBake false -removeBakedAttributeFromLayer false -removeBakedAnimFromLayer false -bakeOnOverrideLayer false -minimizeRotation true -controlPoints false -shape true {&amp;quot;assetName&amp;quot;};&lt;br /&gt;
	select `ls -type &amp;quot;constraint&amp;quot;`;&lt;br /&gt;
	select -add $object ;&lt;br /&gt;
	doDelete;&lt;br /&gt;
	select -cl  ;&lt;br /&gt;
	rename &amp;quot;assetName&amp;quot; $object;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Select all meshes in a group ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// From cmadsenAniden on forums.autodesk.com&lt;br /&gt;
// Replace group1 by the name of your own group&lt;br /&gt;
&lt;br /&gt;
select -r group1 ;&lt;br /&gt;
string $selection[] = `ls -sl`;&lt;br /&gt;
string $polyGons[] = `filterExpand -sm 12 $selection`;&lt;br /&gt;
select -r $polyGons;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Select shot camera ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// CREATE VARIABLE FOR SHOT CAMERA AND SELECT IT&lt;br /&gt;
&lt;br /&gt;
select `ls -type &amp;quot;camera&amp;quot;`;&lt;br /&gt;
select -d sideShape frontShape topShape perspShape;&lt;br /&gt;
$camerashot = `ls -sl`;&lt;br /&gt;
string $shotcamera = $camerashot[0];&lt;br /&gt;
print $shotcamera;&lt;br /&gt;
select $shotcamera;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Get list of frames with keys on all transform objects ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$selected=`ls -dag -et transform`;&lt;br /&gt;
&lt;br /&gt;
float $arrathy[] = `keyframe -query $selected`;&lt;br /&gt;
&lt;br /&gt;
float $sorted[] = python(&amp;quot;import pymel.core as pm; list(set((pm.getMelGlobal(\&amp;quot;float[]\&amp;quot;, \&amp;quot;$arrathy\&amp;quot;))))&amp;quot;);&lt;br /&gt;
print $sorted;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== MULTI SNAP ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Replace a list of objects by another with bake of animation. Replace FSTART and FEND with your own padding.&lt;br /&gt;
&lt;br /&gt;
///////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
///////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
/*&lt;br /&gt;
Type the command MS() in MEL form to open UI.&lt;br /&gt;
*/&lt;br /&gt;
///////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
///////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
source &amp;quot;generateChannelMenu.mel&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
global proc MS ()&lt;br /&gt;
{&lt;br /&gt;
     global string $sourceObjects;&lt;br /&gt;
     global string $destinationObjects;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    // If the window exists already, delete it.&lt;br /&gt;
    if (`window -exists multiSnapWindow`)&lt;br /&gt;
    {&lt;br /&gt;
        deleteUI multiSnapWindow;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    // Build the window.&lt;br /&gt;
    global string $man_window;&lt;br /&gt;
    string $man_window = `window -title &amp;quot; MULTI SNAP&amp;quot; -sizeable 0 -w 300 multiSnapWindow`;&lt;br /&gt;
    frameLayout -label &amp;quot;Snap source objects on destination objects.&amp;quot;;&lt;br /&gt;
    rowLayout -width 540 -nc 2 -cw4 10 20 20 100;&lt;br /&gt;
    // Source objects section&lt;br /&gt;
    frameLayout -label &amp;quot;Source objects&amp;quot;;&lt;br /&gt;
    $sourceObjects = `textScrollList -width 600 -height 300`;&lt;br /&gt;
    rowLayout -width 240 -nc 2 -cw2 120 120;&lt;br /&gt;
    button -label &amp;quot;Add selected&amp;quot; -command &amp;quot;MS_addObjects ();&amp;quot; -width 120;&lt;br /&gt;
    button -label &amp;quot;Remove selected&amp;quot; -command &amp;quot;MS_removeObjects ();&amp;quot; -width 120;&lt;br /&gt;
    setParent ..;&lt;br /&gt;
    rowLayout -width 240 -nc 2 -cw2 120 120;&lt;br /&gt;
    button -label &amp;quot;Remove All&amp;quot; -command &amp;quot;MS_clearObjects ();&amp;quot; -width 240;&lt;br /&gt;
    setParent ..;&lt;br /&gt;
    setParent ..;&lt;br /&gt;
    rowLayout -nc 3;&lt;br /&gt;
    button -label &amp;quot;Create&amp;quot; -command &amp;quot;VRAYCONNECDO() &amp;quot; -width 140 -align center;&lt;br /&gt;
    button -label &amp;quot;Close&amp;quot; -command &amp;quot;DAC_CloseUI() &amp;quot; -width 140 -align center;&lt;br /&gt;
    setParent ..;&lt;br /&gt;
    setParent ..;&lt;br /&gt;
    // Destination objects section&lt;br /&gt;
    frameLayout -label &amp;quot;Destination objects&amp;quot;;&lt;br /&gt;
    $destinationObjects = `textScrollList -width 600 -height 300`;&lt;br /&gt;
    rowLayout -width 240 -nc 2 -cw2 120 120;&lt;br /&gt;
    button -label &amp;quot;Add selected&amp;quot; -command &amp;quot;MS_addMM ();&amp;quot; -width 120;&lt;br /&gt;
    button -label &amp;quot;Remove selected&amp;quot; -command &amp;quot;MS_removeMM ();&amp;quot; -width 120;&lt;br /&gt;
    setParent ..;&lt;br /&gt;
    setParent ..;&lt;br /&gt;
    rowLayout -nc 3;&lt;br /&gt;
    button -label &amp;quot;SNAP IT&amp;quot; -command &amp;quot;VRAYCONNECDO() &amp;quot; -width 140 -align center;&lt;br /&gt;
    button -label &amp;quot;Close&amp;quot; -command &amp;quot;DAC_CloseUI() &amp;quot; -width 140 -align center;&lt;br /&gt;
    setParent ..;&lt;br /&gt;
    setParent ..;&lt;br /&gt;
&lt;br /&gt;
// Show the window.&lt;br /&gt;
showWindow multiSnapWindow;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
global proc string[] getShaders(string $from)&lt;br /&gt;
{&lt;br /&gt;
// get the shapes from the input&lt;br /&gt;
string $shapes[] = ls(&amp;quot;-o&amp;quot;, &amp;quot;-dag&amp;quot;, &amp;quot;-s&amp;quot;, $from);&lt;br /&gt;
// give me the connected &amp;quot;shadingEngines&amp;quot;&lt;br /&gt;
string $shadingEngines[] = listConnections(&amp;quot;-type&amp;quot;,&amp;quot;shadingEngine&amp;quot;, $shapes);&lt;br /&gt;
// list the connected materials (shaders) from that&lt;br /&gt;
string $materials[] = ls(&amp;quot;-mat&amp;quot;, listConnections($shadingEngines));&lt;br /&gt;
// remove duplicate occurrences.&lt;br /&gt;
return (stringArrayRemoveDuplicates($materials));&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
//Add selected objects to list.&lt;br /&gt;
global proc MS_addObjects ()&lt;br /&gt;
{&lt;br /&gt;
      global string $sourceObjects;&lt;br /&gt;
      string $selectedshapes[] = `ls -sl -l`;&lt;br /&gt;
      //print $selectedshapes;&lt;br /&gt;
      int $count = 0;&lt;br /&gt;
&lt;br /&gt;
if ($selectedshapes[0] != &amp;quot;&amp;quot;)&lt;br /&gt;
{&lt;br /&gt;
   for ($i in $selectedshapes)&lt;br /&gt;
   {&lt;br /&gt;
     $count ++;&lt;br /&gt;
     textScrollList -edit -append $i $sourceObjects;&lt;br /&gt;
   }&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
//Add selected objects to list.&lt;br /&gt;
global proc MS_addMM ()&lt;br /&gt;
{&lt;br /&gt;
      global string $destinationObjects;&lt;br /&gt;
      string $selectedshapes[] = `ls -sl -l`;&lt;br /&gt;
      //print $selectedshapes;&lt;br /&gt;
      int $count = 0;&lt;br /&gt;
&lt;br /&gt;
if ($selectedshapes[0] != &amp;quot;&amp;quot;)&lt;br /&gt;
{&lt;br /&gt;
   for ($i in $selectedshapes)&lt;br /&gt;
   {&lt;br /&gt;
     $count ++;&lt;br /&gt;
     textScrollList -edit -append $i $destinationObjects;&lt;br /&gt;
   }&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// Clear objects from list.&lt;br /&gt;
global proc MS_clearObjects ()&lt;br /&gt;
{&lt;br /&gt;
    global string $sourceObjects;&lt;br /&gt;
textScrollList -e -ra $sourceObjects;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// Remove selected object from list.&lt;br /&gt;
global proc MS_removeObjects ()&lt;br /&gt;
{&lt;br /&gt;
   global string $sourceObjects;&lt;br /&gt;
&lt;br /&gt;
    int $index [] = `textScrollList -query -selectIndexedItem $sourceObjects`;&lt;br /&gt;
    if ($index [0] != 0)&lt;br /&gt;
    {&lt;br /&gt;
        textScrollList -edit -removeIndexedItem $index [0] $sourceObjects;&lt;br /&gt;
    }&lt;br /&gt;
   global string $sourceObjects;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
global proc VRAYCONNECDO()&lt;br /&gt;
{&lt;br /&gt;
    // UI Elements&lt;br /&gt;
global string $sourceObjects;&lt;br /&gt;
global string $destinationObjects;&lt;br /&gt;
// Define user selected objects&lt;br /&gt;
string $selected_objects[] = `textScrollList -query -allItems $sourceObjects`;&lt;br /&gt;
string $meshMaterial[] = `textScrollList -query -allItems $destinationObjects`;&lt;br /&gt;
int $i = 0;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
// SET PADDING&lt;br /&gt;
string $FSTART = &amp;quot;1&amp;quot;;&lt;br /&gt;
string $FEND = &amp;quot;100&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
print $FSTART;&lt;br /&gt;
print $FEND;&lt;br /&gt;
&lt;br /&gt;
string $PADDING = $FSTART + &amp;quot;:&amp;quot; + $FEND;&lt;br /&gt;
&lt;br /&gt;
//Progress bar&lt;br /&gt;
global string $gMainProgressBar;&lt;br /&gt;
&lt;br /&gt;
// Start the progress bar and adjust its max value for this operation.&lt;br /&gt;
    int $steps = size($selected_objects);&lt;br /&gt;
    progressBar -edit -beginProgress -isInterruptable true -status &amp;quot;Connecting shaders to mesh material ...&amp;quot; -maxValue $steps $gMainProgressBar;&lt;br /&gt;
 &lt;br /&gt;
for ($i = 0; $i &amp;lt; size($selected_objects); $i ++)&lt;br /&gt;
{&lt;br /&gt;
        parentConstraint -n parentConstraintMS $selected_objects[$i] $meshMaterial[$i];&lt;br /&gt;
        select -r $meshMaterial[$i] ;&lt;br /&gt;
        bakeResults -simulation true -t $PADDING -sampleBy 1 -oversamplingRate 1 -disableImplicitControl true -preserveOutsideKeys true -sparseAnimCurveBake false -removeBakedAttributeFromLayer false -removeBakedAnimFromLayer false -bakeOnOverrideLayer false -minimizeRotation true -controlPoints false -shape true {$meshMaterial[$i]};&lt;br /&gt;
        select -cl  ;&lt;br /&gt;
        select -r &amp;quot;*parentConstraintMS*&amp;quot;;&lt;br /&gt;
        doDelete;&lt;br /&gt;
// Update the progress bar.&lt;br /&gt;
progressBar -edit -step 1 $gMainProgressBar;&lt;br /&gt;
}&lt;br /&gt;
// End the progress.&lt;br /&gt;
progressBar -edit -endProgress $gMainProgressBar;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Delete hidden objects ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select objects&lt;br /&gt;
&lt;br /&gt;
for ( $object in `ls -sl` ) {&lt;br /&gt;
    $vis = getAttr ($object+&amp;quot;.visibility&amp;quot;);&lt;br /&gt;
    if ($vis == 0){&lt;br /&gt;
        select -r $object ;&lt;br /&gt;
        doDelete ;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== V-Ray - BAKE MATERIALS ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Made to work also with mayabatch.exe&lt;br /&gt;
&lt;br /&gt;
////////////////////////////////////////////&lt;br /&gt;
// BAKE VRAY CUSTOM VARIABLES&lt;br /&gt;
////////////////////////////////////////////&lt;br /&gt;
&lt;br /&gt;
// ASSET PATH&lt;br /&gt;
string $assetFileType = &amp;quot;mayaBinary&amp;quot;;&lt;br /&gt;
string $assetPath = &amp;quot;C:/YOUR_PATH/YOUR_SURFACING_ASSET.mb&amp;quot;;&lt;br /&gt;
string $assetName = &amp;quot;ASSET_NAME&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
// LIGHT RIG PATH&lt;br /&gt;
string $lightRigFileType = &amp;quot;mayaAscii&amp;quot;;&lt;br /&gt;
string $lightRigPath = &amp;quot;C:/YOUR_PATH/YOUR_LIGHT_RIG.mb&amp;quot;;&lt;br /&gt;
string $lightRigName = &amp;quot;DAY_LIGHTING&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
// BAKED TEXTURES PATH&lt;br /&gt;
string $bakedTexturesPath = (&amp;quot;C:/YOUR_PATH/BAKED_TEXTURES/&amp;quot; + $assetName + &amp;quot;_&amp;quot; + $lightRigName + &amp;quot;_Bake&amp;quot;);&lt;br /&gt;
print $bakedTexturesPath;&lt;br /&gt;
&lt;br /&gt;
// SET RESOLUTION FOR BAKED MAPS&lt;br /&gt;
$resWidth = 4096;&lt;br /&gt;
$resHeight = $resWidth;&lt;br /&gt;
&lt;br /&gt;
// COLOR SPACE FOR FILE TEXTURES&lt;br /&gt;
string $fileColorSpace = &amp;quot;ACES - ACEScg&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
////////////////////////////////////////////&lt;br /&gt;
// END OF CUSTOM VARIABLES&lt;br /&gt;
////////////////////////////////////////////&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
////////////////////////////////////////////&lt;br /&gt;
// RENDER SETTINGS&lt;br /&gt;
&lt;br /&gt;
// Set File Name Prefix&lt;br /&gt;
setAttr -type &amp;quot;string&amp;quot; vraySettings.fileNamePrefix &amp;quot;&amp;lt;Scene&amp;gt;/&amp;lt;Layer&amp;gt;/&amp;lt;Camera&amp;gt;_&amp;lt;Layer&amp;gt;_&amp;lt;Scene&amp;gt;&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
// Set resolution&lt;br /&gt;
$resWidthHalf = $resWidth/2;&lt;br /&gt;
$resHeightHalf = $resHeight/2;&lt;br /&gt;
setAttr &amp;quot;vraySettings.width&amp;quot; $resWidthHalf;&lt;br /&gt;
setAttr &amp;quot;vraySettings.height&amp;quot; $resHeightHalf;&lt;br /&gt;
&lt;br /&gt;
// Set Persp camera renderable&lt;br /&gt;
setAttr &amp;quot;perspShape.renderable&amp;quot; 1;&lt;br /&gt;
&lt;br /&gt;
// Set Image format&lt;br /&gt;
setAttr -type &amp;quot;string&amp;quot; &amp;quot;vraySettings.imageFormatStr&amp;quot; &amp;quot;exr (multichannel)&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
// Set Animation type on Standard&lt;br /&gt;
setAttr &amp;quot;vraySettings.animType&amp;quot; 0;&lt;br /&gt;
setAttr &amp;quot;vraySettings.animBatchOnly&amp;quot; 1;&lt;br /&gt;
&lt;br /&gt;
// Sampler type Bucket&lt;br /&gt;
setAttr &amp;quot;vraySettings.samplerType&amp;quot; 4;&lt;br /&gt;
&lt;br /&gt;
// Min Shading Rate&lt;br /&gt;
//setAttr &amp;quot;vraySettings.minShadeRate&amp;quot; 4;&lt;br /&gt;
setAttr &amp;quot;vraySettings.minShadeRate&amp;quot; 7;&lt;br /&gt;
&lt;br /&gt;
// Buckets subdivs&lt;br /&gt;
//setAttr &amp;quot;vraySettings.dmcMinSubdivs&amp;quot; 1;&lt;br /&gt;
//setAttr &amp;quot;vraySettings.dmcMaxSubdivs&amp;quot; 8;&lt;br /&gt;
//setAttr &amp;quot;vraySettings.dmcThreshold&amp;quot; 0.1;&lt;br /&gt;
setAttr &amp;quot;vraySettings.dmcMinSubdivs&amp;quot; 1;&lt;br /&gt;
setAttr &amp;quot;vraySettings.dmcMaxSubdivs&amp;quot; 15;&lt;br /&gt;
setAttr &amp;quot;vraySettings.dmcThreshold&amp;quot; 0.01;&lt;br /&gt;
&lt;br /&gt;
// Color mapping Linear&lt;br /&gt;
setAttr &amp;quot;vraySettings.cmap_type&amp;quot; 0;&lt;br /&gt;
&lt;br /&gt;
// GI on&lt;br /&gt;
setAttr &amp;quot;vraySettings.giOn&amp;quot; 1;&lt;br /&gt;
//setAttr &amp;quot;vraySettings.subdivs&amp;quot; 400;&lt;br /&gt;
setAttr &amp;quot;vraySettings.subdivs&amp;quot; 1000;&lt;br /&gt;
&lt;br /&gt;
// Max subdivs&lt;br /&gt;
setAttr &amp;quot;vraySettings.ddisplac_maxSubdivs&amp;quot; 16;&lt;br /&gt;
&lt;br /&gt;
// Cache geometry and bitmaps&lt;br /&gt;
setAttr &amp;quot;vraySettings.globopt_cache_geom_plugins&amp;quot; 1;&lt;br /&gt;
setAttr &amp;quot;vraySettings.globopt_cache_bitmaps&amp;quot; 1;&lt;br /&gt;
&lt;br /&gt;
// Dynamic memory limit&lt;br /&gt;
setAttr &amp;quot;vraySettings.sys_rayc_dynMemLimit&amp;quot; 0;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
////////////////////////////////////////////&lt;br /&gt;
// IMPORT&lt;br /&gt;
&lt;br /&gt;
// IMPORT LIGHT RIG&lt;br /&gt;
file -import -type $lightRigFileType  -ignoreVersion -mergeNamespacesOnClash false -rpr &amp;quot;:&amp;quot; -options &amp;quot;v=0;&amp;quot; $lightRigPath;&lt;br /&gt;
&lt;br /&gt;
// IMPORT ASSET&lt;br /&gt;
file -import -type $assetFileType  -ignoreVersion -mergeNamespacesOnClash false -rpr &amp;quot;:&amp;quot; -options &amp;quot;v=0;&amp;quot; $assetPath;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
// CREATE SETS&lt;br /&gt;
select `ls -type &amp;quot;mesh&amp;quot;`;&lt;br /&gt;
sets -name &amp;quot;assetOriginal_Set&amp;quot; ;&lt;br /&gt;
duplicate -rr;&lt;br /&gt;
group -w -n (&amp;quot;GRP_&amp;quot; + $assetName + &amp;quot;_BAKE_&amp;quot; + `toupper $lightRigName`);&lt;br /&gt;
sets -name &amp;quot;assetBaked_Set&amp;quot; ;&lt;br /&gt;
&lt;br /&gt;
// REMOVE BAKED PARTS FROM ORIGINAL PARTS SET&lt;br /&gt;
select -r assetBaked_Set ;&lt;br /&gt;
string $selection[] = `ls -sl`;&lt;br /&gt;
string $polyGons[] = `filterExpand -sm 12 $selection`;&lt;br /&gt;
select -r $polyGons;&lt;br /&gt;
pickWalk -d down;&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    sets -rm assetOriginal_Set $object;&lt;br /&gt;
}&lt;br /&gt;
select -cl  ;&lt;br /&gt;
&lt;br /&gt;
// DELETE HIDDEN OBJECTS&lt;br /&gt;
select -r assetBaked_Set ;&lt;br /&gt;
string $selection[] = `ls -sl`;&lt;br /&gt;
string $polyGons[] = `filterExpand -sm 12 $selection`;&lt;br /&gt;
select -r $polyGons;&lt;br /&gt;
for ( $object in `ls -sl` ) {&lt;br /&gt;
    $vis = getAttr ($object+&amp;quot;.visibility&amp;quot;);&lt;br /&gt;
    if ($vis == 0){&lt;br /&gt;
        select -r $object ;&lt;br /&gt;
        doDelete ;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
select -cl  ;&lt;br /&gt;
&lt;br /&gt;
// fixShapeName - Thanks to Pinkwerks&lt;br /&gt;
global proc&lt;br /&gt;
fixShapeName()&lt;br /&gt;
{&lt;br /&gt;
    string $me = &amp;quot;fixShapeName&amp;quot;;&lt;br /&gt;
    string $shape;&lt;br /&gt;
    string $newShapeName;&lt;br /&gt;
    string $parent;&lt;br /&gt;
    string $tmpA[];&lt;br /&gt;
	string $selectedShapes[] = `ls -sl -l`;&lt;br /&gt;
    int $sizeOfShapes = `size $selectedShapes`;&lt;br /&gt;
&lt;br /&gt;
    if ( $sizeOfShapes == 0 )&lt;br /&gt;
    	error($me + &amp;quot; : Nothing shapes to process!&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
    for ( $shape in $selectedShapes )&lt;br /&gt;
    {&lt;br /&gt;
    	$tmpA = `listRelatives -p $shape`;&lt;br /&gt;
		$parent = $tmpA[0];&lt;br /&gt;
		$newShapeName = ($parent + &amp;quot;Shape&amp;quot;);&lt;br /&gt;
		rename $shape $newShapeName;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// APPLY FIXSHAPENAME TO BAKED ASSET PARTS&lt;br /&gt;
select -r assetBaked_Set ;&lt;br /&gt;
string $selection[] = `ls -sl`;&lt;br /&gt;
string $polyGons[] = `filterExpand -sm 12 $selection`;&lt;br /&gt;
select -r $polyGons;&lt;br /&gt;
pickWalk -d down;&lt;br /&gt;
fixShapeName();&lt;br /&gt;
select -cl  ;&lt;br /&gt;
&lt;br /&gt;
// DELETE OBJECTS WITHOUT UVS&lt;br /&gt;
select -r assetBaked_Set ;&lt;br /&gt;
string $selection[] = `ls -sl`;&lt;br /&gt;
string $polyGons[] = `filterExpand -sm 12 $selection`;&lt;br /&gt;
select -r $polyGons;&lt;br /&gt;
for ( $object in `ls -sl` ) {&lt;br /&gt;
    int $vertexCount[] = `polyEvaluate -uv $object`;&lt;br /&gt;
    print $vertexCount;&lt;br /&gt;
    string $uvCount = $vertexCount[0];&lt;br /&gt;
    if ($uvCount == 0){&lt;br /&gt;
        select -r $object ;&lt;br /&gt;
        doDelete ;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// CREATE VRAY BAKE OPTIONS&lt;br /&gt;
createNode &amp;quot;VRayBakeOptions&amp;quot; -n &amp;quot;vrayBakeOptions&amp;quot;;&lt;br /&gt;
select -r assetBaked_Set ;&lt;br /&gt;
string $selection[] = `ls -sl`;&lt;br /&gt;
string $polyGons[] = `filterExpand -sm 12 $selection`;&lt;br /&gt;
select -r $polyGons;&lt;br /&gt;
$selected=`ls -sl`;&lt;br /&gt;
for ($object in $selected){&lt;br /&gt;
    sets -edit -forceElement  vrayBakeOptions $object ;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// HIDE ORIGINAL ASSET&lt;br /&gt;
select -r assetOriginal_Set ;&lt;br /&gt;
pickWalk -d up;&lt;br /&gt;
hide `ls -sl`;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
// BAKE VRAY OPTIONS&lt;br /&gt;
setAttr &amp;quot;vrayBakeOptions.udimBaking&amp;quot; 1;&lt;br /&gt;
setAttr &amp;quot;vrayBakeOptions.resolutionX&amp;quot; $resWidth;&lt;br /&gt;
&lt;br /&gt;
optionVar -intValue &amp;quot;vrayBakeType&amp;quot; 2;&lt;br /&gt;
optionVar -intValue &amp;quot;vraySkipNodesWithoutBakeOptions&amp;quot; 1;&lt;br /&gt;
optionVar -intValue &amp;quot;vrayAssignBakedTextures&amp;quot; 1;&lt;br /&gt;
optionVar -stringValue &amp;quot;vrayBakeOutputPath&amp;quot; $bakedTexturesPath;&lt;br /&gt;
optionVar -intValue &amp;quot;vrayBakeProjectionBaking&amp;quot; 0;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
// GO BAKE GO&lt;br /&gt;
select -cl  ;&lt;br /&gt;
select -r assetBaked_Set ;&lt;br /&gt;
string $selection[] = `ls -sl`;&lt;br /&gt;
string $polyGons[] = `filterExpand -sm 12 $selection`;&lt;br /&gt;
select -r $polyGons;&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    vrayStartBake;&lt;br /&gt;
}&lt;br /&gt;
select -cl  ;&lt;br /&gt;
&lt;br /&gt;
// UV TILING UDIM AND ACES CG FOR FILES&lt;br /&gt;
for ( $object in `ls -type &amp;quot;file&amp;quot;` ) {&lt;br /&gt;
    setAttr ($object + &amp;quot;.filterType&amp;quot;) 0;&lt;br /&gt;
    setAttr ($object + &amp;quot;.uvTilingMode&amp;quot;) 3;&lt;br /&gt;
    setAttr ($object + &amp;quot;.cs&amp;quot;) -type &amp;quot;string&amp;quot; $fileColorSpace;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// CONNECT SHADERS&lt;br /&gt;
select -cl  ;&lt;br /&gt;
select -r assetBaked_Set ;&lt;br /&gt;
string $selection[] = `ls -sl`;&lt;br /&gt;
string $polyGons[] = `filterExpand -sm 12 $selection`;&lt;br /&gt;
for ( $object in $polyGons ) {&lt;br /&gt;
    string $shadingGroupName = ($object + &amp;quot;Shape_bakedmtlSG&amp;quot;);&lt;br /&gt;
    sets -e -forceElement $shadingGroupName $object;&lt;br /&gt;
}&lt;br /&gt;
select -cl  ;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
///////////////////////////////////&lt;br /&gt;
// SAVE&lt;br /&gt;
file -rename (&amp;quot;C:/YOUR_PATH/BAKED_ASSETS/&amp;quot; + $assetName + &amp;quot;_&amp;quot; + $lightRigName + &amp;quot;_BAKE_DEBUG.mb&amp;quot;);&lt;br /&gt;
file -f -save;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Arnold - Set all Standins display on Bouding box ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$selected=`ls -type &amp;quot;aiStandIn&amp;quot;`;&lt;br /&gt;
for ($object in $selected){&lt;br /&gt;
    setAttr ($object + &amp;quot;.mode&amp;quot;) 0;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Arnold - Set all Standins display on Point cloud ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$selected=`ls -type &amp;quot;aiStandIn&amp;quot;`;&lt;br /&gt;
for ($object in $selected){&lt;br /&gt;
    setAttr ($object + &amp;quot;.mode&amp;quot;) 4;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Alembic - Loop animation on all nodes ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$selected=`ls -type &amp;quot;AlembicNode&amp;quot;`;&lt;br /&gt;
for ($object in $selected){&lt;br /&gt;
    setAttr ($object + &amp;quot;.cycleType&amp;quot;) 1;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Mental Ray nodes error - Delete Mayatomr plugin ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
unknownPlugin -remove &amp;quot;Mayatomr&amp;quot;;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Delete Unknown nodes ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
select -r `ls -type unknown`;&lt;br /&gt;
delete;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Write text ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
string $exampleFileName = ( &amp;quot;D:/yolo.bat&amp;quot; );&lt;br /&gt;
string $linesToWrite[] = {&lt;br /&gt;
    &amp;quot;youpi&amp;quot;,&lt;br /&gt;
    &amp;quot;youhou&amp;quot;&lt;br /&gt;
    };&lt;br /&gt;
int $result = fwriteAllLines($exampleFileName,$linesToWrite);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Point Lock No Attach on selected follicles ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    setAttr ($object + &amp;quot;.pointLock&amp;quot;) 0;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Convert .ma cameras from Reality Capture into .abc files ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// List of assets&lt;br /&gt;
string $fileParts[] = {&amp;quot;asset_001&amp;quot;, &amp;quot;asset_002&amp;quot;};&lt;br /&gt;
&lt;br /&gt;
// Replace the PATH of your files&lt;br /&gt;
for ($filePart in $fileParts){&lt;br /&gt;
	string $fileName = $filePart + &amp;quot;_cam&amp;quot;;&lt;br /&gt;
	string $filePath = &amp;quot;//DISK/PATH/&amp;quot; + $filePart + &amp;quot;/&amp;quot; + $filePart +&amp;quot;_cam.ma&amp;quot;;&lt;br /&gt;
	file -import -type &amp;quot;mayaAscii&amp;quot;  -ignoreVersion -ra true -mergeNamespacesOnClash false -rpr $fileName -options &amp;quot;v=0;p=17;f=0&amp;quot;  -pr  -importFrameRate true  -importTimeRange &amp;quot;override&amp;quot; $filePath;&lt;br /&gt;
	select -cl;&lt;br /&gt;
	select `ls -type &amp;quot;imagePlane&amp;quot;`;&lt;br /&gt;
	pickWalk -d up;&lt;br /&gt;
	doDelete;&lt;br /&gt;
	select `ls -type &amp;quot;camera&amp;quot;`;&lt;br /&gt;
	pickWalk -d up;	&lt;br /&gt;
	string $abcPath = &amp;quot;//DISK/PATH/&amp;quot; + $filePart + &amp;quot;/&amp;quot; + $filePart +&amp;quot;_cam.abc&amp;quot;;&lt;br /&gt;
	string $abcExp = &amp;quot;-frameRange 1 1 -uvWrite -worldSpace -dataFormat ogawa -root |* -file &amp;quot; + $abcPath;&lt;br /&gt;
	AbcExport -j $abcExp;&lt;br /&gt;
	select -all;&lt;br /&gt;
	doDelete;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Combine objects ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select objects&lt;br /&gt;
&lt;br /&gt;
polyPerformAction polyUnite o 0; &lt;br /&gt;
DeleteHistory;&lt;br /&gt;
FreezeTransformations;&lt;br /&gt;
makeIdentity -apply true -t 1 -r 1 -s 1 -n 0 -pn 1;&lt;br /&gt;
CenterPivot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Unitize UVs (one square UV by face) ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select objects&lt;br /&gt;
&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    select -r ($object+&amp;quot;.e[*]&amp;quot;);&lt;br /&gt;
    hilite ($object+&amp;quot;.e[*]&amp;quot;) ;&lt;br /&gt;
    polyMapCut -ch 1 ($object+&amp;quot;.e[*]&amp;quot;);&lt;br /&gt;
    polyForceUV -unitize $object;&lt;br /&gt;
    select $object;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Unfold UVs (one square UV by face) ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select seams edges first&lt;br /&gt;
&lt;br /&gt;
invertSelection;&lt;br /&gt;
string $selectedEdges [] = `ls -sl`;&lt;br /&gt;
polyMapSewMove -nf 10 -lps 0 -ch 1 $selectedEdges;&lt;br /&gt;
select -r ($object+&amp;quot;.map[*]&amp;quot;);&lt;br /&gt;
u3dUnfold -ite 1 -p 0 -bi 1 -tf 1 -ms 1024 -rs 0 ($object+&amp;quot;.map[*]&amp;quot;);&lt;br /&gt;
u3dLayout -res 256 -scl 1 -spc 0.001 -mar 0.01 -box 0 1 0 1 $object;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Walter</name></author>
		
	</entry>
	<entry>
		<id>http://antoinevienne.fr/wiki/index.php?title=Maya_Mel&amp;diff=254</id>
		<title>Maya Mel</title>
		<link rel="alternate" type="text/html" href="http://antoinevienne.fr/wiki/index.php?title=Maya_Mel&amp;diff=254"/>
		<updated>2023-09-27T12:10:53Z</updated>

		<summary type="html">&lt;p&gt;Walter: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Maya Mels Scripts=&lt;br /&gt;
=== Octane Render Baking group id - Assign id to multiple objects shapes ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// 0 is for Red, 2 for Green, 4 for Blue&lt;br /&gt;
// 3, 5 and 6 for Cyan, Magenta and Yellow&lt;br /&gt;
// Replace the number &amp;quot;0&amp;quot; by the number of your choice&lt;br /&gt;
// Baking group id is also avalaible in Attribute Spreadsheet Editor&lt;br /&gt;
&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    print($object+&amp;quot;\n&amp;quot;);&lt;br /&gt;
    setAttr ($object + &amp;quot;.octBakGrId&amp;quot;) (0);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Maxwell Render - Particles sequence - Force .abc file ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
//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&lt;br /&gt;
&lt;br /&gt;
global int $current_frame;&lt;br /&gt;
$current_frame = `currentTime -query`;&lt;br /&gt;
print $current_frame;&lt;br /&gt;
{&lt;br /&gt;
setAttr -type &amp;quot;string&amp;quot; maxwellRFRKParticles1.file (&amp;quot;/YOUR_PATH/YOUR_FILE&amp;quot; + $current_frame + &amp;quot;.abc&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Maxwell Render - Specify object ID color ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Specify object ID color&lt;br /&gt;
&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    print($object+&amp;quot;\n&amp;quot;);&lt;br /&gt;
    setAttr ($object + &amp;quot;.mxSpecifyObjIdColor&amp;quot;) (1);&lt;br /&gt;
    setAttr ($object + &amp;quot;.mxObjIdColor&amp;quot;) -type &amp;quot;double3&amp;quot; 1 0 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Redshift - Add blend attribute and set random value for objects selection ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Useful for blending between colors with RedshiftUserDataScalar&lt;br /&gt;
&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    print($object);&lt;br /&gt;
    addAttr -ln &amp;quot;blend&amp;quot; -at double  -min 0 -max 1 -dv 0 $object;&lt;br /&gt;
    setAttr ($object + &amp;quot;.blend&amp;quot;) (rand(1));&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Redshift - Set Primary visibility off for selection (layer override) ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Go in right render layer and select objects&lt;br /&gt;
&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    print($object+&amp;quot;\n&amp;quot;);&lt;br /&gt;
    setAttr ($object + &amp;quot;.rsEnableVisibilityOverrides&amp;quot;) (1);&lt;br /&gt;
    editRenderLayerAdjustment ($object + &amp;quot;.rsPrimaryRayVisible&amp;quot;);&lt;br /&gt;
    setAttr ($object + &amp;quot;.rsPrimaryRayVisible&amp;quot;) (0);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Convert Motion trail to curve ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select the motion trail first&lt;br /&gt;
&lt;br /&gt;
{&lt;br /&gt;
$selected=`ls -dag -et snapshotShape`;&lt;br /&gt;
for ($obj in $selected){&lt;br /&gt;
$pts=(getAttr($obj+&amp;quot;.pts&amp;quot;));&lt;br /&gt;
$size=size($pts);&lt;br /&gt;
$curve=`curve -d 1 -p $pts[0] $pts[1] $pts[2] -p $pts[4] $pts[5] $pts[6] -k 0 -k 1`;&lt;br /&gt;
for($i=8;$i&amp;lt;$size;$i+=4)&lt;br /&gt;
curve -os -a -p $pts[$i] $pts[$i+1] $pts[$i+2] $curve ;&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Quantize keyframes for selection ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Snap keys on frames for objects selection&lt;br /&gt;
&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    print($object+&amp;quot;\n&amp;quot;);&lt;br /&gt;
    snapKey $object;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Loop image sequence for texture ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// On File texture, check Image sequence, and edit expression&lt;br /&gt;
&lt;br /&gt;
file1.frameExtension=((frame%8)+1);&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Symmetrize - Duplicate &amp;amp; merge object ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select half object first&lt;br /&gt;
&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    print($object+&amp;quot;\n&amp;quot;);&lt;br /&gt;
    xform -piv 0 0 0 $object;&lt;br /&gt;
    duplicate -rr;&lt;br /&gt;
    setAttr ($object + &amp;quot;.scaleX&amp;quot;) (-1);&lt;br /&gt;
    select -add $object ;&lt;br /&gt;
    polyPerformAction polyUnite o 0;&lt;br /&gt;
    polyMergeVertex  -d 0.0001 -am 1 -ch 1;&lt;br /&gt;
    DeleteHistory;&lt;br /&gt;
    rename ($object);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Mirror object ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select object first&lt;br /&gt;
&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    print($object+&amp;quot;\n&amp;quot;);&lt;br /&gt;
    DeleteHistory;&lt;br /&gt;
    makeIdentity -apply true -t 1 -r 1 -s 1 -n 0 -pn 1;&lt;br /&gt;
    xform -piv 0 0 0 $object;&lt;br /&gt;
    duplicate -rr;&lt;br /&gt;
    setAttr ($object + &amp;quot;.scaleX&amp;quot;) (-1);&lt;br /&gt;
    DeleteHistory;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Group each object and rename ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select objects first&lt;br /&gt;
&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    string $name = ($object);&lt;br /&gt;
    select $object ;&lt;br /&gt;
    doGroup 0 1 1;&lt;br /&gt;
    rename ($name + &amp;quot;_GRP&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Change path in an Attribute ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Here the Attribute is &amp;quot;.filePrefix&amp;quot; - Select objects first&lt;br /&gt;
&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    string $path = getAttr ($object+&amp;quot;.filePrefix&amp;quot;);&lt;br /&gt;
    $path = `substitute &amp;quot;//OLD/PATH/&amp;quot; $path &amp;quot;//NEW/PATH/&amp;quot;`;&lt;br /&gt;
    setAttr -type &amp;quot;string&amp;quot; ($object+&amp;quot;.filePrefix&amp;quot;) ($path);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Change opacity mode on V-Ray shaders ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select shaders first&lt;br /&gt;
&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    if (attributeExists(&amp;quot;omode&amp;quot;,$object)) { //check if attribute exists&lt;br /&gt;
        CBunlockAttr ($object+&amp;quot;.omode&amp;quot;); //unlock opacity mode&lt;br /&gt;
    }&lt;br /&gt;
    if (attributeExists(&amp;quot;opacityMode&amp;quot;,$object)) {&lt;br /&gt;
        setAttr ($object+&amp;quot;.opacityMode&amp;quot;) 1; //set opacity mode in Clip - 0 pour Normal&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// Alternative&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    if (attributeExists(&amp;quot;opacityMode&amp;quot;,$object)) {&lt;br /&gt;
        setAttr ($object+&amp;quot;.opacityMode&amp;quot;) -l false; //unlock attribute if locked&lt;br /&gt;
    }&lt;br /&gt;
    if (attributeExists(&amp;quot;opacityMode&amp;quot;,$object)) {&lt;br /&gt;
        setAttr ($object+&amp;quot;.opacityMode&amp;quot;) 2; //set opacity mode in Clip - 0 pour Normal&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Change color space on selected fileTextures ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Useful to automatically convert Quixel Megascans by example from sRGB/Raw to ACES color spaces&lt;br /&gt;
&lt;br /&gt;
string $object_selection[] = (`ls -sl`);&lt;br /&gt;
for ($object in $object_selection) {&lt;br /&gt;
    if(`getAttr ($object+&amp;quot;.cs&amp;quot;)` == &amp;quot;sRGB&amp;quot;){&lt;br /&gt;
        setAttr ($object + &amp;quot;.cs&amp;quot;) -type &amp;quot;string&amp;quot; &amp;quot;Utility - sRGB - Texture&amp;quot;;&lt;br /&gt;
    }&lt;br /&gt;
    if(`getAttr ($object+&amp;quot;.cs&amp;quot;)` == &amp;quot;Raw&amp;quot;){&lt;br /&gt;
        setAttr ($object + &amp;quot;.cs&amp;quot;) -type &amp;quot;string&amp;quot; &amp;quot;Utility - Raw&amp;quot;;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Redshift - custom Tesselation on selected objects ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select objects first&lt;br /&gt;
&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    print($object+&amp;quot;\n&amp;quot;);&lt;br /&gt;
    setAttr ($object + &amp;quot;.rsMinTessellationLength&amp;quot;) (0.1);&lt;br /&gt;
    setAttr ($object + &amp;quot;.rsMaxTessellationSubdivs&amp;quot;) (2);&lt;br /&gt;
    setAttr ($object + &amp;quot;.rsOutOfFrustumTessellationFactor&amp;quot;) (4);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Change color on selected shaders ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select shaders first&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    print($object+&amp;quot;\n&amp;quot;);&lt;br /&gt;
    setAttr ($object + &amp;quot;.color&amp;quot;) -l false;&lt;br /&gt;
    setAttr ($object + &amp;quot;.color&amp;quot;) -type &amp;quot;double3&amp;quot; (0.18) (0.18) (0.18);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Change Filter Type on selected Files Textures ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select files textures first - 0 means Off&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    print($object+&amp;quot;\n&amp;quot;);&lt;br /&gt;
    setAttr ($object + &amp;quot;.filterType&amp;quot;) 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Clean Render Layers ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// In MEL&lt;br /&gt;
fixRenderLayerOutAdjustmentErrors;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Change Filter Type on selected Files Textures ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select files textures first - 0 means Off&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    print($object+&amp;quot;\n&amp;quot;);&lt;br /&gt;
    setAttr ($object + &amp;quot;.filterType&amp;quot;) 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Select by name ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select objects with &amp;quot;toto&amp;quot;&lt;br /&gt;
select -r &amp;quot;toto*&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Display color on shapes ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select objects&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    print($object+&amp;quot;\n&amp;quot;);&lt;br /&gt;
    setAttr ($object + &amp;quot;.displayColors&amp;quot;) 1;&lt;br /&gt;
    setDisplayColorChannelAttribute ($object + &amp;quot;.displayColorChannel&amp;quot;);&lt;br /&gt;
    polyColorPerVertex -r 1 -g 0 -b 0 -a 1 -cdo;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Geometry Constraint on multiple selection ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select objects to constrain&lt;br /&gt;
string $objectBase = &amp;quot;surfaceName&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    select -cl;&lt;br /&gt;
    select $objectBase;&lt;br /&gt;
    select -add $object;&lt;br /&gt;
    geometryConstraint -weight 1;&lt;br /&gt;
    select -r &amp;quot;*Constraint*&amp;quot;;&lt;br /&gt;
    doDelete;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
=== Speed up smokes rendering with V-Ray ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select smokes first&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    print($object+&amp;quot;\n&amp;quot;);&lt;br /&gt;
    setAttr ($object + &amp;quot;.rendStep&amp;quot;) 160;&lt;br /&gt;
    setAttr ($object + &amp;quot;.shadowStep&amp;quot;) 400;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Set bump multiplier on multiple V-Ray shaders ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select shaders&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    if (attributeExists(&amp;quot;bumpMult&amp;quot;,$object)) {&lt;br /&gt;
        setAttr ($object + &amp;quot;.bumpMult&amp;quot;) -1; //set bump multiplier at -1&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== STOP/START viewport ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// As seen on https://www.toadstorm.com/. - Put it in your shelf&lt;br /&gt;
paneLayout -e -manage false $gMainPane&lt;br /&gt;
&lt;br /&gt;
paneLayout -e -manage true $gMainPane&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Select curves by name ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select objects first - Replace &amp;quot;toto&amp;quot; by what you are looking for&lt;br /&gt;
&lt;br /&gt;
select `ls -type &amp;quot;nurbsCurve&amp;quot; &amp;quot;*toto*&amp;quot;`;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Noise expression ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Replace &amp;quot;pCube1&amp;quot;&lt;br /&gt;
&lt;br /&gt;
pCube1.translateX=sin(time*20)*0.01*noise(time*10);&lt;br /&gt;
pCube1.translateY=sin(time*4)*0.01*noise(time*10);&lt;br /&gt;
pCube1.translateZ=sin(time*12)*0.01*noise(time*10);&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== V-ray - Make curves renderables ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Replace VRayLightMtl1 at the end by your material&lt;br /&gt;
&lt;br /&gt;
$selected=`ls -dag -et curveShape`;&lt;br /&gt;
for ($object in $selected){&lt;br /&gt;
    // Add V-ray Extra attributes&lt;br /&gt;
    vray addAttributesFromGroup $object vray_nurbscurve_renderable 1;&lt;br /&gt;
    vrayAddAttr $object vraySeparator_vray_nurbscurve_renderable;&lt;br /&gt;
    vrayAddAttr $object vrayNurbsCurveRenderable;&lt;br /&gt;
    vrayAddAttr $object vrayNurbsCurveMaterial;&lt;br /&gt;
    vrayAddAttr $object vrayNurbsCurveTesselation;&lt;br /&gt;
    vrayAddAttr $object vrayNurbsCurveStartWidth;&lt;br /&gt;
    vrayAddAttr $object vrayNurbsCurveLockEndWidth;&lt;br /&gt;
    vrayAddAttr $object vrayNurbsCurveEndWidth;&lt;br /&gt;
    setUITemplate -pst attributeEditorTemplate;&lt;br /&gt;
// Activate renderable&lt;br /&gt;
setAttr ($object + &amp;quot;.vrayNurbsCurveRenderable&amp;quot;) 1;&lt;br /&gt;
// Replace VRayLightMtl1 by your material&lt;br /&gt;
connectAttr -force VRayLightMtl1.outColor ($object + &amp;quot;.vrayNurbsCurveMaterial&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Get object type ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Replace toto with the object whose type you want to know&lt;br /&gt;
&lt;br /&gt;
objectType toto;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Render layer override on specific object type ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Replace &amp;quot;Node&amp;quot; by the object type on which you want to act&lt;br /&gt;
&lt;br /&gt;
$selected=`ls -type &amp;quot;Node&amp;quot;`;&lt;br /&gt;
for ($object in $selected){&lt;br /&gt;
    // Create layer override on Primary Visibility attribute on current renderLayer&lt;br /&gt;
    editRenderLayerAdjustment ($object + &amp;quot;.primaryVisibility&amp;quot;);&lt;br /&gt;
    // Set Primary Visibility - 0 or 1&lt;br /&gt;
    setAttr ($object + &amp;quot;.primaryVisibility&amp;quot;) 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== V-ray - Make lights invisible ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$selected=`ls -type &amp;quot;VRayLightRectShape&amp;quot;`;&lt;br /&gt;
for ($object in $selected){&lt;br /&gt;
    setAttr ($object + &amp;quot;.invisible&amp;quot;) 1;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
$selected=`ls -type &amp;quot;VRayLightSphereShape&amp;quot;`;&lt;br /&gt;
for ($object in $selected){&lt;br /&gt;
    setAttr ($object + &amp;quot;.invisible&amp;quot;) 1;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
$selected=`ls -type &amp;quot;VRayLightDomeShape&amp;quot;`;&lt;br /&gt;
for ($object in $selected){&lt;br /&gt;
    setAttr ($object + &amp;quot;.invisible&amp;quot;) 1;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== V-ray - Select Rect Light ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
select `ls -type &amp;quot;VRayLightRectShape&amp;quot;`;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== V-ray - Rect Lights - Directional Preview - Always for all ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$selected=`ls -type &amp;quot;VRayLightRectShape&amp;quot;`;&lt;br /&gt;
for ($object in $selected){&lt;br /&gt;
    setAttr ($object + &amp;quot;.directionalPreview&amp;quot;) 1;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Randomize rotation on selected objects ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// As posted on CGTalk by NaughtyNathan&lt;br /&gt;
// &amp;quot;just set the vector values to the maximum random x,y,z rotations you want to apply to the selected transforms.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
vector $rndRot = &amp;lt;&amp;lt; 0,0,90 &amp;gt;&amp;gt;;	// x,y,z rotations&lt;br /&gt;
for ($object in `ls -sl -tr`){&lt;br /&gt;
    rotate `rand ($rndRot.x)` `rand ($rndRot.y)` `rand ($rndRot.z)` $object;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Quit Maya ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Brute force method&lt;br /&gt;
&lt;br /&gt;
$i = `getpid`; //application ID&lt;br /&gt;
    system(&amp;quot;taskkill /PID &amp;quot;  + $i +&amp;quot; /f&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
// In a gentle way&lt;br /&gt;
&lt;br /&gt;
evalDeferred(&amp;quot;quit -f&amp;quot;);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== V-ray - Import list of Alembics through Proxys Import ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// List of Alembics files - Replace by the name of your Alembics&lt;br /&gt;
string $alembicsParts[] = {&amp;quot;part1&amp;quot;,&amp;quot;part2&amp;quot;,&amp;quot;part3&amp;quot;};&lt;br /&gt;
&lt;br /&gt;
// Replace the PATH of your files - Scale by 100 for Houdini Alembics - &amp;lt;frame04&amp;gt; for sequences&lt;br /&gt;
for ($alembicsPart in $alembicsParts){&lt;br /&gt;
    vrayCreateProxy -node $alembicsPart -existing -dir (&amp;quot;C:/YOURPATH/&amp;quot;+$alembicsPart+&amp;quot;.&amp;lt;frame04&amp;gt;.abc&amp;quot;) -createProxyNode;&lt;br /&gt;
    setAttr ($alembicsPart+&amp;quot;_vraymesh.animType&amp;quot;) 1;&lt;br /&gt;
    setAttr ($alembicsPart+&amp;quot;.scaleZ&amp;quot;) 100;&lt;br /&gt;
    setAttr ($alembicsPart+&amp;quot;.scaleX&amp;quot;) 100;&lt;br /&gt;
    setAttr ($alembicsPart+&amp;quot;.scaleY&amp;quot;) 100;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== V-ray - Change path to VRayMesh for selected proxies ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Change path with your own .vrmesh&lt;br /&gt;
$selected=`ls -type &amp;quot;VRayMesh&amp;quot;`;&lt;br /&gt;
for ($object in $selected){&lt;br /&gt;
    setAttr -type &amp;quot;string&amp;quot; ($object + &amp;quot;.fileName2&amp;quot;) &amp;quot;//DISK/PATH/YOUR_VRMESH.vrmesh&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// If you want to change Geometry type - 4 for GPU mesh - add following in the loop&lt;br /&gt;
//    setAttr ($object + &amp;quot;.geomType&amp;quot;) 4;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Delete image planes ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Delete image plane if exists.&lt;br /&gt;
$selected=`ls -type &amp;quot;imagePlane&amp;quot;`;&lt;br /&gt;
select $selected;&lt;br /&gt;
for ($object in $selected){&lt;br /&gt;
    doDelete;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Merge alembic from set ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select objects in a set called EXPORT_SET&lt;br /&gt;
select -r EXPORT_SET ;&lt;br /&gt;
timeControl -edit -forceRedraw $gPlayBackSlider;&lt;br /&gt;
&lt;br /&gt;
// Create list of objects from EXPORT_SET&lt;br /&gt;
string $assetParts[] = `ls -sl`;&lt;br /&gt;
$assetPartsList = stringArrayToString($assetParts,&amp;quot; &amp;quot;);&lt;br /&gt;
&lt;br /&gt;
// Merge alembic with these objects&lt;br /&gt;
AbcImport -mode import -connect $assetPartsList &amp;quot;//DISK/PATH/alembic.abc&amp;quot;;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Create Texture reference ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// CREATE TEXTURE REFERENCE ON EXPORT SET&lt;br /&gt;
&lt;br /&gt;
select -r YOUR_GROUP ;&lt;br /&gt;
CreateTextureReferenceObject;&lt;br /&gt;
select -cl  ;&lt;br /&gt;
&lt;br /&gt;
// REMOVE REFERENCE OBJECTS FROM EXPORT SET&lt;br /&gt;
select -r YOUR_GROUP_reference ;&lt;br /&gt;
string $selection[] = `ls -sl`;&lt;br /&gt;
string $polyGons[] = `filterExpand -sm 12 $selection`;&lt;br /&gt;
select -r $polyGons;&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    sets -rm EXPORT_SET $object;&lt;br /&gt;
}&lt;br /&gt;
select -cl  ;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Replace animated objects with V-Ray proxies ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// First select animated objects to replace&lt;br /&gt;
// For each object create a proxy then constrain then bake simulation then delete constraint&lt;br /&gt;
&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
	vrayCreateProxy -node assetName -existing -dir (&amp;quot;//DISK/PATH/your_asset.vrmesh&amp;quot;) -createProxyNode;&lt;br /&gt;
	select -r $object ;&lt;br /&gt;
	select -add assetName ;&lt;br /&gt;
	doCreateParentConstraintArgList 1 { &amp;quot;0&amp;quot;,&amp;quot;0&amp;quot;,&amp;quot;0&amp;quot;,&amp;quot;0&amp;quot;,&amp;quot;0&amp;quot;,&amp;quot;0&amp;quot;,&amp;quot;0&amp;quot;,&amp;quot;0&amp;quot;,&amp;quot;1&amp;quot;,&amp;quot;&amp;quot;,&amp;quot;1&amp;quot; };&lt;br /&gt;
	parentConstraint -weight 1;&lt;br /&gt;
	bakeResults -simulation true -t &amp;quot;1000:1100&amp;quot; -sampleBy 1 -oversamplingRate 1 -disableImplicitControl true -preserveOutsideKeys true -sparseAnimCurveBake false -removeBakedAttributeFromLayer false -removeBakedAnimFromLayer false -bakeOnOverrideLayer false -minimizeRotation true -controlPoints false -shape true {&amp;quot;assetName&amp;quot;};&lt;br /&gt;
	select `ls -type &amp;quot;constraint&amp;quot;`;&lt;br /&gt;
	select -add $object ;&lt;br /&gt;
	doDelete;&lt;br /&gt;
	select -cl  ;&lt;br /&gt;
	rename &amp;quot;assetName&amp;quot; $object;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Select all meshes in a group ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// From cmadsenAniden on forums.autodesk.com&lt;br /&gt;
// Replace group1 by the name of your own group&lt;br /&gt;
&lt;br /&gt;
select -r group1 ;&lt;br /&gt;
string $selection[] = `ls -sl`;&lt;br /&gt;
string $polyGons[] = `filterExpand -sm 12 $selection`;&lt;br /&gt;
select -r $polyGons;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Select shot camera ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// CREATE VARIABLE FOR SHOT CAMERA AND SELECT IT&lt;br /&gt;
&lt;br /&gt;
select `ls -type &amp;quot;camera&amp;quot;`;&lt;br /&gt;
select -d sideShape frontShape topShape perspShape;&lt;br /&gt;
$camerashot = `ls -sl`;&lt;br /&gt;
string $shotcamera = $camerashot[0];&lt;br /&gt;
print $shotcamera;&lt;br /&gt;
select $shotcamera;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Get list of frames with keys on all transform objects ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$selected=`ls -dag -et transform`;&lt;br /&gt;
&lt;br /&gt;
float $arrathy[] = `keyframe -query $selected`;&lt;br /&gt;
&lt;br /&gt;
float $sorted[] = python(&amp;quot;import pymel.core as pm; list(set((pm.getMelGlobal(\&amp;quot;float[]\&amp;quot;, \&amp;quot;$arrathy\&amp;quot;))))&amp;quot;);&lt;br /&gt;
print $sorted;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== MULTI SNAP ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Replace a list of objects by another with bake of animation. Replace FSTART and FEND with your own padding.&lt;br /&gt;
&lt;br /&gt;
///////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
///////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
/*&lt;br /&gt;
Type the command MS() in MEL form to open UI.&lt;br /&gt;
*/&lt;br /&gt;
///////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
///////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
source &amp;quot;generateChannelMenu.mel&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
global proc MS ()&lt;br /&gt;
{&lt;br /&gt;
     global string $sourceObjects;&lt;br /&gt;
     global string $destinationObjects;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    // If the window exists already, delete it.&lt;br /&gt;
    if (`window -exists multiSnapWindow`)&lt;br /&gt;
    {&lt;br /&gt;
        deleteUI multiSnapWindow;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    // Build the window.&lt;br /&gt;
    global string $man_window;&lt;br /&gt;
    string $man_window = `window -title &amp;quot; MULTI SNAP&amp;quot; -sizeable 0 -w 300 multiSnapWindow`;&lt;br /&gt;
    frameLayout -label &amp;quot;Snap source objects on destination objects.&amp;quot;;&lt;br /&gt;
    rowLayout -width 540 -nc 2 -cw4 10 20 20 100;&lt;br /&gt;
    // Source objects section&lt;br /&gt;
    frameLayout -label &amp;quot;Source objects&amp;quot;;&lt;br /&gt;
    $sourceObjects = `textScrollList -width 600 -height 300`;&lt;br /&gt;
    rowLayout -width 240 -nc 2 -cw2 120 120;&lt;br /&gt;
    button -label &amp;quot;Add selected&amp;quot; -command &amp;quot;MS_addObjects ();&amp;quot; -width 120;&lt;br /&gt;
    button -label &amp;quot;Remove selected&amp;quot; -command &amp;quot;MS_removeObjects ();&amp;quot; -width 120;&lt;br /&gt;
    setParent ..;&lt;br /&gt;
    rowLayout -width 240 -nc 2 -cw2 120 120;&lt;br /&gt;
    button -label &amp;quot;Remove All&amp;quot; -command &amp;quot;MS_clearObjects ();&amp;quot; -width 240;&lt;br /&gt;
    setParent ..;&lt;br /&gt;
    setParent ..;&lt;br /&gt;
    rowLayout -nc 3;&lt;br /&gt;
    button -label &amp;quot;Create&amp;quot; -command &amp;quot;VRAYCONNECDO() &amp;quot; -width 140 -align center;&lt;br /&gt;
    button -label &amp;quot;Close&amp;quot; -command &amp;quot;DAC_CloseUI() &amp;quot; -width 140 -align center;&lt;br /&gt;
    setParent ..;&lt;br /&gt;
    setParent ..;&lt;br /&gt;
    // Destination objects section&lt;br /&gt;
    frameLayout -label &amp;quot;Destination objects&amp;quot;;&lt;br /&gt;
    $destinationObjects = `textScrollList -width 600 -height 300`;&lt;br /&gt;
    rowLayout -width 240 -nc 2 -cw2 120 120;&lt;br /&gt;
    button -label &amp;quot;Add selected&amp;quot; -command &amp;quot;MS_addMM ();&amp;quot; -width 120;&lt;br /&gt;
    button -label &amp;quot;Remove selected&amp;quot; -command &amp;quot;MS_removeMM ();&amp;quot; -width 120;&lt;br /&gt;
    setParent ..;&lt;br /&gt;
    setParent ..;&lt;br /&gt;
    rowLayout -nc 3;&lt;br /&gt;
    button -label &amp;quot;SNAP IT&amp;quot; -command &amp;quot;VRAYCONNECDO() &amp;quot; -width 140 -align center;&lt;br /&gt;
    button -label &amp;quot;Close&amp;quot; -command &amp;quot;DAC_CloseUI() &amp;quot; -width 140 -align center;&lt;br /&gt;
    setParent ..;&lt;br /&gt;
    setParent ..;&lt;br /&gt;
&lt;br /&gt;
// Show the window.&lt;br /&gt;
showWindow multiSnapWindow;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
global proc string[] getShaders(string $from)&lt;br /&gt;
{&lt;br /&gt;
// get the shapes from the input&lt;br /&gt;
string $shapes[] = ls(&amp;quot;-o&amp;quot;, &amp;quot;-dag&amp;quot;, &amp;quot;-s&amp;quot;, $from);&lt;br /&gt;
// give me the connected &amp;quot;shadingEngines&amp;quot;&lt;br /&gt;
string $shadingEngines[] = listConnections(&amp;quot;-type&amp;quot;,&amp;quot;shadingEngine&amp;quot;, $shapes);&lt;br /&gt;
// list the connected materials (shaders) from that&lt;br /&gt;
string $materials[] = ls(&amp;quot;-mat&amp;quot;, listConnections($shadingEngines));&lt;br /&gt;
// remove duplicate occurrences.&lt;br /&gt;
return (stringArrayRemoveDuplicates($materials));&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
//Add selected objects to list.&lt;br /&gt;
global proc MS_addObjects ()&lt;br /&gt;
{&lt;br /&gt;
      global string $sourceObjects;&lt;br /&gt;
      string $selectedshapes[] = `ls -sl -l`;&lt;br /&gt;
      //print $selectedshapes;&lt;br /&gt;
      int $count = 0;&lt;br /&gt;
&lt;br /&gt;
if ($selectedshapes[0] != &amp;quot;&amp;quot;)&lt;br /&gt;
{&lt;br /&gt;
   for ($i in $selectedshapes)&lt;br /&gt;
   {&lt;br /&gt;
     $count ++;&lt;br /&gt;
     textScrollList -edit -append $i $sourceObjects;&lt;br /&gt;
   }&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
//Add selected objects to list.&lt;br /&gt;
global proc MS_addMM ()&lt;br /&gt;
{&lt;br /&gt;
      global string $destinationObjects;&lt;br /&gt;
      string $selectedshapes[] = `ls -sl -l`;&lt;br /&gt;
      //print $selectedshapes;&lt;br /&gt;
      int $count = 0;&lt;br /&gt;
&lt;br /&gt;
if ($selectedshapes[0] != &amp;quot;&amp;quot;)&lt;br /&gt;
{&lt;br /&gt;
   for ($i in $selectedshapes)&lt;br /&gt;
   {&lt;br /&gt;
     $count ++;&lt;br /&gt;
     textScrollList -edit -append $i $destinationObjects;&lt;br /&gt;
   }&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// Clear objects from list.&lt;br /&gt;
global proc MS_clearObjects ()&lt;br /&gt;
{&lt;br /&gt;
    global string $sourceObjects;&lt;br /&gt;
textScrollList -e -ra $sourceObjects;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// Remove selected object from list.&lt;br /&gt;
global proc MS_removeObjects ()&lt;br /&gt;
{&lt;br /&gt;
   global string $sourceObjects;&lt;br /&gt;
&lt;br /&gt;
    int $index [] = `textScrollList -query -selectIndexedItem $sourceObjects`;&lt;br /&gt;
    if ($index [0] != 0)&lt;br /&gt;
    {&lt;br /&gt;
        textScrollList -edit -removeIndexedItem $index [0] $sourceObjects;&lt;br /&gt;
    }&lt;br /&gt;
   global string $sourceObjects;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
global proc VRAYCONNECDO()&lt;br /&gt;
{&lt;br /&gt;
    // UI Elements&lt;br /&gt;
global string $sourceObjects;&lt;br /&gt;
global string $destinationObjects;&lt;br /&gt;
// Define user selected objects&lt;br /&gt;
string $selected_objects[] = `textScrollList -query -allItems $sourceObjects`;&lt;br /&gt;
string $meshMaterial[] = `textScrollList -query -allItems $destinationObjects`;&lt;br /&gt;
int $i = 0;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
// SET PADDING&lt;br /&gt;
string $FSTART = &amp;quot;1&amp;quot;;&lt;br /&gt;
string $FEND = &amp;quot;100&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
print $FSTART;&lt;br /&gt;
print $FEND;&lt;br /&gt;
&lt;br /&gt;
string $PADDING = $FSTART + &amp;quot;:&amp;quot; + $FEND;&lt;br /&gt;
&lt;br /&gt;
//Progress bar&lt;br /&gt;
global string $gMainProgressBar;&lt;br /&gt;
&lt;br /&gt;
// Start the progress bar and adjust its max value for this operation.&lt;br /&gt;
    int $steps = size($selected_objects);&lt;br /&gt;
    progressBar -edit -beginProgress -isInterruptable true -status &amp;quot;Connecting shaders to mesh material ...&amp;quot; -maxValue $steps $gMainProgressBar;&lt;br /&gt;
 &lt;br /&gt;
for ($i = 0; $i &amp;lt; size($selected_objects); $i ++)&lt;br /&gt;
{&lt;br /&gt;
        parentConstraint -n parentConstraintMS $selected_objects[$i] $meshMaterial[$i];&lt;br /&gt;
        select -r $meshMaterial[$i] ;&lt;br /&gt;
        bakeResults -simulation true -t $PADDING -sampleBy 1 -oversamplingRate 1 -disableImplicitControl true -preserveOutsideKeys true -sparseAnimCurveBake false -removeBakedAttributeFromLayer false -removeBakedAnimFromLayer false -bakeOnOverrideLayer false -minimizeRotation true -controlPoints false -shape true {$meshMaterial[$i]};&lt;br /&gt;
        select -cl  ;&lt;br /&gt;
        select -r &amp;quot;*parentConstraintMS*&amp;quot;;&lt;br /&gt;
        doDelete;&lt;br /&gt;
// Update the progress bar.&lt;br /&gt;
progressBar -edit -step 1 $gMainProgressBar;&lt;br /&gt;
}&lt;br /&gt;
// End the progress.&lt;br /&gt;
progressBar -edit -endProgress $gMainProgressBar;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Delete hidden objects ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select objects&lt;br /&gt;
&lt;br /&gt;
for ( $object in `ls -sl` ) {&lt;br /&gt;
    $vis = getAttr ($object+&amp;quot;.visibility&amp;quot;);&lt;br /&gt;
    if ($vis == 0){&lt;br /&gt;
        select -r $object ;&lt;br /&gt;
        doDelete ;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== V-Ray - BAKE MATERIALS ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Made to work also with mayabatch.exe&lt;br /&gt;
&lt;br /&gt;
////////////////////////////////////////////&lt;br /&gt;
// BAKE VRAY CUSTOM VARIABLES&lt;br /&gt;
////////////////////////////////////////////&lt;br /&gt;
&lt;br /&gt;
// ASSET PATH&lt;br /&gt;
string $assetFileType = &amp;quot;mayaBinary&amp;quot;;&lt;br /&gt;
string $assetPath = &amp;quot;C:/YOUR_PATH/YOUR_SURFACING_ASSET.mb&amp;quot;;&lt;br /&gt;
string $assetName = &amp;quot;ASSET_NAME&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
// LIGHT RIG PATH&lt;br /&gt;
string $lightRigFileType = &amp;quot;mayaAscii&amp;quot;;&lt;br /&gt;
string $lightRigPath = &amp;quot;C:/YOUR_PATH/YOUR_LIGHT_RIG.mb&amp;quot;;&lt;br /&gt;
string $lightRigName = &amp;quot;DAY_LIGHTING&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
// BAKED TEXTURES PATH&lt;br /&gt;
string $bakedTexturesPath = (&amp;quot;C:/YOUR_PATH/BAKED_TEXTURES/&amp;quot; + $assetName + &amp;quot;_&amp;quot; + $lightRigName + &amp;quot;_Bake&amp;quot;);&lt;br /&gt;
print $bakedTexturesPath;&lt;br /&gt;
&lt;br /&gt;
// SET RESOLUTION FOR BAKED MAPS&lt;br /&gt;
$resWidth = 4096;&lt;br /&gt;
$resHeight = $resWidth;&lt;br /&gt;
&lt;br /&gt;
// COLOR SPACE FOR FILE TEXTURES&lt;br /&gt;
string $fileColorSpace = &amp;quot;ACES - ACEScg&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
////////////////////////////////////////////&lt;br /&gt;
// END OF CUSTOM VARIABLES&lt;br /&gt;
////////////////////////////////////////////&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
////////////////////////////////////////////&lt;br /&gt;
// RENDER SETTINGS&lt;br /&gt;
&lt;br /&gt;
// Set File Name Prefix&lt;br /&gt;
setAttr -type &amp;quot;string&amp;quot; vraySettings.fileNamePrefix &amp;quot;&amp;lt;Scene&amp;gt;/&amp;lt;Layer&amp;gt;/&amp;lt;Camera&amp;gt;_&amp;lt;Layer&amp;gt;_&amp;lt;Scene&amp;gt;&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
// Set resolution&lt;br /&gt;
$resWidthHalf = $resWidth/2;&lt;br /&gt;
$resHeightHalf = $resHeight/2;&lt;br /&gt;
setAttr &amp;quot;vraySettings.width&amp;quot; $resWidthHalf;&lt;br /&gt;
setAttr &amp;quot;vraySettings.height&amp;quot; $resHeightHalf;&lt;br /&gt;
&lt;br /&gt;
// Set Persp camera renderable&lt;br /&gt;
setAttr &amp;quot;perspShape.renderable&amp;quot; 1;&lt;br /&gt;
&lt;br /&gt;
// Set Image format&lt;br /&gt;
setAttr -type &amp;quot;string&amp;quot; &amp;quot;vraySettings.imageFormatStr&amp;quot; &amp;quot;exr (multichannel)&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
// Set Animation type on Standard&lt;br /&gt;
setAttr &amp;quot;vraySettings.animType&amp;quot; 0;&lt;br /&gt;
setAttr &amp;quot;vraySettings.animBatchOnly&amp;quot; 1;&lt;br /&gt;
&lt;br /&gt;
// Sampler type Bucket&lt;br /&gt;
setAttr &amp;quot;vraySettings.samplerType&amp;quot; 4;&lt;br /&gt;
&lt;br /&gt;
// Min Shading Rate&lt;br /&gt;
//setAttr &amp;quot;vraySettings.minShadeRate&amp;quot; 4;&lt;br /&gt;
setAttr &amp;quot;vraySettings.minShadeRate&amp;quot; 7;&lt;br /&gt;
&lt;br /&gt;
// Buckets subdivs&lt;br /&gt;
//setAttr &amp;quot;vraySettings.dmcMinSubdivs&amp;quot; 1;&lt;br /&gt;
//setAttr &amp;quot;vraySettings.dmcMaxSubdivs&amp;quot; 8;&lt;br /&gt;
//setAttr &amp;quot;vraySettings.dmcThreshold&amp;quot; 0.1;&lt;br /&gt;
setAttr &amp;quot;vraySettings.dmcMinSubdivs&amp;quot; 1;&lt;br /&gt;
setAttr &amp;quot;vraySettings.dmcMaxSubdivs&amp;quot; 15;&lt;br /&gt;
setAttr &amp;quot;vraySettings.dmcThreshold&amp;quot; 0.01;&lt;br /&gt;
&lt;br /&gt;
// Color mapping Linear&lt;br /&gt;
setAttr &amp;quot;vraySettings.cmap_type&amp;quot; 0;&lt;br /&gt;
&lt;br /&gt;
// GI on&lt;br /&gt;
setAttr &amp;quot;vraySettings.giOn&amp;quot; 1;&lt;br /&gt;
//setAttr &amp;quot;vraySettings.subdivs&amp;quot; 400;&lt;br /&gt;
setAttr &amp;quot;vraySettings.subdivs&amp;quot; 1000;&lt;br /&gt;
&lt;br /&gt;
// Max subdivs&lt;br /&gt;
setAttr &amp;quot;vraySettings.ddisplac_maxSubdivs&amp;quot; 16;&lt;br /&gt;
&lt;br /&gt;
// Cache geometry and bitmaps&lt;br /&gt;
setAttr &amp;quot;vraySettings.globopt_cache_geom_plugins&amp;quot; 1;&lt;br /&gt;
setAttr &amp;quot;vraySettings.globopt_cache_bitmaps&amp;quot; 1;&lt;br /&gt;
&lt;br /&gt;
// Dynamic memory limit&lt;br /&gt;
setAttr &amp;quot;vraySettings.sys_rayc_dynMemLimit&amp;quot; 0;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
////////////////////////////////////////////&lt;br /&gt;
// IMPORT&lt;br /&gt;
&lt;br /&gt;
// IMPORT LIGHT RIG&lt;br /&gt;
file -import -type $lightRigFileType  -ignoreVersion -mergeNamespacesOnClash false -rpr &amp;quot;:&amp;quot; -options &amp;quot;v=0;&amp;quot; $lightRigPath;&lt;br /&gt;
&lt;br /&gt;
// IMPORT ASSET&lt;br /&gt;
file -import -type $assetFileType  -ignoreVersion -mergeNamespacesOnClash false -rpr &amp;quot;:&amp;quot; -options &amp;quot;v=0;&amp;quot; $assetPath;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
// CREATE SETS&lt;br /&gt;
select `ls -type &amp;quot;mesh&amp;quot;`;&lt;br /&gt;
sets -name &amp;quot;assetOriginal_Set&amp;quot; ;&lt;br /&gt;
duplicate -rr;&lt;br /&gt;
group -w -n (&amp;quot;GRP_&amp;quot; + $assetName + &amp;quot;_BAKE_&amp;quot; + `toupper $lightRigName`);&lt;br /&gt;
sets -name &amp;quot;assetBaked_Set&amp;quot; ;&lt;br /&gt;
&lt;br /&gt;
// REMOVE BAKED PARTS FROM ORIGINAL PARTS SET&lt;br /&gt;
select -r assetBaked_Set ;&lt;br /&gt;
string $selection[] = `ls -sl`;&lt;br /&gt;
string $polyGons[] = `filterExpand -sm 12 $selection`;&lt;br /&gt;
select -r $polyGons;&lt;br /&gt;
pickWalk -d down;&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    sets -rm assetOriginal_Set $object;&lt;br /&gt;
}&lt;br /&gt;
select -cl  ;&lt;br /&gt;
&lt;br /&gt;
// DELETE HIDDEN OBJECTS&lt;br /&gt;
select -r assetBaked_Set ;&lt;br /&gt;
string $selection[] = `ls -sl`;&lt;br /&gt;
string $polyGons[] = `filterExpand -sm 12 $selection`;&lt;br /&gt;
select -r $polyGons;&lt;br /&gt;
for ( $object in `ls -sl` ) {&lt;br /&gt;
    $vis = getAttr ($object+&amp;quot;.visibility&amp;quot;);&lt;br /&gt;
    if ($vis == 0){&lt;br /&gt;
        select -r $object ;&lt;br /&gt;
        doDelete ;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
select -cl  ;&lt;br /&gt;
&lt;br /&gt;
// fixShapeName - Thanks to Pinkwerks&lt;br /&gt;
global proc&lt;br /&gt;
fixShapeName()&lt;br /&gt;
{&lt;br /&gt;
    string $me = &amp;quot;fixShapeName&amp;quot;;&lt;br /&gt;
    string $shape;&lt;br /&gt;
    string $newShapeName;&lt;br /&gt;
    string $parent;&lt;br /&gt;
    string $tmpA[];&lt;br /&gt;
	string $selectedShapes[] = `ls -sl -l`;&lt;br /&gt;
    int $sizeOfShapes = `size $selectedShapes`;&lt;br /&gt;
&lt;br /&gt;
    if ( $sizeOfShapes == 0 )&lt;br /&gt;
    	error($me + &amp;quot; : Nothing shapes to process!&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
    for ( $shape in $selectedShapes )&lt;br /&gt;
    {&lt;br /&gt;
    	$tmpA = `listRelatives -p $shape`;&lt;br /&gt;
		$parent = $tmpA[0];&lt;br /&gt;
		$newShapeName = ($parent + &amp;quot;Shape&amp;quot;);&lt;br /&gt;
		rename $shape $newShapeName;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// APPLY FIXSHAPENAME TO BAKED ASSET PARTS&lt;br /&gt;
select -r assetBaked_Set ;&lt;br /&gt;
string $selection[] = `ls -sl`;&lt;br /&gt;
string $polyGons[] = `filterExpand -sm 12 $selection`;&lt;br /&gt;
select -r $polyGons;&lt;br /&gt;
pickWalk -d down;&lt;br /&gt;
fixShapeName();&lt;br /&gt;
select -cl  ;&lt;br /&gt;
&lt;br /&gt;
// DELETE OBJECTS WITHOUT UVS&lt;br /&gt;
select -r assetBaked_Set ;&lt;br /&gt;
string $selection[] = `ls -sl`;&lt;br /&gt;
string $polyGons[] = `filterExpand -sm 12 $selection`;&lt;br /&gt;
select -r $polyGons;&lt;br /&gt;
for ( $object in `ls -sl` ) {&lt;br /&gt;
    int $vertexCount[] = `polyEvaluate -uv $object`;&lt;br /&gt;
    print $vertexCount;&lt;br /&gt;
    string $uvCount = $vertexCount[0];&lt;br /&gt;
    if ($uvCount == 0){&lt;br /&gt;
        select -r $object ;&lt;br /&gt;
        doDelete ;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// CREATE VRAY BAKE OPTIONS&lt;br /&gt;
createNode &amp;quot;VRayBakeOptions&amp;quot; -n &amp;quot;vrayBakeOptions&amp;quot;;&lt;br /&gt;
select -r assetBaked_Set ;&lt;br /&gt;
string $selection[] = `ls -sl`;&lt;br /&gt;
string $polyGons[] = `filterExpand -sm 12 $selection`;&lt;br /&gt;
select -r $polyGons;&lt;br /&gt;
$selected=`ls -sl`;&lt;br /&gt;
for ($object in $selected){&lt;br /&gt;
    sets -edit -forceElement  vrayBakeOptions $object ;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// HIDE ORIGINAL ASSET&lt;br /&gt;
select -r assetOriginal_Set ;&lt;br /&gt;
pickWalk -d up;&lt;br /&gt;
hide `ls -sl`;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
// BAKE VRAY OPTIONS&lt;br /&gt;
setAttr &amp;quot;vrayBakeOptions.udimBaking&amp;quot; 1;&lt;br /&gt;
setAttr &amp;quot;vrayBakeOptions.resolutionX&amp;quot; $resWidth;&lt;br /&gt;
&lt;br /&gt;
optionVar -intValue &amp;quot;vrayBakeType&amp;quot; 2;&lt;br /&gt;
optionVar -intValue &amp;quot;vraySkipNodesWithoutBakeOptions&amp;quot; 1;&lt;br /&gt;
optionVar -intValue &amp;quot;vrayAssignBakedTextures&amp;quot; 1;&lt;br /&gt;
optionVar -stringValue &amp;quot;vrayBakeOutputPath&amp;quot; $bakedTexturesPath;&lt;br /&gt;
optionVar -intValue &amp;quot;vrayBakeProjectionBaking&amp;quot; 0;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
// GO BAKE GO&lt;br /&gt;
select -cl  ;&lt;br /&gt;
select -r assetBaked_Set ;&lt;br /&gt;
string $selection[] = `ls -sl`;&lt;br /&gt;
string $polyGons[] = `filterExpand -sm 12 $selection`;&lt;br /&gt;
select -r $polyGons;&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    vrayStartBake;&lt;br /&gt;
}&lt;br /&gt;
select -cl  ;&lt;br /&gt;
&lt;br /&gt;
// UV TILING UDIM AND ACES CG FOR FILES&lt;br /&gt;
for ( $object in `ls -type &amp;quot;file&amp;quot;` ) {&lt;br /&gt;
    setAttr ($object + &amp;quot;.filterType&amp;quot;) 0;&lt;br /&gt;
    setAttr ($object + &amp;quot;.uvTilingMode&amp;quot;) 3;&lt;br /&gt;
    setAttr ($object + &amp;quot;.cs&amp;quot;) -type &amp;quot;string&amp;quot; $fileColorSpace;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// CONNECT SHADERS&lt;br /&gt;
select -cl  ;&lt;br /&gt;
select -r assetBaked_Set ;&lt;br /&gt;
string $selection[] = `ls -sl`;&lt;br /&gt;
string $polyGons[] = `filterExpand -sm 12 $selection`;&lt;br /&gt;
for ( $object in $polyGons ) {&lt;br /&gt;
    string $shadingGroupName = ($object + &amp;quot;Shape_bakedmtlSG&amp;quot;);&lt;br /&gt;
    sets -e -forceElement $shadingGroupName $object;&lt;br /&gt;
}&lt;br /&gt;
select -cl  ;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
///////////////////////////////////&lt;br /&gt;
// SAVE&lt;br /&gt;
file -rename (&amp;quot;C:/YOUR_PATH/BAKED_ASSETS/&amp;quot; + $assetName + &amp;quot;_&amp;quot; + $lightRigName + &amp;quot;_BAKE_DEBUG.mb&amp;quot;);&lt;br /&gt;
file -f -save;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Arnold - Set all Standins display on Bouding box ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$selected=`ls -type &amp;quot;aiStandIn&amp;quot;`;&lt;br /&gt;
for ($object in $selected){&lt;br /&gt;
    setAttr ($object + &amp;quot;.mode&amp;quot;) 0;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Arnold - Set all Standins display on Point cloud ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$selected=`ls -type &amp;quot;aiStandIn&amp;quot;`;&lt;br /&gt;
for ($object in $selected){&lt;br /&gt;
    setAttr ($object + &amp;quot;.mode&amp;quot;) 4;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Alembic - Loop animation on all nodes ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$selected=`ls -type &amp;quot;AlembicNode&amp;quot;`;&lt;br /&gt;
for ($object in $selected){&lt;br /&gt;
    setAttr ($object + &amp;quot;.cycleType&amp;quot;) 1;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Mental Ray nodes error - Delete Mayatomr plugin ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
unknownPlugin -remove &amp;quot;Mayatomr&amp;quot;;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Delete Unknown nodes ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
select -r `ls -type unknown`;&lt;br /&gt;
delete;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Write text ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
string $exampleFileName = ( &amp;quot;D:/yolo.bat&amp;quot; );&lt;br /&gt;
string $linesToWrite[] = {&lt;br /&gt;
    &amp;quot;youpi&amp;quot;,&lt;br /&gt;
    &amp;quot;youhou&amp;quot;&lt;br /&gt;
    };&lt;br /&gt;
int $result = fwriteAllLines($exampleFileName,$linesToWrite);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Point Lock No Attach on selected follicles ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    setAttr ($object + &amp;quot;.pointLock&amp;quot;) 0;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Convert .ma cameras from Reality Capture into .abc files ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// List of assets&lt;br /&gt;
string $fileParts[] = {&amp;quot;asset_001&amp;quot;, &amp;quot;asset_002&amp;quot;};&lt;br /&gt;
&lt;br /&gt;
// Replace the PATH of your files&lt;br /&gt;
for ($filePart in $fileParts){&lt;br /&gt;
	string $fileName = $filePart + &amp;quot;_cam&amp;quot;;&lt;br /&gt;
	string $filePath = &amp;quot;//DISK/PATH/&amp;quot; + $filePart + &amp;quot;/&amp;quot; + $filePart +&amp;quot;_cam.ma&amp;quot;;&lt;br /&gt;
	file -import -type &amp;quot;mayaAscii&amp;quot;  -ignoreVersion -ra true -mergeNamespacesOnClash false -rpr $fileName -options &amp;quot;v=0;p=17;f=0&amp;quot;  -pr  -importFrameRate true  -importTimeRange &amp;quot;override&amp;quot; $filePath;&lt;br /&gt;
	select -cl;&lt;br /&gt;
	select `ls -type &amp;quot;imagePlane&amp;quot;`;&lt;br /&gt;
	pickWalk -d up;&lt;br /&gt;
	doDelete;&lt;br /&gt;
	select `ls -type &amp;quot;camera&amp;quot;`;&lt;br /&gt;
	pickWalk -d up;	&lt;br /&gt;
	string $abcPath = &amp;quot;//DISK/PATH/&amp;quot; + $filePart + &amp;quot;/&amp;quot; + $filePart +&amp;quot;_cam.abc&amp;quot;;&lt;br /&gt;
	string $abcExp = &amp;quot;-frameRange 1 1 -uvWrite -worldSpace -dataFormat ogawa -root |* -file &amp;quot; + $abcPath;&lt;br /&gt;
	AbcExport -j $abcExp;&lt;br /&gt;
	select -all;&lt;br /&gt;
	doDelete;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Combine objects ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select objects&lt;br /&gt;
&lt;br /&gt;
polyPerformAction polyUnite o 0; &lt;br /&gt;
DeleteHistory;&lt;br /&gt;
FreezeTransformations;&lt;br /&gt;
makeIdentity -apply true -t 1 -r 1 -s 1 -n 0 -pn 1;&lt;br /&gt;
CenterPivot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Unitize UVs (one square UV by face) ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select objects&lt;br /&gt;
&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    select -r ($object+&amp;quot;.e[*]&amp;quot;);&lt;br /&gt;
    hilite ($object+&amp;quot;.e[*]&amp;quot;) ;&lt;br /&gt;
    polyMapCut -ch 1 ($object+&amp;quot;.e[*]&amp;quot;);&lt;br /&gt;
    polyForceUV -unitize $object;&lt;br /&gt;
    select $object;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Walter</name></author>
		
	</entry>
	<entry>
		<id>http://antoinevienne.fr/wiki/index.php?title=Maya_Mel&amp;diff=253</id>
		<title>Maya Mel</title>
		<link rel="alternate" type="text/html" href="http://antoinevienne.fr/wiki/index.php?title=Maya_Mel&amp;diff=253"/>
		<updated>2023-09-27T12:09:40Z</updated>

		<summary type="html">&lt;p&gt;Walter: /* Unitize UVs (one square UV by face) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Maya Mels Scripts=&lt;br /&gt;
=== Octane Render Baking group id - Assign id to multiple objects shapes ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// 0 is for Red, 2 for Green, 4 for Blue&lt;br /&gt;
// 3, 5 and 6 for Cyan, Magenta and Yellow&lt;br /&gt;
// Replace the number &amp;quot;0&amp;quot; by the number of your choice&lt;br /&gt;
// Baking group id is also avalaible in Attribute Spreadsheet Editor&lt;br /&gt;
&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    print($object+&amp;quot;\n&amp;quot;);&lt;br /&gt;
    setAttr ($object + &amp;quot;.octBakGrId&amp;quot;) (0);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Maxwell Render - Particles sequence - Force .abc file ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
//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&lt;br /&gt;
&lt;br /&gt;
global int $current_frame;&lt;br /&gt;
$current_frame = `currentTime -query`;&lt;br /&gt;
print $current_frame;&lt;br /&gt;
{&lt;br /&gt;
setAttr -type &amp;quot;string&amp;quot; maxwellRFRKParticles1.file (&amp;quot;/YOUR_PATH/YOUR_FILE&amp;quot; + $current_frame + &amp;quot;.abc&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Maxwell Render - Specify object ID color ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Specify object ID color&lt;br /&gt;
&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    print($object+&amp;quot;\n&amp;quot;);&lt;br /&gt;
    setAttr ($object + &amp;quot;.mxSpecifyObjIdColor&amp;quot;) (1);&lt;br /&gt;
    setAttr ($object + &amp;quot;.mxObjIdColor&amp;quot;) -type &amp;quot;double3&amp;quot; 1 0 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Redshift - Add blend attribute and set random value for objects selection ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Useful for blending between colors with RedshiftUserDataScalar&lt;br /&gt;
&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    print($object);&lt;br /&gt;
    addAttr -ln &amp;quot;blend&amp;quot; -at double  -min 0 -max 1 -dv 0 $object;&lt;br /&gt;
    setAttr ($object + &amp;quot;.blend&amp;quot;) (rand(1));&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Redshift - Set Primary visibility off for selection (layer override) ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Go in right render layer and select objects&lt;br /&gt;
&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    print($object+&amp;quot;\n&amp;quot;);&lt;br /&gt;
    setAttr ($object + &amp;quot;.rsEnableVisibilityOverrides&amp;quot;) (1);&lt;br /&gt;
    editRenderLayerAdjustment ($object + &amp;quot;.rsPrimaryRayVisible&amp;quot;);&lt;br /&gt;
    setAttr ($object + &amp;quot;.rsPrimaryRayVisible&amp;quot;) (0);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Convert Motion trail to curve ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select the motion trail first&lt;br /&gt;
&lt;br /&gt;
{&lt;br /&gt;
$selected=`ls -dag -et snapshotShape`;&lt;br /&gt;
for ($obj in $selected){&lt;br /&gt;
$pts=(getAttr($obj+&amp;quot;.pts&amp;quot;));&lt;br /&gt;
$size=size($pts);&lt;br /&gt;
$curve=`curve -d 1 -p $pts[0] $pts[1] $pts[2] -p $pts[4] $pts[5] $pts[6] -k 0 -k 1`;&lt;br /&gt;
for($i=8;$i&amp;lt;$size;$i+=4)&lt;br /&gt;
curve -os -a -p $pts[$i] $pts[$i+1] $pts[$i+2] $curve ;&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Quantize keyframes for selection ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Snap keys on frames for objects selection&lt;br /&gt;
&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    print($object+&amp;quot;\n&amp;quot;);&lt;br /&gt;
    snapKey $object;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Loop image sequence for texture ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// On File texture, check Image sequence, and edit expression&lt;br /&gt;
&lt;br /&gt;
file1.frameExtension=((frame%8)+1);&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Symmetrize - Duplicate &amp;amp; merge object ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select half object first&lt;br /&gt;
&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    print($object+&amp;quot;\n&amp;quot;);&lt;br /&gt;
    xform -piv 0 0 0 $object;&lt;br /&gt;
    duplicate -rr;&lt;br /&gt;
    setAttr ($object + &amp;quot;.scaleX&amp;quot;) (-1);&lt;br /&gt;
    select -add $object ;&lt;br /&gt;
    polyPerformAction polyUnite o 0;&lt;br /&gt;
    polyMergeVertex  -d 0.0001 -am 1 -ch 1;&lt;br /&gt;
    DeleteHistory;&lt;br /&gt;
    rename ($object);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Mirror object ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select object first&lt;br /&gt;
&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    print($object+&amp;quot;\n&amp;quot;);&lt;br /&gt;
    DeleteHistory;&lt;br /&gt;
    makeIdentity -apply true -t 1 -r 1 -s 1 -n 0 -pn 1;&lt;br /&gt;
    xform -piv 0 0 0 $object;&lt;br /&gt;
    duplicate -rr;&lt;br /&gt;
    setAttr ($object + &amp;quot;.scaleX&amp;quot;) (-1);&lt;br /&gt;
    DeleteHistory;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Group each object and rename ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select objects first&lt;br /&gt;
&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    string $name = ($object);&lt;br /&gt;
    select $object ;&lt;br /&gt;
    doGroup 0 1 1;&lt;br /&gt;
    rename ($name + &amp;quot;_GRP&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Change path in an Attribute ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Here the Attribute is &amp;quot;.filePrefix&amp;quot; - Select objects first&lt;br /&gt;
&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    string $path = getAttr ($object+&amp;quot;.filePrefix&amp;quot;);&lt;br /&gt;
    $path = `substitute &amp;quot;//OLD/PATH/&amp;quot; $path &amp;quot;//NEW/PATH/&amp;quot;`;&lt;br /&gt;
    setAttr -type &amp;quot;string&amp;quot; ($object+&amp;quot;.filePrefix&amp;quot;) ($path);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Change opacity mode on V-Ray shaders ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select shaders first&lt;br /&gt;
&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    if (attributeExists(&amp;quot;omode&amp;quot;,$object)) { //check if attribute exists&lt;br /&gt;
        CBunlockAttr ($object+&amp;quot;.omode&amp;quot;); //unlock opacity mode&lt;br /&gt;
    }&lt;br /&gt;
    if (attributeExists(&amp;quot;opacityMode&amp;quot;,$object)) {&lt;br /&gt;
        setAttr ($object+&amp;quot;.opacityMode&amp;quot;) 1; //set opacity mode in Clip - 0 pour Normal&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// Alternative&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    if (attributeExists(&amp;quot;opacityMode&amp;quot;,$object)) {&lt;br /&gt;
        setAttr ($object+&amp;quot;.opacityMode&amp;quot;) -l false; //unlock attribute if locked&lt;br /&gt;
    }&lt;br /&gt;
    if (attributeExists(&amp;quot;opacityMode&amp;quot;,$object)) {&lt;br /&gt;
        setAttr ($object+&amp;quot;.opacityMode&amp;quot;) 2; //set opacity mode in Clip - 0 pour Normal&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Change color space on selected fileTextures ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Useful to automatically convert Quixel Megascans by example from sRGB/Raw to ACES color spaces&lt;br /&gt;
&lt;br /&gt;
string $object_selection[] = (`ls -sl`);&lt;br /&gt;
for ($object in $object_selection) {&lt;br /&gt;
    if(`getAttr ($object+&amp;quot;.cs&amp;quot;)` == &amp;quot;sRGB&amp;quot;){&lt;br /&gt;
        setAttr ($object + &amp;quot;.cs&amp;quot;) -type &amp;quot;string&amp;quot; &amp;quot;Utility - sRGB - Texture&amp;quot;;&lt;br /&gt;
    }&lt;br /&gt;
    if(`getAttr ($object+&amp;quot;.cs&amp;quot;)` == &amp;quot;Raw&amp;quot;){&lt;br /&gt;
        setAttr ($object + &amp;quot;.cs&amp;quot;) -type &amp;quot;string&amp;quot; &amp;quot;Utility - Raw&amp;quot;;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Redshift - custom Tesselation on selected objects ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select objects first&lt;br /&gt;
&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    print($object+&amp;quot;\n&amp;quot;);&lt;br /&gt;
    setAttr ($object + &amp;quot;.rsMinTessellationLength&amp;quot;) (0.1);&lt;br /&gt;
    setAttr ($object + &amp;quot;.rsMaxTessellationSubdivs&amp;quot;) (2);&lt;br /&gt;
    setAttr ($object + &amp;quot;.rsOutOfFrustumTessellationFactor&amp;quot;) (4);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Change color on selected shaders ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select shaders first&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    print($object+&amp;quot;\n&amp;quot;);&lt;br /&gt;
    setAttr ($object + &amp;quot;.color&amp;quot;) -l false;&lt;br /&gt;
    setAttr ($object + &amp;quot;.color&amp;quot;) -type &amp;quot;double3&amp;quot; (0.18) (0.18) (0.18);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Change Filter Type on selected Files Textures ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select files textures first - 0 means Off&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    print($object+&amp;quot;\n&amp;quot;);&lt;br /&gt;
    setAttr ($object + &amp;quot;.filterType&amp;quot;) 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Clean Render Layers ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// In MEL&lt;br /&gt;
fixRenderLayerOutAdjustmentErrors;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Change Filter Type on selected Files Textures ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select files textures first - 0 means Off&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    print($object+&amp;quot;\n&amp;quot;);&lt;br /&gt;
    setAttr ($object + &amp;quot;.filterType&amp;quot;) 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Select by name ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select objects with &amp;quot;toto&amp;quot;&lt;br /&gt;
select -r &amp;quot;toto*&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Display color on shapes ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select objects&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    print($object+&amp;quot;\n&amp;quot;);&lt;br /&gt;
    setAttr ($object + &amp;quot;.displayColors&amp;quot;) 1;&lt;br /&gt;
    setDisplayColorChannelAttribute ($object + &amp;quot;.displayColorChannel&amp;quot;);&lt;br /&gt;
    polyColorPerVertex -r 1 -g 0 -b 0 -a 1 -cdo;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Geometry Constraint on multiple selection ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select objects to constrain&lt;br /&gt;
string $objectBase = &amp;quot;surfaceName&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    select -cl;&lt;br /&gt;
    select $objectBase;&lt;br /&gt;
    select -add $object;&lt;br /&gt;
    geometryConstraint -weight 1;&lt;br /&gt;
    select -r &amp;quot;*Constraint*&amp;quot;;&lt;br /&gt;
    doDelete;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
=== Speed up smokes rendering with V-Ray ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select smokes first&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    print($object+&amp;quot;\n&amp;quot;);&lt;br /&gt;
    setAttr ($object + &amp;quot;.rendStep&amp;quot;) 160;&lt;br /&gt;
    setAttr ($object + &amp;quot;.shadowStep&amp;quot;) 400;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Set bump multiplier on multiple V-Ray shaders ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select shaders&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    if (attributeExists(&amp;quot;bumpMult&amp;quot;,$object)) {&lt;br /&gt;
        setAttr ($object + &amp;quot;.bumpMult&amp;quot;) -1; //set bump multiplier at -1&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== STOP/START viewport ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// As seen on https://www.toadstorm.com/. - Put it in your shelf&lt;br /&gt;
paneLayout -e -manage false $gMainPane&lt;br /&gt;
&lt;br /&gt;
paneLayout -e -manage true $gMainPane&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Select curves by name ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select objects first - Replace &amp;quot;toto&amp;quot; by what you are looking for&lt;br /&gt;
&lt;br /&gt;
select `ls -type &amp;quot;nurbsCurve&amp;quot; &amp;quot;*toto*&amp;quot;`;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Noise expression ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Replace &amp;quot;pCube1&amp;quot;&lt;br /&gt;
&lt;br /&gt;
pCube1.translateX=sin(time*20)*0.01*noise(time*10);&lt;br /&gt;
pCube1.translateY=sin(time*4)*0.01*noise(time*10);&lt;br /&gt;
pCube1.translateZ=sin(time*12)*0.01*noise(time*10);&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== V-ray - Make curves renderables ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Replace VRayLightMtl1 at the end by your material&lt;br /&gt;
&lt;br /&gt;
$selected=`ls -dag -et curveShape`;&lt;br /&gt;
for ($object in $selected){&lt;br /&gt;
    // Add V-ray Extra attributes&lt;br /&gt;
    vray addAttributesFromGroup $object vray_nurbscurve_renderable 1;&lt;br /&gt;
    vrayAddAttr $object vraySeparator_vray_nurbscurve_renderable;&lt;br /&gt;
    vrayAddAttr $object vrayNurbsCurveRenderable;&lt;br /&gt;
    vrayAddAttr $object vrayNurbsCurveMaterial;&lt;br /&gt;
    vrayAddAttr $object vrayNurbsCurveTesselation;&lt;br /&gt;
    vrayAddAttr $object vrayNurbsCurveStartWidth;&lt;br /&gt;
    vrayAddAttr $object vrayNurbsCurveLockEndWidth;&lt;br /&gt;
    vrayAddAttr $object vrayNurbsCurveEndWidth;&lt;br /&gt;
    setUITemplate -pst attributeEditorTemplate;&lt;br /&gt;
// Activate renderable&lt;br /&gt;
setAttr ($object + &amp;quot;.vrayNurbsCurveRenderable&amp;quot;) 1;&lt;br /&gt;
// Replace VRayLightMtl1 by your material&lt;br /&gt;
connectAttr -force VRayLightMtl1.outColor ($object + &amp;quot;.vrayNurbsCurveMaterial&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Get object type ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Replace toto with the object whose type you want to know&lt;br /&gt;
&lt;br /&gt;
objectType toto;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Render layer override on specific object type ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Replace &amp;quot;Node&amp;quot; by the object type on which you want to act&lt;br /&gt;
&lt;br /&gt;
$selected=`ls -type &amp;quot;Node&amp;quot;`;&lt;br /&gt;
for ($object in $selected){&lt;br /&gt;
    // Create layer override on Primary Visibility attribute on current renderLayer&lt;br /&gt;
    editRenderLayerAdjustment ($object + &amp;quot;.primaryVisibility&amp;quot;);&lt;br /&gt;
    // Set Primary Visibility - 0 or 1&lt;br /&gt;
    setAttr ($object + &amp;quot;.primaryVisibility&amp;quot;) 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== V-ray - Make lights invisible ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$selected=`ls -type &amp;quot;VRayLightRectShape&amp;quot;`;&lt;br /&gt;
for ($object in $selected){&lt;br /&gt;
    setAttr ($object + &amp;quot;.invisible&amp;quot;) 1;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
$selected=`ls -type &amp;quot;VRayLightSphereShape&amp;quot;`;&lt;br /&gt;
for ($object in $selected){&lt;br /&gt;
    setAttr ($object + &amp;quot;.invisible&amp;quot;) 1;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
$selected=`ls -type &amp;quot;VRayLightDomeShape&amp;quot;`;&lt;br /&gt;
for ($object in $selected){&lt;br /&gt;
    setAttr ($object + &amp;quot;.invisible&amp;quot;) 1;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== V-ray - Select Rect Light ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
select `ls -type &amp;quot;VRayLightRectShape&amp;quot;`;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== V-ray - Rect Lights - Directional Preview - Always for all ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$selected=`ls -type &amp;quot;VRayLightRectShape&amp;quot;`;&lt;br /&gt;
for ($object in $selected){&lt;br /&gt;
    setAttr ($object + &amp;quot;.directionalPreview&amp;quot;) 1;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Randomize rotation on selected objects ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// As posted on CGTalk by NaughtyNathan&lt;br /&gt;
// &amp;quot;just set the vector values to the maximum random x,y,z rotations you want to apply to the selected transforms.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
vector $rndRot = &amp;lt;&amp;lt; 0,0,90 &amp;gt;&amp;gt;;	// x,y,z rotations&lt;br /&gt;
for ($object in `ls -sl -tr`){&lt;br /&gt;
    rotate `rand ($rndRot.x)` `rand ($rndRot.y)` `rand ($rndRot.z)` $object;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Quit Maya ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Brute force method&lt;br /&gt;
&lt;br /&gt;
$i = `getpid`; //application ID&lt;br /&gt;
    system(&amp;quot;taskkill /PID &amp;quot;  + $i +&amp;quot; /f&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
// In a gentle way&lt;br /&gt;
&lt;br /&gt;
evalDeferred(&amp;quot;quit -f&amp;quot;);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== V-ray - Import list of Alembics through Proxys Import ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// List of Alembics files - Replace by the name of your Alembics&lt;br /&gt;
string $alembicsParts[] = {&amp;quot;part1&amp;quot;,&amp;quot;part2&amp;quot;,&amp;quot;part3&amp;quot;};&lt;br /&gt;
&lt;br /&gt;
// Replace the PATH of your files - Scale by 100 for Houdini Alembics - &amp;lt;frame04&amp;gt; for sequences&lt;br /&gt;
for ($alembicsPart in $alembicsParts){&lt;br /&gt;
    vrayCreateProxy -node $alembicsPart -existing -dir (&amp;quot;C:/YOURPATH/&amp;quot;+$alembicsPart+&amp;quot;.&amp;lt;frame04&amp;gt;.abc&amp;quot;) -createProxyNode;&lt;br /&gt;
    setAttr ($alembicsPart+&amp;quot;_vraymesh.animType&amp;quot;) 1;&lt;br /&gt;
    setAttr ($alembicsPart+&amp;quot;.scaleZ&amp;quot;) 100;&lt;br /&gt;
    setAttr ($alembicsPart+&amp;quot;.scaleX&amp;quot;) 100;&lt;br /&gt;
    setAttr ($alembicsPart+&amp;quot;.scaleY&amp;quot;) 100;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== V-ray - Change path to VRayMesh for selected proxies ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Change path with your own .vrmesh&lt;br /&gt;
$selected=`ls -type &amp;quot;VRayMesh&amp;quot;`;&lt;br /&gt;
for ($object in $selected){&lt;br /&gt;
    setAttr -type &amp;quot;string&amp;quot; ($object + &amp;quot;.fileName2&amp;quot;) &amp;quot;//DISK/PATH/YOUR_VRMESH.vrmesh&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// If you want to change Geometry type - 4 for GPU mesh - add following in the loop&lt;br /&gt;
//    setAttr ($object + &amp;quot;.geomType&amp;quot;) 4;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Delete image planes ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Delete image plane if exists.&lt;br /&gt;
$selected=`ls -type &amp;quot;imagePlane&amp;quot;`;&lt;br /&gt;
select $selected;&lt;br /&gt;
for ($object in $selected){&lt;br /&gt;
    doDelete;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Merge alembic from set ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select objects in a set called EXPORT_SET&lt;br /&gt;
select -r EXPORT_SET ;&lt;br /&gt;
timeControl -edit -forceRedraw $gPlayBackSlider;&lt;br /&gt;
&lt;br /&gt;
// Create list of objects from EXPORT_SET&lt;br /&gt;
string $assetParts[] = `ls -sl`;&lt;br /&gt;
$assetPartsList = stringArrayToString($assetParts,&amp;quot; &amp;quot;);&lt;br /&gt;
&lt;br /&gt;
// Merge alembic with these objects&lt;br /&gt;
AbcImport -mode import -connect $assetPartsList &amp;quot;//DISK/PATH/alembic.abc&amp;quot;;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Create Texture reference ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// CREATE TEXTURE REFERENCE ON EXPORT SET&lt;br /&gt;
&lt;br /&gt;
select -r YOUR_GROUP ;&lt;br /&gt;
CreateTextureReferenceObject;&lt;br /&gt;
select -cl  ;&lt;br /&gt;
&lt;br /&gt;
// REMOVE REFERENCE OBJECTS FROM EXPORT SET&lt;br /&gt;
select -r YOUR_GROUP_reference ;&lt;br /&gt;
string $selection[] = `ls -sl`;&lt;br /&gt;
string $polyGons[] = `filterExpand -sm 12 $selection`;&lt;br /&gt;
select -r $polyGons;&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    sets -rm EXPORT_SET $object;&lt;br /&gt;
}&lt;br /&gt;
select -cl  ;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Replace animated objects with V-Ray proxies ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// First select animated objects to replace&lt;br /&gt;
// For each object create a proxy then constrain then bake simulation then delete constraint&lt;br /&gt;
&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
	vrayCreateProxy -node assetName -existing -dir (&amp;quot;//DISK/PATH/your_asset.vrmesh&amp;quot;) -createProxyNode;&lt;br /&gt;
	select -r $object ;&lt;br /&gt;
	select -add assetName ;&lt;br /&gt;
	doCreateParentConstraintArgList 1 { &amp;quot;0&amp;quot;,&amp;quot;0&amp;quot;,&amp;quot;0&amp;quot;,&amp;quot;0&amp;quot;,&amp;quot;0&amp;quot;,&amp;quot;0&amp;quot;,&amp;quot;0&amp;quot;,&amp;quot;0&amp;quot;,&amp;quot;1&amp;quot;,&amp;quot;&amp;quot;,&amp;quot;1&amp;quot; };&lt;br /&gt;
	parentConstraint -weight 1;&lt;br /&gt;
	bakeResults -simulation true -t &amp;quot;1000:1100&amp;quot; -sampleBy 1 -oversamplingRate 1 -disableImplicitControl true -preserveOutsideKeys true -sparseAnimCurveBake false -removeBakedAttributeFromLayer false -removeBakedAnimFromLayer false -bakeOnOverrideLayer false -minimizeRotation true -controlPoints false -shape true {&amp;quot;assetName&amp;quot;};&lt;br /&gt;
	select `ls -type &amp;quot;constraint&amp;quot;`;&lt;br /&gt;
	select -add $object ;&lt;br /&gt;
	doDelete;&lt;br /&gt;
	select -cl  ;&lt;br /&gt;
	rename &amp;quot;assetName&amp;quot; $object;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Select all meshes in a group ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// From cmadsenAniden on forums.autodesk.com&lt;br /&gt;
// Replace group1 by the name of your own group&lt;br /&gt;
&lt;br /&gt;
select -r group1 ;&lt;br /&gt;
string $selection[] = `ls -sl`;&lt;br /&gt;
string $polyGons[] = `filterExpand -sm 12 $selection`;&lt;br /&gt;
select -r $polyGons;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Select shot camera ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// CREATE VARIABLE FOR SHOT CAMERA AND SELECT IT&lt;br /&gt;
&lt;br /&gt;
select `ls -type &amp;quot;camera&amp;quot;`;&lt;br /&gt;
select -d sideShape frontShape topShape perspShape;&lt;br /&gt;
$camerashot = `ls -sl`;&lt;br /&gt;
string $shotcamera = $camerashot[0];&lt;br /&gt;
print $shotcamera;&lt;br /&gt;
select $shotcamera;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Get list of frames with keys on all transform objects ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$selected=`ls -dag -et transform`;&lt;br /&gt;
&lt;br /&gt;
float $arrathy[] = `keyframe -query $selected`;&lt;br /&gt;
&lt;br /&gt;
float $sorted[] = python(&amp;quot;import pymel.core as pm; list(set((pm.getMelGlobal(\&amp;quot;float[]\&amp;quot;, \&amp;quot;$arrathy\&amp;quot;))))&amp;quot;);&lt;br /&gt;
print $sorted;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== MULTI SNAP ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Replace a list of objects by another with bake of animation. Replace FSTART and FEND with your own padding.&lt;br /&gt;
&lt;br /&gt;
///////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
///////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
/*&lt;br /&gt;
Type the command MS() in MEL form to open UI.&lt;br /&gt;
*/&lt;br /&gt;
///////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
///////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
source &amp;quot;generateChannelMenu.mel&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
global proc MS ()&lt;br /&gt;
{&lt;br /&gt;
     global string $sourceObjects;&lt;br /&gt;
     global string $destinationObjects;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    // If the window exists already, delete it.&lt;br /&gt;
    if (`window -exists multiSnapWindow`)&lt;br /&gt;
    {&lt;br /&gt;
        deleteUI multiSnapWindow;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    // Build the window.&lt;br /&gt;
    global string $man_window;&lt;br /&gt;
    string $man_window = `window -title &amp;quot; MULTI SNAP&amp;quot; -sizeable 0 -w 300 multiSnapWindow`;&lt;br /&gt;
    frameLayout -label &amp;quot;Snap source objects on destination objects.&amp;quot;;&lt;br /&gt;
    rowLayout -width 540 -nc 2 -cw4 10 20 20 100;&lt;br /&gt;
    // Source objects section&lt;br /&gt;
    frameLayout -label &amp;quot;Source objects&amp;quot;;&lt;br /&gt;
    $sourceObjects = `textScrollList -width 600 -height 300`;&lt;br /&gt;
    rowLayout -width 240 -nc 2 -cw2 120 120;&lt;br /&gt;
    button -label &amp;quot;Add selected&amp;quot; -command &amp;quot;MS_addObjects ();&amp;quot; -width 120;&lt;br /&gt;
    button -label &amp;quot;Remove selected&amp;quot; -command &amp;quot;MS_removeObjects ();&amp;quot; -width 120;&lt;br /&gt;
    setParent ..;&lt;br /&gt;
    rowLayout -width 240 -nc 2 -cw2 120 120;&lt;br /&gt;
    button -label &amp;quot;Remove All&amp;quot; -command &amp;quot;MS_clearObjects ();&amp;quot; -width 240;&lt;br /&gt;
    setParent ..;&lt;br /&gt;
    setParent ..;&lt;br /&gt;
    rowLayout -nc 3;&lt;br /&gt;
    button -label &amp;quot;Create&amp;quot; -command &amp;quot;VRAYCONNECDO() &amp;quot; -width 140 -align center;&lt;br /&gt;
    button -label &amp;quot;Close&amp;quot; -command &amp;quot;DAC_CloseUI() &amp;quot; -width 140 -align center;&lt;br /&gt;
    setParent ..;&lt;br /&gt;
    setParent ..;&lt;br /&gt;
    // Destination objects section&lt;br /&gt;
    frameLayout -label &amp;quot;Destination objects&amp;quot;;&lt;br /&gt;
    $destinationObjects = `textScrollList -width 600 -height 300`;&lt;br /&gt;
    rowLayout -width 240 -nc 2 -cw2 120 120;&lt;br /&gt;
    button -label &amp;quot;Add selected&amp;quot; -command &amp;quot;MS_addMM ();&amp;quot; -width 120;&lt;br /&gt;
    button -label &amp;quot;Remove selected&amp;quot; -command &amp;quot;MS_removeMM ();&amp;quot; -width 120;&lt;br /&gt;
    setParent ..;&lt;br /&gt;
    setParent ..;&lt;br /&gt;
    rowLayout -nc 3;&lt;br /&gt;
    button -label &amp;quot;SNAP IT&amp;quot; -command &amp;quot;VRAYCONNECDO() &amp;quot; -width 140 -align center;&lt;br /&gt;
    button -label &amp;quot;Close&amp;quot; -command &amp;quot;DAC_CloseUI() &amp;quot; -width 140 -align center;&lt;br /&gt;
    setParent ..;&lt;br /&gt;
    setParent ..;&lt;br /&gt;
&lt;br /&gt;
// Show the window.&lt;br /&gt;
showWindow multiSnapWindow;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
global proc string[] getShaders(string $from)&lt;br /&gt;
{&lt;br /&gt;
// get the shapes from the input&lt;br /&gt;
string $shapes[] = ls(&amp;quot;-o&amp;quot;, &amp;quot;-dag&amp;quot;, &amp;quot;-s&amp;quot;, $from);&lt;br /&gt;
// give me the connected &amp;quot;shadingEngines&amp;quot;&lt;br /&gt;
string $shadingEngines[] = listConnections(&amp;quot;-type&amp;quot;,&amp;quot;shadingEngine&amp;quot;, $shapes);&lt;br /&gt;
// list the connected materials (shaders) from that&lt;br /&gt;
string $materials[] = ls(&amp;quot;-mat&amp;quot;, listConnections($shadingEngines));&lt;br /&gt;
// remove duplicate occurrences.&lt;br /&gt;
return (stringArrayRemoveDuplicates($materials));&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
//Add selected objects to list.&lt;br /&gt;
global proc MS_addObjects ()&lt;br /&gt;
{&lt;br /&gt;
      global string $sourceObjects;&lt;br /&gt;
      string $selectedshapes[] = `ls -sl -l`;&lt;br /&gt;
      //print $selectedshapes;&lt;br /&gt;
      int $count = 0;&lt;br /&gt;
&lt;br /&gt;
if ($selectedshapes[0] != &amp;quot;&amp;quot;)&lt;br /&gt;
{&lt;br /&gt;
   for ($i in $selectedshapes)&lt;br /&gt;
   {&lt;br /&gt;
     $count ++;&lt;br /&gt;
     textScrollList -edit -append $i $sourceObjects;&lt;br /&gt;
   }&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
//Add selected objects to list.&lt;br /&gt;
global proc MS_addMM ()&lt;br /&gt;
{&lt;br /&gt;
      global string $destinationObjects;&lt;br /&gt;
      string $selectedshapes[] = `ls -sl -l`;&lt;br /&gt;
      //print $selectedshapes;&lt;br /&gt;
      int $count = 0;&lt;br /&gt;
&lt;br /&gt;
if ($selectedshapes[0] != &amp;quot;&amp;quot;)&lt;br /&gt;
{&lt;br /&gt;
   for ($i in $selectedshapes)&lt;br /&gt;
   {&lt;br /&gt;
     $count ++;&lt;br /&gt;
     textScrollList -edit -append $i $destinationObjects;&lt;br /&gt;
   }&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// Clear objects from list.&lt;br /&gt;
global proc MS_clearObjects ()&lt;br /&gt;
{&lt;br /&gt;
    global string $sourceObjects;&lt;br /&gt;
textScrollList -e -ra $sourceObjects;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// Remove selected object from list.&lt;br /&gt;
global proc MS_removeObjects ()&lt;br /&gt;
{&lt;br /&gt;
   global string $sourceObjects;&lt;br /&gt;
&lt;br /&gt;
    int $index [] = `textScrollList -query -selectIndexedItem $sourceObjects`;&lt;br /&gt;
    if ($index [0] != 0)&lt;br /&gt;
    {&lt;br /&gt;
        textScrollList -edit -removeIndexedItem $index [0] $sourceObjects;&lt;br /&gt;
    }&lt;br /&gt;
   global string $sourceObjects;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
global proc VRAYCONNECDO()&lt;br /&gt;
{&lt;br /&gt;
    // UI Elements&lt;br /&gt;
global string $sourceObjects;&lt;br /&gt;
global string $destinationObjects;&lt;br /&gt;
// Define user selected objects&lt;br /&gt;
string $selected_objects[] = `textScrollList -query -allItems $sourceObjects`;&lt;br /&gt;
string $meshMaterial[] = `textScrollList -query -allItems $destinationObjects`;&lt;br /&gt;
int $i = 0;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
// SET PADDING&lt;br /&gt;
string $FSTART = &amp;quot;1&amp;quot;;&lt;br /&gt;
string $FEND = &amp;quot;100&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
print $FSTART;&lt;br /&gt;
print $FEND;&lt;br /&gt;
&lt;br /&gt;
string $PADDING = $FSTART + &amp;quot;:&amp;quot; + $FEND;&lt;br /&gt;
&lt;br /&gt;
//Progress bar&lt;br /&gt;
global string $gMainProgressBar;&lt;br /&gt;
&lt;br /&gt;
// Start the progress bar and adjust its max value for this operation.&lt;br /&gt;
    int $steps = size($selected_objects);&lt;br /&gt;
    progressBar -edit -beginProgress -isInterruptable true -status &amp;quot;Connecting shaders to mesh material ...&amp;quot; -maxValue $steps $gMainProgressBar;&lt;br /&gt;
 &lt;br /&gt;
for ($i = 0; $i &amp;lt; size($selected_objects); $i ++)&lt;br /&gt;
{&lt;br /&gt;
        parentConstraint -n parentConstraintMS $selected_objects[$i] $meshMaterial[$i];&lt;br /&gt;
        select -r $meshMaterial[$i] ;&lt;br /&gt;
        bakeResults -simulation true -t $PADDING -sampleBy 1 -oversamplingRate 1 -disableImplicitControl true -preserveOutsideKeys true -sparseAnimCurveBake false -removeBakedAttributeFromLayer false -removeBakedAnimFromLayer false -bakeOnOverrideLayer false -minimizeRotation true -controlPoints false -shape true {$meshMaterial[$i]};&lt;br /&gt;
        select -cl  ;&lt;br /&gt;
        select -r &amp;quot;*parentConstraintMS*&amp;quot;;&lt;br /&gt;
        doDelete;&lt;br /&gt;
// Update the progress bar.&lt;br /&gt;
progressBar -edit -step 1 $gMainProgressBar;&lt;br /&gt;
}&lt;br /&gt;
// End the progress.&lt;br /&gt;
progressBar -edit -endProgress $gMainProgressBar;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Delete hidden objects ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select objects&lt;br /&gt;
&lt;br /&gt;
for ( $object in `ls -sl` ) {&lt;br /&gt;
    $vis = getAttr ($object+&amp;quot;.visibility&amp;quot;);&lt;br /&gt;
    if ($vis == 0){&lt;br /&gt;
        select -r $object ;&lt;br /&gt;
        doDelete ;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== V-Ray - BAKE MATERIALS ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Made to work also with mayabatch.exe&lt;br /&gt;
&lt;br /&gt;
////////////////////////////////////////////&lt;br /&gt;
// BAKE VRAY CUSTOM VARIABLES&lt;br /&gt;
////////////////////////////////////////////&lt;br /&gt;
&lt;br /&gt;
// ASSET PATH&lt;br /&gt;
string $assetFileType = &amp;quot;mayaBinary&amp;quot;;&lt;br /&gt;
string $assetPath = &amp;quot;C:/YOUR_PATH/YOUR_SURFACING_ASSET.mb&amp;quot;;&lt;br /&gt;
string $assetName = &amp;quot;ASSET_NAME&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
// LIGHT RIG PATH&lt;br /&gt;
string $lightRigFileType = &amp;quot;mayaAscii&amp;quot;;&lt;br /&gt;
string $lightRigPath = &amp;quot;C:/YOUR_PATH/YOUR_LIGHT_RIG.mb&amp;quot;;&lt;br /&gt;
string $lightRigName = &amp;quot;DAY_LIGHTING&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
// BAKED TEXTURES PATH&lt;br /&gt;
string $bakedTexturesPath = (&amp;quot;C:/YOUR_PATH/BAKED_TEXTURES/&amp;quot; + $assetName + &amp;quot;_&amp;quot; + $lightRigName + &amp;quot;_Bake&amp;quot;);&lt;br /&gt;
print $bakedTexturesPath;&lt;br /&gt;
&lt;br /&gt;
// SET RESOLUTION FOR BAKED MAPS&lt;br /&gt;
$resWidth = 4096;&lt;br /&gt;
$resHeight = $resWidth;&lt;br /&gt;
&lt;br /&gt;
// COLOR SPACE FOR FILE TEXTURES&lt;br /&gt;
string $fileColorSpace = &amp;quot;ACES - ACEScg&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
////////////////////////////////////////////&lt;br /&gt;
// END OF CUSTOM VARIABLES&lt;br /&gt;
////////////////////////////////////////////&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
////////////////////////////////////////////&lt;br /&gt;
// RENDER SETTINGS&lt;br /&gt;
&lt;br /&gt;
// Set File Name Prefix&lt;br /&gt;
setAttr -type &amp;quot;string&amp;quot; vraySettings.fileNamePrefix &amp;quot;&amp;lt;Scene&amp;gt;/&amp;lt;Layer&amp;gt;/&amp;lt;Camera&amp;gt;_&amp;lt;Layer&amp;gt;_&amp;lt;Scene&amp;gt;&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
// Set resolution&lt;br /&gt;
$resWidthHalf = $resWidth/2;&lt;br /&gt;
$resHeightHalf = $resHeight/2;&lt;br /&gt;
setAttr &amp;quot;vraySettings.width&amp;quot; $resWidthHalf;&lt;br /&gt;
setAttr &amp;quot;vraySettings.height&amp;quot; $resHeightHalf;&lt;br /&gt;
&lt;br /&gt;
// Set Persp camera renderable&lt;br /&gt;
setAttr &amp;quot;perspShape.renderable&amp;quot; 1;&lt;br /&gt;
&lt;br /&gt;
// Set Image format&lt;br /&gt;
setAttr -type &amp;quot;string&amp;quot; &amp;quot;vraySettings.imageFormatStr&amp;quot; &amp;quot;exr (multichannel)&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
// Set Animation type on Standard&lt;br /&gt;
setAttr &amp;quot;vraySettings.animType&amp;quot; 0;&lt;br /&gt;
setAttr &amp;quot;vraySettings.animBatchOnly&amp;quot; 1;&lt;br /&gt;
&lt;br /&gt;
// Sampler type Bucket&lt;br /&gt;
setAttr &amp;quot;vraySettings.samplerType&amp;quot; 4;&lt;br /&gt;
&lt;br /&gt;
// Min Shading Rate&lt;br /&gt;
//setAttr &amp;quot;vraySettings.minShadeRate&amp;quot; 4;&lt;br /&gt;
setAttr &amp;quot;vraySettings.minShadeRate&amp;quot; 7;&lt;br /&gt;
&lt;br /&gt;
// Buckets subdivs&lt;br /&gt;
//setAttr &amp;quot;vraySettings.dmcMinSubdivs&amp;quot; 1;&lt;br /&gt;
//setAttr &amp;quot;vraySettings.dmcMaxSubdivs&amp;quot; 8;&lt;br /&gt;
//setAttr &amp;quot;vraySettings.dmcThreshold&amp;quot; 0.1;&lt;br /&gt;
setAttr &amp;quot;vraySettings.dmcMinSubdivs&amp;quot; 1;&lt;br /&gt;
setAttr &amp;quot;vraySettings.dmcMaxSubdivs&amp;quot; 15;&lt;br /&gt;
setAttr &amp;quot;vraySettings.dmcThreshold&amp;quot; 0.01;&lt;br /&gt;
&lt;br /&gt;
// Color mapping Linear&lt;br /&gt;
setAttr &amp;quot;vraySettings.cmap_type&amp;quot; 0;&lt;br /&gt;
&lt;br /&gt;
// GI on&lt;br /&gt;
setAttr &amp;quot;vraySettings.giOn&amp;quot; 1;&lt;br /&gt;
//setAttr &amp;quot;vraySettings.subdivs&amp;quot; 400;&lt;br /&gt;
setAttr &amp;quot;vraySettings.subdivs&amp;quot; 1000;&lt;br /&gt;
&lt;br /&gt;
// Max subdivs&lt;br /&gt;
setAttr &amp;quot;vraySettings.ddisplac_maxSubdivs&amp;quot; 16;&lt;br /&gt;
&lt;br /&gt;
// Cache geometry and bitmaps&lt;br /&gt;
setAttr &amp;quot;vraySettings.globopt_cache_geom_plugins&amp;quot; 1;&lt;br /&gt;
setAttr &amp;quot;vraySettings.globopt_cache_bitmaps&amp;quot; 1;&lt;br /&gt;
&lt;br /&gt;
// Dynamic memory limit&lt;br /&gt;
setAttr &amp;quot;vraySettings.sys_rayc_dynMemLimit&amp;quot; 0;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
////////////////////////////////////////////&lt;br /&gt;
// IMPORT&lt;br /&gt;
&lt;br /&gt;
// IMPORT LIGHT RIG&lt;br /&gt;
file -import -type $lightRigFileType  -ignoreVersion -mergeNamespacesOnClash false -rpr &amp;quot;:&amp;quot; -options &amp;quot;v=0;&amp;quot; $lightRigPath;&lt;br /&gt;
&lt;br /&gt;
// IMPORT ASSET&lt;br /&gt;
file -import -type $assetFileType  -ignoreVersion -mergeNamespacesOnClash false -rpr &amp;quot;:&amp;quot; -options &amp;quot;v=0;&amp;quot; $assetPath;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
// CREATE SETS&lt;br /&gt;
select `ls -type &amp;quot;mesh&amp;quot;`;&lt;br /&gt;
sets -name &amp;quot;assetOriginal_Set&amp;quot; ;&lt;br /&gt;
duplicate -rr;&lt;br /&gt;
group -w -n (&amp;quot;GRP_&amp;quot; + $assetName + &amp;quot;_BAKE_&amp;quot; + `toupper $lightRigName`);&lt;br /&gt;
sets -name &amp;quot;assetBaked_Set&amp;quot; ;&lt;br /&gt;
&lt;br /&gt;
// REMOVE BAKED PARTS FROM ORIGINAL PARTS SET&lt;br /&gt;
select -r assetBaked_Set ;&lt;br /&gt;
string $selection[] = `ls -sl`;&lt;br /&gt;
string $polyGons[] = `filterExpand -sm 12 $selection`;&lt;br /&gt;
select -r $polyGons;&lt;br /&gt;
pickWalk -d down;&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    sets -rm assetOriginal_Set $object;&lt;br /&gt;
}&lt;br /&gt;
select -cl  ;&lt;br /&gt;
&lt;br /&gt;
// DELETE HIDDEN OBJECTS&lt;br /&gt;
select -r assetBaked_Set ;&lt;br /&gt;
string $selection[] = `ls -sl`;&lt;br /&gt;
string $polyGons[] = `filterExpand -sm 12 $selection`;&lt;br /&gt;
select -r $polyGons;&lt;br /&gt;
for ( $object in `ls -sl` ) {&lt;br /&gt;
    $vis = getAttr ($object+&amp;quot;.visibility&amp;quot;);&lt;br /&gt;
    if ($vis == 0){&lt;br /&gt;
        select -r $object ;&lt;br /&gt;
        doDelete ;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
select -cl  ;&lt;br /&gt;
&lt;br /&gt;
// fixShapeName - Thanks to Pinkwerks&lt;br /&gt;
global proc&lt;br /&gt;
fixShapeName()&lt;br /&gt;
{&lt;br /&gt;
    string $me = &amp;quot;fixShapeName&amp;quot;;&lt;br /&gt;
    string $shape;&lt;br /&gt;
    string $newShapeName;&lt;br /&gt;
    string $parent;&lt;br /&gt;
    string $tmpA[];&lt;br /&gt;
	string $selectedShapes[] = `ls -sl -l`;&lt;br /&gt;
    int $sizeOfShapes = `size $selectedShapes`;&lt;br /&gt;
&lt;br /&gt;
    if ( $sizeOfShapes == 0 )&lt;br /&gt;
    	error($me + &amp;quot; : Nothing shapes to process!&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
    for ( $shape in $selectedShapes )&lt;br /&gt;
    {&lt;br /&gt;
    	$tmpA = `listRelatives -p $shape`;&lt;br /&gt;
		$parent = $tmpA[0];&lt;br /&gt;
		$newShapeName = ($parent + &amp;quot;Shape&amp;quot;);&lt;br /&gt;
		rename $shape $newShapeName;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// APPLY FIXSHAPENAME TO BAKED ASSET PARTS&lt;br /&gt;
select -r assetBaked_Set ;&lt;br /&gt;
string $selection[] = `ls -sl`;&lt;br /&gt;
string $polyGons[] = `filterExpand -sm 12 $selection`;&lt;br /&gt;
select -r $polyGons;&lt;br /&gt;
pickWalk -d down;&lt;br /&gt;
fixShapeName();&lt;br /&gt;
select -cl  ;&lt;br /&gt;
&lt;br /&gt;
// DELETE OBJECTS WITHOUT UVS&lt;br /&gt;
select -r assetBaked_Set ;&lt;br /&gt;
string $selection[] = `ls -sl`;&lt;br /&gt;
string $polyGons[] = `filterExpand -sm 12 $selection`;&lt;br /&gt;
select -r $polyGons;&lt;br /&gt;
for ( $object in `ls -sl` ) {&lt;br /&gt;
    int $vertexCount[] = `polyEvaluate -uv $object`;&lt;br /&gt;
    print $vertexCount;&lt;br /&gt;
    string $uvCount = $vertexCount[0];&lt;br /&gt;
    if ($uvCount == 0){&lt;br /&gt;
        select -r $object ;&lt;br /&gt;
        doDelete ;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// CREATE VRAY BAKE OPTIONS&lt;br /&gt;
createNode &amp;quot;VRayBakeOptions&amp;quot; -n &amp;quot;vrayBakeOptions&amp;quot;;&lt;br /&gt;
select -r assetBaked_Set ;&lt;br /&gt;
string $selection[] = `ls -sl`;&lt;br /&gt;
string $polyGons[] = `filterExpand -sm 12 $selection`;&lt;br /&gt;
select -r $polyGons;&lt;br /&gt;
$selected=`ls -sl`;&lt;br /&gt;
for ($object in $selected){&lt;br /&gt;
    sets -edit -forceElement  vrayBakeOptions $object ;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// HIDE ORIGINAL ASSET&lt;br /&gt;
select -r assetOriginal_Set ;&lt;br /&gt;
pickWalk -d up;&lt;br /&gt;
hide `ls -sl`;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
// BAKE VRAY OPTIONS&lt;br /&gt;
setAttr &amp;quot;vrayBakeOptions.udimBaking&amp;quot; 1;&lt;br /&gt;
setAttr &amp;quot;vrayBakeOptions.resolutionX&amp;quot; $resWidth;&lt;br /&gt;
&lt;br /&gt;
optionVar -intValue &amp;quot;vrayBakeType&amp;quot; 2;&lt;br /&gt;
optionVar -intValue &amp;quot;vraySkipNodesWithoutBakeOptions&amp;quot; 1;&lt;br /&gt;
optionVar -intValue &amp;quot;vrayAssignBakedTextures&amp;quot; 1;&lt;br /&gt;
optionVar -stringValue &amp;quot;vrayBakeOutputPath&amp;quot; $bakedTexturesPath;&lt;br /&gt;
optionVar -intValue &amp;quot;vrayBakeProjectionBaking&amp;quot; 0;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
// GO BAKE GO&lt;br /&gt;
select -cl  ;&lt;br /&gt;
select -r assetBaked_Set ;&lt;br /&gt;
string $selection[] = `ls -sl`;&lt;br /&gt;
string $polyGons[] = `filterExpand -sm 12 $selection`;&lt;br /&gt;
select -r $polyGons;&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    vrayStartBake;&lt;br /&gt;
}&lt;br /&gt;
select -cl  ;&lt;br /&gt;
&lt;br /&gt;
// UV TILING UDIM AND ACES CG FOR FILES&lt;br /&gt;
for ( $object in `ls -type &amp;quot;file&amp;quot;` ) {&lt;br /&gt;
    setAttr ($object + &amp;quot;.filterType&amp;quot;) 0;&lt;br /&gt;
    setAttr ($object + &amp;quot;.uvTilingMode&amp;quot;) 3;&lt;br /&gt;
    setAttr ($object + &amp;quot;.cs&amp;quot;) -type &amp;quot;string&amp;quot; $fileColorSpace;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// CONNECT SHADERS&lt;br /&gt;
select -cl  ;&lt;br /&gt;
select -r assetBaked_Set ;&lt;br /&gt;
string $selection[] = `ls -sl`;&lt;br /&gt;
string $polyGons[] = `filterExpand -sm 12 $selection`;&lt;br /&gt;
for ( $object in $polyGons ) {&lt;br /&gt;
    string $shadingGroupName = ($object + &amp;quot;Shape_bakedmtlSG&amp;quot;);&lt;br /&gt;
    sets -e -forceElement $shadingGroupName $object;&lt;br /&gt;
}&lt;br /&gt;
select -cl  ;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
///////////////////////////////////&lt;br /&gt;
// SAVE&lt;br /&gt;
file -rename (&amp;quot;C:/YOUR_PATH/BAKED_ASSETS/&amp;quot; + $assetName + &amp;quot;_&amp;quot; + $lightRigName + &amp;quot;_BAKE_DEBUG.mb&amp;quot;);&lt;br /&gt;
file -f -save;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Arnold - Set all Standins display on Bouding box ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$selected=`ls -type &amp;quot;aiStandIn&amp;quot;`;&lt;br /&gt;
for ($object in $selected){&lt;br /&gt;
    setAttr ($object + &amp;quot;.mode&amp;quot;) 0;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Arnold - Set all Standins display on Point cloud ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$selected=`ls -type &amp;quot;aiStandIn&amp;quot;`;&lt;br /&gt;
for ($object in $selected){&lt;br /&gt;
    setAttr ($object + &amp;quot;.mode&amp;quot;) 4;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Alembic - Loop animation on all nodes ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$selected=`ls -type &amp;quot;AlembicNode&amp;quot;`;&lt;br /&gt;
for ($object in $selected){&lt;br /&gt;
    setAttr ($object + &amp;quot;.cycleType&amp;quot;) 1;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Mental Ray nodes error - Delete Mayatomr plugin ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
unknownPlugin -remove &amp;quot;Mayatomr&amp;quot;;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Delete Unknown nodes ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
select -r `ls -type unknown`;&lt;br /&gt;
delete;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Write text ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
string $exampleFileName = ( &amp;quot;D:/yolo.bat&amp;quot; );&lt;br /&gt;
string $linesToWrite[] = {&lt;br /&gt;
    &amp;quot;youpi&amp;quot;,&lt;br /&gt;
    &amp;quot;youhou&amp;quot;&lt;br /&gt;
    };&lt;br /&gt;
int $result = fwriteAllLines($exampleFileName,$linesToWrite);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Point Lock No Attach on selected follicles ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    setAttr ($object + &amp;quot;.pointLock&amp;quot;) 0;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Convert .ma cameras from Reality Capture into .abc files ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// List of assets&lt;br /&gt;
string $fileParts[] = {&amp;quot;asset_001&amp;quot;, &amp;quot;asset_002&amp;quot;};&lt;br /&gt;
&lt;br /&gt;
// Replace the PATH of your files&lt;br /&gt;
for ($filePart in $fileParts){&lt;br /&gt;
	string $fileName = $filePart + &amp;quot;_cam&amp;quot;;&lt;br /&gt;
	string $filePath = &amp;quot;//DISK/PATH/&amp;quot; + $filePart + &amp;quot;/&amp;quot; + $filePart +&amp;quot;_cam.ma&amp;quot;;&lt;br /&gt;
	file -import -type &amp;quot;mayaAscii&amp;quot;  -ignoreVersion -ra true -mergeNamespacesOnClash false -rpr $fileName -options &amp;quot;v=0;p=17;f=0&amp;quot;  -pr  -importFrameRate true  -importTimeRange &amp;quot;override&amp;quot; $filePath;&lt;br /&gt;
	select -cl;&lt;br /&gt;
	select `ls -type &amp;quot;imagePlane&amp;quot;`;&lt;br /&gt;
	pickWalk -d up;&lt;br /&gt;
	doDelete;&lt;br /&gt;
	select `ls -type &amp;quot;camera&amp;quot;`;&lt;br /&gt;
	pickWalk -d up;	&lt;br /&gt;
	string $abcPath = &amp;quot;//DISK/PATH/&amp;quot; + $filePart + &amp;quot;/&amp;quot; + $filePart +&amp;quot;_cam.abc&amp;quot;;&lt;br /&gt;
	string $abcExp = &amp;quot;-frameRange 1 1 -uvWrite -worldSpace -dataFormat ogawa -root |* -file &amp;quot; + $abcPath;&lt;br /&gt;
	AbcExport -j $abcExp;&lt;br /&gt;
	select -all;&lt;br /&gt;
	doDelete;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Unitize UVs (one square UV by face) ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select objects&lt;br /&gt;
&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    select -r ($object+&amp;quot;.e[*]&amp;quot;);&lt;br /&gt;
    hilite ($object+&amp;quot;.e[*]&amp;quot;) ;&lt;br /&gt;
    polyMapCut -ch 1 ($object+&amp;quot;.e[*]&amp;quot;);&lt;br /&gt;
    polyForceUV -unitize $object;&lt;br /&gt;
    select $object;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Walter</name></author>
		
	</entry>
	<entry>
		<id>http://antoinevienne.fr/wiki/index.php?title=Maya_Mel&amp;diff=252</id>
		<title>Maya Mel</title>
		<link rel="alternate" type="text/html" href="http://antoinevienne.fr/wiki/index.php?title=Maya_Mel&amp;diff=252"/>
		<updated>2023-09-27T12:09:21Z</updated>

		<summary type="html">&lt;p&gt;Walter: /* Unitize UVs (one square UV by face) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Maya Mels Scripts=&lt;br /&gt;
=== Octane Render Baking group id - Assign id to multiple objects shapes ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// 0 is for Red, 2 for Green, 4 for Blue&lt;br /&gt;
// 3, 5 and 6 for Cyan, Magenta and Yellow&lt;br /&gt;
// Replace the number &amp;quot;0&amp;quot; by the number of your choice&lt;br /&gt;
// Baking group id is also avalaible in Attribute Spreadsheet Editor&lt;br /&gt;
&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    print($object+&amp;quot;\n&amp;quot;);&lt;br /&gt;
    setAttr ($object + &amp;quot;.octBakGrId&amp;quot;) (0);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Maxwell Render - Particles sequence - Force .abc file ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
//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&lt;br /&gt;
&lt;br /&gt;
global int $current_frame;&lt;br /&gt;
$current_frame = `currentTime -query`;&lt;br /&gt;
print $current_frame;&lt;br /&gt;
{&lt;br /&gt;
setAttr -type &amp;quot;string&amp;quot; maxwellRFRKParticles1.file (&amp;quot;/YOUR_PATH/YOUR_FILE&amp;quot; + $current_frame + &amp;quot;.abc&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Maxwell Render - Specify object ID color ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Specify object ID color&lt;br /&gt;
&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    print($object+&amp;quot;\n&amp;quot;);&lt;br /&gt;
    setAttr ($object + &amp;quot;.mxSpecifyObjIdColor&amp;quot;) (1);&lt;br /&gt;
    setAttr ($object + &amp;quot;.mxObjIdColor&amp;quot;) -type &amp;quot;double3&amp;quot; 1 0 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Redshift - Add blend attribute and set random value for objects selection ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Useful for blending between colors with RedshiftUserDataScalar&lt;br /&gt;
&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    print($object);&lt;br /&gt;
    addAttr -ln &amp;quot;blend&amp;quot; -at double  -min 0 -max 1 -dv 0 $object;&lt;br /&gt;
    setAttr ($object + &amp;quot;.blend&amp;quot;) (rand(1));&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Redshift - Set Primary visibility off for selection (layer override) ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Go in right render layer and select objects&lt;br /&gt;
&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    print($object+&amp;quot;\n&amp;quot;);&lt;br /&gt;
    setAttr ($object + &amp;quot;.rsEnableVisibilityOverrides&amp;quot;) (1);&lt;br /&gt;
    editRenderLayerAdjustment ($object + &amp;quot;.rsPrimaryRayVisible&amp;quot;);&lt;br /&gt;
    setAttr ($object + &amp;quot;.rsPrimaryRayVisible&amp;quot;) (0);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Convert Motion trail to curve ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select the motion trail first&lt;br /&gt;
&lt;br /&gt;
{&lt;br /&gt;
$selected=`ls -dag -et snapshotShape`;&lt;br /&gt;
for ($obj in $selected){&lt;br /&gt;
$pts=(getAttr($obj+&amp;quot;.pts&amp;quot;));&lt;br /&gt;
$size=size($pts);&lt;br /&gt;
$curve=`curve -d 1 -p $pts[0] $pts[1] $pts[2] -p $pts[4] $pts[5] $pts[6] -k 0 -k 1`;&lt;br /&gt;
for($i=8;$i&amp;lt;$size;$i+=4)&lt;br /&gt;
curve -os -a -p $pts[$i] $pts[$i+1] $pts[$i+2] $curve ;&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Quantize keyframes for selection ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Snap keys on frames for objects selection&lt;br /&gt;
&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    print($object+&amp;quot;\n&amp;quot;);&lt;br /&gt;
    snapKey $object;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Loop image sequence for texture ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// On File texture, check Image sequence, and edit expression&lt;br /&gt;
&lt;br /&gt;
file1.frameExtension=((frame%8)+1);&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Symmetrize - Duplicate &amp;amp; merge object ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select half object first&lt;br /&gt;
&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    print($object+&amp;quot;\n&amp;quot;);&lt;br /&gt;
    xform -piv 0 0 0 $object;&lt;br /&gt;
    duplicate -rr;&lt;br /&gt;
    setAttr ($object + &amp;quot;.scaleX&amp;quot;) (-1);&lt;br /&gt;
    select -add $object ;&lt;br /&gt;
    polyPerformAction polyUnite o 0;&lt;br /&gt;
    polyMergeVertex  -d 0.0001 -am 1 -ch 1;&lt;br /&gt;
    DeleteHistory;&lt;br /&gt;
    rename ($object);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Mirror object ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select object first&lt;br /&gt;
&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    print($object+&amp;quot;\n&amp;quot;);&lt;br /&gt;
    DeleteHistory;&lt;br /&gt;
    makeIdentity -apply true -t 1 -r 1 -s 1 -n 0 -pn 1;&lt;br /&gt;
    xform -piv 0 0 0 $object;&lt;br /&gt;
    duplicate -rr;&lt;br /&gt;
    setAttr ($object + &amp;quot;.scaleX&amp;quot;) (-1);&lt;br /&gt;
    DeleteHistory;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Group each object and rename ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select objects first&lt;br /&gt;
&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    string $name = ($object);&lt;br /&gt;
    select $object ;&lt;br /&gt;
    doGroup 0 1 1;&lt;br /&gt;
    rename ($name + &amp;quot;_GRP&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Change path in an Attribute ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Here the Attribute is &amp;quot;.filePrefix&amp;quot; - Select objects first&lt;br /&gt;
&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    string $path = getAttr ($object+&amp;quot;.filePrefix&amp;quot;);&lt;br /&gt;
    $path = `substitute &amp;quot;//OLD/PATH/&amp;quot; $path &amp;quot;//NEW/PATH/&amp;quot;`;&lt;br /&gt;
    setAttr -type &amp;quot;string&amp;quot; ($object+&amp;quot;.filePrefix&amp;quot;) ($path);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Change opacity mode on V-Ray shaders ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select shaders first&lt;br /&gt;
&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    if (attributeExists(&amp;quot;omode&amp;quot;,$object)) { //check if attribute exists&lt;br /&gt;
        CBunlockAttr ($object+&amp;quot;.omode&amp;quot;); //unlock opacity mode&lt;br /&gt;
    }&lt;br /&gt;
    if (attributeExists(&amp;quot;opacityMode&amp;quot;,$object)) {&lt;br /&gt;
        setAttr ($object+&amp;quot;.opacityMode&amp;quot;) 1; //set opacity mode in Clip - 0 pour Normal&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// Alternative&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    if (attributeExists(&amp;quot;opacityMode&amp;quot;,$object)) {&lt;br /&gt;
        setAttr ($object+&amp;quot;.opacityMode&amp;quot;) -l false; //unlock attribute if locked&lt;br /&gt;
    }&lt;br /&gt;
    if (attributeExists(&amp;quot;opacityMode&amp;quot;,$object)) {&lt;br /&gt;
        setAttr ($object+&amp;quot;.opacityMode&amp;quot;) 2; //set opacity mode in Clip - 0 pour Normal&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Change color space on selected fileTextures ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Useful to automatically convert Quixel Megascans by example from sRGB/Raw to ACES color spaces&lt;br /&gt;
&lt;br /&gt;
string $object_selection[] = (`ls -sl`);&lt;br /&gt;
for ($object in $object_selection) {&lt;br /&gt;
    if(`getAttr ($object+&amp;quot;.cs&amp;quot;)` == &amp;quot;sRGB&amp;quot;){&lt;br /&gt;
        setAttr ($object + &amp;quot;.cs&amp;quot;) -type &amp;quot;string&amp;quot; &amp;quot;Utility - sRGB - Texture&amp;quot;;&lt;br /&gt;
    }&lt;br /&gt;
    if(`getAttr ($object+&amp;quot;.cs&amp;quot;)` == &amp;quot;Raw&amp;quot;){&lt;br /&gt;
        setAttr ($object + &amp;quot;.cs&amp;quot;) -type &amp;quot;string&amp;quot; &amp;quot;Utility - Raw&amp;quot;;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Redshift - custom Tesselation on selected objects ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select objects first&lt;br /&gt;
&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    print($object+&amp;quot;\n&amp;quot;);&lt;br /&gt;
    setAttr ($object + &amp;quot;.rsMinTessellationLength&amp;quot;) (0.1);&lt;br /&gt;
    setAttr ($object + &amp;quot;.rsMaxTessellationSubdivs&amp;quot;) (2);&lt;br /&gt;
    setAttr ($object + &amp;quot;.rsOutOfFrustumTessellationFactor&amp;quot;) (4);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Change color on selected shaders ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select shaders first&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    print($object+&amp;quot;\n&amp;quot;);&lt;br /&gt;
    setAttr ($object + &amp;quot;.color&amp;quot;) -l false;&lt;br /&gt;
    setAttr ($object + &amp;quot;.color&amp;quot;) -type &amp;quot;double3&amp;quot; (0.18) (0.18) (0.18);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Change Filter Type on selected Files Textures ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select files textures first - 0 means Off&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    print($object+&amp;quot;\n&amp;quot;);&lt;br /&gt;
    setAttr ($object + &amp;quot;.filterType&amp;quot;) 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Clean Render Layers ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// In MEL&lt;br /&gt;
fixRenderLayerOutAdjustmentErrors;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Change Filter Type on selected Files Textures ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select files textures first - 0 means Off&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    print($object+&amp;quot;\n&amp;quot;);&lt;br /&gt;
    setAttr ($object + &amp;quot;.filterType&amp;quot;) 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Select by name ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select objects with &amp;quot;toto&amp;quot;&lt;br /&gt;
select -r &amp;quot;toto*&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Display color on shapes ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select objects&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    print($object+&amp;quot;\n&amp;quot;);&lt;br /&gt;
    setAttr ($object + &amp;quot;.displayColors&amp;quot;) 1;&lt;br /&gt;
    setDisplayColorChannelAttribute ($object + &amp;quot;.displayColorChannel&amp;quot;);&lt;br /&gt;
    polyColorPerVertex -r 1 -g 0 -b 0 -a 1 -cdo;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Geometry Constraint on multiple selection ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select objects to constrain&lt;br /&gt;
string $objectBase = &amp;quot;surfaceName&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    select -cl;&lt;br /&gt;
    select $objectBase;&lt;br /&gt;
    select -add $object;&lt;br /&gt;
    geometryConstraint -weight 1;&lt;br /&gt;
    select -r &amp;quot;*Constraint*&amp;quot;;&lt;br /&gt;
    doDelete;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
=== Speed up smokes rendering with V-Ray ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select smokes first&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    print($object+&amp;quot;\n&amp;quot;);&lt;br /&gt;
    setAttr ($object + &amp;quot;.rendStep&amp;quot;) 160;&lt;br /&gt;
    setAttr ($object + &amp;quot;.shadowStep&amp;quot;) 400;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Set bump multiplier on multiple V-Ray shaders ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select shaders&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    if (attributeExists(&amp;quot;bumpMult&amp;quot;,$object)) {&lt;br /&gt;
        setAttr ($object + &amp;quot;.bumpMult&amp;quot;) -1; //set bump multiplier at -1&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== STOP/START viewport ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// As seen on https://www.toadstorm.com/. - Put it in your shelf&lt;br /&gt;
paneLayout -e -manage false $gMainPane&lt;br /&gt;
&lt;br /&gt;
paneLayout -e -manage true $gMainPane&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Select curves by name ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select objects first - Replace &amp;quot;toto&amp;quot; by what you are looking for&lt;br /&gt;
&lt;br /&gt;
select `ls -type &amp;quot;nurbsCurve&amp;quot; &amp;quot;*toto*&amp;quot;`;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Noise expression ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Replace &amp;quot;pCube1&amp;quot;&lt;br /&gt;
&lt;br /&gt;
pCube1.translateX=sin(time*20)*0.01*noise(time*10);&lt;br /&gt;
pCube1.translateY=sin(time*4)*0.01*noise(time*10);&lt;br /&gt;
pCube1.translateZ=sin(time*12)*0.01*noise(time*10);&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== V-ray - Make curves renderables ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Replace VRayLightMtl1 at the end by your material&lt;br /&gt;
&lt;br /&gt;
$selected=`ls -dag -et curveShape`;&lt;br /&gt;
for ($object in $selected){&lt;br /&gt;
    // Add V-ray Extra attributes&lt;br /&gt;
    vray addAttributesFromGroup $object vray_nurbscurve_renderable 1;&lt;br /&gt;
    vrayAddAttr $object vraySeparator_vray_nurbscurve_renderable;&lt;br /&gt;
    vrayAddAttr $object vrayNurbsCurveRenderable;&lt;br /&gt;
    vrayAddAttr $object vrayNurbsCurveMaterial;&lt;br /&gt;
    vrayAddAttr $object vrayNurbsCurveTesselation;&lt;br /&gt;
    vrayAddAttr $object vrayNurbsCurveStartWidth;&lt;br /&gt;
    vrayAddAttr $object vrayNurbsCurveLockEndWidth;&lt;br /&gt;
    vrayAddAttr $object vrayNurbsCurveEndWidth;&lt;br /&gt;
    setUITemplate -pst attributeEditorTemplate;&lt;br /&gt;
// Activate renderable&lt;br /&gt;
setAttr ($object + &amp;quot;.vrayNurbsCurveRenderable&amp;quot;) 1;&lt;br /&gt;
// Replace VRayLightMtl1 by your material&lt;br /&gt;
connectAttr -force VRayLightMtl1.outColor ($object + &amp;quot;.vrayNurbsCurveMaterial&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Get object type ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Replace toto with the object whose type you want to know&lt;br /&gt;
&lt;br /&gt;
objectType toto;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Render layer override on specific object type ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Replace &amp;quot;Node&amp;quot; by the object type on which you want to act&lt;br /&gt;
&lt;br /&gt;
$selected=`ls -type &amp;quot;Node&amp;quot;`;&lt;br /&gt;
for ($object in $selected){&lt;br /&gt;
    // Create layer override on Primary Visibility attribute on current renderLayer&lt;br /&gt;
    editRenderLayerAdjustment ($object + &amp;quot;.primaryVisibility&amp;quot;);&lt;br /&gt;
    // Set Primary Visibility - 0 or 1&lt;br /&gt;
    setAttr ($object + &amp;quot;.primaryVisibility&amp;quot;) 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== V-ray - Make lights invisible ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$selected=`ls -type &amp;quot;VRayLightRectShape&amp;quot;`;&lt;br /&gt;
for ($object in $selected){&lt;br /&gt;
    setAttr ($object + &amp;quot;.invisible&amp;quot;) 1;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
$selected=`ls -type &amp;quot;VRayLightSphereShape&amp;quot;`;&lt;br /&gt;
for ($object in $selected){&lt;br /&gt;
    setAttr ($object + &amp;quot;.invisible&amp;quot;) 1;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
$selected=`ls -type &amp;quot;VRayLightDomeShape&amp;quot;`;&lt;br /&gt;
for ($object in $selected){&lt;br /&gt;
    setAttr ($object + &amp;quot;.invisible&amp;quot;) 1;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== V-ray - Select Rect Light ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
select `ls -type &amp;quot;VRayLightRectShape&amp;quot;`;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== V-ray - Rect Lights - Directional Preview - Always for all ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$selected=`ls -type &amp;quot;VRayLightRectShape&amp;quot;`;&lt;br /&gt;
for ($object in $selected){&lt;br /&gt;
    setAttr ($object + &amp;quot;.directionalPreview&amp;quot;) 1;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Randomize rotation on selected objects ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// As posted on CGTalk by NaughtyNathan&lt;br /&gt;
// &amp;quot;just set the vector values to the maximum random x,y,z rotations you want to apply to the selected transforms.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
vector $rndRot = &amp;lt;&amp;lt; 0,0,90 &amp;gt;&amp;gt;;	// x,y,z rotations&lt;br /&gt;
for ($object in `ls -sl -tr`){&lt;br /&gt;
    rotate `rand ($rndRot.x)` `rand ($rndRot.y)` `rand ($rndRot.z)` $object;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Quit Maya ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Brute force method&lt;br /&gt;
&lt;br /&gt;
$i = `getpid`; //application ID&lt;br /&gt;
    system(&amp;quot;taskkill /PID &amp;quot;  + $i +&amp;quot; /f&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
// In a gentle way&lt;br /&gt;
&lt;br /&gt;
evalDeferred(&amp;quot;quit -f&amp;quot;);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== V-ray - Import list of Alembics through Proxys Import ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// List of Alembics files - Replace by the name of your Alembics&lt;br /&gt;
string $alembicsParts[] = {&amp;quot;part1&amp;quot;,&amp;quot;part2&amp;quot;,&amp;quot;part3&amp;quot;};&lt;br /&gt;
&lt;br /&gt;
// Replace the PATH of your files - Scale by 100 for Houdini Alembics - &amp;lt;frame04&amp;gt; for sequences&lt;br /&gt;
for ($alembicsPart in $alembicsParts){&lt;br /&gt;
    vrayCreateProxy -node $alembicsPart -existing -dir (&amp;quot;C:/YOURPATH/&amp;quot;+$alembicsPart+&amp;quot;.&amp;lt;frame04&amp;gt;.abc&amp;quot;) -createProxyNode;&lt;br /&gt;
    setAttr ($alembicsPart+&amp;quot;_vraymesh.animType&amp;quot;) 1;&lt;br /&gt;
    setAttr ($alembicsPart+&amp;quot;.scaleZ&amp;quot;) 100;&lt;br /&gt;
    setAttr ($alembicsPart+&amp;quot;.scaleX&amp;quot;) 100;&lt;br /&gt;
    setAttr ($alembicsPart+&amp;quot;.scaleY&amp;quot;) 100;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== V-ray - Change path to VRayMesh for selected proxies ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Change path with your own .vrmesh&lt;br /&gt;
$selected=`ls -type &amp;quot;VRayMesh&amp;quot;`;&lt;br /&gt;
for ($object in $selected){&lt;br /&gt;
    setAttr -type &amp;quot;string&amp;quot; ($object + &amp;quot;.fileName2&amp;quot;) &amp;quot;//DISK/PATH/YOUR_VRMESH.vrmesh&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// If you want to change Geometry type - 4 for GPU mesh - add following in the loop&lt;br /&gt;
//    setAttr ($object + &amp;quot;.geomType&amp;quot;) 4;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Delete image planes ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Delete image plane if exists.&lt;br /&gt;
$selected=`ls -type &amp;quot;imagePlane&amp;quot;`;&lt;br /&gt;
select $selected;&lt;br /&gt;
for ($object in $selected){&lt;br /&gt;
    doDelete;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Merge alembic from set ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select objects in a set called EXPORT_SET&lt;br /&gt;
select -r EXPORT_SET ;&lt;br /&gt;
timeControl -edit -forceRedraw $gPlayBackSlider;&lt;br /&gt;
&lt;br /&gt;
// Create list of objects from EXPORT_SET&lt;br /&gt;
string $assetParts[] = `ls -sl`;&lt;br /&gt;
$assetPartsList = stringArrayToString($assetParts,&amp;quot; &amp;quot;);&lt;br /&gt;
&lt;br /&gt;
// Merge alembic with these objects&lt;br /&gt;
AbcImport -mode import -connect $assetPartsList &amp;quot;//DISK/PATH/alembic.abc&amp;quot;;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Create Texture reference ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// CREATE TEXTURE REFERENCE ON EXPORT SET&lt;br /&gt;
&lt;br /&gt;
select -r YOUR_GROUP ;&lt;br /&gt;
CreateTextureReferenceObject;&lt;br /&gt;
select -cl  ;&lt;br /&gt;
&lt;br /&gt;
// REMOVE REFERENCE OBJECTS FROM EXPORT SET&lt;br /&gt;
select -r YOUR_GROUP_reference ;&lt;br /&gt;
string $selection[] = `ls -sl`;&lt;br /&gt;
string $polyGons[] = `filterExpand -sm 12 $selection`;&lt;br /&gt;
select -r $polyGons;&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    sets -rm EXPORT_SET $object;&lt;br /&gt;
}&lt;br /&gt;
select -cl  ;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Replace animated objects with V-Ray proxies ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// First select animated objects to replace&lt;br /&gt;
// For each object create a proxy then constrain then bake simulation then delete constraint&lt;br /&gt;
&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
	vrayCreateProxy -node assetName -existing -dir (&amp;quot;//DISK/PATH/your_asset.vrmesh&amp;quot;) -createProxyNode;&lt;br /&gt;
	select -r $object ;&lt;br /&gt;
	select -add assetName ;&lt;br /&gt;
	doCreateParentConstraintArgList 1 { &amp;quot;0&amp;quot;,&amp;quot;0&amp;quot;,&amp;quot;0&amp;quot;,&amp;quot;0&amp;quot;,&amp;quot;0&amp;quot;,&amp;quot;0&amp;quot;,&amp;quot;0&amp;quot;,&amp;quot;0&amp;quot;,&amp;quot;1&amp;quot;,&amp;quot;&amp;quot;,&amp;quot;1&amp;quot; };&lt;br /&gt;
	parentConstraint -weight 1;&lt;br /&gt;
	bakeResults -simulation true -t &amp;quot;1000:1100&amp;quot; -sampleBy 1 -oversamplingRate 1 -disableImplicitControl true -preserveOutsideKeys true -sparseAnimCurveBake false -removeBakedAttributeFromLayer false -removeBakedAnimFromLayer false -bakeOnOverrideLayer false -minimizeRotation true -controlPoints false -shape true {&amp;quot;assetName&amp;quot;};&lt;br /&gt;
	select `ls -type &amp;quot;constraint&amp;quot;`;&lt;br /&gt;
	select -add $object ;&lt;br /&gt;
	doDelete;&lt;br /&gt;
	select -cl  ;&lt;br /&gt;
	rename &amp;quot;assetName&amp;quot; $object;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Select all meshes in a group ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// From cmadsenAniden on forums.autodesk.com&lt;br /&gt;
// Replace group1 by the name of your own group&lt;br /&gt;
&lt;br /&gt;
select -r group1 ;&lt;br /&gt;
string $selection[] = `ls -sl`;&lt;br /&gt;
string $polyGons[] = `filterExpand -sm 12 $selection`;&lt;br /&gt;
select -r $polyGons;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Select shot camera ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// CREATE VARIABLE FOR SHOT CAMERA AND SELECT IT&lt;br /&gt;
&lt;br /&gt;
select `ls -type &amp;quot;camera&amp;quot;`;&lt;br /&gt;
select -d sideShape frontShape topShape perspShape;&lt;br /&gt;
$camerashot = `ls -sl`;&lt;br /&gt;
string $shotcamera = $camerashot[0];&lt;br /&gt;
print $shotcamera;&lt;br /&gt;
select $shotcamera;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Get list of frames with keys on all transform objects ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$selected=`ls -dag -et transform`;&lt;br /&gt;
&lt;br /&gt;
float $arrathy[] = `keyframe -query $selected`;&lt;br /&gt;
&lt;br /&gt;
float $sorted[] = python(&amp;quot;import pymel.core as pm; list(set((pm.getMelGlobal(\&amp;quot;float[]\&amp;quot;, \&amp;quot;$arrathy\&amp;quot;))))&amp;quot;);&lt;br /&gt;
print $sorted;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== MULTI SNAP ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Replace a list of objects by another with bake of animation. Replace FSTART and FEND with your own padding.&lt;br /&gt;
&lt;br /&gt;
///////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
///////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
/*&lt;br /&gt;
Type the command MS() in MEL form to open UI.&lt;br /&gt;
*/&lt;br /&gt;
///////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
///////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
source &amp;quot;generateChannelMenu.mel&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
global proc MS ()&lt;br /&gt;
{&lt;br /&gt;
     global string $sourceObjects;&lt;br /&gt;
     global string $destinationObjects;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    // If the window exists already, delete it.&lt;br /&gt;
    if (`window -exists multiSnapWindow`)&lt;br /&gt;
    {&lt;br /&gt;
        deleteUI multiSnapWindow;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    // Build the window.&lt;br /&gt;
    global string $man_window;&lt;br /&gt;
    string $man_window = `window -title &amp;quot; MULTI SNAP&amp;quot; -sizeable 0 -w 300 multiSnapWindow`;&lt;br /&gt;
    frameLayout -label &amp;quot;Snap source objects on destination objects.&amp;quot;;&lt;br /&gt;
    rowLayout -width 540 -nc 2 -cw4 10 20 20 100;&lt;br /&gt;
    // Source objects section&lt;br /&gt;
    frameLayout -label &amp;quot;Source objects&amp;quot;;&lt;br /&gt;
    $sourceObjects = `textScrollList -width 600 -height 300`;&lt;br /&gt;
    rowLayout -width 240 -nc 2 -cw2 120 120;&lt;br /&gt;
    button -label &amp;quot;Add selected&amp;quot; -command &amp;quot;MS_addObjects ();&amp;quot; -width 120;&lt;br /&gt;
    button -label &amp;quot;Remove selected&amp;quot; -command &amp;quot;MS_removeObjects ();&amp;quot; -width 120;&lt;br /&gt;
    setParent ..;&lt;br /&gt;
    rowLayout -width 240 -nc 2 -cw2 120 120;&lt;br /&gt;
    button -label &amp;quot;Remove All&amp;quot; -command &amp;quot;MS_clearObjects ();&amp;quot; -width 240;&lt;br /&gt;
    setParent ..;&lt;br /&gt;
    setParent ..;&lt;br /&gt;
    rowLayout -nc 3;&lt;br /&gt;
    button -label &amp;quot;Create&amp;quot; -command &amp;quot;VRAYCONNECDO() &amp;quot; -width 140 -align center;&lt;br /&gt;
    button -label &amp;quot;Close&amp;quot; -command &amp;quot;DAC_CloseUI() &amp;quot; -width 140 -align center;&lt;br /&gt;
    setParent ..;&lt;br /&gt;
    setParent ..;&lt;br /&gt;
    // Destination objects section&lt;br /&gt;
    frameLayout -label &amp;quot;Destination objects&amp;quot;;&lt;br /&gt;
    $destinationObjects = `textScrollList -width 600 -height 300`;&lt;br /&gt;
    rowLayout -width 240 -nc 2 -cw2 120 120;&lt;br /&gt;
    button -label &amp;quot;Add selected&amp;quot; -command &amp;quot;MS_addMM ();&amp;quot; -width 120;&lt;br /&gt;
    button -label &amp;quot;Remove selected&amp;quot; -command &amp;quot;MS_removeMM ();&amp;quot; -width 120;&lt;br /&gt;
    setParent ..;&lt;br /&gt;
    setParent ..;&lt;br /&gt;
    rowLayout -nc 3;&lt;br /&gt;
    button -label &amp;quot;SNAP IT&amp;quot; -command &amp;quot;VRAYCONNECDO() &amp;quot; -width 140 -align center;&lt;br /&gt;
    button -label &amp;quot;Close&amp;quot; -command &amp;quot;DAC_CloseUI() &amp;quot; -width 140 -align center;&lt;br /&gt;
    setParent ..;&lt;br /&gt;
    setParent ..;&lt;br /&gt;
&lt;br /&gt;
// Show the window.&lt;br /&gt;
showWindow multiSnapWindow;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
global proc string[] getShaders(string $from)&lt;br /&gt;
{&lt;br /&gt;
// get the shapes from the input&lt;br /&gt;
string $shapes[] = ls(&amp;quot;-o&amp;quot;, &amp;quot;-dag&amp;quot;, &amp;quot;-s&amp;quot;, $from);&lt;br /&gt;
// give me the connected &amp;quot;shadingEngines&amp;quot;&lt;br /&gt;
string $shadingEngines[] = listConnections(&amp;quot;-type&amp;quot;,&amp;quot;shadingEngine&amp;quot;, $shapes);&lt;br /&gt;
// list the connected materials (shaders) from that&lt;br /&gt;
string $materials[] = ls(&amp;quot;-mat&amp;quot;, listConnections($shadingEngines));&lt;br /&gt;
// remove duplicate occurrences.&lt;br /&gt;
return (stringArrayRemoveDuplicates($materials));&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
//Add selected objects to list.&lt;br /&gt;
global proc MS_addObjects ()&lt;br /&gt;
{&lt;br /&gt;
      global string $sourceObjects;&lt;br /&gt;
      string $selectedshapes[] = `ls -sl -l`;&lt;br /&gt;
      //print $selectedshapes;&lt;br /&gt;
      int $count = 0;&lt;br /&gt;
&lt;br /&gt;
if ($selectedshapes[0] != &amp;quot;&amp;quot;)&lt;br /&gt;
{&lt;br /&gt;
   for ($i in $selectedshapes)&lt;br /&gt;
   {&lt;br /&gt;
     $count ++;&lt;br /&gt;
     textScrollList -edit -append $i $sourceObjects;&lt;br /&gt;
   }&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
//Add selected objects to list.&lt;br /&gt;
global proc MS_addMM ()&lt;br /&gt;
{&lt;br /&gt;
      global string $destinationObjects;&lt;br /&gt;
      string $selectedshapes[] = `ls -sl -l`;&lt;br /&gt;
      //print $selectedshapes;&lt;br /&gt;
      int $count = 0;&lt;br /&gt;
&lt;br /&gt;
if ($selectedshapes[0] != &amp;quot;&amp;quot;)&lt;br /&gt;
{&lt;br /&gt;
   for ($i in $selectedshapes)&lt;br /&gt;
   {&lt;br /&gt;
     $count ++;&lt;br /&gt;
     textScrollList -edit -append $i $destinationObjects;&lt;br /&gt;
   }&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// Clear objects from list.&lt;br /&gt;
global proc MS_clearObjects ()&lt;br /&gt;
{&lt;br /&gt;
    global string $sourceObjects;&lt;br /&gt;
textScrollList -e -ra $sourceObjects;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// Remove selected object from list.&lt;br /&gt;
global proc MS_removeObjects ()&lt;br /&gt;
{&lt;br /&gt;
   global string $sourceObjects;&lt;br /&gt;
&lt;br /&gt;
    int $index [] = `textScrollList -query -selectIndexedItem $sourceObjects`;&lt;br /&gt;
    if ($index [0] != 0)&lt;br /&gt;
    {&lt;br /&gt;
        textScrollList -edit -removeIndexedItem $index [0] $sourceObjects;&lt;br /&gt;
    }&lt;br /&gt;
   global string $sourceObjects;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
global proc VRAYCONNECDO()&lt;br /&gt;
{&lt;br /&gt;
    // UI Elements&lt;br /&gt;
global string $sourceObjects;&lt;br /&gt;
global string $destinationObjects;&lt;br /&gt;
// Define user selected objects&lt;br /&gt;
string $selected_objects[] = `textScrollList -query -allItems $sourceObjects`;&lt;br /&gt;
string $meshMaterial[] = `textScrollList -query -allItems $destinationObjects`;&lt;br /&gt;
int $i = 0;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
// SET PADDING&lt;br /&gt;
string $FSTART = &amp;quot;1&amp;quot;;&lt;br /&gt;
string $FEND = &amp;quot;100&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
print $FSTART;&lt;br /&gt;
print $FEND;&lt;br /&gt;
&lt;br /&gt;
string $PADDING = $FSTART + &amp;quot;:&amp;quot; + $FEND;&lt;br /&gt;
&lt;br /&gt;
//Progress bar&lt;br /&gt;
global string $gMainProgressBar;&lt;br /&gt;
&lt;br /&gt;
// Start the progress bar and adjust its max value for this operation.&lt;br /&gt;
    int $steps = size($selected_objects);&lt;br /&gt;
    progressBar -edit -beginProgress -isInterruptable true -status &amp;quot;Connecting shaders to mesh material ...&amp;quot; -maxValue $steps $gMainProgressBar;&lt;br /&gt;
 &lt;br /&gt;
for ($i = 0; $i &amp;lt; size($selected_objects); $i ++)&lt;br /&gt;
{&lt;br /&gt;
        parentConstraint -n parentConstraintMS $selected_objects[$i] $meshMaterial[$i];&lt;br /&gt;
        select -r $meshMaterial[$i] ;&lt;br /&gt;
        bakeResults -simulation true -t $PADDING -sampleBy 1 -oversamplingRate 1 -disableImplicitControl true -preserveOutsideKeys true -sparseAnimCurveBake false -removeBakedAttributeFromLayer false -removeBakedAnimFromLayer false -bakeOnOverrideLayer false -minimizeRotation true -controlPoints false -shape true {$meshMaterial[$i]};&lt;br /&gt;
        select -cl  ;&lt;br /&gt;
        select -r &amp;quot;*parentConstraintMS*&amp;quot;;&lt;br /&gt;
        doDelete;&lt;br /&gt;
// Update the progress bar.&lt;br /&gt;
progressBar -edit -step 1 $gMainProgressBar;&lt;br /&gt;
}&lt;br /&gt;
// End the progress.&lt;br /&gt;
progressBar -edit -endProgress $gMainProgressBar;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Delete hidden objects ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select objects&lt;br /&gt;
&lt;br /&gt;
for ( $object in `ls -sl` ) {&lt;br /&gt;
    $vis = getAttr ($object+&amp;quot;.visibility&amp;quot;);&lt;br /&gt;
    if ($vis == 0){&lt;br /&gt;
        select -r $object ;&lt;br /&gt;
        doDelete ;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== V-Ray - BAKE MATERIALS ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Made to work also with mayabatch.exe&lt;br /&gt;
&lt;br /&gt;
////////////////////////////////////////////&lt;br /&gt;
// BAKE VRAY CUSTOM VARIABLES&lt;br /&gt;
////////////////////////////////////////////&lt;br /&gt;
&lt;br /&gt;
// ASSET PATH&lt;br /&gt;
string $assetFileType = &amp;quot;mayaBinary&amp;quot;;&lt;br /&gt;
string $assetPath = &amp;quot;C:/YOUR_PATH/YOUR_SURFACING_ASSET.mb&amp;quot;;&lt;br /&gt;
string $assetName = &amp;quot;ASSET_NAME&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
// LIGHT RIG PATH&lt;br /&gt;
string $lightRigFileType = &amp;quot;mayaAscii&amp;quot;;&lt;br /&gt;
string $lightRigPath = &amp;quot;C:/YOUR_PATH/YOUR_LIGHT_RIG.mb&amp;quot;;&lt;br /&gt;
string $lightRigName = &amp;quot;DAY_LIGHTING&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
// BAKED TEXTURES PATH&lt;br /&gt;
string $bakedTexturesPath = (&amp;quot;C:/YOUR_PATH/BAKED_TEXTURES/&amp;quot; + $assetName + &amp;quot;_&amp;quot; + $lightRigName + &amp;quot;_Bake&amp;quot;);&lt;br /&gt;
print $bakedTexturesPath;&lt;br /&gt;
&lt;br /&gt;
// SET RESOLUTION FOR BAKED MAPS&lt;br /&gt;
$resWidth = 4096;&lt;br /&gt;
$resHeight = $resWidth;&lt;br /&gt;
&lt;br /&gt;
// COLOR SPACE FOR FILE TEXTURES&lt;br /&gt;
string $fileColorSpace = &amp;quot;ACES - ACEScg&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
////////////////////////////////////////////&lt;br /&gt;
// END OF CUSTOM VARIABLES&lt;br /&gt;
////////////////////////////////////////////&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
////////////////////////////////////////////&lt;br /&gt;
// RENDER SETTINGS&lt;br /&gt;
&lt;br /&gt;
// Set File Name Prefix&lt;br /&gt;
setAttr -type &amp;quot;string&amp;quot; vraySettings.fileNamePrefix &amp;quot;&amp;lt;Scene&amp;gt;/&amp;lt;Layer&amp;gt;/&amp;lt;Camera&amp;gt;_&amp;lt;Layer&amp;gt;_&amp;lt;Scene&amp;gt;&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
// Set resolution&lt;br /&gt;
$resWidthHalf = $resWidth/2;&lt;br /&gt;
$resHeightHalf = $resHeight/2;&lt;br /&gt;
setAttr &amp;quot;vraySettings.width&amp;quot; $resWidthHalf;&lt;br /&gt;
setAttr &amp;quot;vraySettings.height&amp;quot; $resHeightHalf;&lt;br /&gt;
&lt;br /&gt;
// Set Persp camera renderable&lt;br /&gt;
setAttr &amp;quot;perspShape.renderable&amp;quot; 1;&lt;br /&gt;
&lt;br /&gt;
// Set Image format&lt;br /&gt;
setAttr -type &amp;quot;string&amp;quot; &amp;quot;vraySettings.imageFormatStr&amp;quot; &amp;quot;exr (multichannel)&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
// Set Animation type on Standard&lt;br /&gt;
setAttr &amp;quot;vraySettings.animType&amp;quot; 0;&lt;br /&gt;
setAttr &amp;quot;vraySettings.animBatchOnly&amp;quot; 1;&lt;br /&gt;
&lt;br /&gt;
// Sampler type Bucket&lt;br /&gt;
setAttr &amp;quot;vraySettings.samplerType&amp;quot; 4;&lt;br /&gt;
&lt;br /&gt;
// Min Shading Rate&lt;br /&gt;
//setAttr &amp;quot;vraySettings.minShadeRate&amp;quot; 4;&lt;br /&gt;
setAttr &amp;quot;vraySettings.minShadeRate&amp;quot; 7;&lt;br /&gt;
&lt;br /&gt;
// Buckets subdivs&lt;br /&gt;
//setAttr &amp;quot;vraySettings.dmcMinSubdivs&amp;quot; 1;&lt;br /&gt;
//setAttr &amp;quot;vraySettings.dmcMaxSubdivs&amp;quot; 8;&lt;br /&gt;
//setAttr &amp;quot;vraySettings.dmcThreshold&amp;quot; 0.1;&lt;br /&gt;
setAttr &amp;quot;vraySettings.dmcMinSubdivs&amp;quot; 1;&lt;br /&gt;
setAttr &amp;quot;vraySettings.dmcMaxSubdivs&amp;quot; 15;&lt;br /&gt;
setAttr &amp;quot;vraySettings.dmcThreshold&amp;quot; 0.01;&lt;br /&gt;
&lt;br /&gt;
// Color mapping Linear&lt;br /&gt;
setAttr &amp;quot;vraySettings.cmap_type&amp;quot; 0;&lt;br /&gt;
&lt;br /&gt;
// GI on&lt;br /&gt;
setAttr &amp;quot;vraySettings.giOn&amp;quot; 1;&lt;br /&gt;
//setAttr &amp;quot;vraySettings.subdivs&amp;quot; 400;&lt;br /&gt;
setAttr &amp;quot;vraySettings.subdivs&amp;quot; 1000;&lt;br /&gt;
&lt;br /&gt;
// Max subdivs&lt;br /&gt;
setAttr &amp;quot;vraySettings.ddisplac_maxSubdivs&amp;quot; 16;&lt;br /&gt;
&lt;br /&gt;
// Cache geometry and bitmaps&lt;br /&gt;
setAttr &amp;quot;vraySettings.globopt_cache_geom_plugins&amp;quot; 1;&lt;br /&gt;
setAttr &amp;quot;vraySettings.globopt_cache_bitmaps&amp;quot; 1;&lt;br /&gt;
&lt;br /&gt;
// Dynamic memory limit&lt;br /&gt;
setAttr &amp;quot;vraySettings.sys_rayc_dynMemLimit&amp;quot; 0;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
////////////////////////////////////////////&lt;br /&gt;
// IMPORT&lt;br /&gt;
&lt;br /&gt;
// IMPORT LIGHT RIG&lt;br /&gt;
file -import -type $lightRigFileType  -ignoreVersion -mergeNamespacesOnClash false -rpr &amp;quot;:&amp;quot; -options &amp;quot;v=0;&amp;quot; $lightRigPath;&lt;br /&gt;
&lt;br /&gt;
// IMPORT ASSET&lt;br /&gt;
file -import -type $assetFileType  -ignoreVersion -mergeNamespacesOnClash false -rpr &amp;quot;:&amp;quot; -options &amp;quot;v=0;&amp;quot; $assetPath;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
// CREATE SETS&lt;br /&gt;
select `ls -type &amp;quot;mesh&amp;quot;`;&lt;br /&gt;
sets -name &amp;quot;assetOriginal_Set&amp;quot; ;&lt;br /&gt;
duplicate -rr;&lt;br /&gt;
group -w -n (&amp;quot;GRP_&amp;quot; + $assetName + &amp;quot;_BAKE_&amp;quot; + `toupper $lightRigName`);&lt;br /&gt;
sets -name &amp;quot;assetBaked_Set&amp;quot; ;&lt;br /&gt;
&lt;br /&gt;
// REMOVE BAKED PARTS FROM ORIGINAL PARTS SET&lt;br /&gt;
select -r assetBaked_Set ;&lt;br /&gt;
string $selection[] = `ls -sl`;&lt;br /&gt;
string $polyGons[] = `filterExpand -sm 12 $selection`;&lt;br /&gt;
select -r $polyGons;&lt;br /&gt;
pickWalk -d down;&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    sets -rm assetOriginal_Set $object;&lt;br /&gt;
}&lt;br /&gt;
select -cl  ;&lt;br /&gt;
&lt;br /&gt;
// DELETE HIDDEN OBJECTS&lt;br /&gt;
select -r assetBaked_Set ;&lt;br /&gt;
string $selection[] = `ls -sl`;&lt;br /&gt;
string $polyGons[] = `filterExpand -sm 12 $selection`;&lt;br /&gt;
select -r $polyGons;&lt;br /&gt;
for ( $object in `ls -sl` ) {&lt;br /&gt;
    $vis = getAttr ($object+&amp;quot;.visibility&amp;quot;);&lt;br /&gt;
    if ($vis == 0){&lt;br /&gt;
        select -r $object ;&lt;br /&gt;
        doDelete ;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
select -cl  ;&lt;br /&gt;
&lt;br /&gt;
// fixShapeName - Thanks to Pinkwerks&lt;br /&gt;
global proc&lt;br /&gt;
fixShapeName()&lt;br /&gt;
{&lt;br /&gt;
    string $me = &amp;quot;fixShapeName&amp;quot;;&lt;br /&gt;
    string $shape;&lt;br /&gt;
    string $newShapeName;&lt;br /&gt;
    string $parent;&lt;br /&gt;
    string $tmpA[];&lt;br /&gt;
	string $selectedShapes[] = `ls -sl -l`;&lt;br /&gt;
    int $sizeOfShapes = `size $selectedShapes`;&lt;br /&gt;
&lt;br /&gt;
    if ( $sizeOfShapes == 0 )&lt;br /&gt;
    	error($me + &amp;quot; : Nothing shapes to process!&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
    for ( $shape in $selectedShapes )&lt;br /&gt;
    {&lt;br /&gt;
    	$tmpA = `listRelatives -p $shape`;&lt;br /&gt;
		$parent = $tmpA[0];&lt;br /&gt;
		$newShapeName = ($parent + &amp;quot;Shape&amp;quot;);&lt;br /&gt;
		rename $shape $newShapeName;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// APPLY FIXSHAPENAME TO BAKED ASSET PARTS&lt;br /&gt;
select -r assetBaked_Set ;&lt;br /&gt;
string $selection[] = `ls -sl`;&lt;br /&gt;
string $polyGons[] = `filterExpand -sm 12 $selection`;&lt;br /&gt;
select -r $polyGons;&lt;br /&gt;
pickWalk -d down;&lt;br /&gt;
fixShapeName();&lt;br /&gt;
select -cl  ;&lt;br /&gt;
&lt;br /&gt;
// DELETE OBJECTS WITHOUT UVS&lt;br /&gt;
select -r assetBaked_Set ;&lt;br /&gt;
string $selection[] = `ls -sl`;&lt;br /&gt;
string $polyGons[] = `filterExpand -sm 12 $selection`;&lt;br /&gt;
select -r $polyGons;&lt;br /&gt;
for ( $object in `ls -sl` ) {&lt;br /&gt;
    int $vertexCount[] = `polyEvaluate -uv $object`;&lt;br /&gt;
    print $vertexCount;&lt;br /&gt;
    string $uvCount = $vertexCount[0];&lt;br /&gt;
    if ($uvCount == 0){&lt;br /&gt;
        select -r $object ;&lt;br /&gt;
        doDelete ;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// CREATE VRAY BAKE OPTIONS&lt;br /&gt;
createNode &amp;quot;VRayBakeOptions&amp;quot; -n &amp;quot;vrayBakeOptions&amp;quot;;&lt;br /&gt;
select -r assetBaked_Set ;&lt;br /&gt;
string $selection[] = `ls -sl`;&lt;br /&gt;
string $polyGons[] = `filterExpand -sm 12 $selection`;&lt;br /&gt;
select -r $polyGons;&lt;br /&gt;
$selected=`ls -sl`;&lt;br /&gt;
for ($object in $selected){&lt;br /&gt;
    sets -edit -forceElement  vrayBakeOptions $object ;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// HIDE ORIGINAL ASSET&lt;br /&gt;
select -r assetOriginal_Set ;&lt;br /&gt;
pickWalk -d up;&lt;br /&gt;
hide `ls -sl`;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
// BAKE VRAY OPTIONS&lt;br /&gt;
setAttr &amp;quot;vrayBakeOptions.udimBaking&amp;quot; 1;&lt;br /&gt;
setAttr &amp;quot;vrayBakeOptions.resolutionX&amp;quot; $resWidth;&lt;br /&gt;
&lt;br /&gt;
optionVar -intValue &amp;quot;vrayBakeType&amp;quot; 2;&lt;br /&gt;
optionVar -intValue &amp;quot;vraySkipNodesWithoutBakeOptions&amp;quot; 1;&lt;br /&gt;
optionVar -intValue &amp;quot;vrayAssignBakedTextures&amp;quot; 1;&lt;br /&gt;
optionVar -stringValue &amp;quot;vrayBakeOutputPath&amp;quot; $bakedTexturesPath;&lt;br /&gt;
optionVar -intValue &amp;quot;vrayBakeProjectionBaking&amp;quot; 0;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
// GO BAKE GO&lt;br /&gt;
select -cl  ;&lt;br /&gt;
select -r assetBaked_Set ;&lt;br /&gt;
string $selection[] = `ls -sl`;&lt;br /&gt;
string $polyGons[] = `filterExpand -sm 12 $selection`;&lt;br /&gt;
select -r $polyGons;&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    vrayStartBake;&lt;br /&gt;
}&lt;br /&gt;
select -cl  ;&lt;br /&gt;
&lt;br /&gt;
// UV TILING UDIM AND ACES CG FOR FILES&lt;br /&gt;
for ( $object in `ls -type &amp;quot;file&amp;quot;` ) {&lt;br /&gt;
    setAttr ($object + &amp;quot;.filterType&amp;quot;) 0;&lt;br /&gt;
    setAttr ($object + &amp;quot;.uvTilingMode&amp;quot;) 3;&lt;br /&gt;
    setAttr ($object + &amp;quot;.cs&amp;quot;) -type &amp;quot;string&amp;quot; $fileColorSpace;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// CONNECT SHADERS&lt;br /&gt;
select -cl  ;&lt;br /&gt;
select -r assetBaked_Set ;&lt;br /&gt;
string $selection[] = `ls -sl`;&lt;br /&gt;
string $polyGons[] = `filterExpand -sm 12 $selection`;&lt;br /&gt;
for ( $object in $polyGons ) {&lt;br /&gt;
    string $shadingGroupName = ($object + &amp;quot;Shape_bakedmtlSG&amp;quot;);&lt;br /&gt;
    sets -e -forceElement $shadingGroupName $object;&lt;br /&gt;
}&lt;br /&gt;
select -cl  ;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
///////////////////////////////////&lt;br /&gt;
// SAVE&lt;br /&gt;
file -rename (&amp;quot;C:/YOUR_PATH/BAKED_ASSETS/&amp;quot; + $assetName + &amp;quot;_&amp;quot; + $lightRigName + &amp;quot;_BAKE_DEBUG.mb&amp;quot;);&lt;br /&gt;
file -f -save;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Arnold - Set all Standins display on Bouding box ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$selected=`ls -type &amp;quot;aiStandIn&amp;quot;`;&lt;br /&gt;
for ($object in $selected){&lt;br /&gt;
    setAttr ($object + &amp;quot;.mode&amp;quot;) 0;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Arnold - Set all Standins display on Point cloud ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$selected=`ls -type &amp;quot;aiStandIn&amp;quot;`;&lt;br /&gt;
for ($object in $selected){&lt;br /&gt;
    setAttr ($object + &amp;quot;.mode&amp;quot;) 4;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Alembic - Loop animation on all nodes ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$selected=`ls -type &amp;quot;AlembicNode&amp;quot;`;&lt;br /&gt;
for ($object in $selected){&lt;br /&gt;
    setAttr ($object + &amp;quot;.cycleType&amp;quot;) 1;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Mental Ray nodes error - Delete Mayatomr plugin ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
unknownPlugin -remove &amp;quot;Mayatomr&amp;quot;;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Delete Unknown nodes ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
select -r `ls -type unknown`;&lt;br /&gt;
delete;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Write text ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
string $exampleFileName = ( &amp;quot;D:/yolo.bat&amp;quot; );&lt;br /&gt;
string $linesToWrite[] = {&lt;br /&gt;
    &amp;quot;youpi&amp;quot;,&lt;br /&gt;
    &amp;quot;youhou&amp;quot;&lt;br /&gt;
    };&lt;br /&gt;
int $result = fwriteAllLines($exampleFileName,$linesToWrite);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Point Lock No Attach on selected follicles ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    setAttr ($object + &amp;quot;.pointLock&amp;quot;) 0;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Convert .ma cameras from Reality Capture into .abc files ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// List of assets&lt;br /&gt;
string $fileParts[] = {&amp;quot;asset_001&amp;quot;, &amp;quot;asset_002&amp;quot;};&lt;br /&gt;
&lt;br /&gt;
// Replace the PATH of your files&lt;br /&gt;
for ($filePart in $fileParts){&lt;br /&gt;
	string $fileName = $filePart + &amp;quot;_cam&amp;quot;;&lt;br /&gt;
	string $filePath = &amp;quot;//DISK/PATH/&amp;quot; + $filePart + &amp;quot;/&amp;quot; + $filePart +&amp;quot;_cam.ma&amp;quot;;&lt;br /&gt;
	file -import -type &amp;quot;mayaAscii&amp;quot;  -ignoreVersion -ra true -mergeNamespacesOnClash false -rpr $fileName -options &amp;quot;v=0;p=17;f=0&amp;quot;  -pr  -importFrameRate true  -importTimeRange &amp;quot;override&amp;quot; $filePath;&lt;br /&gt;
	select -cl;&lt;br /&gt;
	select `ls -type &amp;quot;imagePlane&amp;quot;`;&lt;br /&gt;
	pickWalk -d up;&lt;br /&gt;
	doDelete;&lt;br /&gt;
	select `ls -type &amp;quot;camera&amp;quot;`;&lt;br /&gt;
	pickWalk -d up;	&lt;br /&gt;
	string $abcPath = &amp;quot;//DISK/PATH/&amp;quot; + $filePart + &amp;quot;/&amp;quot; + $filePart +&amp;quot;_cam.abc&amp;quot;;&lt;br /&gt;
	string $abcExp = &amp;quot;-frameRange 1 1 -uvWrite -worldSpace -dataFormat ogawa -root |* -file &amp;quot; + $abcPath;&lt;br /&gt;
	AbcExport -j $abcExp;&lt;br /&gt;
	select -all;&lt;br /&gt;
	doDelete;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Unitize UVs (one square UV by face) ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select objects&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    select -r ($object+&amp;quot;.e[*]&amp;quot;);&lt;br /&gt;
    hilite ($object+&amp;quot;.e[*]&amp;quot;) ;&lt;br /&gt;
    polyMapCut -ch 1 ($object+&amp;quot;.e[*]&amp;quot;);&lt;br /&gt;
    polyForceUV -unitize $object;&lt;br /&gt;
    select $object;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Walter</name></author>
		
	</entry>
	<entry>
		<id>http://antoinevienne.fr/wiki/index.php?title=Maya_Mel&amp;diff=251</id>
		<title>Maya Mel</title>
		<link rel="alternate" type="text/html" href="http://antoinevienne.fr/wiki/index.php?title=Maya_Mel&amp;diff=251"/>
		<updated>2023-09-27T12:08:03Z</updated>

		<summary type="html">&lt;p&gt;Walter: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Maya Mels Scripts=&lt;br /&gt;
=== Octane Render Baking group id - Assign id to multiple objects shapes ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// 0 is for Red, 2 for Green, 4 for Blue&lt;br /&gt;
// 3, 5 and 6 for Cyan, Magenta and Yellow&lt;br /&gt;
// Replace the number &amp;quot;0&amp;quot; by the number of your choice&lt;br /&gt;
// Baking group id is also avalaible in Attribute Spreadsheet Editor&lt;br /&gt;
&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    print($object+&amp;quot;\n&amp;quot;);&lt;br /&gt;
    setAttr ($object + &amp;quot;.octBakGrId&amp;quot;) (0);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Maxwell Render - Particles sequence - Force .abc file ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
//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&lt;br /&gt;
&lt;br /&gt;
global int $current_frame;&lt;br /&gt;
$current_frame = `currentTime -query`;&lt;br /&gt;
print $current_frame;&lt;br /&gt;
{&lt;br /&gt;
setAttr -type &amp;quot;string&amp;quot; maxwellRFRKParticles1.file (&amp;quot;/YOUR_PATH/YOUR_FILE&amp;quot; + $current_frame + &amp;quot;.abc&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Maxwell Render - Specify object ID color ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Specify object ID color&lt;br /&gt;
&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    print($object+&amp;quot;\n&amp;quot;);&lt;br /&gt;
    setAttr ($object + &amp;quot;.mxSpecifyObjIdColor&amp;quot;) (1);&lt;br /&gt;
    setAttr ($object + &amp;quot;.mxObjIdColor&amp;quot;) -type &amp;quot;double3&amp;quot; 1 0 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Redshift - Add blend attribute and set random value for objects selection ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Useful for blending between colors with RedshiftUserDataScalar&lt;br /&gt;
&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    print($object);&lt;br /&gt;
    addAttr -ln &amp;quot;blend&amp;quot; -at double  -min 0 -max 1 -dv 0 $object;&lt;br /&gt;
    setAttr ($object + &amp;quot;.blend&amp;quot;) (rand(1));&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Redshift - Set Primary visibility off for selection (layer override) ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Go in right render layer and select objects&lt;br /&gt;
&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    print($object+&amp;quot;\n&amp;quot;);&lt;br /&gt;
    setAttr ($object + &amp;quot;.rsEnableVisibilityOverrides&amp;quot;) (1);&lt;br /&gt;
    editRenderLayerAdjustment ($object + &amp;quot;.rsPrimaryRayVisible&amp;quot;);&lt;br /&gt;
    setAttr ($object + &amp;quot;.rsPrimaryRayVisible&amp;quot;) (0);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Convert Motion trail to curve ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select the motion trail first&lt;br /&gt;
&lt;br /&gt;
{&lt;br /&gt;
$selected=`ls -dag -et snapshotShape`;&lt;br /&gt;
for ($obj in $selected){&lt;br /&gt;
$pts=(getAttr($obj+&amp;quot;.pts&amp;quot;));&lt;br /&gt;
$size=size($pts);&lt;br /&gt;
$curve=`curve -d 1 -p $pts[0] $pts[1] $pts[2] -p $pts[4] $pts[5] $pts[6] -k 0 -k 1`;&lt;br /&gt;
for($i=8;$i&amp;lt;$size;$i+=4)&lt;br /&gt;
curve -os -a -p $pts[$i] $pts[$i+1] $pts[$i+2] $curve ;&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Quantize keyframes for selection ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Snap keys on frames for objects selection&lt;br /&gt;
&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    print($object+&amp;quot;\n&amp;quot;);&lt;br /&gt;
    snapKey $object;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Loop image sequence for texture ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// On File texture, check Image sequence, and edit expression&lt;br /&gt;
&lt;br /&gt;
file1.frameExtension=((frame%8)+1);&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Symmetrize - Duplicate &amp;amp; merge object ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select half object first&lt;br /&gt;
&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    print($object+&amp;quot;\n&amp;quot;);&lt;br /&gt;
    xform -piv 0 0 0 $object;&lt;br /&gt;
    duplicate -rr;&lt;br /&gt;
    setAttr ($object + &amp;quot;.scaleX&amp;quot;) (-1);&lt;br /&gt;
    select -add $object ;&lt;br /&gt;
    polyPerformAction polyUnite o 0;&lt;br /&gt;
    polyMergeVertex  -d 0.0001 -am 1 -ch 1;&lt;br /&gt;
    DeleteHistory;&lt;br /&gt;
    rename ($object);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Mirror object ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select object first&lt;br /&gt;
&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    print($object+&amp;quot;\n&amp;quot;);&lt;br /&gt;
    DeleteHistory;&lt;br /&gt;
    makeIdentity -apply true -t 1 -r 1 -s 1 -n 0 -pn 1;&lt;br /&gt;
    xform -piv 0 0 0 $object;&lt;br /&gt;
    duplicate -rr;&lt;br /&gt;
    setAttr ($object + &amp;quot;.scaleX&amp;quot;) (-1);&lt;br /&gt;
    DeleteHistory;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Group each object and rename ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select objects first&lt;br /&gt;
&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    string $name = ($object);&lt;br /&gt;
    select $object ;&lt;br /&gt;
    doGroup 0 1 1;&lt;br /&gt;
    rename ($name + &amp;quot;_GRP&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Change path in an Attribute ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Here the Attribute is &amp;quot;.filePrefix&amp;quot; - Select objects first&lt;br /&gt;
&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    string $path = getAttr ($object+&amp;quot;.filePrefix&amp;quot;);&lt;br /&gt;
    $path = `substitute &amp;quot;//OLD/PATH/&amp;quot; $path &amp;quot;//NEW/PATH/&amp;quot;`;&lt;br /&gt;
    setAttr -type &amp;quot;string&amp;quot; ($object+&amp;quot;.filePrefix&amp;quot;) ($path);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Change opacity mode on V-Ray shaders ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select shaders first&lt;br /&gt;
&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    if (attributeExists(&amp;quot;omode&amp;quot;,$object)) { //check if attribute exists&lt;br /&gt;
        CBunlockAttr ($object+&amp;quot;.omode&amp;quot;); //unlock opacity mode&lt;br /&gt;
    }&lt;br /&gt;
    if (attributeExists(&amp;quot;opacityMode&amp;quot;,$object)) {&lt;br /&gt;
        setAttr ($object+&amp;quot;.opacityMode&amp;quot;) 1; //set opacity mode in Clip - 0 pour Normal&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// Alternative&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    if (attributeExists(&amp;quot;opacityMode&amp;quot;,$object)) {&lt;br /&gt;
        setAttr ($object+&amp;quot;.opacityMode&amp;quot;) -l false; //unlock attribute if locked&lt;br /&gt;
    }&lt;br /&gt;
    if (attributeExists(&amp;quot;opacityMode&amp;quot;,$object)) {&lt;br /&gt;
        setAttr ($object+&amp;quot;.opacityMode&amp;quot;) 2; //set opacity mode in Clip - 0 pour Normal&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Change color space on selected fileTextures ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Useful to automatically convert Quixel Megascans by example from sRGB/Raw to ACES color spaces&lt;br /&gt;
&lt;br /&gt;
string $object_selection[] = (`ls -sl`);&lt;br /&gt;
for ($object in $object_selection) {&lt;br /&gt;
    if(`getAttr ($object+&amp;quot;.cs&amp;quot;)` == &amp;quot;sRGB&amp;quot;){&lt;br /&gt;
        setAttr ($object + &amp;quot;.cs&amp;quot;) -type &amp;quot;string&amp;quot; &amp;quot;Utility - sRGB - Texture&amp;quot;;&lt;br /&gt;
    }&lt;br /&gt;
    if(`getAttr ($object+&amp;quot;.cs&amp;quot;)` == &amp;quot;Raw&amp;quot;){&lt;br /&gt;
        setAttr ($object + &amp;quot;.cs&amp;quot;) -type &amp;quot;string&amp;quot; &amp;quot;Utility - Raw&amp;quot;;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Redshift - custom Tesselation on selected objects ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select objects first&lt;br /&gt;
&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    print($object+&amp;quot;\n&amp;quot;);&lt;br /&gt;
    setAttr ($object + &amp;quot;.rsMinTessellationLength&amp;quot;) (0.1);&lt;br /&gt;
    setAttr ($object + &amp;quot;.rsMaxTessellationSubdivs&amp;quot;) (2);&lt;br /&gt;
    setAttr ($object + &amp;quot;.rsOutOfFrustumTessellationFactor&amp;quot;) (4);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Change color on selected shaders ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select shaders first&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    print($object+&amp;quot;\n&amp;quot;);&lt;br /&gt;
    setAttr ($object + &amp;quot;.color&amp;quot;) -l false;&lt;br /&gt;
    setAttr ($object + &amp;quot;.color&amp;quot;) -type &amp;quot;double3&amp;quot; (0.18) (0.18) (0.18);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Change Filter Type on selected Files Textures ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select files textures first - 0 means Off&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    print($object+&amp;quot;\n&amp;quot;);&lt;br /&gt;
    setAttr ($object + &amp;quot;.filterType&amp;quot;) 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Clean Render Layers ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// In MEL&lt;br /&gt;
fixRenderLayerOutAdjustmentErrors;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Change Filter Type on selected Files Textures ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select files textures first - 0 means Off&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    print($object+&amp;quot;\n&amp;quot;);&lt;br /&gt;
    setAttr ($object + &amp;quot;.filterType&amp;quot;) 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Select by name ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select objects with &amp;quot;toto&amp;quot;&lt;br /&gt;
select -r &amp;quot;toto*&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Display color on shapes ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select objects&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    print($object+&amp;quot;\n&amp;quot;);&lt;br /&gt;
    setAttr ($object + &amp;quot;.displayColors&amp;quot;) 1;&lt;br /&gt;
    setDisplayColorChannelAttribute ($object + &amp;quot;.displayColorChannel&amp;quot;);&lt;br /&gt;
    polyColorPerVertex -r 1 -g 0 -b 0 -a 1 -cdo;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Geometry Constraint on multiple selection ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select objects to constrain&lt;br /&gt;
string $objectBase = &amp;quot;surfaceName&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    select -cl;&lt;br /&gt;
    select $objectBase;&lt;br /&gt;
    select -add $object;&lt;br /&gt;
    geometryConstraint -weight 1;&lt;br /&gt;
    select -r &amp;quot;*Constraint*&amp;quot;;&lt;br /&gt;
    doDelete;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
=== Speed up smokes rendering with V-Ray ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select smokes first&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    print($object+&amp;quot;\n&amp;quot;);&lt;br /&gt;
    setAttr ($object + &amp;quot;.rendStep&amp;quot;) 160;&lt;br /&gt;
    setAttr ($object + &amp;quot;.shadowStep&amp;quot;) 400;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Set bump multiplier on multiple V-Ray shaders ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select shaders&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    if (attributeExists(&amp;quot;bumpMult&amp;quot;,$object)) {&lt;br /&gt;
        setAttr ($object + &amp;quot;.bumpMult&amp;quot;) -1; //set bump multiplier at -1&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== STOP/START viewport ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// As seen on https://www.toadstorm.com/. - Put it in your shelf&lt;br /&gt;
paneLayout -e -manage false $gMainPane&lt;br /&gt;
&lt;br /&gt;
paneLayout -e -manage true $gMainPane&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Select curves by name ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select objects first - Replace &amp;quot;toto&amp;quot; by what you are looking for&lt;br /&gt;
&lt;br /&gt;
select `ls -type &amp;quot;nurbsCurve&amp;quot; &amp;quot;*toto*&amp;quot;`;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Noise expression ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Replace &amp;quot;pCube1&amp;quot;&lt;br /&gt;
&lt;br /&gt;
pCube1.translateX=sin(time*20)*0.01*noise(time*10);&lt;br /&gt;
pCube1.translateY=sin(time*4)*0.01*noise(time*10);&lt;br /&gt;
pCube1.translateZ=sin(time*12)*0.01*noise(time*10);&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== V-ray - Make curves renderables ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Replace VRayLightMtl1 at the end by your material&lt;br /&gt;
&lt;br /&gt;
$selected=`ls -dag -et curveShape`;&lt;br /&gt;
for ($object in $selected){&lt;br /&gt;
    // Add V-ray Extra attributes&lt;br /&gt;
    vray addAttributesFromGroup $object vray_nurbscurve_renderable 1;&lt;br /&gt;
    vrayAddAttr $object vraySeparator_vray_nurbscurve_renderable;&lt;br /&gt;
    vrayAddAttr $object vrayNurbsCurveRenderable;&lt;br /&gt;
    vrayAddAttr $object vrayNurbsCurveMaterial;&lt;br /&gt;
    vrayAddAttr $object vrayNurbsCurveTesselation;&lt;br /&gt;
    vrayAddAttr $object vrayNurbsCurveStartWidth;&lt;br /&gt;
    vrayAddAttr $object vrayNurbsCurveLockEndWidth;&lt;br /&gt;
    vrayAddAttr $object vrayNurbsCurveEndWidth;&lt;br /&gt;
    setUITemplate -pst attributeEditorTemplate;&lt;br /&gt;
// Activate renderable&lt;br /&gt;
setAttr ($object + &amp;quot;.vrayNurbsCurveRenderable&amp;quot;) 1;&lt;br /&gt;
// Replace VRayLightMtl1 by your material&lt;br /&gt;
connectAttr -force VRayLightMtl1.outColor ($object + &amp;quot;.vrayNurbsCurveMaterial&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Get object type ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Replace toto with the object whose type you want to know&lt;br /&gt;
&lt;br /&gt;
objectType toto;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Render layer override on specific object type ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Replace &amp;quot;Node&amp;quot; by the object type on which you want to act&lt;br /&gt;
&lt;br /&gt;
$selected=`ls -type &amp;quot;Node&amp;quot;`;&lt;br /&gt;
for ($object in $selected){&lt;br /&gt;
    // Create layer override on Primary Visibility attribute on current renderLayer&lt;br /&gt;
    editRenderLayerAdjustment ($object + &amp;quot;.primaryVisibility&amp;quot;);&lt;br /&gt;
    // Set Primary Visibility - 0 or 1&lt;br /&gt;
    setAttr ($object + &amp;quot;.primaryVisibility&amp;quot;) 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== V-ray - Make lights invisible ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$selected=`ls -type &amp;quot;VRayLightRectShape&amp;quot;`;&lt;br /&gt;
for ($object in $selected){&lt;br /&gt;
    setAttr ($object + &amp;quot;.invisible&amp;quot;) 1;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
$selected=`ls -type &amp;quot;VRayLightSphereShape&amp;quot;`;&lt;br /&gt;
for ($object in $selected){&lt;br /&gt;
    setAttr ($object + &amp;quot;.invisible&amp;quot;) 1;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
$selected=`ls -type &amp;quot;VRayLightDomeShape&amp;quot;`;&lt;br /&gt;
for ($object in $selected){&lt;br /&gt;
    setAttr ($object + &amp;quot;.invisible&amp;quot;) 1;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== V-ray - Select Rect Light ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
select `ls -type &amp;quot;VRayLightRectShape&amp;quot;`;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== V-ray - Rect Lights - Directional Preview - Always for all ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$selected=`ls -type &amp;quot;VRayLightRectShape&amp;quot;`;&lt;br /&gt;
for ($object in $selected){&lt;br /&gt;
    setAttr ($object + &amp;quot;.directionalPreview&amp;quot;) 1;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Randomize rotation on selected objects ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// As posted on CGTalk by NaughtyNathan&lt;br /&gt;
// &amp;quot;just set the vector values to the maximum random x,y,z rotations you want to apply to the selected transforms.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
vector $rndRot = &amp;lt;&amp;lt; 0,0,90 &amp;gt;&amp;gt;;	// x,y,z rotations&lt;br /&gt;
for ($object in `ls -sl -tr`){&lt;br /&gt;
    rotate `rand ($rndRot.x)` `rand ($rndRot.y)` `rand ($rndRot.z)` $object;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Quit Maya ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Brute force method&lt;br /&gt;
&lt;br /&gt;
$i = `getpid`; //application ID&lt;br /&gt;
    system(&amp;quot;taskkill /PID &amp;quot;  + $i +&amp;quot; /f&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
// In a gentle way&lt;br /&gt;
&lt;br /&gt;
evalDeferred(&amp;quot;quit -f&amp;quot;);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== V-ray - Import list of Alembics through Proxys Import ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// List of Alembics files - Replace by the name of your Alembics&lt;br /&gt;
string $alembicsParts[] = {&amp;quot;part1&amp;quot;,&amp;quot;part2&amp;quot;,&amp;quot;part3&amp;quot;};&lt;br /&gt;
&lt;br /&gt;
// Replace the PATH of your files - Scale by 100 for Houdini Alembics - &amp;lt;frame04&amp;gt; for sequences&lt;br /&gt;
for ($alembicsPart in $alembicsParts){&lt;br /&gt;
    vrayCreateProxy -node $alembicsPart -existing -dir (&amp;quot;C:/YOURPATH/&amp;quot;+$alembicsPart+&amp;quot;.&amp;lt;frame04&amp;gt;.abc&amp;quot;) -createProxyNode;&lt;br /&gt;
    setAttr ($alembicsPart+&amp;quot;_vraymesh.animType&amp;quot;) 1;&lt;br /&gt;
    setAttr ($alembicsPart+&amp;quot;.scaleZ&amp;quot;) 100;&lt;br /&gt;
    setAttr ($alembicsPart+&amp;quot;.scaleX&amp;quot;) 100;&lt;br /&gt;
    setAttr ($alembicsPart+&amp;quot;.scaleY&amp;quot;) 100;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== V-ray - Change path to VRayMesh for selected proxies ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Change path with your own .vrmesh&lt;br /&gt;
$selected=`ls -type &amp;quot;VRayMesh&amp;quot;`;&lt;br /&gt;
for ($object in $selected){&lt;br /&gt;
    setAttr -type &amp;quot;string&amp;quot; ($object + &amp;quot;.fileName2&amp;quot;) &amp;quot;//DISK/PATH/YOUR_VRMESH.vrmesh&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// If you want to change Geometry type - 4 for GPU mesh - add following in the loop&lt;br /&gt;
//    setAttr ($object + &amp;quot;.geomType&amp;quot;) 4;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Delete image planes ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Delete image plane if exists.&lt;br /&gt;
$selected=`ls -type &amp;quot;imagePlane&amp;quot;`;&lt;br /&gt;
select $selected;&lt;br /&gt;
for ($object in $selected){&lt;br /&gt;
    doDelete;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Merge alembic from set ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select objects in a set called EXPORT_SET&lt;br /&gt;
select -r EXPORT_SET ;&lt;br /&gt;
timeControl -edit -forceRedraw $gPlayBackSlider;&lt;br /&gt;
&lt;br /&gt;
// Create list of objects from EXPORT_SET&lt;br /&gt;
string $assetParts[] = `ls -sl`;&lt;br /&gt;
$assetPartsList = stringArrayToString($assetParts,&amp;quot; &amp;quot;);&lt;br /&gt;
&lt;br /&gt;
// Merge alembic with these objects&lt;br /&gt;
AbcImport -mode import -connect $assetPartsList &amp;quot;//DISK/PATH/alembic.abc&amp;quot;;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Create Texture reference ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// CREATE TEXTURE REFERENCE ON EXPORT SET&lt;br /&gt;
&lt;br /&gt;
select -r YOUR_GROUP ;&lt;br /&gt;
CreateTextureReferenceObject;&lt;br /&gt;
select -cl  ;&lt;br /&gt;
&lt;br /&gt;
// REMOVE REFERENCE OBJECTS FROM EXPORT SET&lt;br /&gt;
select -r YOUR_GROUP_reference ;&lt;br /&gt;
string $selection[] = `ls -sl`;&lt;br /&gt;
string $polyGons[] = `filterExpand -sm 12 $selection`;&lt;br /&gt;
select -r $polyGons;&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    sets -rm EXPORT_SET $object;&lt;br /&gt;
}&lt;br /&gt;
select -cl  ;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Replace animated objects with V-Ray proxies ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// First select animated objects to replace&lt;br /&gt;
// For each object create a proxy then constrain then bake simulation then delete constraint&lt;br /&gt;
&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
	vrayCreateProxy -node assetName -existing -dir (&amp;quot;//DISK/PATH/your_asset.vrmesh&amp;quot;) -createProxyNode;&lt;br /&gt;
	select -r $object ;&lt;br /&gt;
	select -add assetName ;&lt;br /&gt;
	doCreateParentConstraintArgList 1 { &amp;quot;0&amp;quot;,&amp;quot;0&amp;quot;,&amp;quot;0&amp;quot;,&amp;quot;0&amp;quot;,&amp;quot;0&amp;quot;,&amp;quot;0&amp;quot;,&amp;quot;0&amp;quot;,&amp;quot;0&amp;quot;,&amp;quot;1&amp;quot;,&amp;quot;&amp;quot;,&amp;quot;1&amp;quot; };&lt;br /&gt;
	parentConstraint -weight 1;&lt;br /&gt;
	bakeResults -simulation true -t &amp;quot;1000:1100&amp;quot; -sampleBy 1 -oversamplingRate 1 -disableImplicitControl true -preserveOutsideKeys true -sparseAnimCurveBake false -removeBakedAttributeFromLayer false -removeBakedAnimFromLayer false -bakeOnOverrideLayer false -minimizeRotation true -controlPoints false -shape true {&amp;quot;assetName&amp;quot;};&lt;br /&gt;
	select `ls -type &amp;quot;constraint&amp;quot;`;&lt;br /&gt;
	select -add $object ;&lt;br /&gt;
	doDelete;&lt;br /&gt;
	select -cl  ;&lt;br /&gt;
	rename &amp;quot;assetName&amp;quot; $object;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Select all meshes in a group ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// From cmadsenAniden on forums.autodesk.com&lt;br /&gt;
// Replace group1 by the name of your own group&lt;br /&gt;
&lt;br /&gt;
select -r group1 ;&lt;br /&gt;
string $selection[] = `ls -sl`;&lt;br /&gt;
string $polyGons[] = `filterExpand -sm 12 $selection`;&lt;br /&gt;
select -r $polyGons;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Select shot camera ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// CREATE VARIABLE FOR SHOT CAMERA AND SELECT IT&lt;br /&gt;
&lt;br /&gt;
select `ls -type &amp;quot;camera&amp;quot;`;&lt;br /&gt;
select -d sideShape frontShape topShape perspShape;&lt;br /&gt;
$camerashot = `ls -sl`;&lt;br /&gt;
string $shotcamera = $camerashot[0];&lt;br /&gt;
print $shotcamera;&lt;br /&gt;
select $shotcamera;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Get list of frames with keys on all transform objects ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$selected=`ls -dag -et transform`;&lt;br /&gt;
&lt;br /&gt;
float $arrathy[] = `keyframe -query $selected`;&lt;br /&gt;
&lt;br /&gt;
float $sorted[] = python(&amp;quot;import pymel.core as pm; list(set((pm.getMelGlobal(\&amp;quot;float[]\&amp;quot;, \&amp;quot;$arrathy\&amp;quot;))))&amp;quot;);&lt;br /&gt;
print $sorted;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== MULTI SNAP ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Replace a list of objects by another with bake of animation. Replace FSTART and FEND with your own padding.&lt;br /&gt;
&lt;br /&gt;
///////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
///////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
/*&lt;br /&gt;
Type the command MS() in MEL form to open UI.&lt;br /&gt;
*/&lt;br /&gt;
///////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
///////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
source &amp;quot;generateChannelMenu.mel&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
global proc MS ()&lt;br /&gt;
{&lt;br /&gt;
     global string $sourceObjects;&lt;br /&gt;
     global string $destinationObjects;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    // If the window exists already, delete it.&lt;br /&gt;
    if (`window -exists multiSnapWindow`)&lt;br /&gt;
    {&lt;br /&gt;
        deleteUI multiSnapWindow;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    // Build the window.&lt;br /&gt;
    global string $man_window;&lt;br /&gt;
    string $man_window = `window -title &amp;quot; MULTI SNAP&amp;quot; -sizeable 0 -w 300 multiSnapWindow`;&lt;br /&gt;
    frameLayout -label &amp;quot;Snap source objects on destination objects.&amp;quot;;&lt;br /&gt;
    rowLayout -width 540 -nc 2 -cw4 10 20 20 100;&lt;br /&gt;
    // Source objects section&lt;br /&gt;
    frameLayout -label &amp;quot;Source objects&amp;quot;;&lt;br /&gt;
    $sourceObjects = `textScrollList -width 600 -height 300`;&lt;br /&gt;
    rowLayout -width 240 -nc 2 -cw2 120 120;&lt;br /&gt;
    button -label &amp;quot;Add selected&amp;quot; -command &amp;quot;MS_addObjects ();&amp;quot; -width 120;&lt;br /&gt;
    button -label &amp;quot;Remove selected&amp;quot; -command &amp;quot;MS_removeObjects ();&amp;quot; -width 120;&lt;br /&gt;
    setParent ..;&lt;br /&gt;
    rowLayout -width 240 -nc 2 -cw2 120 120;&lt;br /&gt;
    button -label &amp;quot;Remove All&amp;quot; -command &amp;quot;MS_clearObjects ();&amp;quot; -width 240;&lt;br /&gt;
    setParent ..;&lt;br /&gt;
    setParent ..;&lt;br /&gt;
    rowLayout -nc 3;&lt;br /&gt;
    button -label &amp;quot;Create&amp;quot; -command &amp;quot;VRAYCONNECDO() &amp;quot; -width 140 -align center;&lt;br /&gt;
    button -label &amp;quot;Close&amp;quot; -command &amp;quot;DAC_CloseUI() &amp;quot; -width 140 -align center;&lt;br /&gt;
    setParent ..;&lt;br /&gt;
    setParent ..;&lt;br /&gt;
    // Destination objects section&lt;br /&gt;
    frameLayout -label &amp;quot;Destination objects&amp;quot;;&lt;br /&gt;
    $destinationObjects = `textScrollList -width 600 -height 300`;&lt;br /&gt;
    rowLayout -width 240 -nc 2 -cw2 120 120;&lt;br /&gt;
    button -label &amp;quot;Add selected&amp;quot; -command &amp;quot;MS_addMM ();&amp;quot; -width 120;&lt;br /&gt;
    button -label &amp;quot;Remove selected&amp;quot; -command &amp;quot;MS_removeMM ();&amp;quot; -width 120;&lt;br /&gt;
    setParent ..;&lt;br /&gt;
    setParent ..;&lt;br /&gt;
    rowLayout -nc 3;&lt;br /&gt;
    button -label &amp;quot;SNAP IT&amp;quot; -command &amp;quot;VRAYCONNECDO() &amp;quot; -width 140 -align center;&lt;br /&gt;
    button -label &amp;quot;Close&amp;quot; -command &amp;quot;DAC_CloseUI() &amp;quot; -width 140 -align center;&lt;br /&gt;
    setParent ..;&lt;br /&gt;
    setParent ..;&lt;br /&gt;
&lt;br /&gt;
// Show the window.&lt;br /&gt;
showWindow multiSnapWindow;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
global proc string[] getShaders(string $from)&lt;br /&gt;
{&lt;br /&gt;
// get the shapes from the input&lt;br /&gt;
string $shapes[] = ls(&amp;quot;-o&amp;quot;, &amp;quot;-dag&amp;quot;, &amp;quot;-s&amp;quot;, $from);&lt;br /&gt;
// give me the connected &amp;quot;shadingEngines&amp;quot;&lt;br /&gt;
string $shadingEngines[] = listConnections(&amp;quot;-type&amp;quot;,&amp;quot;shadingEngine&amp;quot;, $shapes);&lt;br /&gt;
// list the connected materials (shaders) from that&lt;br /&gt;
string $materials[] = ls(&amp;quot;-mat&amp;quot;, listConnections($shadingEngines));&lt;br /&gt;
// remove duplicate occurrences.&lt;br /&gt;
return (stringArrayRemoveDuplicates($materials));&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
//Add selected objects to list.&lt;br /&gt;
global proc MS_addObjects ()&lt;br /&gt;
{&lt;br /&gt;
      global string $sourceObjects;&lt;br /&gt;
      string $selectedshapes[] = `ls -sl -l`;&lt;br /&gt;
      //print $selectedshapes;&lt;br /&gt;
      int $count = 0;&lt;br /&gt;
&lt;br /&gt;
if ($selectedshapes[0] != &amp;quot;&amp;quot;)&lt;br /&gt;
{&lt;br /&gt;
   for ($i in $selectedshapes)&lt;br /&gt;
   {&lt;br /&gt;
     $count ++;&lt;br /&gt;
     textScrollList -edit -append $i $sourceObjects;&lt;br /&gt;
   }&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
//Add selected objects to list.&lt;br /&gt;
global proc MS_addMM ()&lt;br /&gt;
{&lt;br /&gt;
      global string $destinationObjects;&lt;br /&gt;
      string $selectedshapes[] = `ls -sl -l`;&lt;br /&gt;
      //print $selectedshapes;&lt;br /&gt;
      int $count = 0;&lt;br /&gt;
&lt;br /&gt;
if ($selectedshapes[0] != &amp;quot;&amp;quot;)&lt;br /&gt;
{&lt;br /&gt;
   for ($i in $selectedshapes)&lt;br /&gt;
   {&lt;br /&gt;
     $count ++;&lt;br /&gt;
     textScrollList -edit -append $i $destinationObjects;&lt;br /&gt;
   }&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// Clear objects from list.&lt;br /&gt;
global proc MS_clearObjects ()&lt;br /&gt;
{&lt;br /&gt;
    global string $sourceObjects;&lt;br /&gt;
textScrollList -e -ra $sourceObjects;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// Remove selected object from list.&lt;br /&gt;
global proc MS_removeObjects ()&lt;br /&gt;
{&lt;br /&gt;
   global string $sourceObjects;&lt;br /&gt;
&lt;br /&gt;
    int $index [] = `textScrollList -query -selectIndexedItem $sourceObjects`;&lt;br /&gt;
    if ($index [0] != 0)&lt;br /&gt;
    {&lt;br /&gt;
        textScrollList -edit -removeIndexedItem $index [0] $sourceObjects;&lt;br /&gt;
    }&lt;br /&gt;
   global string $sourceObjects;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
global proc VRAYCONNECDO()&lt;br /&gt;
{&lt;br /&gt;
    // UI Elements&lt;br /&gt;
global string $sourceObjects;&lt;br /&gt;
global string $destinationObjects;&lt;br /&gt;
// Define user selected objects&lt;br /&gt;
string $selected_objects[] = `textScrollList -query -allItems $sourceObjects`;&lt;br /&gt;
string $meshMaterial[] = `textScrollList -query -allItems $destinationObjects`;&lt;br /&gt;
int $i = 0;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
// SET PADDING&lt;br /&gt;
string $FSTART = &amp;quot;1&amp;quot;;&lt;br /&gt;
string $FEND = &amp;quot;100&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
print $FSTART;&lt;br /&gt;
print $FEND;&lt;br /&gt;
&lt;br /&gt;
string $PADDING = $FSTART + &amp;quot;:&amp;quot; + $FEND;&lt;br /&gt;
&lt;br /&gt;
//Progress bar&lt;br /&gt;
global string $gMainProgressBar;&lt;br /&gt;
&lt;br /&gt;
// Start the progress bar and adjust its max value for this operation.&lt;br /&gt;
    int $steps = size($selected_objects);&lt;br /&gt;
    progressBar -edit -beginProgress -isInterruptable true -status &amp;quot;Connecting shaders to mesh material ...&amp;quot; -maxValue $steps $gMainProgressBar;&lt;br /&gt;
 &lt;br /&gt;
for ($i = 0; $i &amp;lt; size($selected_objects); $i ++)&lt;br /&gt;
{&lt;br /&gt;
        parentConstraint -n parentConstraintMS $selected_objects[$i] $meshMaterial[$i];&lt;br /&gt;
        select -r $meshMaterial[$i] ;&lt;br /&gt;
        bakeResults -simulation true -t $PADDING -sampleBy 1 -oversamplingRate 1 -disableImplicitControl true -preserveOutsideKeys true -sparseAnimCurveBake false -removeBakedAttributeFromLayer false -removeBakedAnimFromLayer false -bakeOnOverrideLayer false -minimizeRotation true -controlPoints false -shape true {$meshMaterial[$i]};&lt;br /&gt;
        select -cl  ;&lt;br /&gt;
        select -r &amp;quot;*parentConstraintMS*&amp;quot;;&lt;br /&gt;
        doDelete;&lt;br /&gt;
// Update the progress bar.&lt;br /&gt;
progressBar -edit -step 1 $gMainProgressBar;&lt;br /&gt;
}&lt;br /&gt;
// End the progress.&lt;br /&gt;
progressBar -edit -endProgress $gMainProgressBar;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Delete hidden objects ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select objects&lt;br /&gt;
&lt;br /&gt;
for ( $object in `ls -sl` ) {&lt;br /&gt;
    $vis = getAttr ($object+&amp;quot;.visibility&amp;quot;);&lt;br /&gt;
    if ($vis == 0){&lt;br /&gt;
        select -r $object ;&lt;br /&gt;
        doDelete ;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== V-Ray - BAKE MATERIALS ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Made to work also with mayabatch.exe&lt;br /&gt;
&lt;br /&gt;
////////////////////////////////////////////&lt;br /&gt;
// BAKE VRAY CUSTOM VARIABLES&lt;br /&gt;
////////////////////////////////////////////&lt;br /&gt;
&lt;br /&gt;
// ASSET PATH&lt;br /&gt;
string $assetFileType = &amp;quot;mayaBinary&amp;quot;;&lt;br /&gt;
string $assetPath = &amp;quot;C:/YOUR_PATH/YOUR_SURFACING_ASSET.mb&amp;quot;;&lt;br /&gt;
string $assetName = &amp;quot;ASSET_NAME&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
// LIGHT RIG PATH&lt;br /&gt;
string $lightRigFileType = &amp;quot;mayaAscii&amp;quot;;&lt;br /&gt;
string $lightRigPath = &amp;quot;C:/YOUR_PATH/YOUR_LIGHT_RIG.mb&amp;quot;;&lt;br /&gt;
string $lightRigName = &amp;quot;DAY_LIGHTING&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
// BAKED TEXTURES PATH&lt;br /&gt;
string $bakedTexturesPath = (&amp;quot;C:/YOUR_PATH/BAKED_TEXTURES/&amp;quot; + $assetName + &amp;quot;_&amp;quot; + $lightRigName + &amp;quot;_Bake&amp;quot;);&lt;br /&gt;
print $bakedTexturesPath;&lt;br /&gt;
&lt;br /&gt;
// SET RESOLUTION FOR BAKED MAPS&lt;br /&gt;
$resWidth = 4096;&lt;br /&gt;
$resHeight = $resWidth;&lt;br /&gt;
&lt;br /&gt;
// COLOR SPACE FOR FILE TEXTURES&lt;br /&gt;
string $fileColorSpace = &amp;quot;ACES - ACEScg&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
////////////////////////////////////////////&lt;br /&gt;
// END OF CUSTOM VARIABLES&lt;br /&gt;
////////////////////////////////////////////&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
////////////////////////////////////////////&lt;br /&gt;
// RENDER SETTINGS&lt;br /&gt;
&lt;br /&gt;
// Set File Name Prefix&lt;br /&gt;
setAttr -type &amp;quot;string&amp;quot; vraySettings.fileNamePrefix &amp;quot;&amp;lt;Scene&amp;gt;/&amp;lt;Layer&amp;gt;/&amp;lt;Camera&amp;gt;_&amp;lt;Layer&amp;gt;_&amp;lt;Scene&amp;gt;&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
// Set resolution&lt;br /&gt;
$resWidthHalf = $resWidth/2;&lt;br /&gt;
$resHeightHalf = $resHeight/2;&lt;br /&gt;
setAttr &amp;quot;vraySettings.width&amp;quot; $resWidthHalf;&lt;br /&gt;
setAttr &amp;quot;vraySettings.height&amp;quot; $resHeightHalf;&lt;br /&gt;
&lt;br /&gt;
// Set Persp camera renderable&lt;br /&gt;
setAttr &amp;quot;perspShape.renderable&amp;quot; 1;&lt;br /&gt;
&lt;br /&gt;
// Set Image format&lt;br /&gt;
setAttr -type &amp;quot;string&amp;quot; &amp;quot;vraySettings.imageFormatStr&amp;quot; &amp;quot;exr (multichannel)&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
// Set Animation type on Standard&lt;br /&gt;
setAttr &amp;quot;vraySettings.animType&amp;quot; 0;&lt;br /&gt;
setAttr &amp;quot;vraySettings.animBatchOnly&amp;quot; 1;&lt;br /&gt;
&lt;br /&gt;
// Sampler type Bucket&lt;br /&gt;
setAttr &amp;quot;vraySettings.samplerType&amp;quot; 4;&lt;br /&gt;
&lt;br /&gt;
// Min Shading Rate&lt;br /&gt;
//setAttr &amp;quot;vraySettings.minShadeRate&amp;quot; 4;&lt;br /&gt;
setAttr &amp;quot;vraySettings.minShadeRate&amp;quot; 7;&lt;br /&gt;
&lt;br /&gt;
// Buckets subdivs&lt;br /&gt;
//setAttr &amp;quot;vraySettings.dmcMinSubdivs&amp;quot; 1;&lt;br /&gt;
//setAttr &amp;quot;vraySettings.dmcMaxSubdivs&amp;quot; 8;&lt;br /&gt;
//setAttr &amp;quot;vraySettings.dmcThreshold&amp;quot; 0.1;&lt;br /&gt;
setAttr &amp;quot;vraySettings.dmcMinSubdivs&amp;quot; 1;&lt;br /&gt;
setAttr &amp;quot;vraySettings.dmcMaxSubdivs&amp;quot; 15;&lt;br /&gt;
setAttr &amp;quot;vraySettings.dmcThreshold&amp;quot; 0.01;&lt;br /&gt;
&lt;br /&gt;
// Color mapping Linear&lt;br /&gt;
setAttr &amp;quot;vraySettings.cmap_type&amp;quot; 0;&lt;br /&gt;
&lt;br /&gt;
// GI on&lt;br /&gt;
setAttr &amp;quot;vraySettings.giOn&amp;quot; 1;&lt;br /&gt;
//setAttr &amp;quot;vraySettings.subdivs&amp;quot; 400;&lt;br /&gt;
setAttr &amp;quot;vraySettings.subdivs&amp;quot; 1000;&lt;br /&gt;
&lt;br /&gt;
// Max subdivs&lt;br /&gt;
setAttr &amp;quot;vraySettings.ddisplac_maxSubdivs&amp;quot; 16;&lt;br /&gt;
&lt;br /&gt;
// Cache geometry and bitmaps&lt;br /&gt;
setAttr &amp;quot;vraySettings.globopt_cache_geom_plugins&amp;quot; 1;&lt;br /&gt;
setAttr &amp;quot;vraySettings.globopt_cache_bitmaps&amp;quot; 1;&lt;br /&gt;
&lt;br /&gt;
// Dynamic memory limit&lt;br /&gt;
setAttr &amp;quot;vraySettings.sys_rayc_dynMemLimit&amp;quot; 0;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
////////////////////////////////////////////&lt;br /&gt;
// IMPORT&lt;br /&gt;
&lt;br /&gt;
// IMPORT LIGHT RIG&lt;br /&gt;
file -import -type $lightRigFileType  -ignoreVersion -mergeNamespacesOnClash false -rpr &amp;quot;:&amp;quot; -options &amp;quot;v=0;&amp;quot; $lightRigPath;&lt;br /&gt;
&lt;br /&gt;
// IMPORT ASSET&lt;br /&gt;
file -import -type $assetFileType  -ignoreVersion -mergeNamespacesOnClash false -rpr &amp;quot;:&amp;quot; -options &amp;quot;v=0;&amp;quot; $assetPath;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
// CREATE SETS&lt;br /&gt;
select `ls -type &amp;quot;mesh&amp;quot;`;&lt;br /&gt;
sets -name &amp;quot;assetOriginal_Set&amp;quot; ;&lt;br /&gt;
duplicate -rr;&lt;br /&gt;
group -w -n (&amp;quot;GRP_&amp;quot; + $assetName + &amp;quot;_BAKE_&amp;quot; + `toupper $lightRigName`);&lt;br /&gt;
sets -name &amp;quot;assetBaked_Set&amp;quot; ;&lt;br /&gt;
&lt;br /&gt;
// REMOVE BAKED PARTS FROM ORIGINAL PARTS SET&lt;br /&gt;
select -r assetBaked_Set ;&lt;br /&gt;
string $selection[] = `ls -sl`;&lt;br /&gt;
string $polyGons[] = `filterExpand -sm 12 $selection`;&lt;br /&gt;
select -r $polyGons;&lt;br /&gt;
pickWalk -d down;&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    sets -rm assetOriginal_Set $object;&lt;br /&gt;
}&lt;br /&gt;
select -cl  ;&lt;br /&gt;
&lt;br /&gt;
// DELETE HIDDEN OBJECTS&lt;br /&gt;
select -r assetBaked_Set ;&lt;br /&gt;
string $selection[] = `ls -sl`;&lt;br /&gt;
string $polyGons[] = `filterExpand -sm 12 $selection`;&lt;br /&gt;
select -r $polyGons;&lt;br /&gt;
for ( $object in `ls -sl` ) {&lt;br /&gt;
    $vis = getAttr ($object+&amp;quot;.visibility&amp;quot;);&lt;br /&gt;
    if ($vis == 0){&lt;br /&gt;
        select -r $object ;&lt;br /&gt;
        doDelete ;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
select -cl  ;&lt;br /&gt;
&lt;br /&gt;
// fixShapeName - Thanks to Pinkwerks&lt;br /&gt;
global proc&lt;br /&gt;
fixShapeName()&lt;br /&gt;
{&lt;br /&gt;
    string $me = &amp;quot;fixShapeName&amp;quot;;&lt;br /&gt;
    string $shape;&lt;br /&gt;
    string $newShapeName;&lt;br /&gt;
    string $parent;&lt;br /&gt;
    string $tmpA[];&lt;br /&gt;
	string $selectedShapes[] = `ls -sl -l`;&lt;br /&gt;
    int $sizeOfShapes = `size $selectedShapes`;&lt;br /&gt;
&lt;br /&gt;
    if ( $sizeOfShapes == 0 )&lt;br /&gt;
    	error($me + &amp;quot; : Nothing shapes to process!&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
    for ( $shape in $selectedShapes )&lt;br /&gt;
    {&lt;br /&gt;
    	$tmpA = `listRelatives -p $shape`;&lt;br /&gt;
		$parent = $tmpA[0];&lt;br /&gt;
		$newShapeName = ($parent + &amp;quot;Shape&amp;quot;);&lt;br /&gt;
		rename $shape $newShapeName;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// APPLY FIXSHAPENAME TO BAKED ASSET PARTS&lt;br /&gt;
select -r assetBaked_Set ;&lt;br /&gt;
string $selection[] = `ls -sl`;&lt;br /&gt;
string $polyGons[] = `filterExpand -sm 12 $selection`;&lt;br /&gt;
select -r $polyGons;&lt;br /&gt;
pickWalk -d down;&lt;br /&gt;
fixShapeName();&lt;br /&gt;
select -cl  ;&lt;br /&gt;
&lt;br /&gt;
// DELETE OBJECTS WITHOUT UVS&lt;br /&gt;
select -r assetBaked_Set ;&lt;br /&gt;
string $selection[] = `ls -sl`;&lt;br /&gt;
string $polyGons[] = `filterExpand -sm 12 $selection`;&lt;br /&gt;
select -r $polyGons;&lt;br /&gt;
for ( $object in `ls -sl` ) {&lt;br /&gt;
    int $vertexCount[] = `polyEvaluate -uv $object`;&lt;br /&gt;
    print $vertexCount;&lt;br /&gt;
    string $uvCount = $vertexCount[0];&lt;br /&gt;
    if ($uvCount == 0){&lt;br /&gt;
        select -r $object ;&lt;br /&gt;
        doDelete ;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// CREATE VRAY BAKE OPTIONS&lt;br /&gt;
createNode &amp;quot;VRayBakeOptions&amp;quot; -n &amp;quot;vrayBakeOptions&amp;quot;;&lt;br /&gt;
select -r assetBaked_Set ;&lt;br /&gt;
string $selection[] = `ls -sl`;&lt;br /&gt;
string $polyGons[] = `filterExpand -sm 12 $selection`;&lt;br /&gt;
select -r $polyGons;&lt;br /&gt;
$selected=`ls -sl`;&lt;br /&gt;
for ($object in $selected){&lt;br /&gt;
    sets -edit -forceElement  vrayBakeOptions $object ;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// HIDE ORIGINAL ASSET&lt;br /&gt;
select -r assetOriginal_Set ;&lt;br /&gt;
pickWalk -d up;&lt;br /&gt;
hide `ls -sl`;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
// BAKE VRAY OPTIONS&lt;br /&gt;
setAttr &amp;quot;vrayBakeOptions.udimBaking&amp;quot; 1;&lt;br /&gt;
setAttr &amp;quot;vrayBakeOptions.resolutionX&amp;quot; $resWidth;&lt;br /&gt;
&lt;br /&gt;
optionVar -intValue &amp;quot;vrayBakeType&amp;quot; 2;&lt;br /&gt;
optionVar -intValue &amp;quot;vraySkipNodesWithoutBakeOptions&amp;quot; 1;&lt;br /&gt;
optionVar -intValue &amp;quot;vrayAssignBakedTextures&amp;quot; 1;&lt;br /&gt;
optionVar -stringValue &amp;quot;vrayBakeOutputPath&amp;quot; $bakedTexturesPath;&lt;br /&gt;
optionVar -intValue &amp;quot;vrayBakeProjectionBaking&amp;quot; 0;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
// GO BAKE GO&lt;br /&gt;
select -cl  ;&lt;br /&gt;
select -r assetBaked_Set ;&lt;br /&gt;
string $selection[] = `ls -sl`;&lt;br /&gt;
string $polyGons[] = `filterExpand -sm 12 $selection`;&lt;br /&gt;
select -r $polyGons;&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    vrayStartBake;&lt;br /&gt;
}&lt;br /&gt;
select -cl  ;&lt;br /&gt;
&lt;br /&gt;
// UV TILING UDIM AND ACES CG FOR FILES&lt;br /&gt;
for ( $object in `ls -type &amp;quot;file&amp;quot;` ) {&lt;br /&gt;
    setAttr ($object + &amp;quot;.filterType&amp;quot;) 0;&lt;br /&gt;
    setAttr ($object + &amp;quot;.uvTilingMode&amp;quot;) 3;&lt;br /&gt;
    setAttr ($object + &amp;quot;.cs&amp;quot;) -type &amp;quot;string&amp;quot; $fileColorSpace;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// CONNECT SHADERS&lt;br /&gt;
select -cl  ;&lt;br /&gt;
select -r assetBaked_Set ;&lt;br /&gt;
string $selection[] = `ls -sl`;&lt;br /&gt;
string $polyGons[] = `filterExpand -sm 12 $selection`;&lt;br /&gt;
for ( $object in $polyGons ) {&lt;br /&gt;
    string $shadingGroupName = ($object + &amp;quot;Shape_bakedmtlSG&amp;quot;);&lt;br /&gt;
    sets -e -forceElement $shadingGroupName $object;&lt;br /&gt;
}&lt;br /&gt;
select -cl  ;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
///////////////////////////////////&lt;br /&gt;
// SAVE&lt;br /&gt;
file -rename (&amp;quot;C:/YOUR_PATH/BAKED_ASSETS/&amp;quot; + $assetName + &amp;quot;_&amp;quot; + $lightRigName + &amp;quot;_BAKE_DEBUG.mb&amp;quot;);&lt;br /&gt;
file -f -save;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Arnold - Set all Standins display on Bouding box ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$selected=`ls -type &amp;quot;aiStandIn&amp;quot;`;&lt;br /&gt;
for ($object in $selected){&lt;br /&gt;
    setAttr ($object + &amp;quot;.mode&amp;quot;) 0;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Arnold - Set all Standins display on Point cloud ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$selected=`ls -type &amp;quot;aiStandIn&amp;quot;`;&lt;br /&gt;
for ($object in $selected){&lt;br /&gt;
    setAttr ($object + &amp;quot;.mode&amp;quot;) 4;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Alembic - Loop animation on all nodes ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$selected=`ls -type &amp;quot;AlembicNode&amp;quot;`;&lt;br /&gt;
for ($object in $selected){&lt;br /&gt;
    setAttr ($object + &amp;quot;.cycleType&amp;quot;) 1;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Mental Ray nodes error - Delete Mayatomr plugin ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
unknownPlugin -remove &amp;quot;Mayatomr&amp;quot;;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Delete Unknown nodes ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
select -r `ls -type unknown`;&lt;br /&gt;
delete;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Write text ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
string $exampleFileName = ( &amp;quot;D:/yolo.bat&amp;quot; );&lt;br /&gt;
string $linesToWrite[] = {&lt;br /&gt;
    &amp;quot;youpi&amp;quot;,&lt;br /&gt;
    &amp;quot;youhou&amp;quot;&lt;br /&gt;
    };&lt;br /&gt;
int $result = fwriteAllLines($exampleFileName,$linesToWrite);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Point Lock No Attach on selected follicles ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    setAttr ($object + &amp;quot;.pointLock&amp;quot;) 0;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Convert .ma cameras from Reality Capture into .abc files ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// List of assets&lt;br /&gt;
string $fileParts[] = {&amp;quot;asset_001&amp;quot;, &amp;quot;asset_002&amp;quot;};&lt;br /&gt;
&lt;br /&gt;
// Replace the PATH of your files&lt;br /&gt;
for ($filePart in $fileParts){&lt;br /&gt;
	string $fileName = $filePart + &amp;quot;_cam&amp;quot;;&lt;br /&gt;
	string $filePath = &amp;quot;//DISK/PATH/&amp;quot; + $filePart + &amp;quot;/&amp;quot; + $filePart +&amp;quot;_cam.ma&amp;quot;;&lt;br /&gt;
	file -import -type &amp;quot;mayaAscii&amp;quot;  -ignoreVersion -ra true -mergeNamespacesOnClash false -rpr $fileName -options &amp;quot;v=0;p=17;f=0&amp;quot;  -pr  -importFrameRate true  -importTimeRange &amp;quot;override&amp;quot; $filePath;&lt;br /&gt;
	select -cl;&lt;br /&gt;
	select `ls -type &amp;quot;imagePlane&amp;quot;`;&lt;br /&gt;
	pickWalk -d up;&lt;br /&gt;
	doDelete;&lt;br /&gt;
	select `ls -type &amp;quot;camera&amp;quot;`;&lt;br /&gt;
	pickWalk -d up;	&lt;br /&gt;
	string $abcPath = &amp;quot;//DISK/PATH/&amp;quot; + $filePart + &amp;quot;/&amp;quot; + $filePart +&amp;quot;_cam.abc&amp;quot;;&lt;br /&gt;
	string $abcExp = &amp;quot;-frameRange 1 1 -uvWrite -worldSpace -dataFormat ogawa -root |* -file &amp;quot; + $abcPath;&lt;br /&gt;
	AbcExport -j $abcExp;&lt;br /&gt;
	select -all;&lt;br /&gt;
	doDelete;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Unitize UVs (one square UV by face) ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select objects&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    select -r ($object+&amp;quot;.e[*]&amp;quot;);&lt;br /&gt;
    hilite ($object+&amp;quot;.e[*]&amp;quot;) ;&lt;br /&gt;
    polyMapCut -ch 1 ($object+&amp;quot;.e[*]&amp;quot;);&lt;br /&gt;
    polyForceUV -unitize $object;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Walter</name></author>
		
	</entry>
	<entry>
		<id>http://antoinevienne.fr/wiki/index.php?title=Houdini_learning&amp;diff=250</id>
		<title>Houdini learning</title>
		<link rel="alternate" type="text/html" href="http://antoinevienne.fr/wiki/index.php?title=Houdini_learning&amp;diff=250"/>
		<updated>2023-09-25T17:23:21Z</updated>

		<summary type="html">&lt;p&gt;Walter: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Houdini learning=&lt;br /&gt;
=== Center Pivot ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// In Pivot Translate in a Transform node&lt;br /&gt;
&lt;br /&gt;
centroid(0,0)&lt;br /&gt;
centroid(0,1)&lt;br /&gt;
centroid(0,2)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Delete by Connectivity attribute ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// In a Delete node, in Group (by example)&lt;br /&gt;
&lt;br /&gt;
@class=7777&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Increase Volume Density ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// In a volumewrangle&lt;br /&gt;
&lt;br /&gt;
@density *= 10;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Substract any VDB by another VDB ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// In a volumewrangle&lt;br /&gt;
&lt;br /&gt;
if (volumesample(1,&amp;quot;surface&amp;quot;,@P)&amp;lt;0)@density=0;&lt;br /&gt;
&lt;br /&gt;
//inverse:&lt;br /&gt;
&lt;br /&gt;
if (volumesample(1,&amp;quot;surface&amp;quot;,@P)&amp;gt;0)@density=0;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Get bound &amp;amp; centroid ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// In a null object&lt;br /&gt;
&lt;br /&gt;
bbox(opinputpath('.',0),D_XSIZE)&lt;br /&gt;
bbox(opinputpath('.',0),D_YSIZE)&lt;br /&gt;
bbox(opinputpath('.',0),D_ZSIZE)&lt;br /&gt;
&lt;br /&gt;
centroid(opinputpath('.',0),D_X)&lt;br /&gt;
centroid(opinputpath('.',0),D_Y)&lt;br /&gt;
centroid(opinputpath('.',0),D_Z)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== UVs ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// In this order : uvautoseam - uvflatten - uvlayout&lt;br /&gt;
In uvflatten : Seams = seams&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Kill emission on a smoke source after frame 300 ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
if (@Frame&amp;gt;300) @density = 0;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Attribfrommap - Use UDIMs images ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Replace 1001 by &amp;lt;UDIM&amp;gt; and check UDIM Filename Expansion&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Attribwrangle - Udim number on primitives attributes ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// In a wrangle set on Primitives&lt;br /&gt;
vector uv = primuv(0, &amp;quot;uv&amp;quot;, @primnum, set(0.5, 0.5, 0));&lt;br /&gt;
i@udim = 1001 + int(uv.x) + int(uv.y)*10;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Place at World center, scale et re-transform for export ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// In a transform translates&lt;br /&gt;
-centroid(0,0) -centroid(0,1) -centroid(0,2)&lt;br /&gt;
// In a transform Uniform scale&lt;br /&gt;
(bbox(&amp;quot;/obj/neigeSol/timeshift1/&amp;quot;, D_ZSIZE))/(bbox(&amp;quot;/obj/neigeSol/transform_centerWorld/&amp;quot;, D_ZSIZE))&lt;br /&gt;
&lt;br /&gt;
// At end, in a transform Uniform scale&lt;br /&gt;
1/((bbox(&amp;quot;/obj/neigeSol/timeshift1/&amp;quot;, D_ZSIZE))/(bbox(&amp;quot;/obj/neigeSol/transform_centerWorld/&amp;quot;, D_ZSIZE)))&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Misc Attr Wrangle expressions ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Delete by color&lt;br /&gt;
if (@Cd.x&amp;lt;chf(&amp;quot;seuilColor&amp;quot;))removepoint(0,@ptnum);&lt;br /&gt;
&lt;br /&gt;
// Set random pscale&lt;br /&gt;
@pscale = fit01(pow(rand(@ptnum), ch(&amp;quot;power&amp;quot;)), ch(&amp;quot;pscale_min&amp;quot;), ch(&amp;quot;pscale_max&amp;quot;));&lt;br /&gt;
&lt;br /&gt;
// Udim attr for each Udim&lt;br /&gt;
vector uv = primuv(0, &amp;quot;uv&amp;quot;, @primnum, set(0.5, 0.5, 0));&lt;br /&gt;
i@udim = 1001 + int(uv.x) + int(uv.y)*10;&lt;br /&gt;
// Next, with a Delete SOP: Group: @udim=$F - Pattern mode !*&lt;br /&gt;
&lt;br /&gt;
// Set pscale Min/Max&lt;br /&gt;
@pscale = fit01(pow(rand(@ptnum), ch(&amp;quot;power&amp;quot;)), ch(&amp;quot;pscale_min&amp;quot;), ch(&amp;quot;pscale_max&amp;quot;));&lt;br /&gt;
&lt;br /&gt;
// Remove small parts - In a Foreach connected piece loop&lt;br /&gt;
@size = (getbbox_size(0).x+getbbox_size(0).y+getbbox_size(0).z);&lt;br /&gt;
&lt;br /&gt;
if(@size &amp;lt; chf(&amp;quot;taille&amp;quot;))&lt;br /&gt;
removepoint(geoself(), @ptnum);&lt;br /&gt;
&lt;br /&gt;
// Set @variant integer for Copytopoints (change objects number)&lt;br /&gt;
i@variant =floor(rand(@id)*3);&lt;br /&gt;
&lt;br /&gt;
//// Get position difference between two objects, and match animation&lt;br /&gt;
// On Rest pose object:&lt;br /&gt;
v@fixe = 0;&lt;br /&gt;
@fixe.x = getbbox_center(0).x;&lt;br /&gt;
@fixe.y = getbbox_center(0).y;&lt;br /&gt;
@fixe.z = getbbox_center(0).z;&lt;br /&gt;
// On animated object:&lt;br /&gt;
v@anim = 0;&lt;br /&gt;
@anim.x = getbbox_center(0).x;&lt;br /&gt;
@anim.y = getbbox_center(0).y;&lt;br /&gt;
@anim.z = getbbox_center(0).z;&lt;br /&gt;
// After two previous AttrWrangles:&lt;br /&gt;
v@anim_offset = point(0, 'fixe', 1) - point(1, 'anim', 1);&lt;br /&gt;
// To match animation:&lt;br /&gt;
@P = point(0, &amp;quot;P&amp;quot;, @ptnum) + point(1, 'anim_offset', 1);&lt;br /&gt;
&lt;br /&gt;
//// Blend shape through a mask attribute - Posted by Cudarsjanis on Odforce&lt;br /&gt;
// Geo with mask attribute in first input, blend shape in second&lt;br /&gt;
v@P=lerp(v@P, point(1,'P',@ptnum), f@mask*ch('blend'));&lt;br /&gt;
&lt;br /&gt;
//// Set a fixed normal attribute&lt;br /&gt;
v@z = set(0,1,0);&lt;br /&gt;
&lt;br /&gt;
//// Place at world center&lt;br /&gt;
v@P -= getbbox_center(0);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Delete small pieces ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// As seen on Sidefx forum, posted by paulboiii&lt;br /&gt;
// First create a measure SOP, set to per piece&lt;br /&gt;
&lt;br /&gt;
// Then, in an attribwrangle set on primitives&lt;br /&gt;
float threshold = chf(&amp;quot;Size_Threshold&amp;quot;);&lt;br /&gt;
if ( f@area &amp;lt; threshold ) removeprim(0,@primnum,1);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Attribute Wrangle - Copy attribute from second input ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// With same number of points on both inputs - From Bonsak on Sidefx.com&lt;br /&gt;
&lt;br /&gt;
// Copy P from second input&lt;br /&gt;
@P = v@opinput1_P;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Bounding-box - Position Reference color ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// As seen on https://houdinihelp.ru/ref/expression_cookbook.html&lt;br /&gt;
&lt;br /&gt;
// In an attribwrangle set on primitives&lt;br /&gt;
@Cd.r = relbbox(0,@P).x;&lt;br /&gt;
@Cd.g = relbbox(0,@P).y;&lt;br /&gt;
@Cd.b = relbbox(0,@P).z;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Group by uv.y ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Thanks to https://vfxbrain.wordpress.com/2019/06/14/vex-snippets-2/&lt;br /&gt;
&lt;br /&gt;
// In an attribwrangle set on points&lt;br /&gt;
if(@uv.y&amp;lt;chf(&amp;quot;seuil&amp;quot;)) @group_base = 1;&lt;br /&gt;
&lt;br /&gt;
// ALTERNATIVE&lt;br /&gt;
@uv.x&amp;lt;0.2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Specify attribute value for one point ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
if (@ptnum == 322) f@mask=1;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Pscale by Bbox Y ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
//set pscale first&lt;br /&gt;
&lt;br /&gt;
f@bboxY = relbbox(0,@P).y;&lt;br /&gt;
@pscale *= chramp(&amp;quot;rampBbox&amp;quot;,@bboxY)*4 ;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Delete primitives by height ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
if ( @P.y&amp;lt;chf(&amp;quot;seuil&amp;quot;) ) removeprim(0,@primnum,1);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Falloff geometry ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Get camOrigin&lt;br /&gt;
&lt;br /&gt;
vector pt0 = point(1,'P',0);&lt;br /&gt;
v@raydir = normalize(  pt0 - @P )*-1;&lt;br /&gt;
&lt;br /&gt;
@falloff = dot(v@raydir, @N);&lt;br /&gt;
&lt;br /&gt;
// Promote raydir in Primitives&lt;br /&gt;
&lt;br /&gt;
if ( f@falloff&amp;gt;chf(&amp;quot;seuil&amp;quot;) ) removeprim(0,@primnum,1);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Labs Maps Baker - Bake with UDIMs ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Add %(UDIM)d in the file path - don't need to check Output UDIMs&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Gets the digits from node name===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Add `padzero(3,opdigits(&amp;quot;.&amp;quot;))`&lt;br /&gt;
// Add `padzero(3,opdigits(&amp;quot;..&amp;quot;))` for previous node padding&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Walter</name></author>
		
	</entry>
	<entry>
		<id>http://antoinevienne.fr/wiki/index.php?title=Maya_Mel&amp;diff=249</id>
		<title>Maya Mel</title>
		<link rel="alternate" type="text/html" href="http://antoinevienne.fr/wiki/index.php?title=Maya_Mel&amp;diff=249"/>
		<updated>2023-09-25T15:29:46Z</updated>

		<summary type="html">&lt;p&gt;Walter: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Maya Mels Scripts=&lt;br /&gt;
=== Octane Render Baking group id - Assign id to multiple objects shapes ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// 0 is for Red, 2 for Green, 4 for Blue&lt;br /&gt;
// 3, 5 and 6 for Cyan, Magenta and Yellow&lt;br /&gt;
// Replace the number &amp;quot;0&amp;quot; by the number of your choice&lt;br /&gt;
// Baking group id is also avalaible in Attribute Spreadsheet Editor&lt;br /&gt;
&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    print($object+&amp;quot;\n&amp;quot;);&lt;br /&gt;
    setAttr ($object + &amp;quot;.octBakGrId&amp;quot;) (0);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Maxwell Render - Particles sequence - Force .abc file ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
//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&lt;br /&gt;
&lt;br /&gt;
global int $current_frame;&lt;br /&gt;
$current_frame = `currentTime -query`;&lt;br /&gt;
print $current_frame;&lt;br /&gt;
{&lt;br /&gt;
setAttr -type &amp;quot;string&amp;quot; maxwellRFRKParticles1.file (&amp;quot;/YOUR_PATH/YOUR_FILE&amp;quot; + $current_frame + &amp;quot;.abc&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Maxwell Render - Specify object ID color ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Specify object ID color&lt;br /&gt;
&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    print($object+&amp;quot;\n&amp;quot;);&lt;br /&gt;
    setAttr ($object + &amp;quot;.mxSpecifyObjIdColor&amp;quot;) (1);&lt;br /&gt;
    setAttr ($object + &amp;quot;.mxObjIdColor&amp;quot;) -type &amp;quot;double3&amp;quot; 1 0 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Redshift - Add blend attribute and set random value for objects selection ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Useful for blending between colors with RedshiftUserDataScalar&lt;br /&gt;
&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    print($object);&lt;br /&gt;
    addAttr -ln &amp;quot;blend&amp;quot; -at double  -min 0 -max 1 -dv 0 $object;&lt;br /&gt;
    setAttr ($object + &amp;quot;.blend&amp;quot;) (rand(1));&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Redshift - Set Primary visibility off for selection (layer override) ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Go in right render layer and select objects&lt;br /&gt;
&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    print($object+&amp;quot;\n&amp;quot;);&lt;br /&gt;
    setAttr ($object + &amp;quot;.rsEnableVisibilityOverrides&amp;quot;) (1);&lt;br /&gt;
    editRenderLayerAdjustment ($object + &amp;quot;.rsPrimaryRayVisible&amp;quot;);&lt;br /&gt;
    setAttr ($object + &amp;quot;.rsPrimaryRayVisible&amp;quot;) (0);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Convert Motion trail to curve ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select the motion trail first&lt;br /&gt;
&lt;br /&gt;
{&lt;br /&gt;
$selected=`ls -dag -et snapshotShape`;&lt;br /&gt;
for ($obj in $selected){&lt;br /&gt;
$pts=(getAttr($obj+&amp;quot;.pts&amp;quot;));&lt;br /&gt;
$size=size($pts);&lt;br /&gt;
$curve=`curve -d 1 -p $pts[0] $pts[1] $pts[2] -p $pts[4] $pts[5] $pts[6] -k 0 -k 1`;&lt;br /&gt;
for($i=8;$i&amp;lt;$size;$i+=4)&lt;br /&gt;
curve -os -a -p $pts[$i] $pts[$i+1] $pts[$i+2] $curve ;&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Quantize keyframes for selection ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Snap keys on frames for objects selection&lt;br /&gt;
&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    print($object+&amp;quot;\n&amp;quot;);&lt;br /&gt;
    snapKey $object;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Loop image sequence for texture ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// On File texture, check Image sequence, and edit expression&lt;br /&gt;
&lt;br /&gt;
file1.frameExtension=((frame%8)+1);&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Symmetrize - Duplicate &amp;amp; merge object ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select half object first&lt;br /&gt;
&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    print($object+&amp;quot;\n&amp;quot;);&lt;br /&gt;
    xform -piv 0 0 0 $object;&lt;br /&gt;
    duplicate -rr;&lt;br /&gt;
    setAttr ($object + &amp;quot;.scaleX&amp;quot;) (-1);&lt;br /&gt;
    select -add $object ;&lt;br /&gt;
    polyPerformAction polyUnite o 0;&lt;br /&gt;
    polyMergeVertex  -d 0.0001 -am 1 -ch 1;&lt;br /&gt;
    DeleteHistory;&lt;br /&gt;
    rename ($object);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Mirror object ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select object first&lt;br /&gt;
&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    print($object+&amp;quot;\n&amp;quot;);&lt;br /&gt;
    DeleteHistory;&lt;br /&gt;
    makeIdentity -apply true -t 1 -r 1 -s 1 -n 0 -pn 1;&lt;br /&gt;
    xform -piv 0 0 0 $object;&lt;br /&gt;
    duplicate -rr;&lt;br /&gt;
    setAttr ($object + &amp;quot;.scaleX&amp;quot;) (-1);&lt;br /&gt;
    DeleteHistory;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Group each object and rename ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select objects first&lt;br /&gt;
&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    string $name = ($object);&lt;br /&gt;
    select $object ;&lt;br /&gt;
    doGroup 0 1 1;&lt;br /&gt;
    rename ($name + &amp;quot;_GRP&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Change path in an Attribute ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Here the Attribute is &amp;quot;.filePrefix&amp;quot; - Select objects first&lt;br /&gt;
&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    string $path = getAttr ($object+&amp;quot;.filePrefix&amp;quot;);&lt;br /&gt;
    $path = `substitute &amp;quot;//OLD/PATH/&amp;quot; $path &amp;quot;//NEW/PATH/&amp;quot;`;&lt;br /&gt;
    setAttr -type &amp;quot;string&amp;quot; ($object+&amp;quot;.filePrefix&amp;quot;) ($path);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Change opacity mode on V-Ray shaders ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select shaders first&lt;br /&gt;
&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    if (attributeExists(&amp;quot;omode&amp;quot;,$object)) { //check if attribute exists&lt;br /&gt;
        CBunlockAttr ($object+&amp;quot;.omode&amp;quot;); //unlock opacity mode&lt;br /&gt;
    }&lt;br /&gt;
    if (attributeExists(&amp;quot;opacityMode&amp;quot;,$object)) {&lt;br /&gt;
        setAttr ($object+&amp;quot;.opacityMode&amp;quot;) 1; //set opacity mode in Clip - 0 pour Normal&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// Alternative&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    if (attributeExists(&amp;quot;opacityMode&amp;quot;,$object)) {&lt;br /&gt;
        setAttr ($object+&amp;quot;.opacityMode&amp;quot;) -l false; //unlock attribute if locked&lt;br /&gt;
    }&lt;br /&gt;
    if (attributeExists(&amp;quot;opacityMode&amp;quot;,$object)) {&lt;br /&gt;
        setAttr ($object+&amp;quot;.opacityMode&amp;quot;) 2; //set opacity mode in Clip - 0 pour Normal&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Change color space on selected fileTextures ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Useful to automatically convert Quixel Megascans by example from sRGB/Raw to ACES color spaces&lt;br /&gt;
&lt;br /&gt;
string $object_selection[] = (`ls -sl`);&lt;br /&gt;
for ($object in $object_selection) {&lt;br /&gt;
    if(`getAttr ($object+&amp;quot;.cs&amp;quot;)` == &amp;quot;sRGB&amp;quot;){&lt;br /&gt;
        setAttr ($object + &amp;quot;.cs&amp;quot;) -type &amp;quot;string&amp;quot; &amp;quot;Utility - sRGB - Texture&amp;quot;;&lt;br /&gt;
    }&lt;br /&gt;
    if(`getAttr ($object+&amp;quot;.cs&amp;quot;)` == &amp;quot;Raw&amp;quot;){&lt;br /&gt;
        setAttr ($object + &amp;quot;.cs&amp;quot;) -type &amp;quot;string&amp;quot; &amp;quot;Utility - Raw&amp;quot;;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Redshift - custom Tesselation on selected objects ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select objects first&lt;br /&gt;
&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    print($object+&amp;quot;\n&amp;quot;);&lt;br /&gt;
    setAttr ($object + &amp;quot;.rsMinTessellationLength&amp;quot;) (0.1);&lt;br /&gt;
    setAttr ($object + &amp;quot;.rsMaxTessellationSubdivs&amp;quot;) (2);&lt;br /&gt;
    setAttr ($object + &amp;quot;.rsOutOfFrustumTessellationFactor&amp;quot;) (4);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Change color on selected shaders ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select shaders first&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    print($object+&amp;quot;\n&amp;quot;);&lt;br /&gt;
    setAttr ($object + &amp;quot;.color&amp;quot;) -l false;&lt;br /&gt;
    setAttr ($object + &amp;quot;.color&amp;quot;) -type &amp;quot;double3&amp;quot; (0.18) (0.18) (0.18);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Change Filter Type on selected Files Textures ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select files textures first - 0 means Off&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    print($object+&amp;quot;\n&amp;quot;);&lt;br /&gt;
    setAttr ($object + &amp;quot;.filterType&amp;quot;) 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Clean Render Layers ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// In MEL&lt;br /&gt;
fixRenderLayerOutAdjustmentErrors;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Change Filter Type on selected Files Textures ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select files textures first - 0 means Off&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    print($object+&amp;quot;\n&amp;quot;);&lt;br /&gt;
    setAttr ($object + &amp;quot;.filterType&amp;quot;) 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Select by name ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select objects with &amp;quot;toto&amp;quot;&lt;br /&gt;
select -r &amp;quot;toto*&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Display color on shapes ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select objects&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    print($object+&amp;quot;\n&amp;quot;);&lt;br /&gt;
    setAttr ($object + &amp;quot;.displayColors&amp;quot;) 1;&lt;br /&gt;
    setDisplayColorChannelAttribute ($object + &amp;quot;.displayColorChannel&amp;quot;);&lt;br /&gt;
    polyColorPerVertex -r 1 -g 0 -b 0 -a 1 -cdo;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Geometry Constraint on multiple selection ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select objects to constrain&lt;br /&gt;
string $objectBase = &amp;quot;surfaceName&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    select -cl;&lt;br /&gt;
    select $objectBase;&lt;br /&gt;
    select -add $object;&lt;br /&gt;
    geometryConstraint -weight 1;&lt;br /&gt;
    select -r &amp;quot;*Constraint*&amp;quot;;&lt;br /&gt;
    doDelete;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
=== Speed up smokes rendering with V-Ray ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select smokes first&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    print($object+&amp;quot;\n&amp;quot;);&lt;br /&gt;
    setAttr ($object + &amp;quot;.rendStep&amp;quot;) 160;&lt;br /&gt;
    setAttr ($object + &amp;quot;.shadowStep&amp;quot;) 400;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Set bump multiplier on multiple V-Ray shaders ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select shaders&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    if (attributeExists(&amp;quot;bumpMult&amp;quot;,$object)) {&lt;br /&gt;
        setAttr ($object + &amp;quot;.bumpMult&amp;quot;) -1; //set bump multiplier at -1&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== STOP/START viewport ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// As seen on https://www.toadstorm.com/. - Put it in your shelf&lt;br /&gt;
paneLayout -e -manage false $gMainPane&lt;br /&gt;
&lt;br /&gt;
paneLayout -e -manage true $gMainPane&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Select curves by name ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select objects first - Replace &amp;quot;toto&amp;quot; by what you are looking for&lt;br /&gt;
&lt;br /&gt;
select `ls -type &amp;quot;nurbsCurve&amp;quot; &amp;quot;*toto*&amp;quot;`;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Noise expression ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Replace &amp;quot;pCube1&amp;quot;&lt;br /&gt;
&lt;br /&gt;
pCube1.translateX=sin(time*20)*0.01*noise(time*10);&lt;br /&gt;
pCube1.translateY=sin(time*4)*0.01*noise(time*10);&lt;br /&gt;
pCube1.translateZ=sin(time*12)*0.01*noise(time*10);&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== V-ray - Make curves renderables ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Replace VRayLightMtl1 at the end by your material&lt;br /&gt;
&lt;br /&gt;
$selected=`ls -dag -et curveShape`;&lt;br /&gt;
for ($object in $selected){&lt;br /&gt;
    // Add V-ray Extra attributes&lt;br /&gt;
    vray addAttributesFromGroup $object vray_nurbscurve_renderable 1;&lt;br /&gt;
    vrayAddAttr $object vraySeparator_vray_nurbscurve_renderable;&lt;br /&gt;
    vrayAddAttr $object vrayNurbsCurveRenderable;&lt;br /&gt;
    vrayAddAttr $object vrayNurbsCurveMaterial;&lt;br /&gt;
    vrayAddAttr $object vrayNurbsCurveTesselation;&lt;br /&gt;
    vrayAddAttr $object vrayNurbsCurveStartWidth;&lt;br /&gt;
    vrayAddAttr $object vrayNurbsCurveLockEndWidth;&lt;br /&gt;
    vrayAddAttr $object vrayNurbsCurveEndWidth;&lt;br /&gt;
    setUITemplate -pst attributeEditorTemplate;&lt;br /&gt;
// Activate renderable&lt;br /&gt;
setAttr ($object + &amp;quot;.vrayNurbsCurveRenderable&amp;quot;) 1;&lt;br /&gt;
// Replace VRayLightMtl1 by your material&lt;br /&gt;
connectAttr -force VRayLightMtl1.outColor ($object + &amp;quot;.vrayNurbsCurveMaterial&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Get object type ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Replace toto with the object whose type you want to know&lt;br /&gt;
&lt;br /&gt;
objectType toto;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Render layer override on specific object type ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Replace &amp;quot;Node&amp;quot; by the object type on which you want to act&lt;br /&gt;
&lt;br /&gt;
$selected=`ls -type &amp;quot;Node&amp;quot;`;&lt;br /&gt;
for ($object in $selected){&lt;br /&gt;
    // Create layer override on Primary Visibility attribute on current renderLayer&lt;br /&gt;
    editRenderLayerAdjustment ($object + &amp;quot;.primaryVisibility&amp;quot;);&lt;br /&gt;
    // Set Primary Visibility - 0 or 1&lt;br /&gt;
    setAttr ($object + &amp;quot;.primaryVisibility&amp;quot;) 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== V-ray - Make lights invisible ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$selected=`ls -type &amp;quot;VRayLightRectShape&amp;quot;`;&lt;br /&gt;
for ($object in $selected){&lt;br /&gt;
    setAttr ($object + &amp;quot;.invisible&amp;quot;) 1;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
$selected=`ls -type &amp;quot;VRayLightSphereShape&amp;quot;`;&lt;br /&gt;
for ($object in $selected){&lt;br /&gt;
    setAttr ($object + &amp;quot;.invisible&amp;quot;) 1;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
$selected=`ls -type &amp;quot;VRayLightDomeShape&amp;quot;`;&lt;br /&gt;
for ($object in $selected){&lt;br /&gt;
    setAttr ($object + &amp;quot;.invisible&amp;quot;) 1;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== V-ray - Select Rect Light ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
select `ls -type &amp;quot;VRayLightRectShape&amp;quot;`;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== V-ray - Rect Lights - Directional Preview - Always for all ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$selected=`ls -type &amp;quot;VRayLightRectShape&amp;quot;`;&lt;br /&gt;
for ($object in $selected){&lt;br /&gt;
    setAttr ($object + &amp;quot;.directionalPreview&amp;quot;) 1;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Randomize rotation on selected objects ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// As posted on CGTalk by NaughtyNathan&lt;br /&gt;
// &amp;quot;just set the vector values to the maximum random x,y,z rotations you want to apply to the selected transforms.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
vector $rndRot = &amp;lt;&amp;lt; 0,0,90 &amp;gt;&amp;gt;;	// x,y,z rotations&lt;br /&gt;
for ($object in `ls -sl -tr`){&lt;br /&gt;
    rotate `rand ($rndRot.x)` `rand ($rndRot.y)` `rand ($rndRot.z)` $object;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Quit Maya ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Brute force method&lt;br /&gt;
&lt;br /&gt;
$i = `getpid`; //application ID&lt;br /&gt;
    system(&amp;quot;taskkill /PID &amp;quot;  + $i +&amp;quot; /f&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
// In a gentle way&lt;br /&gt;
&lt;br /&gt;
evalDeferred(&amp;quot;quit -f&amp;quot;);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== V-ray - Import list of Alembics through Proxys Import ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// List of Alembics files - Replace by the name of your Alembics&lt;br /&gt;
string $alembicsParts[] = {&amp;quot;part1&amp;quot;,&amp;quot;part2&amp;quot;,&amp;quot;part3&amp;quot;};&lt;br /&gt;
&lt;br /&gt;
// Replace the PATH of your files - Scale by 100 for Houdini Alembics - &amp;lt;frame04&amp;gt; for sequences&lt;br /&gt;
for ($alembicsPart in $alembicsParts){&lt;br /&gt;
    vrayCreateProxy -node $alembicsPart -existing -dir (&amp;quot;C:/YOURPATH/&amp;quot;+$alembicsPart+&amp;quot;.&amp;lt;frame04&amp;gt;.abc&amp;quot;) -createProxyNode;&lt;br /&gt;
    setAttr ($alembicsPart+&amp;quot;_vraymesh.animType&amp;quot;) 1;&lt;br /&gt;
    setAttr ($alembicsPart+&amp;quot;.scaleZ&amp;quot;) 100;&lt;br /&gt;
    setAttr ($alembicsPart+&amp;quot;.scaleX&amp;quot;) 100;&lt;br /&gt;
    setAttr ($alembicsPart+&amp;quot;.scaleY&amp;quot;) 100;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== V-ray - Change path to VRayMesh for selected proxies ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Change path with your own .vrmesh&lt;br /&gt;
$selected=`ls -type &amp;quot;VRayMesh&amp;quot;`;&lt;br /&gt;
for ($object in $selected){&lt;br /&gt;
    setAttr -type &amp;quot;string&amp;quot; ($object + &amp;quot;.fileName2&amp;quot;) &amp;quot;//DISK/PATH/YOUR_VRMESH.vrmesh&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// If you want to change Geometry type - 4 for GPU mesh - add following in the loop&lt;br /&gt;
//    setAttr ($object + &amp;quot;.geomType&amp;quot;) 4;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Delete image planes ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Delete image plane if exists.&lt;br /&gt;
$selected=`ls -type &amp;quot;imagePlane&amp;quot;`;&lt;br /&gt;
select $selected;&lt;br /&gt;
for ($object in $selected){&lt;br /&gt;
    doDelete;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Merge alembic from set ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select objects in a set called EXPORT_SET&lt;br /&gt;
select -r EXPORT_SET ;&lt;br /&gt;
timeControl -edit -forceRedraw $gPlayBackSlider;&lt;br /&gt;
&lt;br /&gt;
// Create list of objects from EXPORT_SET&lt;br /&gt;
string $assetParts[] = `ls -sl`;&lt;br /&gt;
$assetPartsList = stringArrayToString($assetParts,&amp;quot; &amp;quot;);&lt;br /&gt;
&lt;br /&gt;
// Merge alembic with these objects&lt;br /&gt;
AbcImport -mode import -connect $assetPartsList &amp;quot;//DISK/PATH/alembic.abc&amp;quot;;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Create Texture reference ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// CREATE TEXTURE REFERENCE ON EXPORT SET&lt;br /&gt;
&lt;br /&gt;
select -r YOUR_GROUP ;&lt;br /&gt;
CreateTextureReferenceObject;&lt;br /&gt;
select -cl  ;&lt;br /&gt;
&lt;br /&gt;
// REMOVE REFERENCE OBJECTS FROM EXPORT SET&lt;br /&gt;
select -r YOUR_GROUP_reference ;&lt;br /&gt;
string $selection[] = `ls -sl`;&lt;br /&gt;
string $polyGons[] = `filterExpand -sm 12 $selection`;&lt;br /&gt;
select -r $polyGons;&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    sets -rm EXPORT_SET $object;&lt;br /&gt;
}&lt;br /&gt;
select -cl  ;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Replace animated objects with V-Ray proxies ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// First select animated objects to replace&lt;br /&gt;
// For each object create a proxy then constrain then bake simulation then delete constraint&lt;br /&gt;
&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
	vrayCreateProxy -node assetName -existing -dir (&amp;quot;//DISK/PATH/your_asset.vrmesh&amp;quot;) -createProxyNode;&lt;br /&gt;
	select -r $object ;&lt;br /&gt;
	select -add assetName ;&lt;br /&gt;
	doCreateParentConstraintArgList 1 { &amp;quot;0&amp;quot;,&amp;quot;0&amp;quot;,&amp;quot;0&amp;quot;,&amp;quot;0&amp;quot;,&amp;quot;0&amp;quot;,&amp;quot;0&amp;quot;,&amp;quot;0&amp;quot;,&amp;quot;0&amp;quot;,&amp;quot;1&amp;quot;,&amp;quot;&amp;quot;,&amp;quot;1&amp;quot; };&lt;br /&gt;
	parentConstraint -weight 1;&lt;br /&gt;
	bakeResults -simulation true -t &amp;quot;1000:1100&amp;quot; -sampleBy 1 -oversamplingRate 1 -disableImplicitControl true -preserveOutsideKeys true -sparseAnimCurveBake false -removeBakedAttributeFromLayer false -removeBakedAnimFromLayer false -bakeOnOverrideLayer false -minimizeRotation true -controlPoints false -shape true {&amp;quot;assetName&amp;quot;};&lt;br /&gt;
	select `ls -type &amp;quot;constraint&amp;quot;`;&lt;br /&gt;
	select -add $object ;&lt;br /&gt;
	doDelete;&lt;br /&gt;
	select -cl  ;&lt;br /&gt;
	rename &amp;quot;assetName&amp;quot; $object;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Select all meshes in a group ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// From cmadsenAniden on forums.autodesk.com&lt;br /&gt;
// Replace group1 by the name of your own group&lt;br /&gt;
&lt;br /&gt;
select -r group1 ;&lt;br /&gt;
string $selection[] = `ls -sl`;&lt;br /&gt;
string $polyGons[] = `filterExpand -sm 12 $selection`;&lt;br /&gt;
select -r $polyGons;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Select shot camera ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// CREATE VARIABLE FOR SHOT CAMERA AND SELECT IT&lt;br /&gt;
&lt;br /&gt;
select `ls -type &amp;quot;camera&amp;quot;`;&lt;br /&gt;
select -d sideShape frontShape topShape perspShape;&lt;br /&gt;
$camerashot = `ls -sl`;&lt;br /&gt;
string $shotcamera = $camerashot[0];&lt;br /&gt;
print $shotcamera;&lt;br /&gt;
select $shotcamera;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Get list of frames with keys on all transform objects ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$selected=`ls -dag -et transform`;&lt;br /&gt;
&lt;br /&gt;
float $arrathy[] = `keyframe -query $selected`;&lt;br /&gt;
&lt;br /&gt;
float $sorted[] = python(&amp;quot;import pymel.core as pm; list(set((pm.getMelGlobal(\&amp;quot;float[]\&amp;quot;, \&amp;quot;$arrathy\&amp;quot;))))&amp;quot;);&lt;br /&gt;
print $sorted;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== MULTI SNAP ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Replace a list of objects by another with bake of animation. Replace FSTART and FEND with your own padding.&lt;br /&gt;
&lt;br /&gt;
///////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
///////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
/*&lt;br /&gt;
Type the command MS() in MEL form to open UI.&lt;br /&gt;
*/&lt;br /&gt;
///////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
///////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
source &amp;quot;generateChannelMenu.mel&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
global proc MS ()&lt;br /&gt;
{&lt;br /&gt;
     global string $sourceObjects;&lt;br /&gt;
     global string $destinationObjects;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    // If the window exists already, delete it.&lt;br /&gt;
    if (`window -exists multiSnapWindow`)&lt;br /&gt;
    {&lt;br /&gt;
        deleteUI multiSnapWindow;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    // Build the window.&lt;br /&gt;
    global string $man_window;&lt;br /&gt;
    string $man_window = `window -title &amp;quot; MULTI SNAP&amp;quot; -sizeable 0 -w 300 multiSnapWindow`;&lt;br /&gt;
    frameLayout -label &amp;quot;Snap source objects on destination objects.&amp;quot;;&lt;br /&gt;
    rowLayout -width 540 -nc 2 -cw4 10 20 20 100;&lt;br /&gt;
    // Source objects section&lt;br /&gt;
    frameLayout -label &amp;quot;Source objects&amp;quot;;&lt;br /&gt;
    $sourceObjects = `textScrollList -width 600 -height 300`;&lt;br /&gt;
    rowLayout -width 240 -nc 2 -cw2 120 120;&lt;br /&gt;
    button -label &amp;quot;Add selected&amp;quot; -command &amp;quot;MS_addObjects ();&amp;quot; -width 120;&lt;br /&gt;
    button -label &amp;quot;Remove selected&amp;quot; -command &amp;quot;MS_removeObjects ();&amp;quot; -width 120;&lt;br /&gt;
    setParent ..;&lt;br /&gt;
    rowLayout -width 240 -nc 2 -cw2 120 120;&lt;br /&gt;
    button -label &amp;quot;Remove All&amp;quot; -command &amp;quot;MS_clearObjects ();&amp;quot; -width 240;&lt;br /&gt;
    setParent ..;&lt;br /&gt;
    setParent ..;&lt;br /&gt;
    rowLayout -nc 3;&lt;br /&gt;
    button -label &amp;quot;Create&amp;quot; -command &amp;quot;VRAYCONNECDO() &amp;quot; -width 140 -align center;&lt;br /&gt;
    button -label &amp;quot;Close&amp;quot; -command &amp;quot;DAC_CloseUI() &amp;quot; -width 140 -align center;&lt;br /&gt;
    setParent ..;&lt;br /&gt;
    setParent ..;&lt;br /&gt;
    // Destination objects section&lt;br /&gt;
    frameLayout -label &amp;quot;Destination objects&amp;quot;;&lt;br /&gt;
    $destinationObjects = `textScrollList -width 600 -height 300`;&lt;br /&gt;
    rowLayout -width 240 -nc 2 -cw2 120 120;&lt;br /&gt;
    button -label &amp;quot;Add selected&amp;quot; -command &amp;quot;MS_addMM ();&amp;quot; -width 120;&lt;br /&gt;
    button -label &amp;quot;Remove selected&amp;quot; -command &amp;quot;MS_removeMM ();&amp;quot; -width 120;&lt;br /&gt;
    setParent ..;&lt;br /&gt;
    setParent ..;&lt;br /&gt;
    rowLayout -nc 3;&lt;br /&gt;
    button -label &amp;quot;SNAP IT&amp;quot; -command &amp;quot;VRAYCONNECDO() &amp;quot; -width 140 -align center;&lt;br /&gt;
    button -label &amp;quot;Close&amp;quot; -command &amp;quot;DAC_CloseUI() &amp;quot; -width 140 -align center;&lt;br /&gt;
    setParent ..;&lt;br /&gt;
    setParent ..;&lt;br /&gt;
&lt;br /&gt;
// Show the window.&lt;br /&gt;
showWindow multiSnapWindow;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
global proc string[] getShaders(string $from)&lt;br /&gt;
{&lt;br /&gt;
// get the shapes from the input&lt;br /&gt;
string $shapes[] = ls(&amp;quot;-o&amp;quot;, &amp;quot;-dag&amp;quot;, &amp;quot;-s&amp;quot;, $from);&lt;br /&gt;
// give me the connected &amp;quot;shadingEngines&amp;quot;&lt;br /&gt;
string $shadingEngines[] = listConnections(&amp;quot;-type&amp;quot;,&amp;quot;shadingEngine&amp;quot;, $shapes);&lt;br /&gt;
// list the connected materials (shaders) from that&lt;br /&gt;
string $materials[] = ls(&amp;quot;-mat&amp;quot;, listConnections($shadingEngines));&lt;br /&gt;
// remove duplicate occurrences.&lt;br /&gt;
return (stringArrayRemoveDuplicates($materials));&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
//Add selected objects to list.&lt;br /&gt;
global proc MS_addObjects ()&lt;br /&gt;
{&lt;br /&gt;
      global string $sourceObjects;&lt;br /&gt;
      string $selectedshapes[] = `ls -sl -l`;&lt;br /&gt;
      //print $selectedshapes;&lt;br /&gt;
      int $count = 0;&lt;br /&gt;
&lt;br /&gt;
if ($selectedshapes[0] != &amp;quot;&amp;quot;)&lt;br /&gt;
{&lt;br /&gt;
   for ($i in $selectedshapes)&lt;br /&gt;
   {&lt;br /&gt;
     $count ++;&lt;br /&gt;
     textScrollList -edit -append $i $sourceObjects;&lt;br /&gt;
   }&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
//Add selected objects to list.&lt;br /&gt;
global proc MS_addMM ()&lt;br /&gt;
{&lt;br /&gt;
      global string $destinationObjects;&lt;br /&gt;
      string $selectedshapes[] = `ls -sl -l`;&lt;br /&gt;
      //print $selectedshapes;&lt;br /&gt;
      int $count = 0;&lt;br /&gt;
&lt;br /&gt;
if ($selectedshapes[0] != &amp;quot;&amp;quot;)&lt;br /&gt;
{&lt;br /&gt;
   for ($i in $selectedshapes)&lt;br /&gt;
   {&lt;br /&gt;
     $count ++;&lt;br /&gt;
     textScrollList -edit -append $i $destinationObjects;&lt;br /&gt;
   }&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// Clear objects from list.&lt;br /&gt;
global proc MS_clearObjects ()&lt;br /&gt;
{&lt;br /&gt;
    global string $sourceObjects;&lt;br /&gt;
textScrollList -e -ra $sourceObjects;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// Remove selected object from list.&lt;br /&gt;
global proc MS_removeObjects ()&lt;br /&gt;
{&lt;br /&gt;
   global string $sourceObjects;&lt;br /&gt;
&lt;br /&gt;
    int $index [] = `textScrollList -query -selectIndexedItem $sourceObjects`;&lt;br /&gt;
    if ($index [0] != 0)&lt;br /&gt;
    {&lt;br /&gt;
        textScrollList -edit -removeIndexedItem $index [0] $sourceObjects;&lt;br /&gt;
    }&lt;br /&gt;
   global string $sourceObjects;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
global proc VRAYCONNECDO()&lt;br /&gt;
{&lt;br /&gt;
    // UI Elements&lt;br /&gt;
global string $sourceObjects;&lt;br /&gt;
global string $destinationObjects;&lt;br /&gt;
// Define user selected objects&lt;br /&gt;
string $selected_objects[] = `textScrollList -query -allItems $sourceObjects`;&lt;br /&gt;
string $meshMaterial[] = `textScrollList -query -allItems $destinationObjects`;&lt;br /&gt;
int $i = 0;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
// SET PADDING&lt;br /&gt;
string $FSTART = &amp;quot;1&amp;quot;;&lt;br /&gt;
string $FEND = &amp;quot;100&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
print $FSTART;&lt;br /&gt;
print $FEND;&lt;br /&gt;
&lt;br /&gt;
string $PADDING = $FSTART + &amp;quot;:&amp;quot; + $FEND;&lt;br /&gt;
&lt;br /&gt;
//Progress bar&lt;br /&gt;
global string $gMainProgressBar;&lt;br /&gt;
&lt;br /&gt;
// Start the progress bar and adjust its max value for this operation.&lt;br /&gt;
    int $steps = size($selected_objects);&lt;br /&gt;
    progressBar -edit -beginProgress -isInterruptable true -status &amp;quot;Connecting shaders to mesh material ...&amp;quot; -maxValue $steps $gMainProgressBar;&lt;br /&gt;
 &lt;br /&gt;
for ($i = 0; $i &amp;lt; size($selected_objects); $i ++)&lt;br /&gt;
{&lt;br /&gt;
        parentConstraint -n parentConstraintMS $selected_objects[$i] $meshMaterial[$i];&lt;br /&gt;
        select -r $meshMaterial[$i] ;&lt;br /&gt;
        bakeResults -simulation true -t $PADDING -sampleBy 1 -oversamplingRate 1 -disableImplicitControl true -preserveOutsideKeys true -sparseAnimCurveBake false -removeBakedAttributeFromLayer false -removeBakedAnimFromLayer false -bakeOnOverrideLayer false -minimizeRotation true -controlPoints false -shape true {$meshMaterial[$i]};&lt;br /&gt;
        select -cl  ;&lt;br /&gt;
        select -r &amp;quot;*parentConstraintMS*&amp;quot;;&lt;br /&gt;
        doDelete;&lt;br /&gt;
// Update the progress bar.&lt;br /&gt;
progressBar -edit -step 1 $gMainProgressBar;&lt;br /&gt;
}&lt;br /&gt;
// End the progress.&lt;br /&gt;
progressBar -edit -endProgress $gMainProgressBar;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Delete hidden objects ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Select objects&lt;br /&gt;
&lt;br /&gt;
for ( $object in `ls -sl` ) {&lt;br /&gt;
    $vis = getAttr ($object+&amp;quot;.visibility&amp;quot;);&lt;br /&gt;
    if ($vis == 0){&lt;br /&gt;
        select -r $object ;&lt;br /&gt;
        doDelete ;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== V-Ray - BAKE MATERIALS ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Made to work also with mayabatch.exe&lt;br /&gt;
&lt;br /&gt;
////////////////////////////////////////////&lt;br /&gt;
// BAKE VRAY CUSTOM VARIABLES&lt;br /&gt;
////////////////////////////////////////////&lt;br /&gt;
&lt;br /&gt;
// ASSET PATH&lt;br /&gt;
string $assetFileType = &amp;quot;mayaBinary&amp;quot;;&lt;br /&gt;
string $assetPath = &amp;quot;C:/YOUR_PATH/YOUR_SURFACING_ASSET.mb&amp;quot;;&lt;br /&gt;
string $assetName = &amp;quot;ASSET_NAME&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
// LIGHT RIG PATH&lt;br /&gt;
string $lightRigFileType = &amp;quot;mayaAscii&amp;quot;;&lt;br /&gt;
string $lightRigPath = &amp;quot;C:/YOUR_PATH/YOUR_LIGHT_RIG.mb&amp;quot;;&lt;br /&gt;
string $lightRigName = &amp;quot;DAY_LIGHTING&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
// BAKED TEXTURES PATH&lt;br /&gt;
string $bakedTexturesPath = (&amp;quot;C:/YOUR_PATH/BAKED_TEXTURES/&amp;quot; + $assetName + &amp;quot;_&amp;quot; + $lightRigName + &amp;quot;_Bake&amp;quot;);&lt;br /&gt;
print $bakedTexturesPath;&lt;br /&gt;
&lt;br /&gt;
// SET RESOLUTION FOR BAKED MAPS&lt;br /&gt;
$resWidth = 4096;&lt;br /&gt;
$resHeight = $resWidth;&lt;br /&gt;
&lt;br /&gt;
// COLOR SPACE FOR FILE TEXTURES&lt;br /&gt;
string $fileColorSpace = &amp;quot;ACES - ACEScg&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
////////////////////////////////////////////&lt;br /&gt;
// END OF CUSTOM VARIABLES&lt;br /&gt;
////////////////////////////////////////////&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
////////////////////////////////////////////&lt;br /&gt;
// RENDER SETTINGS&lt;br /&gt;
&lt;br /&gt;
// Set File Name Prefix&lt;br /&gt;
setAttr -type &amp;quot;string&amp;quot; vraySettings.fileNamePrefix &amp;quot;&amp;lt;Scene&amp;gt;/&amp;lt;Layer&amp;gt;/&amp;lt;Camera&amp;gt;_&amp;lt;Layer&amp;gt;_&amp;lt;Scene&amp;gt;&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
// Set resolution&lt;br /&gt;
$resWidthHalf = $resWidth/2;&lt;br /&gt;
$resHeightHalf = $resHeight/2;&lt;br /&gt;
setAttr &amp;quot;vraySettings.width&amp;quot; $resWidthHalf;&lt;br /&gt;
setAttr &amp;quot;vraySettings.height&amp;quot; $resHeightHalf;&lt;br /&gt;
&lt;br /&gt;
// Set Persp camera renderable&lt;br /&gt;
setAttr &amp;quot;perspShape.renderable&amp;quot; 1;&lt;br /&gt;
&lt;br /&gt;
// Set Image format&lt;br /&gt;
setAttr -type &amp;quot;string&amp;quot; &amp;quot;vraySettings.imageFormatStr&amp;quot; &amp;quot;exr (multichannel)&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
// Set Animation type on Standard&lt;br /&gt;
setAttr &amp;quot;vraySettings.animType&amp;quot; 0;&lt;br /&gt;
setAttr &amp;quot;vraySettings.animBatchOnly&amp;quot; 1;&lt;br /&gt;
&lt;br /&gt;
// Sampler type Bucket&lt;br /&gt;
setAttr &amp;quot;vraySettings.samplerType&amp;quot; 4;&lt;br /&gt;
&lt;br /&gt;
// Min Shading Rate&lt;br /&gt;
//setAttr &amp;quot;vraySettings.minShadeRate&amp;quot; 4;&lt;br /&gt;
setAttr &amp;quot;vraySettings.minShadeRate&amp;quot; 7;&lt;br /&gt;
&lt;br /&gt;
// Buckets subdivs&lt;br /&gt;
//setAttr &amp;quot;vraySettings.dmcMinSubdivs&amp;quot; 1;&lt;br /&gt;
//setAttr &amp;quot;vraySettings.dmcMaxSubdivs&amp;quot; 8;&lt;br /&gt;
//setAttr &amp;quot;vraySettings.dmcThreshold&amp;quot; 0.1;&lt;br /&gt;
setAttr &amp;quot;vraySettings.dmcMinSubdivs&amp;quot; 1;&lt;br /&gt;
setAttr &amp;quot;vraySettings.dmcMaxSubdivs&amp;quot; 15;&lt;br /&gt;
setAttr &amp;quot;vraySettings.dmcThreshold&amp;quot; 0.01;&lt;br /&gt;
&lt;br /&gt;
// Color mapping Linear&lt;br /&gt;
setAttr &amp;quot;vraySettings.cmap_type&amp;quot; 0;&lt;br /&gt;
&lt;br /&gt;
// GI on&lt;br /&gt;
setAttr &amp;quot;vraySettings.giOn&amp;quot; 1;&lt;br /&gt;
//setAttr &amp;quot;vraySettings.subdivs&amp;quot; 400;&lt;br /&gt;
setAttr &amp;quot;vraySettings.subdivs&amp;quot; 1000;&lt;br /&gt;
&lt;br /&gt;
// Max subdivs&lt;br /&gt;
setAttr &amp;quot;vraySettings.ddisplac_maxSubdivs&amp;quot; 16;&lt;br /&gt;
&lt;br /&gt;
// Cache geometry and bitmaps&lt;br /&gt;
setAttr &amp;quot;vraySettings.globopt_cache_geom_plugins&amp;quot; 1;&lt;br /&gt;
setAttr &amp;quot;vraySettings.globopt_cache_bitmaps&amp;quot; 1;&lt;br /&gt;
&lt;br /&gt;
// Dynamic memory limit&lt;br /&gt;
setAttr &amp;quot;vraySettings.sys_rayc_dynMemLimit&amp;quot; 0;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
////////////////////////////////////////////&lt;br /&gt;
// IMPORT&lt;br /&gt;
&lt;br /&gt;
// IMPORT LIGHT RIG&lt;br /&gt;
file -import -type $lightRigFileType  -ignoreVersion -mergeNamespacesOnClash false -rpr &amp;quot;:&amp;quot; -options &amp;quot;v=0;&amp;quot; $lightRigPath;&lt;br /&gt;
&lt;br /&gt;
// IMPORT ASSET&lt;br /&gt;
file -import -type $assetFileType  -ignoreVersion -mergeNamespacesOnClash false -rpr &amp;quot;:&amp;quot; -options &amp;quot;v=0;&amp;quot; $assetPath;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
// CREATE SETS&lt;br /&gt;
select `ls -type &amp;quot;mesh&amp;quot;`;&lt;br /&gt;
sets -name &amp;quot;assetOriginal_Set&amp;quot; ;&lt;br /&gt;
duplicate -rr;&lt;br /&gt;
group -w -n (&amp;quot;GRP_&amp;quot; + $assetName + &amp;quot;_BAKE_&amp;quot; + `toupper $lightRigName`);&lt;br /&gt;
sets -name &amp;quot;assetBaked_Set&amp;quot; ;&lt;br /&gt;
&lt;br /&gt;
// REMOVE BAKED PARTS FROM ORIGINAL PARTS SET&lt;br /&gt;
select -r assetBaked_Set ;&lt;br /&gt;
string $selection[] = `ls -sl`;&lt;br /&gt;
string $polyGons[] = `filterExpand -sm 12 $selection`;&lt;br /&gt;
select -r $polyGons;&lt;br /&gt;
pickWalk -d down;&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    sets -rm assetOriginal_Set $object;&lt;br /&gt;
}&lt;br /&gt;
select -cl  ;&lt;br /&gt;
&lt;br /&gt;
// DELETE HIDDEN OBJECTS&lt;br /&gt;
select -r assetBaked_Set ;&lt;br /&gt;
string $selection[] = `ls -sl`;&lt;br /&gt;
string $polyGons[] = `filterExpand -sm 12 $selection`;&lt;br /&gt;
select -r $polyGons;&lt;br /&gt;
for ( $object in `ls -sl` ) {&lt;br /&gt;
    $vis = getAttr ($object+&amp;quot;.visibility&amp;quot;);&lt;br /&gt;
    if ($vis == 0){&lt;br /&gt;
        select -r $object ;&lt;br /&gt;
        doDelete ;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
select -cl  ;&lt;br /&gt;
&lt;br /&gt;
// fixShapeName - Thanks to Pinkwerks&lt;br /&gt;
global proc&lt;br /&gt;
fixShapeName()&lt;br /&gt;
{&lt;br /&gt;
    string $me = &amp;quot;fixShapeName&amp;quot;;&lt;br /&gt;
    string $shape;&lt;br /&gt;
    string $newShapeName;&lt;br /&gt;
    string $parent;&lt;br /&gt;
    string $tmpA[];&lt;br /&gt;
	string $selectedShapes[] = `ls -sl -l`;&lt;br /&gt;
    int $sizeOfShapes = `size $selectedShapes`;&lt;br /&gt;
&lt;br /&gt;
    if ( $sizeOfShapes == 0 )&lt;br /&gt;
    	error($me + &amp;quot; : Nothing shapes to process!&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
    for ( $shape in $selectedShapes )&lt;br /&gt;
    {&lt;br /&gt;
    	$tmpA = `listRelatives -p $shape`;&lt;br /&gt;
		$parent = $tmpA[0];&lt;br /&gt;
		$newShapeName = ($parent + &amp;quot;Shape&amp;quot;);&lt;br /&gt;
		rename $shape $newShapeName;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// APPLY FIXSHAPENAME TO BAKED ASSET PARTS&lt;br /&gt;
select -r assetBaked_Set ;&lt;br /&gt;
string $selection[] = `ls -sl`;&lt;br /&gt;
string $polyGons[] = `filterExpand -sm 12 $selection`;&lt;br /&gt;
select -r $polyGons;&lt;br /&gt;
pickWalk -d down;&lt;br /&gt;
fixShapeName();&lt;br /&gt;
select -cl  ;&lt;br /&gt;
&lt;br /&gt;
// DELETE OBJECTS WITHOUT UVS&lt;br /&gt;
select -r assetBaked_Set ;&lt;br /&gt;
string $selection[] = `ls -sl`;&lt;br /&gt;
string $polyGons[] = `filterExpand -sm 12 $selection`;&lt;br /&gt;
select -r $polyGons;&lt;br /&gt;
for ( $object in `ls -sl` ) {&lt;br /&gt;
    int $vertexCount[] = `polyEvaluate -uv $object`;&lt;br /&gt;
    print $vertexCount;&lt;br /&gt;
    string $uvCount = $vertexCount[0];&lt;br /&gt;
    if ($uvCount == 0){&lt;br /&gt;
        select -r $object ;&lt;br /&gt;
        doDelete ;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// CREATE VRAY BAKE OPTIONS&lt;br /&gt;
createNode &amp;quot;VRayBakeOptions&amp;quot; -n &amp;quot;vrayBakeOptions&amp;quot;;&lt;br /&gt;
select -r assetBaked_Set ;&lt;br /&gt;
string $selection[] = `ls -sl`;&lt;br /&gt;
string $polyGons[] = `filterExpand -sm 12 $selection`;&lt;br /&gt;
select -r $polyGons;&lt;br /&gt;
$selected=`ls -sl`;&lt;br /&gt;
for ($object in $selected){&lt;br /&gt;
    sets -edit -forceElement  vrayBakeOptions $object ;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// HIDE ORIGINAL ASSET&lt;br /&gt;
select -r assetOriginal_Set ;&lt;br /&gt;
pickWalk -d up;&lt;br /&gt;
hide `ls -sl`;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
// BAKE VRAY OPTIONS&lt;br /&gt;
setAttr &amp;quot;vrayBakeOptions.udimBaking&amp;quot; 1;&lt;br /&gt;
setAttr &amp;quot;vrayBakeOptions.resolutionX&amp;quot; $resWidth;&lt;br /&gt;
&lt;br /&gt;
optionVar -intValue &amp;quot;vrayBakeType&amp;quot; 2;&lt;br /&gt;
optionVar -intValue &amp;quot;vraySkipNodesWithoutBakeOptions&amp;quot; 1;&lt;br /&gt;
optionVar -intValue &amp;quot;vrayAssignBakedTextures&amp;quot; 1;&lt;br /&gt;
optionVar -stringValue &amp;quot;vrayBakeOutputPath&amp;quot; $bakedTexturesPath;&lt;br /&gt;
optionVar -intValue &amp;quot;vrayBakeProjectionBaking&amp;quot; 0;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
// GO BAKE GO&lt;br /&gt;
select -cl  ;&lt;br /&gt;
select -r assetBaked_Set ;&lt;br /&gt;
string $selection[] = `ls -sl`;&lt;br /&gt;
string $polyGons[] = `filterExpand -sm 12 $selection`;&lt;br /&gt;
select -r $polyGons;&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    vrayStartBake;&lt;br /&gt;
}&lt;br /&gt;
select -cl  ;&lt;br /&gt;
&lt;br /&gt;
// UV TILING UDIM AND ACES CG FOR FILES&lt;br /&gt;
for ( $object in `ls -type &amp;quot;file&amp;quot;` ) {&lt;br /&gt;
    setAttr ($object + &amp;quot;.filterType&amp;quot;) 0;&lt;br /&gt;
    setAttr ($object + &amp;quot;.uvTilingMode&amp;quot;) 3;&lt;br /&gt;
    setAttr ($object + &amp;quot;.cs&amp;quot;) -type &amp;quot;string&amp;quot; $fileColorSpace;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// CONNECT SHADERS&lt;br /&gt;
select -cl  ;&lt;br /&gt;
select -r assetBaked_Set ;&lt;br /&gt;
string $selection[] = `ls -sl`;&lt;br /&gt;
string $polyGons[] = `filterExpand -sm 12 $selection`;&lt;br /&gt;
for ( $object in $polyGons ) {&lt;br /&gt;
    string $shadingGroupName = ($object + &amp;quot;Shape_bakedmtlSG&amp;quot;);&lt;br /&gt;
    sets -e -forceElement $shadingGroupName $object;&lt;br /&gt;
}&lt;br /&gt;
select -cl  ;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
///////////////////////////////////&lt;br /&gt;
// SAVE&lt;br /&gt;
file -rename (&amp;quot;C:/YOUR_PATH/BAKED_ASSETS/&amp;quot; + $assetName + &amp;quot;_&amp;quot; + $lightRigName + &amp;quot;_BAKE_DEBUG.mb&amp;quot;);&lt;br /&gt;
file -f -save;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Arnold - Set all Standins display on Bouding box ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$selected=`ls -type &amp;quot;aiStandIn&amp;quot;`;&lt;br /&gt;
for ($object in $selected){&lt;br /&gt;
    setAttr ($object + &amp;quot;.mode&amp;quot;) 0;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Arnold - Set all Standins display on Point cloud ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$selected=`ls -type &amp;quot;aiStandIn&amp;quot;`;&lt;br /&gt;
for ($object in $selected){&lt;br /&gt;
    setAttr ($object + &amp;quot;.mode&amp;quot;) 4;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Alembic - Loop animation on all nodes ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$selected=`ls -type &amp;quot;AlembicNode&amp;quot;`;&lt;br /&gt;
for ($object in $selected){&lt;br /&gt;
    setAttr ($object + &amp;quot;.cycleType&amp;quot;) 1;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Mental Ray nodes error - Delete Mayatomr plugin ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
unknownPlugin -remove &amp;quot;Mayatomr&amp;quot;;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Delete Unknown nodes ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
select -r `ls -type unknown`;&lt;br /&gt;
delete;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Write text ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
string $exampleFileName = ( &amp;quot;D:/yolo.bat&amp;quot; );&lt;br /&gt;
string $linesToWrite[] = {&lt;br /&gt;
    &amp;quot;youpi&amp;quot;,&lt;br /&gt;
    &amp;quot;youhou&amp;quot;&lt;br /&gt;
    };&lt;br /&gt;
int $result = fwriteAllLines($exampleFileName,$linesToWrite);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Point Lock No Attach on selected follicles ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
for ( $object in `ls -sl -l` ) {&lt;br /&gt;
    setAttr ($object + &amp;quot;.pointLock&amp;quot;) 0;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Convert .ma cameras from Reality Capture into .abc files ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// List of assets&lt;br /&gt;
string $fileParts[] = {&amp;quot;asset_001&amp;quot;, &amp;quot;asset_002&amp;quot;};&lt;br /&gt;
&lt;br /&gt;
// Replace the PATH of your files&lt;br /&gt;
for ($filePart in $fileParts){&lt;br /&gt;
	string $fileName = $filePart + &amp;quot;_cam&amp;quot;;&lt;br /&gt;
	string $filePath = &amp;quot;//DISK/PATH/&amp;quot; + $filePart + &amp;quot;/&amp;quot; + $filePart +&amp;quot;_cam.ma&amp;quot;;&lt;br /&gt;
	file -import -type &amp;quot;mayaAscii&amp;quot;  -ignoreVersion -ra true -mergeNamespacesOnClash false -rpr $fileName -options &amp;quot;v=0;p=17;f=0&amp;quot;  -pr  -importFrameRate true  -importTimeRange &amp;quot;override&amp;quot; $filePath;&lt;br /&gt;
	select -cl;&lt;br /&gt;
	select `ls -type &amp;quot;imagePlane&amp;quot;`;&lt;br /&gt;
	pickWalk -d up;&lt;br /&gt;
	doDelete;&lt;br /&gt;
	select `ls -type &amp;quot;camera&amp;quot;`;&lt;br /&gt;
	pickWalk -d up;	&lt;br /&gt;
	string $abcPath = &amp;quot;//DISK/PATH/&amp;quot; + $filePart + &amp;quot;/&amp;quot; + $filePart +&amp;quot;_cam.abc&amp;quot;;&lt;br /&gt;
	string $abcExp = &amp;quot;-frameRange 1 1 -uvWrite -worldSpace -dataFormat ogawa -root |* -file &amp;quot; + $abcPath;&lt;br /&gt;
	AbcExport -j $abcExp;&lt;br /&gt;
	select -all;&lt;br /&gt;
	doDelete;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Walter</name></author>
		
	</entry>
	<entry>
		<id>http://antoinevienne.fr/wiki/index.php?title=Houdini_learning&amp;diff=248</id>
		<title>Houdini learning</title>
		<link rel="alternate" type="text/html" href="http://antoinevienne.fr/wiki/index.php?title=Houdini_learning&amp;diff=248"/>
		<updated>2023-09-19T15:05:18Z</updated>

		<summary type="html">&lt;p&gt;Walter: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Houdini learning=&lt;br /&gt;
=== Center Pivot ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// In Pivot Translate in a Transform node&lt;br /&gt;
&lt;br /&gt;
centroid(0,0)&lt;br /&gt;
centroid(0,1)&lt;br /&gt;
centroid(0,2)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Delete by Connectivity attribute ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// In a Delete node, in Group (by example)&lt;br /&gt;
&lt;br /&gt;
@class=7777&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Increase Volume Density ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// In a volumewrangle&lt;br /&gt;
&lt;br /&gt;
@density *= 10;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Substract any VDB by another VDB ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// In a volumewrangle&lt;br /&gt;
&lt;br /&gt;
if (volumesample(1,&amp;quot;surface&amp;quot;,@P)&amp;lt;0)@density=0;&lt;br /&gt;
&lt;br /&gt;
//inverse:&lt;br /&gt;
&lt;br /&gt;
if (volumesample(1,&amp;quot;surface&amp;quot;,@P)&amp;gt;0)@density=0;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Get bound &amp;amp; centroid ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// In a null object&lt;br /&gt;
&lt;br /&gt;
bbox(opinputpath('.',0),D_XSIZE)&lt;br /&gt;
bbox(opinputpath('.',0),D_YSIZE)&lt;br /&gt;
bbox(opinputpath('.',0),D_ZSIZE)&lt;br /&gt;
&lt;br /&gt;
centroid(opinputpath('.',0),D_X)&lt;br /&gt;
centroid(opinputpath('.',0),D_Y)&lt;br /&gt;
centroid(opinputpath('.',0),D_Z)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== UVs ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// In this order : uvautoseam - uvflatten - uvlayout&lt;br /&gt;
In uvflatten : Seams = seams&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Kill emission on a smoke source after frame 300 ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
if (@Frame&amp;gt;300) @density = 0;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Attribfrommap - Use UDIMs images ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Replace 1001 by &amp;lt;UDIM&amp;gt; and check UDIM Filename Expansion&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Attribwrangle - Udim number on primitives attributes ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// In a wrangle set on Primitives&lt;br /&gt;
vector uv = primuv(0, &amp;quot;uv&amp;quot;, @primnum, set(0.5, 0.5, 0));&lt;br /&gt;
i@udim = 1001 + int(uv.x) + int(uv.y)*10;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Place at World center, scale et re-transform for export ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// In a transform translates&lt;br /&gt;
-centroid(0,0) -centroid(0,1) -centroid(0,2)&lt;br /&gt;
// In a transform Uniform scale&lt;br /&gt;
(bbox(&amp;quot;/obj/neigeSol/timeshift1/&amp;quot;, D_ZSIZE))/(bbox(&amp;quot;/obj/neigeSol/transform_centerWorld/&amp;quot;, D_ZSIZE))&lt;br /&gt;
&lt;br /&gt;
// At end, in a transform Uniform scale&lt;br /&gt;
1/((bbox(&amp;quot;/obj/neigeSol/timeshift1/&amp;quot;, D_ZSIZE))/(bbox(&amp;quot;/obj/neigeSol/transform_centerWorld/&amp;quot;, D_ZSIZE)))&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Misc Attr Wrangle expressions ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Delete by color&lt;br /&gt;
if (@Cd.x&amp;lt;chf(&amp;quot;seuilColor&amp;quot;))removepoint(0,@ptnum);&lt;br /&gt;
&lt;br /&gt;
// Set random pscale&lt;br /&gt;
@pscale = fit01(pow(rand(@ptnum), ch(&amp;quot;power&amp;quot;)), ch(&amp;quot;pscale_min&amp;quot;), ch(&amp;quot;pscale_max&amp;quot;));&lt;br /&gt;
&lt;br /&gt;
// Udim attr for each Udim&lt;br /&gt;
vector uv = primuv(0, &amp;quot;uv&amp;quot;, @primnum, set(0.5, 0.5, 0));&lt;br /&gt;
i@udim = 1001 + int(uv.x) + int(uv.y)*10;&lt;br /&gt;
// Next, with a Delete SOP: Group: @udim=$F - Pattern mode !*&lt;br /&gt;
&lt;br /&gt;
// Set pscale Min/Max&lt;br /&gt;
@pscale = fit01(pow(rand(@ptnum), ch(&amp;quot;power&amp;quot;)), ch(&amp;quot;pscale_min&amp;quot;), ch(&amp;quot;pscale_max&amp;quot;));&lt;br /&gt;
&lt;br /&gt;
// Remove small parts - In a Foreach connected piece loop&lt;br /&gt;
@size = (getbbox_size(0).x+getbbox_size(0).y+getbbox_size(0).z);&lt;br /&gt;
&lt;br /&gt;
if(@size &amp;lt; chf(&amp;quot;taille&amp;quot;))&lt;br /&gt;
removepoint(geoself(), @ptnum);&lt;br /&gt;
&lt;br /&gt;
// Set @variant integer for Copytopoints (change objects number)&lt;br /&gt;
i@variant =floor(rand(@id)*3);&lt;br /&gt;
&lt;br /&gt;
//// Get position difference between two objects, and match animation&lt;br /&gt;
// On Rest pose object:&lt;br /&gt;
v@fixe = 0;&lt;br /&gt;
@fixe.x = getbbox_center(0).x;&lt;br /&gt;
@fixe.y = getbbox_center(0).y;&lt;br /&gt;
@fixe.z = getbbox_center(0).z;&lt;br /&gt;
// On animated object:&lt;br /&gt;
v@anim = 0;&lt;br /&gt;
@anim.x = getbbox_center(0).x;&lt;br /&gt;
@anim.y = getbbox_center(0).y;&lt;br /&gt;
@anim.z = getbbox_center(0).z;&lt;br /&gt;
// After two previous AttrWrangles:&lt;br /&gt;
v@anim_offset = point(0, 'fixe', 1) - point(1, 'anim', 1);&lt;br /&gt;
// To match animation:&lt;br /&gt;
@P = point(0, &amp;quot;P&amp;quot;, @ptnum) + point(1, 'anim_offset', 1);&lt;br /&gt;
&lt;br /&gt;
//// Blend shape through a mask attribute - Posted by Cudarsjanis on Odforce&lt;br /&gt;
// Geo with mask attribute in first input, blend shape in second&lt;br /&gt;
v@P=lerp(v@P, point(1,'P',@ptnum), f@mask*ch('blend'));&lt;br /&gt;
&lt;br /&gt;
//// Set a fixed normal attribute&lt;br /&gt;
v@z = set(0,1,0);&lt;br /&gt;
&lt;br /&gt;
//// Place at world center&lt;br /&gt;
v@P -= getbbox_center(0);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Delete small pieces ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// As seen on Sidefx forum, posted by paulboiii&lt;br /&gt;
// First create a measure SOP, set to per piece&lt;br /&gt;
&lt;br /&gt;
// Then, in an attribwrangle set on primitives&lt;br /&gt;
float threshold = chf(&amp;quot;Size_Threshold&amp;quot;);&lt;br /&gt;
if ( f@area &amp;lt; threshold ) removeprim(0,@primnum,1);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Attribute Wrangle - Copy attribute from second input ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// With same number of points on both inputs - From Bonsak on Sidefx.com&lt;br /&gt;
&lt;br /&gt;
// Copy P from second input&lt;br /&gt;
@P = v@opinput1_P;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Bounding-box - Position Reference color ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// As seen on https://houdinihelp.ru/ref/expression_cookbook.html&lt;br /&gt;
&lt;br /&gt;
// In an attribwrangle set on primitives&lt;br /&gt;
@Cd.r = relbbox(0,@P).x;&lt;br /&gt;
@Cd.g = relbbox(0,@P).y;&lt;br /&gt;
@Cd.b = relbbox(0,@P).z;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Group by uv.y ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Thanks to https://vfxbrain.wordpress.com/2019/06/14/vex-snippets-2/&lt;br /&gt;
&lt;br /&gt;
// In an attribwrangle set on points&lt;br /&gt;
if(@uv.y&amp;lt;chf(&amp;quot;seuil&amp;quot;)) @group_base = 1;&lt;br /&gt;
&lt;br /&gt;
// ALTERNATIVE&lt;br /&gt;
@uv.x&amp;lt;0.2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Specify attribute value for one point ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
if (@ptnum == 322) f@mask=1;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Pscale by Bbox Y ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
//set pscale first&lt;br /&gt;
&lt;br /&gt;
f@bboxY = relbbox(0,@P).y;&lt;br /&gt;
@pscale *= chramp(&amp;quot;rampBbox&amp;quot;,@bboxY)*4 ;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Delete primitives by height ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
if ( @P.y&amp;lt;chf(&amp;quot;seuil&amp;quot;) ) removeprim(0,@primnum,1);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Falloff geometry ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Get camOrigin&lt;br /&gt;
&lt;br /&gt;
vector pt0 = point(1,'P',0);&lt;br /&gt;
v@raydir = normalize(  pt0 - @P )*-1;&lt;br /&gt;
&lt;br /&gt;
@falloff = dot(v@raydir, @N);&lt;br /&gt;
&lt;br /&gt;
// Promote raydir in Primitives&lt;br /&gt;
&lt;br /&gt;
if ( f@falloff&amp;gt;chf(&amp;quot;seuil&amp;quot;) ) removeprim(0,@primnum,1);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Labs Maps Baker - Bake with UDIMs ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Add %(UDIM)d in the file path - don't need to check Output UDIMs&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Walter</name></author>
		
	</entry>
	<entry>
		<id>http://antoinevienne.fr/wiki/index.php?title=Reality_Capture&amp;diff=247</id>
		<title>Reality Capture</title>
		<link rel="alternate" type="text/html" href="http://antoinevienne.fr/wiki/index.php?title=Reality_Capture&amp;diff=247"/>
		<updated>2023-09-12T15:21:13Z</updated>

		<summary type="html">&lt;p&gt;Walter: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Reality Capture=&lt;br /&gt;
=== Process multiple scans===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Create a first .bat with the list of the assets you want to process - One folder by asset, all in the same directory&lt;br /&gt;
&lt;br /&gt;
set list=asset_001 asset_002 asset_003 asset_004 asset_005 asset_006 asset_007&lt;br /&gt;
&lt;br /&gt;
(for %%a in (%list%) do ( &lt;br /&gt;
   set assetName=%%a&lt;br /&gt;
   set Images=\\DISK\PATH\%%a&lt;br /&gt;
   call \\DISK\PATH\exec_RC.bat&lt;br /&gt;
))&lt;br /&gt;
&lt;br /&gt;
// Create a second .bat to run Reality Capture - take a look on Reality Capture documentation&lt;br /&gt;
&lt;br /&gt;
set RealityCaptureExe=&amp;quot;C:\Program Files\Capturing Reality\RealityCapture\RealityCapture.exe&amp;quot;&lt;br /&gt;
set ScriptFolder=%~dp0&lt;br /&gt;
set SimplifySettings=%ScriptFolder%SimplifySettings25.xml&lt;br /&gt;
set ModelSettings=%ScriptFolder%ModelSettings.xml&lt;br /&gt;
set PtcSettings=%ScriptFolder%PtcSettings.xml&lt;br /&gt;
set RegSettings=%ScriptFolder%RegistrationSettings.xml&lt;br /&gt;
set projectRoot=%Images%\..\&lt;br /&gt;
set outputDir=%projectRoot%\OUT\%assetName%&lt;br /&gt;
mkdir %outputDir%&lt;br /&gt;
set undistoDir=%outputDir%\undistos&lt;br /&gt;
mkdir %undistoDir%&lt;br /&gt;
set Model=%outputDir%\%assetName%.obj&lt;br /&gt;
set Project=%outputDir%\%assetname%.rcproj&lt;br /&gt;
set PTC=%outputDir%\%assetname%.xyzrgb&lt;br /&gt;
&lt;br /&gt;
%RealityCaptureExe% -addFolder %Images% ^&lt;br /&gt;
		-selectAllImages ^&lt;br /&gt;
		-setPriorLensGroup 2 ^&lt;br /&gt;
        -align ^&lt;br /&gt;
        -selectMaximalComponent ^&lt;br /&gt;
        -setReconstructionRegionAuto ^&lt;br /&gt;
        -calculateNormalModel ^&lt;br /&gt;
		-simplify %SimplifyTo% %SimplifySettings% ^&lt;br /&gt;
        -selectMarginalTriangles ^&lt;br /&gt;
        -removeSelectedTriangles ^&lt;br /&gt;
		-selectLargeTrianglesRel 12 ^&lt;br /&gt;
		-removeSelectedTriangles ^&lt;br /&gt;
        -renameSelectedModel %assetName% ^&lt;br /&gt;
        -calculateTexture ^&lt;br /&gt;
        -save %Project% ^&lt;br /&gt;
        -exportModel %assetName% %Model% %ModelSettings% ^&lt;br /&gt;
		-exportRegistration %mayaScene% %newRegSettings%^&lt;br /&gt;
		-exportSparsePointCloud %PTC% %PtcSettings% ^&lt;br /&gt;
		-clearCache ^&lt;br /&gt;
        -quit&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Texture reprojection - Open project/Import new model/Texture/Export for a list===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Create a first .bat with the list of the assets you want to process&lt;br /&gt;
&lt;br /&gt;
set list=asset_001 asset_002 asset_003 asset_004 asset_005 asset_006 asset_007&lt;br /&gt;
&lt;br /&gt;
(for %%a in (%list%) do (&lt;br /&gt;
   set assetName=%%a&lt;br /&gt;
   set originalProject=\\DISK\PATH\%%a.rcproj&lt;br /&gt;
   set meshPath=\\DISK\PATH\%%a.obj&lt;br /&gt;
))&lt;br /&gt;
&lt;br /&gt;
// Create a second .bat to run Reality Capture - take a look on Reality Capture documentation&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Walter</name></author>
		
	</entry>
	<entry>
		<id>http://antoinevienne.fr/wiki/index.php?title=Reality_Capture&amp;diff=246</id>
		<title>Reality Capture</title>
		<link rel="alternate" type="text/html" href="http://antoinevienne.fr/wiki/index.php?title=Reality_Capture&amp;diff=246"/>
		<updated>2023-09-12T15:16:59Z</updated>

		<summary type="html">&lt;p&gt;Walter: /* Process multiple scans */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Reality Capture=&lt;br /&gt;
=== Process multiple scans===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Create a first .bat with the list of the assets you want to process - One folder by asset, all in the same directory&lt;br /&gt;
&lt;br /&gt;
set list=asset_001 asset_002 asset_003 asset_004 asset_005 asset_006 asset_007&lt;br /&gt;
&lt;br /&gt;
(for %%a in (%list%) do ( &lt;br /&gt;
   set assetName=%%a&lt;br /&gt;
   set Images=\\DISK\PATH\%%a&lt;br /&gt;
   call \\DISK\PATH\exec_RC.bat&lt;br /&gt;
))&lt;br /&gt;
&lt;br /&gt;
// Create a second .bat to run Reality Capture - take a look on their documentation&lt;br /&gt;
&lt;br /&gt;
set RealityCaptureExe=&amp;quot;C:\Program Files\Capturing Reality\RealityCapture\RealityCapture.exe&amp;quot;&lt;br /&gt;
set ScriptFolder=%~dp0&lt;br /&gt;
set SimplifySettings=%ScriptFolder%SimplifySettings25.xml&lt;br /&gt;
set ModelSettings=%ScriptFolder%ModelSettings.xml&lt;br /&gt;
set PtcSettings=%ScriptFolder%PtcSettings.xml&lt;br /&gt;
set RegSettings=%ScriptFolder%RegistrationSettings.xml&lt;br /&gt;
set projectRoot=%Images%\..\&lt;br /&gt;
set outputDir=%projectRoot%\OUT\%assetName%&lt;br /&gt;
mkdir %outputDir%&lt;br /&gt;
set undistoDir=%outputDir%\undistos&lt;br /&gt;
mkdir %undistoDir%&lt;br /&gt;
set Model=%outputDir%\%assetName%.obj&lt;br /&gt;
set Project=%outputDir%\%assetname%.rcproj&lt;br /&gt;
set PTC=%outputDir%\%assetname%.xyzrgb&lt;br /&gt;
&lt;br /&gt;
%RealityCaptureExe% -addFolder %Images% ^&lt;br /&gt;
		-selectAllImages ^&lt;br /&gt;
		-setPriorLensGroup 2 ^&lt;br /&gt;
        -align ^&lt;br /&gt;
        -selectMaximalComponent ^&lt;br /&gt;
        -setReconstructionRegionAuto ^&lt;br /&gt;
        -calculateNormalModel ^&lt;br /&gt;
		-simplify %SimplifyTo% %SimplifySettings% ^&lt;br /&gt;
        -selectMarginalTriangles ^&lt;br /&gt;
        -removeSelectedTriangles ^&lt;br /&gt;
		-selectLargeTrianglesRel 12 ^&lt;br /&gt;
		-removeSelectedTriangles ^&lt;br /&gt;
        -renameSelectedModel %assetName% ^&lt;br /&gt;
        -calculateTexture ^&lt;br /&gt;
        -save %Project% ^&lt;br /&gt;
        -exportModel %assetName% %Model% %ModelSettings% ^&lt;br /&gt;
		-exportRegistration %mayaScene% %newRegSettings%^&lt;br /&gt;
		-exportSparsePointCloud %PTC% %PtcSettings% ^&lt;br /&gt;
		-clearCache ^&lt;br /&gt;
        -quit&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Walter</name></author>
		
	</entry>
	<entry>
		<id>http://antoinevienne.fr/wiki/index.php?title=Reality_Capture&amp;diff=245</id>
		<title>Reality Capture</title>
		<link rel="alternate" type="text/html" href="http://antoinevienne.fr/wiki/index.php?title=Reality_Capture&amp;diff=245"/>
		<updated>2023-09-12T15:14:23Z</updated>

		<summary type="html">&lt;p&gt;Walter: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Reality Capture=&lt;br /&gt;
=== Process multiple scans===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Create a first .bat with the list of the assets you want to process - One folder by asset, all in the same directory&lt;br /&gt;
&lt;br /&gt;
set list=asset_001 asset_002 asset_003 asset_004 asset_005 asset_006 asset_007&lt;br /&gt;
&lt;br /&gt;
(for %%a in (%list%) do ( &lt;br /&gt;
   set assetName=%%a&lt;br /&gt;
   set Images=\\DISK\PATH\%%a&lt;br /&gt;
   call \\DISK\PATH\exec_RC.bat&lt;br /&gt;
))&lt;br /&gt;
&lt;br /&gt;
// Create a second .bat to run Reality Capture, take a look on their documentation&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Walter</name></author>
		
	</entry>
	<entry>
		<id>http://antoinevienne.fr/wiki/index.php?title=Reality_Capture&amp;diff=244</id>
		<title>Reality Capture</title>
		<link rel="alternate" type="text/html" href="http://antoinevienne.fr/wiki/index.php?title=Reality_Capture&amp;diff=244"/>
		<updated>2023-09-12T15:12:20Z</updated>

		<summary type="html">&lt;p&gt;Walter: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Reality Capture=&lt;br /&gt;
=== Process multiple scans===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Create a first .bat with the list of the assets you want to process - One folder by asset, all in the same directory&lt;br /&gt;
&lt;br /&gt;
set list=asset_001 asset_002 asset_003 asset_004 asset_005 asset_006 asset_007&lt;br /&gt;
&lt;br /&gt;
(for %%a in (%list%) do ( &lt;br /&gt;
   set assetName=%%a&lt;br /&gt;
   set Images=\\DISK\PATH\%%a&lt;br /&gt;
   call \\DISK\PATH\exec_RC.bat&lt;br /&gt;
))&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Walter</name></author>
		
	</entry>
	<entry>
		<id>http://antoinevienne.fr/wiki/index.php?title=Reality_Capture&amp;diff=243</id>
		<title>Reality Capture</title>
		<link rel="alternate" type="text/html" href="http://antoinevienne.fr/wiki/index.php?title=Reality_Capture&amp;diff=243"/>
		<updated>2023-09-12T15:11:08Z</updated>

		<summary type="html">&lt;p&gt;Walter: Created page with &amp;quot;=Reality Capture= === Process multiple scans=== &amp;lt;pre&amp;gt; // Create a first .bat with the list of the assets you want to process - One folder by asset, all in the same directory...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Reality Capture=&lt;br /&gt;
=== Process multiple scans===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Create a first .bat with the list of the assets you want to process - One folder by asset, all in the same directory&lt;br /&gt;
&lt;br /&gt;
set list=asset_001 asset_002 asset_003 asset_004 asset_005 asset_006 asset_007&lt;br /&gt;
&lt;br /&gt;
(for %%a in (%list%) do ( &lt;br /&gt;
   set assetName=%%a&lt;br /&gt;
   set Images=\\stord\diskd\Aznavour\setup-hollywood\3d\textures\avienne\Sources\_Voitures\%%a&lt;br /&gt;
   call \\stord\diskd\Aznavour\setup-parisLiberation\3d\textures\avienne\Sources\RC_BATCH_SCRIPT\exec_RC.bat&lt;br /&gt;
))&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Walter</name></author>
		
	</entry>
	<entry>
		<id>http://antoinevienne.fr/wiki/index.php?title=Main_Page&amp;diff=242</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="http://antoinevienne.fr/wiki/index.php?title=Main_Page&amp;diff=242"/>
		<updated>2023-09-12T15:08:40Z</updated>

		<summary type="html">&lt;p&gt;Walter: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* '''Maya'''&lt;br /&gt;
** [[Maya Mel|Mel Scripts]]&lt;br /&gt;
** [[Maya Python|Python Scripts]]&lt;br /&gt;
** [[Maya Batch Render|.bat Batch Render Scripts]]&lt;br /&gt;
** [[Maya Misc|Misc]]&lt;br /&gt;
** [[Maya tmp|tmp Scripts]]&lt;br /&gt;
&lt;br /&gt;
* '''Nuke'''&lt;br /&gt;
** [[Nuke Python|Python Scripts]]&lt;br /&gt;
** [[Nuke Gizmos|Custom Gizmos]]&lt;br /&gt;
** [[Nuke Misc|Misc]]&lt;br /&gt;
** [[Nuke Batch Render|.bat Batch Render Scripts]]&lt;br /&gt;
** [[Nuke tmp|tmp Scripts]]&lt;br /&gt;
&lt;br /&gt;
* '''Houdini'''&lt;br /&gt;
** [[Houdini Env|Install third party renderer]]&lt;br /&gt;
** [[Houdini learning|tmp stuff]]&lt;br /&gt;
&lt;br /&gt;
* '''Isadora'''&lt;br /&gt;
** [[Isadora learning|tmp stuff]]&lt;br /&gt;
&lt;br /&gt;
* '''TouchDesigner'''&lt;br /&gt;
** [[TouchDesigner learning|tmp stuff]]&lt;br /&gt;
&lt;br /&gt;
* '''Windows'''&lt;br /&gt;
** [[Windows|Convert with FFmpeg]]&lt;br /&gt;
&lt;br /&gt;
* '''Reality Capture'''&lt;br /&gt;
** [[Reality Capture|Batch process]]&lt;/div&gt;</summary>
		<author><name>Walter</name></author>
		
	</entry>
	<entry>
		<id>http://antoinevienne.fr/wiki/index.php?title=Nuke_Misc&amp;diff=241</id>
		<title>Nuke Misc</title>
		<link rel="alternate" type="text/html" href="http://antoinevienne.fr/wiki/index.php?title=Nuke_Misc&amp;diff=241"/>
		<updated>2023-07-12T09:53:25Z</updated>

		<summary type="html">&lt;p&gt;Walter: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Compositing Misc=&lt;br /&gt;
=== CMY IDs selection ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Use with Expression node&lt;br /&gt;
&lt;br /&gt;
cyan&lt;br /&gt;
g*b-r&lt;br /&gt;
&lt;br /&gt;
magenta&lt;br /&gt;
r*b-g&lt;br /&gt;
&lt;br /&gt;
yellow&lt;br /&gt;
r*g-b&lt;br /&gt;
&lt;br /&gt;
blue&lt;br /&gt;
b-(g+r)&lt;br /&gt;
&lt;br /&gt;
green&lt;br /&gt;
g-(b+r)&lt;br /&gt;
&lt;br /&gt;
red&lt;br /&gt;
r-(g+b)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Fix Exposure variations ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// First calculate Avg Intensities of the zone which needs to be fixed with a CurveTool, then use the value in gain of a ColorCorrect&lt;br /&gt;
&lt;br /&gt;
(1/(parent.CurveTool1.intensitydata))*CUSTOM_VALUE&lt;br /&gt;
&lt;br /&gt;
Adjust Custom value in order to reach 1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Time in seconds ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Thx Reddit&lt;br /&gt;
&lt;br /&gt;
[expr floor([frame]/[value root.fps])]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Walter</name></author>
		
	</entry>
	<entry>
		<id>http://antoinevienne.fr/wiki/index.php?title=Houdini_learning&amp;diff=240</id>
		<title>Houdini learning</title>
		<link rel="alternate" type="text/html" href="http://antoinevienne.fr/wiki/index.php?title=Houdini_learning&amp;diff=240"/>
		<updated>2023-06-29T12:47:35Z</updated>

		<summary type="html">&lt;p&gt;Walter: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Houdini learning=&lt;br /&gt;
=== Center Pivot ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// In Pivot Translate in a Transform node&lt;br /&gt;
&lt;br /&gt;
centroid(0,0)&lt;br /&gt;
centroid(0,1)&lt;br /&gt;
centroid(0,2)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Delete by Connectivity attribute ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// In a Delete node, in Group (by example)&lt;br /&gt;
&lt;br /&gt;
@class=7777&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Increase Volume Density ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// In a volumewrangle&lt;br /&gt;
&lt;br /&gt;
@density *= 10;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Substract any VDB by another VDB ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// In a volumewrangle&lt;br /&gt;
&lt;br /&gt;
if (volumesample(1,&amp;quot;surface&amp;quot;,@P)&amp;lt;0)@density=0;&lt;br /&gt;
&lt;br /&gt;
//inverse:&lt;br /&gt;
&lt;br /&gt;
if (volumesample(1,&amp;quot;surface&amp;quot;,@P)&amp;gt;0)@density=0;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Get bound &amp;amp; centroid ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// In a null object&lt;br /&gt;
&lt;br /&gt;
bbox(opinputpath('.',0),D_XSIZE)&lt;br /&gt;
bbox(opinputpath('.',0),D_YSIZE)&lt;br /&gt;
bbox(opinputpath('.',0),D_ZSIZE)&lt;br /&gt;
&lt;br /&gt;
centroid(opinputpath('.',0),D_X)&lt;br /&gt;
centroid(opinputpath('.',0),D_Y)&lt;br /&gt;
centroid(opinputpath('.',0),D_Z)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== UVs ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// In this order : uvautoseam - uvflatten - uvlayout&lt;br /&gt;
In uvflatten : Seams = seams&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Kill emission on a smoke source after frame 300 ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
if (@Frame&amp;gt;300) @density = 0;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Attribfrommap - Use UDIMs images ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Replace 1001 by &amp;lt;UDIM&amp;gt; and check UDIM Filename Expansion&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Attribwrangle - Udim number on primitives attributes ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// In a wrangle set on Primitives&lt;br /&gt;
vector uv = primuv(0, &amp;quot;uv&amp;quot;, @primnum, set(0.5, 0.5, 0));&lt;br /&gt;
i@udim = 1001 + int(uv.x) + int(uv.y)*10;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Place at World center, scale et re-transform for export ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// In a transform translates&lt;br /&gt;
-centroid(0,0) -centroid(0,1) -centroid(0,2)&lt;br /&gt;
// In a transform Uniform scale&lt;br /&gt;
(bbox(&amp;quot;/obj/neigeSol/timeshift1/&amp;quot;, D_ZSIZE))/(bbox(&amp;quot;/obj/neigeSol/transform_centerWorld/&amp;quot;, D_ZSIZE))&lt;br /&gt;
&lt;br /&gt;
// At end, in a transform Uniform scale&lt;br /&gt;
1/((bbox(&amp;quot;/obj/neigeSol/timeshift1/&amp;quot;, D_ZSIZE))/(bbox(&amp;quot;/obj/neigeSol/transform_centerWorld/&amp;quot;, D_ZSIZE)))&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Misc Attr Wrangle expressions ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Delete by color&lt;br /&gt;
if (@Cd.x&amp;lt;chf(&amp;quot;seuilColor&amp;quot;))removepoint(0,@ptnum);&lt;br /&gt;
&lt;br /&gt;
// Set random pscale&lt;br /&gt;
@pscale = fit01(pow(rand(@ptnum), ch(&amp;quot;power&amp;quot;)), ch(&amp;quot;pscale_min&amp;quot;), ch(&amp;quot;pscale_max&amp;quot;));&lt;br /&gt;
&lt;br /&gt;
// Udim attr for each Udim&lt;br /&gt;
vector uv = primuv(0, &amp;quot;uv&amp;quot;, @primnum, set(0.5, 0.5, 0));&lt;br /&gt;
i@udim = 1001 + int(uv.x) + int(uv.y)*10;&lt;br /&gt;
// Next, with a Delete SOP: Group: @udim=$F - Pattern mode !*&lt;br /&gt;
&lt;br /&gt;
// Set pscale Min/Max&lt;br /&gt;
@pscale = fit01(pow(rand(@ptnum), ch(&amp;quot;power&amp;quot;)), ch(&amp;quot;pscale_min&amp;quot;), ch(&amp;quot;pscale_max&amp;quot;));&lt;br /&gt;
&lt;br /&gt;
// Remove small parts - In a Foreach connected piece loop&lt;br /&gt;
@size = (getbbox_size(0).x+getbbox_size(0).y+getbbox_size(0).z);&lt;br /&gt;
&lt;br /&gt;
if(@size &amp;lt; chf(&amp;quot;taille&amp;quot;))&lt;br /&gt;
removepoint(geoself(), @ptnum);&lt;br /&gt;
&lt;br /&gt;
// Set @variant integer for Copytopoints (change objects number)&lt;br /&gt;
i@variant =floor(rand(@id)*3);&lt;br /&gt;
&lt;br /&gt;
//// Get position difference between two objects, and match animation&lt;br /&gt;
// On Rest pose object:&lt;br /&gt;
v@fixe = 0;&lt;br /&gt;
@fixe.x = getbbox_center(0).x;&lt;br /&gt;
@fixe.y = getbbox_center(0).y;&lt;br /&gt;
@fixe.z = getbbox_center(0).z;&lt;br /&gt;
// On animated object:&lt;br /&gt;
v@anim = 0;&lt;br /&gt;
@anim.x = getbbox_center(0).x;&lt;br /&gt;
@anim.y = getbbox_center(0).y;&lt;br /&gt;
@anim.z = getbbox_center(0).z;&lt;br /&gt;
// After two previous AttrWrangles:&lt;br /&gt;
v@anim_offset = point(0, 'fixe', 1) - point(1, 'anim', 1);&lt;br /&gt;
// To match animation:&lt;br /&gt;
@P = point(0, &amp;quot;P&amp;quot;, @ptnum) + point(1, 'anim_offset', 1);&lt;br /&gt;
&lt;br /&gt;
//// Blend shape through a mask attribute - Posted by Cudarsjanis on Odforce&lt;br /&gt;
// Geo with mask attribute in first input, blend shape in second&lt;br /&gt;
v@P=lerp(v@P, point(1,'P',@ptnum), f@mask*ch('blend'));&lt;br /&gt;
&lt;br /&gt;
//// Set a fixed normal attribute&lt;br /&gt;
v@z = set(0,1,0);&lt;br /&gt;
&lt;br /&gt;
//// Place at world center&lt;br /&gt;
v@P -= getbbox_center(0);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Delete small pieces ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// As seen on Sidefx forum, posted by paulboiii&lt;br /&gt;
// First create a measure SOP, set to per piece&lt;br /&gt;
&lt;br /&gt;
// Then, in an attribwrangle set on primitives&lt;br /&gt;
float threshold = chf(&amp;quot;Size_Threshold&amp;quot;);&lt;br /&gt;
if ( f@area &amp;lt; threshold ) removeprim(0,@primnum,1);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Attribute Wrangle - Copy attribute from second input ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// With same number of points on both inputs - From Bonsak on Sidefx.com&lt;br /&gt;
&lt;br /&gt;
// Copy P from second input&lt;br /&gt;
@P = v@opinput1_P;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Bounding-box - Position Reference color ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// As seen on https://houdinihelp.ru/ref/expression_cookbook.html&lt;br /&gt;
&lt;br /&gt;
// In an attribwrangle set on primitives&lt;br /&gt;
@Cd.r = relbbox(0,@P).x;&lt;br /&gt;
@Cd.g = relbbox(0,@P).y;&lt;br /&gt;
@Cd.b = relbbox(0,@P).z;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Group by uv.y ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Thanks to https://vfxbrain.wordpress.com/2019/06/14/vex-snippets-2/&lt;br /&gt;
&lt;br /&gt;
// In an attribwrangle set on points&lt;br /&gt;
if(@uv.y&amp;lt;chf(&amp;quot;seuil&amp;quot;)) @group_base = 1;&lt;br /&gt;
&lt;br /&gt;
// ALTERNATIVE&lt;br /&gt;
@uv.x&amp;lt;0.2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Specify attribute value for one point ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
if (@ptnum == 322) f@mask=1;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Pscale by Bbox Y ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
//set pscale first&lt;br /&gt;
&lt;br /&gt;
f@bboxY = relbbox(0,@P).y;&lt;br /&gt;
@pscale *= chramp(&amp;quot;rampBbox&amp;quot;,@bboxY)*4 ;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Delete primitives by height ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
if ( @P.y&amp;lt;chf(&amp;quot;seuil&amp;quot;) ) removeprim(0,@primnum,1);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Falloff geometry ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Get camOrigin&lt;br /&gt;
&lt;br /&gt;
vector pt0 = point(1,'P',0);&lt;br /&gt;
v@raydir = normalize(  pt0 - @P )*-1;&lt;br /&gt;
&lt;br /&gt;
@falloff = dot(v@raydir, @N);&lt;br /&gt;
&lt;br /&gt;
// Promote raydir in Primitives&lt;br /&gt;
&lt;br /&gt;
if ( f@falloff&amp;gt;chf(&amp;quot;seuil&amp;quot;) ) removeprim(0,@primnum,1);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Walter</name></author>
		
	</entry>
	<entry>
		<id>http://antoinevienne.fr/wiki/index.php?title=Houdini_learning&amp;diff=239</id>
		<title>Houdini learning</title>
		<link rel="alternate" type="text/html" href="http://antoinevienne.fr/wiki/index.php?title=Houdini_learning&amp;diff=239"/>
		<updated>2023-04-11T13:36:00Z</updated>

		<summary type="html">&lt;p&gt;Walter: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Houdini learning=&lt;br /&gt;
=== Center Pivot ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// In Pivot Translate in a Transform node&lt;br /&gt;
&lt;br /&gt;
centroid(0,0)&lt;br /&gt;
centroid(0,1)&lt;br /&gt;
centroid(0,2)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Delete by Connectivity attribute ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// In a Delete node, in Group (by example)&lt;br /&gt;
&lt;br /&gt;
@class=7777&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Increase Volume Density ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// In a volumewrangle&lt;br /&gt;
&lt;br /&gt;
@density *= 10;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Substract any VDB by another VDB ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// In a volumewrangle&lt;br /&gt;
&lt;br /&gt;
if (volumesample(1,&amp;quot;surface&amp;quot;,@P)&amp;lt;0)@density=0;&lt;br /&gt;
&lt;br /&gt;
//inverse:&lt;br /&gt;
&lt;br /&gt;
if (volumesample(1,&amp;quot;surface&amp;quot;,@P)&amp;gt;0)@density=0;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Get bound &amp;amp; centroid ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// In a null object&lt;br /&gt;
&lt;br /&gt;
bbox(opinputpath('.',0),D_XSIZE)&lt;br /&gt;
bbox(opinputpath('.',0),D_YSIZE)&lt;br /&gt;
bbox(opinputpath('.',0),D_ZSIZE)&lt;br /&gt;
&lt;br /&gt;
centroid(opinputpath('.',0),D_X)&lt;br /&gt;
centroid(opinputpath('.',0),D_Y)&lt;br /&gt;
centroid(opinputpath('.',0),D_Z)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== UVs ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// In this order : uvautoseam - uvflatten - uvlayout&lt;br /&gt;
In uvflatten : Seams = seams&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Kill emission on a smoke source after frame 300 ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
if (@Frame&amp;gt;300) @density = 0;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Attribfrommap - Use UDIMs images ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Replace 1001 by &amp;lt;UDIM&amp;gt; and check UDIM Filename Expansion&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Attribwrangle - Udim number on primitives attributes ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// In a wrangle set on Primitives&lt;br /&gt;
vector uv = primuv(0, &amp;quot;uv&amp;quot;, @primnum, set(0.5, 0.5, 0));&lt;br /&gt;
i@udim = 1001 + int(uv.x) + int(uv.y)*10;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Place at World center, scale et re-transform for export ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// In a transform translates&lt;br /&gt;
-centroid(0,0) -centroid(0,1) -centroid(0,2)&lt;br /&gt;
// In a transform Uniform scale&lt;br /&gt;
(bbox(&amp;quot;/obj/neigeSol/timeshift1/&amp;quot;, D_ZSIZE))/(bbox(&amp;quot;/obj/neigeSol/transform_centerWorld/&amp;quot;, D_ZSIZE))&lt;br /&gt;
&lt;br /&gt;
// At end, in a transform Uniform scale&lt;br /&gt;
1/((bbox(&amp;quot;/obj/neigeSol/timeshift1/&amp;quot;, D_ZSIZE))/(bbox(&amp;quot;/obj/neigeSol/transform_centerWorld/&amp;quot;, D_ZSIZE)))&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Misc Attr Wrangle expressions ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Delete by color&lt;br /&gt;
if (@Cd.x&amp;lt;chf(&amp;quot;seuilColor&amp;quot;))removepoint(0,@ptnum);&lt;br /&gt;
&lt;br /&gt;
// Set random pscale&lt;br /&gt;
@pscale = fit01(pow(rand(@ptnum), ch(&amp;quot;power&amp;quot;)), ch(&amp;quot;pscale_min&amp;quot;), ch(&amp;quot;pscale_max&amp;quot;));&lt;br /&gt;
&lt;br /&gt;
// Udim attr for each Udim&lt;br /&gt;
vector uv = primuv(0, &amp;quot;uv&amp;quot;, @primnum, set(0.5, 0.5, 0));&lt;br /&gt;
i@udim = 1001 + int(uv.x) + int(uv.y)*10;&lt;br /&gt;
// Next, with a Delete SOP: Group: @udim=$F - Pattern mode !*&lt;br /&gt;
&lt;br /&gt;
// Set pscale Min/Max&lt;br /&gt;
@pscale = fit01(pow(rand(@ptnum), ch(&amp;quot;power&amp;quot;)), ch(&amp;quot;pscale_min&amp;quot;), ch(&amp;quot;pscale_max&amp;quot;));&lt;br /&gt;
&lt;br /&gt;
// Remove small parts - In a Foreach connected piece loop&lt;br /&gt;
@size = (getbbox_size(0).x+getbbox_size(0).y+getbbox_size(0).z);&lt;br /&gt;
&lt;br /&gt;
if(@size &amp;lt; chf(&amp;quot;taille&amp;quot;))&lt;br /&gt;
removepoint(geoself(), @ptnum);&lt;br /&gt;
&lt;br /&gt;
// Set @variant integer for Copytopoints (change objects number)&lt;br /&gt;
i@variant =floor(rand(@id)*3);&lt;br /&gt;
&lt;br /&gt;
//// Get position difference between two objects, and match animation&lt;br /&gt;
// On Rest pose object:&lt;br /&gt;
v@fixe = 0;&lt;br /&gt;
@fixe.x = getbbox_center(0).x;&lt;br /&gt;
@fixe.y = getbbox_center(0).y;&lt;br /&gt;
@fixe.z = getbbox_center(0).z;&lt;br /&gt;
// On animated object:&lt;br /&gt;
v@anim = 0;&lt;br /&gt;
@anim.x = getbbox_center(0).x;&lt;br /&gt;
@anim.y = getbbox_center(0).y;&lt;br /&gt;
@anim.z = getbbox_center(0).z;&lt;br /&gt;
// After two previous AttrWrangles:&lt;br /&gt;
v@anim_offset = point(0, 'fixe', 1) - point(1, 'anim', 1);&lt;br /&gt;
// To match animation:&lt;br /&gt;
@P = point(0, &amp;quot;P&amp;quot;, @ptnum) + point(1, 'anim_offset', 1);&lt;br /&gt;
&lt;br /&gt;
//// Blend shape through a mask attribute - Posted by Cudarsjanis on Odforce&lt;br /&gt;
// Geo with mask attribute in first input, blend shape in second&lt;br /&gt;
v@P=lerp(v@P, point(1,'P',@ptnum), f@mask*ch('blend'));&lt;br /&gt;
&lt;br /&gt;
//// Set a fixed normal attribute&lt;br /&gt;
v@z = set(0,1,0);&lt;br /&gt;
&lt;br /&gt;
//// Place at world center&lt;br /&gt;
v@P -= getbbox_center(0);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Delete small pieces ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// As seen on Sidefx forum, posted by paulboiii&lt;br /&gt;
// First create a measure SOP, set to per piece&lt;br /&gt;
&lt;br /&gt;
// Then, in an attribwrangle set on primitives&lt;br /&gt;
float threshold = chf(&amp;quot;Size_Threshold&amp;quot;);&lt;br /&gt;
if ( f@area &amp;lt; threshold ) removeprim(0,@primnum,1);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Attribute Wrangle - Copy attribute from second input ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// With same number of points on both inputs - From Bonsak on Sidefx.com&lt;br /&gt;
&lt;br /&gt;
// Copy P from second input&lt;br /&gt;
@P = v@opinput1_P;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Bounding-box - Position Reference color ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// As seen on https://houdinihelp.ru/ref/expression_cookbook.html&lt;br /&gt;
&lt;br /&gt;
// In an attribwrangle set on primitives&lt;br /&gt;
@Cd.r = relbbox(0,@P).x;&lt;br /&gt;
@Cd.g = relbbox(0,@P).y;&lt;br /&gt;
@Cd.b = relbbox(0,@P).z;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Group by uv.y ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Thanks to https://vfxbrain.wordpress.com/2019/06/14/vex-snippets-2/&lt;br /&gt;
&lt;br /&gt;
// In an attribwrangle set on points&lt;br /&gt;
if(@uv.y&amp;lt;chf(&amp;quot;seuil&amp;quot;)) @group_base = 1;&lt;br /&gt;
&lt;br /&gt;
// ALTERNATIVE&lt;br /&gt;
@uv.x&amp;lt;0.2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Specify attribute value for one point ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
if (@ptnum == 322) f@mask=1;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Walter</name></author>
		
	</entry>
	<entry>
		<id>http://antoinevienne.fr/wiki/index.php?title=Houdini_learning&amp;diff=238</id>
		<title>Houdini learning</title>
		<link rel="alternate" type="text/html" href="http://antoinevienne.fr/wiki/index.php?title=Houdini_learning&amp;diff=238"/>
		<updated>2023-03-27T14:31:31Z</updated>

		<summary type="html">&lt;p&gt;Walter: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Houdini learning=&lt;br /&gt;
=== Center Pivot ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// In Pivot Translate in a Transform node&lt;br /&gt;
&lt;br /&gt;
centroid(0,0)&lt;br /&gt;
centroid(0,1)&lt;br /&gt;
centroid(0,2)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Delete by Connectivity attribute ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// In a Delete node, in Group (by example)&lt;br /&gt;
&lt;br /&gt;
@class=7777&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Increase Volume Density ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// In a volumewrangle&lt;br /&gt;
&lt;br /&gt;
@density *= 10;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Substract any VDB by another VDB ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// In a volumewrangle&lt;br /&gt;
&lt;br /&gt;
if (volumesample(1,&amp;quot;surface&amp;quot;,@P)&amp;lt;0)@density=0;&lt;br /&gt;
&lt;br /&gt;
//inverse:&lt;br /&gt;
&lt;br /&gt;
if (volumesample(1,&amp;quot;surface&amp;quot;,@P)&amp;gt;0)@density=0;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Get bound &amp;amp; centroid ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// In a null object&lt;br /&gt;
&lt;br /&gt;
bbox(opinputpath('.',0),D_XSIZE)&lt;br /&gt;
bbox(opinputpath('.',0),D_YSIZE)&lt;br /&gt;
bbox(opinputpath('.',0),D_ZSIZE)&lt;br /&gt;
&lt;br /&gt;
centroid(opinputpath('.',0),D_X)&lt;br /&gt;
centroid(opinputpath('.',0),D_Y)&lt;br /&gt;
centroid(opinputpath('.',0),D_Z)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== UVs ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// In this order : uvautoseam - uvflatten - uvlayout&lt;br /&gt;
In uvflatten : Seams = seams&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Kill emission on a smoke source after frame 300 ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
if (@Frame&amp;gt;300) @density = 0;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Attribfrommap - Use UDIMs images ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Replace 1001 by &amp;lt;UDIM&amp;gt; and check UDIM Filename Expansion&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Attribwrangle - Udim number on primitives attributes ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// In a wrangle set on Primitives&lt;br /&gt;
vector uv = primuv(0, &amp;quot;uv&amp;quot;, @primnum, set(0.5, 0.5, 0));&lt;br /&gt;
i@udim = 1001 + int(uv.x) + int(uv.y)*10;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Place at World center, scale et re-transform for export ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// In a transform translates&lt;br /&gt;
-centroid(0,0) -centroid(0,1) -centroid(0,2)&lt;br /&gt;
// In a transform Uniform scale&lt;br /&gt;
(bbox(&amp;quot;/obj/neigeSol/timeshift1/&amp;quot;, D_ZSIZE))/(bbox(&amp;quot;/obj/neigeSol/transform_centerWorld/&amp;quot;, D_ZSIZE))&lt;br /&gt;
&lt;br /&gt;
// At end, in a transform Uniform scale&lt;br /&gt;
1/((bbox(&amp;quot;/obj/neigeSol/timeshift1/&amp;quot;, D_ZSIZE))/(bbox(&amp;quot;/obj/neigeSol/transform_centerWorld/&amp;quot;, D_ZSIZE)))&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Misc Attr Wrangle expressions ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Delete by color&lt;br /&gt;
if (@Cd.x&amp;lt;chf(&amp;quot;seuilColor&amp;quot;))removepoint(0,@ptnum);&lt;br /&gt;
&lt;br /&gt;
// Set random pscale&lt;br /&gt;
@pscale = fit01(pow(rand(@ptnum), ch(&amp;quot;power&amp;quot;)), ch(&amp;quot;pscale_min&amp;quot;), ch(&amp;quot;pscale_max&amp;quot;));&lt;br /&gt;
&lt;br /&gt;
// Udim attr for each Udim&lt;br /&gt;
vector uv = primuv(0, &amp;quot;uv&amp;quot;, @primnum, set(0.5, 0.5, 0));&lt;br /&gt;
i@udim = 1001 + int(uv.x) + int(uv.y)*10;&lt;br /&gt;
// Next, with a Delete SOP: Group: @udim=$F - Pattern mode !*&lt;br /&gt;
&lt;br /&gt;
// Set pscale Min/Max&lt;br /&gt;
@pscale = fit01(pow(rand(@ptnum), ch(&amp;quot;power&amp;quot;)), ch(&amp;quot;pscale_min&amp;quot;), ch(&amp;quot;pscale_max&amp;quot;));&lt;br /&gt;
&lt;br /&gt;
// Remove small parts - In a Foreach connected piece loop&lt;br /&gt;
@size = (getbbox_size(0).x+getbbox_size(0).y+getbbox_size(0).z);&lt;br /&gt;
&lt;br /&gt;
if(@size &amp;lt; chf(&amp;quot;taille&amp;quot;))&lt;br /&gt;
removepoint(geoself(), @ptnum);&lt;br /&gt;
&lt;br /&gt;
// Set @variant integer for Copytopoints (change objects number)&lt;br /&gt;
i@variant =floor(rand(@id)*3);&lt;br /&gt;
&lt;br /&gt;
//// Get position difference between two objects, and match animation&lt;br /&gt;
// On Rest pose object:&lt;br /&gt;
v@fixe = 0;&lt;br /&gt;
@fixe.x = getbbox_center(0).x;&lt;br /&gt;
@fixe.y = getbbox_center(0).y;&lt;br /&gt;
@fixe.z = getbbox_center(0).z;&lt;br /&gt;
// On animated object:&lt;br /&gt;
v@anim = 0;&lt;br /&gt;
@anim.x = getbbox_center(0).x;&lt;br /&gt;
@anim.y = getbbox_center(0).y;&lt;br /&gt;
@anim.z = getbbox_center(0).z;&lt;br /&gt;
// After two previous AttrWrangles:&lt;br /&gt;
v@anim_offset = point(0, 'fixe', 1) - point(1, 'anim', 1);&lt;br /&gt;
// To match animation:&lt;br /&gt;
@P = point(0, &amp;quot;P&amp;quot;, @ptnum) + point(1, 'anim_offset', 1);&lt;br /&gt;
&lt;br /&gt;
//// Blend shape through a mask attribute - Posted by Cudarsjanis on Odforce&lt;br /&gt;
// Geo with mask attribute in first input, blend shape in second&lt;br /&gt;
v@P=lerp(v@P, point(1,'P',@ptnum), f@mask*ch('blend'));&lt;br /&gt;
&lt;br /&gt;
//// Set a fixed normal attribute&lt;br /&gt;
v@z = set(0,1,0);&lt;br /&gt;
&lt;br /&gt;
//// Place at world center&lt;br /&gt;
v@P -= getbbox_center(0);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Delete small pieces ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// As seen on Sidefx forum, posted by paulboiii&lt;br /&gt;
// First create a measure SOP, set to per piece&lt;br /&gt;
&lt;br /&gt;
// Then, in an attribwrangle set on primitives&lt;br /&gt;
float threshold = chf(&amp;quot;Size_Threshold&amp;quot;);&lt;br /&gt;
if ( f@area &amp;lt; threshold ) removeprim(0,@primnum,1);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Attribute Wrangle - Copy attribute from second input ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// With same number of points on both inputs - From Bonsak on Sidefx.com&lt;br /&gt;
&lt;br /&gt;
// Copy P from second input&lt;br /&gt;
@P = v@opinput1_P;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Bounding-box - Position Reference color ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// As seen on https://houdinihelp.ru/ref/expression_cookbook.html&lt;br /&gt;
&lt;br /&gt;
// In an attribwrangle set on primitives&lt;br /&gt;
@Cd.r = relbbox(0,@P).x;&lt;br /&gt;
@Cd.g = relbbox(0,@P).y;&lt;br /&gt;
@Cd.b = relbbox(0,@P).z;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Group by uv.y ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Thanks to https://vfxbrain.wordpress.com/2019/06/14/vex-snippets-2/&lt;br /&gt;
&lt;br /&gt;
// In an attribwrangle set on points&lt;br /&gt;
if(@uv.y&amp;lt;chf(&amp;quot;seuil&amp;quot;)) @group_base = 1;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Specify attribute value for one point ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
if (@ptnum == 322) f@mask=1;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Walter</name></author>
		
	</entry>
	<entry>
		<id>http://antoinevienne.fr/wiki/index.php?title=Houdini_learning&amp;diff=237</id>
		<title>Houdini learning</title>
		<link rel="alternate" type="text/html" href="http://antoinevienne.fr/wiki/index.php?title=Houdini_learning&amp;diff=237"/>
		<updated>2023-03-16T09:39:16Z</updated>

		<summary type="html">&lt;p&gt;Walter: /* Houdini learning */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Houdini learning=&lt;br /&gt;
=== Center Pivot ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// In Pivot Translate in a Transform node&lt;br /&gt;
&lt;br /&gt;
centroid(0,0)&lt;br /&gt;
centroid(0,1)&lt;br /&gt;
centroid(0,2)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Delete by Connectivity attribute ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// In a Delete node, in Group (by example)&lt;br /&gt;
&lt;br /&gt;
@class=7777&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Increase Volume Density ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// In a volumewrangle&lt;br /&gt;
&lt;br /&gt;
@density *= 10;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Substract any VDB by another VDB ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// In a volumewrangle&lt;br /&gt;
&lt;br /&gt;
if (volumesample(1,&amp;quot;surface&amp;quot;,@P)&amp;lt;0)@density=0;&lt;br /&gt;
&lt;br /&gt;
//inverse:&lt;br /&gt;
&lt;br /&gt;
if (volumesample(1,&amp;quot;surface&amp;quot;,@P)&amp;gt;0)@density=0;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Get bound &amp;amp; centroid ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// In a null object&lt;br /&gt;
&lt;br /&gt;
bbox(opinputpath('.',0),D_XSIZE)&lt;br /&gt;
bbox(opinputpath('.',0),D_YSIZE)&lt;br /&gt;
bbox(opinputpath('.',0),D_ZSIZE)&lt;br /&gt;
&lt;br /&gt;
centroid(opinputpath('.',0),D_X)&lt;br /&gt;
centroid(opinputpath('.',0),D_Y)&lt;br /&gt;
centroid(opinputpath('.',0),D_Z)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== UVs ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// In this order : uvautoseam - uvflatten - uvlayout&lt;br /&gt;
In uvflatten : Seams = seams&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Kill emission on a smoke source after frame 300 ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
if (@Frame&amp;gt;300) @density = 0;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Attribfrommap - Use UDIMs images ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Replace 1001 by &amp;lt;UDIM&amp;gt; and check UDIM Filename Expansion&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Attribwrangle - Udim number on primitives attributes ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// In a wrangle set on Primitives&lt;br /&gt;
vector uv = primuv(0, &amp;quot;uv&amp;quot;, @primnum, set(0.5, 0.5, 0));&lt;br /&gt;
i@udim = 1001 + int(uv.x) + int(uv.y)*10;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Place at World center, scale et re-transform for export ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// In a transform translates&lt;br /&gt;
-centroid(0,0) -centroid(0,1) -centroid(0,2)&lt;br /&gt;
// In a transform Uniform scale&lt;br /&gt;
(bbox(&amp;quot;/obj/neigeSol/timeshift1/&amp;quot;, D_ZSIZE))/(bbox(&amp;quot;/obj/neigeSol/transform_centerWorld/&amp;quot;, D_ZSIZE))&lt;br /&gt;
&lt;br /&gt;
// At end, in a transform Uniform scale&lt;br /&gt;
1/((bbox(&amp;quot;/obj/neigeSol/timeshift1/&amp;quot;, D_ZSIZE))/(bbox(&amp;quot;/obj/neigeSol/transform_centerWorld/&amp;quot;, D_ZSIZE)))&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Misc Attr Wrangle expressions ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Delete by color&lt;br /&gt;
if (@Cd.x&amp;lt;chf(&amp;quot;seuilColor&amp;quot;))removepoint(0,@ptnum);&lt;br /&gt;
&lt;br /&gt;
// Set random pscale&lt;br /&gt;
@pscale = fit01(pow(rand(@ptnum), ch(&amp;quot;power&amp;quot;)), ch(&amp;quot;pscale_min&amp;quot;), ch(&amp;quot;pscale_max&amp;quot;));&lt;br /&gt;
&lt;br /&gt;
// Udim attr for each Udim&lt;br /&gt;
vector uv = primuv(0, &amp;quot;uv&amp;quot;, @primnum, set(0.5, 0.5, 0));&lt;br /&gt;
i@udim = 1001 + int(uv.x) + int(uv.y)*10;&lt;br /&gt;
// Next, with a Delete SOP: Group: @udim=$F - Pattern mode !*&lt;br /&gt;
&lt;br /&gt;
// Set pscale Min/Max&lt;br /&gt;
@pscale = fit01(pow(rand(@ptnum), ch(&amp;quot;power&amp;quot;)), ch(&amp;quot;pscale_min&amp;quot;), ch(&amp;quot;pscale_max&amp;quot;));&lt;br /&gt;
&lt;br /&gt;
// Remove small parts - In a Foreach connected piece loop&lt;br /&gt;
@size = (getbbox_size(0).x+getbbox_size(0).y+getbbox_size(0).z);&lt;br /&gt;
&lt;br /&gt;
if(@size &amp;lt; chf(&amp;quot;taille&amp;quot;))&lt;br /&gt;
removepoint(geoself(), @ptnum);&lt;br /&gt;
&lt;br /&gt;
// Set @variant integer for Copytopoints (change objects number)&lt;br /&gt;
i@variant =floor(rand(@id)*3);&lt;br /&gt;
&lt;br /&gt;
//// Get position difference between two objects, and match animation&lt;br /&gt;
// On Rest pose object:&lt;br /&gt;
v@fixe = 0;&lt;br /&gt;
@fixe.x = getbbox_center(0).x;&lt;br /&gt;
@fixe.y = getbbox_center(0).y;&lt;br /&gt;
@fixe.z = getbbox_center(0).z;&lt;br /&gt;
// On animated object:&lt;br /&gt;
v@anim = 0;&lt;br /&gt;
@anim.x = getbbox_center(0).x;&lt;br /&gt;
@anim.y = getbbox_center(0).y;&lt;br /&gt;
@anim.z = getbbox_center(0).z;&lt;br /&gt;
// After two previous AttrWrangles:&lt;br /&gt;
v@anim_offset = point(0, 'fixe', 1) - point(1, 'anim', 1);&lt;br /&gt;
// To match animation:&lt;br /&gt;
@P = point(0, &amp;quot;P&amp;quot;, @ptnum) + point(1, 'anim_offset', 1);&lt;br /&gt;
&lt;br /&gt;
//// Blend shape through a mask attribute - Posted by Cudarsjanis on Odforce&lt;br /&gt;
// Geo with mask attribute in first input, blend shape in second&lt;br /&gt;
v@P=lerp(v@P, point(1,'P',@ptnum), f@mask*ch('blend'));&lt;br /&gt;
&lt;br /&gt;
//// Set a fixed normal attribute&lt;br /&gt;
v@z = set(0,1,0);&lt;br /&gt;
&lt;br /&gt;
//// Place at world center&lt;br /&gt;
v@P -= getbbox_center(0);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Delete small pieces ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// As seen on Sidefx forum, posted by paulboiii&lt;br /&gt;
// First create a measure SOP, set to per piece&lt;br /&gt;
&lt;br /&gt;
// Then, in an attribwrangle set on primitives&lt;br /&gt;
float threshold = chf(&amp;quot;Size_Threshold&amp;quot;);&lt;br /&gt;
if ( f@area &amp;lt; threshold ) removeprim(0,@primnum,1);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Attribute Wrangle - Copy attribute from second input ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// With same number of points on both inputs - From Bonsak on Sidefx.com&lt;br /&gt;
&lt;br /&gt;
// Copy P from second input&lt;br /&gt;
@P = v@opinput1_P;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Bounding-box - Position Reference color ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// As seen on https://houdinihelp.ru/ref/expression_cookbook.html&lt;br /&gt;
&lt;br /&gt;
// In an attribwrangle set on primitives&lt;br /&gt;
@Cd.r = relbbox(0,@P).x;&lt;br /&gt;
@Cd.g = relbbox(0,@P).y;&lt;br /&gt;
@Cd.b = relbbox(0,@P).z;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Group by uv.y ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Thanks to https://vfxbrain.wordpress.com/2019/06/14/vex-snippets-2/&lt;br /&gt;
&lt;br /&gt;
// In an attribwrangle set on points&lt;br /&gt;
if(@uv.y&amp;lt;chf(&amp;quot;seuil&amp;quot;)) @group_base = 1;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Walter</name></author>
		
	</entry>
	<entry>
		<id>http://antoinevienne.fr/wiki/index.php?title=Houdini_learning&amp;diff=236</id>
		<title>Houdini learning</title>
		<link rel="alternate" type="text/html" href="http://antoinevienne.fr/wiki/index.php?title=Houdini_learning&amp;diff=236"/>
		<updated>2023-02-03T11:26:51Z</updated>

		<summary type="html">&lt;p&gt;Walter: /* Attribwrangle - if... */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Houdini learning=&lt;br /&gt;
=== Center Pivot ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// In Pivot Translate in a Transform node&lt;br /&gt;
&lt;br /&gt;
centroid(0,0)&lt;br /&gt;
centroid(0,1)&lt;br /&gt;
centroid(0,2)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Delete by Connectivity attribute ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// In a Delete node, in Group (by example)&lt;br /&gt;
&lt;br /&gt;
@class=7777&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Increase Volume Density ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// In a volumewrangle&lt;br /&gt;
&lt;br /&gt;
@density *= 10;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Substract any VDB by another VDB ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// In a volumewrangle&lt;br /&gt;
&lt;br /&gt;
if (volumesample(1,&amp;quot;surface&amp;quot;,@P)&amp;lt;0)@density=0;&lt;br /&gt;
&lt;br /&gt;
//inverse:&lt;br /&gt;
&lt;br /&gt;
if (volumesample(1,&amp;quot;surface&amp;quot;,@P)&amp;gt;0)@density=0;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Get bound &amp;amp; centroid ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// In a null object&lt;br /&gt;
&lt;br /&gt;
bbox(opinputpath('.',0),D_XSIZE)&lt;br /&gt;
bbox(opinputpath('.',0),D_YSIZE)&lt;br /&gt;
bbox(opinputpath('.',0),D_ZSIZE)&lt;br /&gt;
&lt;br /&gt;
centroid(opinputpath('.',0),D_X)&lt;br /&gt;
centroid(opinputpath('.',0),D_Y)&lt;br /&gt;
centroid(opinputpath('.',0),D_Z)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== UVs ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// In this order : uvautoseam - uvflatten - uvlayout&lt;br /&gt;
In uvflatten : Seams = seams&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Kill emission on a smoke source after frame 300 ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
if (@Frame&amp;gt;300) @density = 0;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Attribfrommap - Use UDIMs images ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Replace 1001 by &amp;lt;UDIM&amp;gt; and check UDIM Filename Expansion&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Attribwrangle - Udim number on primitives attributes ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// In a wrangle set on Primitives&lt;br /&gt;
vector uv = primuv(0, &amp;quot;uv&amp;quot;, @primnum, set(0.5, 0.5, 0));&lt;br /&gt;
i@udim = 1001 + int(uv.x) + int(uv.y)*10;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Place at World center, scale et re-transform for export ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// In a transform translates&lt;br /&gt;
-centroid(0,0) -centroid(0,1) -centroid(0,2)&lt;br /&gt;
// In a transform Uniform scale&lt;br /&gt;
(bbox(&amp;quot;/obj/neigeSol/timeshift1/&amp;quot;, D_ZSIZE))/(bbox(&amp;quot;/obj/neigeSol/transform_centerWorld/&amp;quot;, D_ZSIZE))&lt;br /&gt;
&lt;br /&gt;
// At end, in a transform Uniform scale&lt;br /&gt;
1/((bbox(&amp;quot;/obj/neigeSol/timeshift1/&amp;quot;, D_ZSIZE))/(bbox(&amp;quot;/obj/neigeSol/transform_centerWorld/&amp;quot;, D_ZSIZE)))&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Misc Attr Wrangle expressions ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Delete by color&lt;br /&gt;
if (@Cd.x&amp;lt;chf(&amp;quot;seuilColor&amp;quot;))removepoint(0,@ptnum);&lt;br /&gt;
&lt;br /&gt;
// Set random pscale&lt;br /&gt;
@pscale = fit01(pow(rand(@ptnum), ch(&amp;quot;power&amp;quot;)), ch(&amp;quot;pscale_min&amp;quot;), ch(&amp;quot;pscale_max&amp;quot;));&lt;br /&gt;
&lt;br /&gt;
// Udim attr for each Udim&lt;br /&gt;
vector uv = primuv(0, &amp;quot;uv&amp;quot;, @primnum, set(0.5, 0.5, 0));&lt;br /&gt;
i@udim = 1001 + int(uv.x) + int(uv.y)*10;&lt;br /&gt;
// Next, with a Delete SOP: Group: @udim=$F - Pattern mode !*&lt;br /&gt;
&lt;br /&gt;
// Set pscale Min/Max&lt;br /&gt;
@pscale = fit01(pow(rand(@ptnum), ch(&amp;quot;power&amp;quot;)), ch(&amp;quot;pscale_min&amp;quot;), ch(&amp;quot;pscale_max&amp;quot;));&lt;br /&gt;
&lt;br /&gt;
// Remove small parts - In a Foreach connected piece loop&lt;br /&gt;
@size = (getbbox_size(0).x+getbbox_size(0).y+getbbox_size(0).z);&lt;br /&gt;
&lt;br /&gt;
if(@size &amp;lt; chf(&amp;quot;taille&amp;quot;))&lt;br /&gt;
removepoint(geoself(), @ptnum);&lt;br /&gt;
&lt;br /&gt;
// Set @variant integer for Copytopoints (change objects number)&lt;br /&gt;
i@variant =floor(rand(@id)*3);&lt;br /&gt;
&lt;br /&gt;
//// Get position difference between two objects, and match animation&lt;br /&gt;
// On Rest pose object:&lt;br /&gt;
v@fixe = 0;&lt;br /&gt;
@fixe.x = getbbox_center(0).x;&lt;br /&gt;
@fixe.y = getbbox_center(0).y;&lt;br /&gt;
@fixe.z = getbbox_center(0).z;&lt;br /&gt;
// On animated object:&lt;br /&gt;
v@anim = 0;&lt;br /&gt;
@anim.x = getbbox_center(0).x;&lt;br /&gt;
@anim.y = getbbox_center(0).y;&lt;br /&gt;
@anim.z = getbbox_center(0).z;&lt;br /&gt;
// After two previous AttrWrangles:&lt;br /&gt;
v@anim_offset = point(0, 'fixe', 1) - point(1, 'anim', 1);&lt;br /&gt;
// To match animation:&lt;br /&gt;
@P = point(0, &amp;quot;P&amp;quot;, @ptnum) + point(1, 'anim_offset', 1);&lt;br /&gt;
&lt;br /&gt;
//// Blend shape through a mask attribute - Posted by Cudarsjanis on Odforce&lt;br /&gt;
// Geo with mask attribute in first input, blend shape in second&lt;br /&gt;
v@P=lerp(v@P, point(1,'P',@ptnum), f@mask*ch('blend'));&lt;br /&gt;
&lt;br /&gt;
//// Set a fixed normal attribute&lt;br /&gt;
v@z = set(0,1,0);&lt;br /&gt;
&lt;br /&gt;
//// Place at world center&lt;br /&gt;
v@P -= getbbox_center(0);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Delete small pieces ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// As seen on Sidefx forum, posted by paulboiii&lt;br /&gt;
// First create a measure SOP, set to per piece&lt;br /&gt;
&lt;br /&gt;
// Then, in an attribwrangle set on primitives&lt;br /&gt;
float threshold = chf(&amp;quot;Size_Threshold&amp;quot;);&lt;br /&gt;
if ( f@area &amp;lt; threshold ) removeprim(0,@primnum,1);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Attribute Wrangle - Copy attribute from second input ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// With same number of points on both inputs - From Bonsak on Sidefx.com&lt;br /&gt;
&lt;br /&gt;
// Copy P from second input&lt;br /&gt;
@P = v@opinput1_P;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Bounding-box - Position Reference color ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// As seen on https://houdinihelp.ru/ref/expression_cookbook.html&lt;br /&gt;
&lt;br /&gt;
// In an attribwrangle set on primitives&lt;br /&gt;
@Cd.r = relbbox(0,@P).x;&lt;br /&gt;
@Cd.g = relbbox(0,@P).y;&lt;br /&gt;
@Cd.b = relbbox(0,@P).z;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Walter</name></author>
		
	</entry>
	<entry>
		<id>http://antoinevienne.fr/wiki/index.php?title=Houdini_learning&amp;diff=235</id>
		<title>Houdini learning</title>
		<link rel="alternate" type="text/html" href="http://antoinevienne.fr/wiki/index.php?title=Houdini_learning&amp;diff=235"/>
		<updated>2023-02-03T10:09:29Z</updated>

		<summary type="html">&lt;p&gt;Walter: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Houdini learning=&lt;br /&gt;
=== Center Pivot ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// In Pivot Translate in a Transform node&lt;br /&gt;
&lt;br /&gt;
centroid(0,0)&lt;br /&gt;
centroid(0,1)&lt;br /&gt;
centroid(0,2)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Delete by Connectivity attribute ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// In a Delete node, in Group (by example)&lt;br /&gt;
&lt;br /&gt;
@class=7777&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Increase Volume Density ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// In a volumewrangle&lt;br /&gt;
&lt;br /&gt;
@density *= 10;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Substract any VDB by another VDB ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// In a volumewrangle&lt;br /&gt;
&lt;br /&gt;
if (volumesample(1,&amp;quot;surface&amp;quot;,@P)&amp;lt;0)@density=0;&lt;br /&gt;
&lt;br /&gt;
//inverse:&lt;br /&gt;
&lt;br /&gt;
if (volumesample(1,&amp;quot;surface&amp;quot;,@P)&amp;gt;0)@density=0;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Get bound &amp;amp; centroid ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// In a null object&lt;br /&gt;
&lt;br /&gt;
bbox(opinputpath('.',0),D_XSIZE)&lt;br /&gt;
bbox(opinputpath('.',0),D_YSIZE)&lt;br /&gt;
bbox(opinputpath('.',0),D_ZSIZE)&lt;br /&gt;
&lt;br /&gt;
centroid(opinputpath('.',0),D_X)&lt;br /&gt;
centroid(opinputpath('.',0),D_Y)&lt;br /&gt;
centroid(opinputpath('.',0),D_Z)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== UVs ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// In this order : uvautoseam - uvflatten - uvlayout&lt;br /&gt;
In uvflatten : Seams = seams&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Attribwrangle - if... ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Kill emission on a smoke source after frame 300&lt;br /&gt;
if (@Frame&amp;gt;300) @density = 0;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Attribfrommap - Use UDIMs images ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Replace 1001 by &amp;lt;UDIM&amp;gt; and check UDIM Filename Expansion&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Attribwrangle - Udim number on primitives attributes ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// In a wrangle set on Primitives&lt;br /&gt;
vector uv = primuv(0, &amp;quot;uv&amp;quot;, @primnum, set(0.5, 0.5, 0));&lt;br /&gt;
i@udim = 1001 + int(uv.x) + int(uv.y)*10;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Place at World center, scale et re-transform for export ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// In a transform translates&lt;br /&gt;
-centroid(0,0) -centroid(0,1) -centroid(0,2)&lt;br /&gt;
// In a transform Uniform scale&lt;br /&gt;
(bbox(&amp;quot;/obj/neigeSol/timeshift1/&amp;quot;, D_ZSIZE))/(bbox(&amp;quot;/obj/neigeSol/transform_centerWorld/&amp;quot;, D_ZSIZE))&lt;br /&gt;
&lt;br /&gt;
// At end, in a transform Uniform scale&lt;br /&gt;
1/((bbox(&amp;quot;/obj/neigeSol/timeshift1/&amp;quot;, D_ZSIZE))/(bbox(&amp;quot;/obj/neigeSol/transform_centerWorld/&amp;quot;, D_ZSIZE)))&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Misc Attr Wrangle expressions ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Delete by color&lt;br /&gt;
if (@Cd.x&amp;lt;chf(&amp;quot;seuilColor&amp;quot;))removepoint(0,@ptnum);&lt;br /&gt;
&lt;br /&gt;
// Set random pscale&lt;br /&gt;
@pscale = fit01(pow(rand(@ptnum), ch(&amp;quot;power&amp;quot;)), ch(&amp;quot;pscale_min&amp;quot;), ch(&amp;quot;pscale_max&amp;quot;));&lt;br /&gt;
&lt;br /&gt;
// Udim attr for each Udim&lt;br /&gt;
vector uv = primuv(0, &amp;quot;uv&amp;quot;, @primnum, set(0.5, 0.5, 0));&lt;br /&gt;
i@udim = 1001 + int(uv.x) + int(uv.y)*10;&lt;br /&gt;
// Next, with a Delete SOP: Group: @udim=$F - Pattern mode !*&lt;br /&gt;
&lt;br /&gt;
// Set pscale Min/Max&lt;br /&gt;
@pscale = fit01(pow(rand(@ptnum), ch(&amp;quot;power&amp;quot;)), ch(&amp;quot;pscale_min&amp;quot;), ch(&amp;quot;pscale_max&amp;quot;));&lt;br /&gt;
&lt;br /&gt;
// Remove small parts - In a Foreach connected piece loop&lt;br /&gt;
@size = (getbbox_size(0).x+getbbox_size(0).y+getbbox_size(0).z);&lt;br /&gt;
&lt;br /&gt;
if(@size &amp;lt; chf(&amp;quot;taille&amp;quot;))&lt;br /&gt;
removepoint(geoself(), @ptnum);&lt;br /&gt;
&lt;br /&gt;
// Set @variant integer for Copytopoints (change objects number)&lt;br /&gt;
i@variant =floor(rand(@id)*3);&lt;br /&gt;
&lt;br /&gt;
//// Get position difference between two objects, and match animation&lt;br /&gt;
// On Rest pose object:&lt;br /&gt;
v@fixe = 0;&lt;br /&gt;
@fixe.x = getbbox_center(0).x;&lt;br /&gt;
@fixe.y = getbbox_center(0).y;&lt;br /&gt;
@fixe.z = getbbox_center(0).z;&lt;br /&gt;
// On animated object:&lt;br /&gt;
v@anim = 0;&lt;br /&gt;
@anim.x = getbbox_center(0).x;&lt;br /&gt;
@anim.y = getbbox_center(0).y;&lt;br /&gt;
@anim.z = getbbox_center(0).z;&lt;br /&gt;
// After two previous AttrWrangles:&lt;br /&gt;
v@anim_offset = point(0, 'fixe', 1) - point(1, 'anim', 1);&lt;br /&gt;
// To match animation:&lt;br /&gt;
@P = point(0, &amp;quot;P&amp;quot;, @ptnum) + point(1, 'anim_offset', 1);&lt;br /&gt;
&lt;br /&gt;
//// Blend shape through a mask attribute - Posted by Cudarsjanis on Odforce&lt;br /&gt;
// Geo with mask attribute in first input, blend shape in second&lt;br /&gt;
v@P=lerp(v@P, point(1,'P',@ptnum), f@mask*ch('blend'));&lt;br /&gt;
&lt;br /&gt;
//// Set a fixed normal attribute&lt;br /&gt;
v@z = set(0,1,0);&lt;br /&gt;
&lt;br /&gt;
//// Place at world center&lt;br /&gt;
v@P -= getbbox_center(0);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Delete small pieces ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// As seen on Sidefx forum, posted by paulboiii&lt;br /&gt;
// First create a measure SOP, set to per piece&lt;br /&gt;
&lt;br /&gt;
// Then, in an attribwrangle set on primitives&lt;br /&gt;
float threshold = chf(&amp;quot;Size_Threshold&amp;quot;);&lt;br /&gt;
if ( f@area &amp;lt; threshold ) removeprim(0,@primnum,1);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Attribute Wrangle - Copy attribute from second input ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// With same number of points on both inputs - From Bonsak on Sidefx.com&lt;br /&gt;
&lt;br /&gt;
// Copy P from second input&lt;br /&gt;
@P = v@opinput1_P;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Bounding-box - Position Reference color ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// As seen on https://houdinihelp.ru/ref/expression_cookbook.html&lt;br /&gt;
&lt;br /&gt;
// In an attribwrangle set on primitives&lt;br /&gt;
@Cd.r = relbbox(0,@P).x;&lt;br /&gt;
@Cd.g = relbbox(0,@P).y;&lt;br /&gt;
@Cd.b = relbbox(0,@P).z;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Walter</name></author>
		
	</entry>
	<entry>
		<id>http://antoinevienne.fr/wiki/index.php?title=Windows&amp;diff=234</id>
		<title>Windows</title>
		<link rel="alternate" type="text/html" href="http://antoinevienne.fr/wiki/index.php?title=Windows&amp;diff=234"/>
		<updated>2022-12-06T17:35:37Z</updated>

		<summary type="html">&lt;p&gt;Walter: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Windows=&lt;br /&gt;
=== Convert with Ffmpeg - .wav folder to .mp3===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Lots of tricks here: https://berniebernie.fr/wiki/Windows_batch&lt;br /&gt;
&lt;br /&gt;
cd C:\folder&lt;br /&gt;
for %f in (*.wav) do ( ffmpeg -i &amp;quot;%f&amp;quot; -q:a 2 &amp;quot;%~nf.mp3&amp;quot; )&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Walter</name></author>
		
	</entry>
	<entry>
		<id>http://antoinevienne.fr/wiki/index.php?title=Windows&amp;diff=233</id>
		<title>Windows</title>
		<link rel="alternate" type="text/html" href="http://antoinevienne.fr/wiki/index.php?title=Windows&amp;diff=233"/>
		<updated>2022-12-06T17:35:31Z</updated>

		<summary type="html">&lt;p&gt;Walter: /* Convert with Ffmpeg */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Windows=&lt;br /&gt;
=== Convert with Ffmpeg - .wav folder to .mp3===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Lots of tricks here: https://berniebernie.fr/wiki/Windows_batch&lt;br /&gt;
cd C:\folder&lt;br /&gt;
for %f in (*.wav) do ( ffmpeg -i &amp;quot;%f&amp;quot; -q:a 2 &amp;quot;%~nf.mp3&amp;quot; )&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Walter</name></author>
		
	</entry>
</feed>