prism/examples/prism-mel.html

138 lines
3.3 KiB
HTML

<h2>Comments</h2>
<pre><code>// This is a comment</code></pre>
<h2>Strings</h2>
<pre><code>"This is a string"
"foo \"bar\" baz"</code></pre>
<h2>Numbers</h2>
<pre><code>42
3.14159
0xA2F</code></pre>
<h2>Variables</h2>
<pre><code>$x
$floaty5000
$longDescriptiveName
$name_with_underscores
$_line
float $param;
int $counter;
string $name;
vector $position;</code></pre>
<h2>Arrays, vectors and matrices</h2>
<pre><code>string $array[3] = {"first\n", "second\n", "third\n"};
print($array[0]); // Prints "first\n"
print($array[1]); // Prints "second\n"
print($array[2]); // Prints "third\n"
vector $roger = &lt;&lt;3.0, 7.7, 9.1>>;
vector $more = &lt;&lt;4.5, 6.789, 9.12356>>;
// Assign a vector to variable $test:
vector $test = &lt;&lt;3.0, 7.7, 9.1>>;
$test = &lt;&lt;$test.x, 5.5, $test.z>>
// $test is now &lt;&lt;3.0, 5.5, 9.1>>
matrix $a3[3][4] = &lt;&lt;2.5, 4.5, 3.25, 8.05;
1.12, 1.3, 9.5, 5.2;
7.23, 6.006, 2.34, 4.67>></code></pre>
<h2>Commands</h2>
<pre><code>pickWalk -d down;
string $mySelection[] = `ls -selection`;
setAttr ($mySelection[0]+".particleRenderType") 5;
addAttr -is true -ln "spriteTwist" -at "float" -min -180 -max 180 -dv 0.0 blue_nParticleShape;</code></pre>
<h2>Full example</h2>
<pre><code>// From http://help.autodesk.com/view/MAYAUL/2015/ENU/?guid=Example_scripts_Dynamics_Time_Playback
// Alias Script File
// MODIFY THIS AT YOUR OWN RISK
//
// Creation Date: 8 May 1996
// Author: rh
//
// Description:
// Playback from frame 0 to frame &lt;n> and return the
// the playback rate in frames/sec. If a negative frame
// count is given, this indicates silent mode. In silent
// mode, no output is printed.
//
// This version is intended for use in batch tests of dynamics.
// It requests particle and rigid body positions every frame.
//
// RETURN
// Frame rate in frames/sec
//
global proc float dynTimePlayback( float $frames )
{
int $silent;
// Get the list of particle shapes.
//
string $particleObjects[] = `ls -type particle`;
int $particleCount = size( $particleObjects );
// Get the list of transforms.
// This will include rigid bodies.
//
string $transforms[] = `ls -tr`;
int $trCount = size( $transforms );
// Check for negative $frames. This indicates
// $silent mode.
//
if ($frames &lt; 0)
{
$silent = 1;
$frames = -$frames;
}
else
{
$silent = 0;
}
// Setup the playback options.
//
playbackOptions -min 1 -max $frames -loop "once";
currentTime -edit 0;
// Playback the animation using the timerX command
// to compute the $elapsed time.
//
float $startTime, $elapsed;
$startTime = `timerX`;
// play -wait;
int $i;
for ($i = 1; $i &lt; $frames; $i++ )
{
// Set time
//
currentTime -e $i;
int $obj;
// Request count for every particle object.
//
for ($obj = 0; $obj &lt; $particleCount; $obj++)
{
string $cmd = "getAttr " + $particleObjects[$obj]+".count";
eval( $cmd );
}
// Request position for every transform
// (includes every rigid body).
//
for ($obj = 0; $obj &lt; $trCount; $obj++)
{
string $cmd = "getAttr " + $transforms[$obj]+".translate";
eval ($cmd);
}
}
$elapsed = `timerX -st $startTime`;
// Compute the playback frame $rate. Print results.
//
float $rate = ($elapsed == 0 ? 0.0 : $frames / $elapsed) ;
if ( ! $silent)
{
print( "Playback time: " + $elapsed + " secs\n" );
print( "Playback $rate: " + $rate + " $frames/sec\n" );
}
return ( $rate );
} // timePlayback //</code></pre>