スクリプト作成: Bret A. Hughes(Autodesk(旧 Alias)Santa Barbara Development Center)
以下のスクリプト dynFuncBoundary.mel は、メッシュ プレーンのパーティクルのコリジョン境界をテストします。スクリプトでは、プレーンの上にある球体の上にエミッタを作成します。放射されたパーティクルが球体やプレーンに衝突して跳ね返る度合は、重力の大きさに左右されます。
// dynFuncBoundary.mel
//
// Alias Script File
// MODIFY THIS AT YOUR OWN RISK
//
// Creation Date: 09 September 1996; Modified 08 January 2000
// Author: bah
//
// Procedure Name:
// dynFuncBoundary
//
// Description:
// Creates scene to test the particle collision boundary for a mesh
// plane.
//
// Input Arguments:
// None.
//
// Return Value:
// None.
//
//
// ========== dynFuncBoundary ==========
//
// SYNOPSIS
// Creates scene to test the particle collision boundary for
// a mesh plane.
//
global proc dynFuncBoundary()
{
// Clear the scene and reset the timeline.
//
file -f -new;
currentTime -e 1;
// Display information to the user about what to expect from this
// subtest and give some time for the user to read this information.
//
print( "\nParticles fall and collide with ball and plane.\n" );
system( "sleep 1" );
// Create the bottom plane.
//
nurbsPlane -name plane;
scale 7.01291 7.01291 7.01291;
rotate 0rad 0rad -1.5708rad;
move 0 0.2 0;
// Create the ball above the plane.
//
polySphere -name ball;
scale 1.20479 1.20479 1.20479;
move 0 2.7 0;
// Create the emitter above the ball and plane. Make the particles
// affected by gravity and have them bounce off the ball and the
// bottom plane.
//
emitter -type omni -r 100 -mnd 0 -mxd 0.7 -spd 1 -pos 0 5 0 -name emitter;
particle -name particles;
connectDynamic -em emitter particles;
gravity -dx 0 -dy -1 -dz 0 -m 9.8 -pos 10 10 0 -name gravity;
connectDynamic -f gravity particles;
collision -r 0.50 -f 0.14 plane;
collision -r 0.50 -f 0.14 ball;
connectDynamic -c plane -c ball particles;
// Make the picture a pretty one and play the test.
//
select -r particles;
selectMode -component;
hide plane ball;
// Set up the playback options.
//
float $frames = 150;
playbackOptions -min 1 -max $frames -loop once;
// Time how long it takes to play the scene and then determine the
// playback frame rate. Make sure when getting the frame rate
// that no values are divided by zero.
//
float $startTime = `timerX`;
play -wait;
float $elapsed = `timerX -st $startTime`;
float $fps = ($elapsed == 0.0 ? 0.0 : $frames/$elapsed);
// Print the frames per second (fps) of the subtest in the form X.X.
//
print("dynFuncBoundary: Done. (");
print( (int)($fps * 10)/10.0 + " fps)\n" );
} // dynFuncBoundary //