Render.ru

отдельный партикул

#1
Братцы! Как взять атрибуты отдельного партикула. Подскажите MEL-команду,
например для координаты.
 
#3
НАПОМНЮ! ВСЕ ЭТО ЕСТЬ В ДОКЕ!!!!! ДАВАЙТЕ НЕ БУДЕМ ЛЕНИТЬСЯ!!! >:-


КОВЫРЯЙ!!!

Testing Added Particle Attributes
By Ramsey Harris
Alias|Wavefront Santa Barbara Development Center



This script, dynTestAddAttr.mel, tests dynamics. It keyframes an added attribute called tailSize and adds it to a particle shape. The particles are emitted by a simple point emitter.

dynTestAddAttr.mel
// dynTestAddAttr.mel
//
// Alias|Wavefront Script File
// MODIFY THIS AT YOUR OWN RISK
//
//
// Creation Date: 31 May 1996; Modified 08 January 2000
// Author: rh
//
// Procedure Name:
// dynTestAddAttr
//
// Description:
// Test adding user attributes to a particle shape.
// Create a particle object, set its render type to
// streak, and add a dynamic attribute "tailSize".
// The streak render plug-in will use the attribute
// "tailSize" if it is available.
//
// Input Arguments:
// None.
//
// Return Value:
// Number of errors that occurred in the test.
//
//



//
// ========== dynTestAddAttr ==========
//
// SYNOPSIS
// Test adding user attributes to a particle shape.
// Create a particle object, set its render type to
// streak, and add a dynamic attribute "tailSize".
// The streak render plug-in will use the attribute
// "tailSize" if it is available.
//
global proc int dynTestAddAttr()
{
// First delete anything that might be left over
// from a previous test.
//
file -force -new;
currentTime -e 1;

// Create emitter and particle object.
//
emitter -type omni -r 90 -mnd 0 -mxd 0.5 -spd 5 -pos 2 0 2
-n myEmitter;
particle -n myParticle;
connectDynamic -em myEmitter myParticle;

// Set the render mode to streak and add a dynamic
// attribute for the tail size.
//
setAttr myParticleShape.particleRenderType 6; // Streak
addAttr -ln tailSize -dv 4 myParticleShape;

// Set some keyframes on the dynamic attribute.
//
setKeyframe -t 0 -v 0 -at tailSize myParticleShape;
setKeyframe -t 10 -v 1 -at tailSize myParticleShape;
setKeyframe -t 20 -v 2 -at tailSize myParticleShape;
setKeyframe -t 30 -v 5 -at tailSize myParticleShape;
setKeyframe -t 50 -v 10 -at tailSize myParticleShape;
setKeyframe -t 70 -v 5 -at tailSize myParticleShape;
setKeyframe -t 90 -v 1 -at tailSize myParticleShape;
setKeyframe -t 100 -v 0 -at tailSize myParticleShape;

// Check for correct tail size at start of test.
//
//
currentTime -e 0;
int $errors = 0;
float $tailSize = `getAttr myParticle.tailSize`;
if ( $tailSize != 0 ) // Warning Magic#
{
print( "dynTestAddAttr: Failure: Start of test: The tail "
+ "size ("+ $tailSize + ") should be 0.\n" );
$errors += 1;
}

// Set up the playback options.
//
float $frames = 50;
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);

// Check for correct tail size at middle of test.
//
$tailSize = `getAttr myParticle.tailSize`;
if ( ($tailSize < 9.9) || ($tailSize > 10.1) ) // Warning Magic#
{
print( "dynTestAddAttr: Failure: Frame 50: The tail size ("
+ $tailSize + ") should be about 10.\n" );
$errors += 1;
}

// Print the frames per second (fps) in the form X.X of subtest.
//
print( "dynTestAddAttr: Subtest 1. (" + (int)($fps * 10)/10.0 +
" fps)\n");

// Set up the playback options.
//
$frames = 100;
playbackOptions -min 1 -max $frames -loop once;
currentTime -e 1;

// 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.
//
$startTime = `timerX`;
play -wait;
$elapsed = `timerX -st $startTime`;
$fps = ($elapsed == 0.0 ? 0.0 : $frames/$elapsed);

// Check for correct tail size at end of test.
//
$tailSize = `getAttr myParticle.tailSize`;
if ( $tailSize > 0.1 )
{
print( "dynTestAddAttr: Failure: End of test: The "
+ "tail size (" + $tailSize + ") should be close to 0.\n");
$errors += 1;
}

// If there are no errors, the addAttr passed this test.
//
if ( $errors == 0 )
print( "dynTestAddAttr: Passed. (" );
else
print( "dynTestAddAttr: Failed. (" );

// Print the frames per second (fps) in the form X.X.
//
print((int)($fps * 10)/10.0 + " fps)\n");

// Reset the current time to zero so user can replay the test.
//
currentTime -e 1;
return $errors;

} // dynTestAddAttr //
 
#4
Применительно к объекту, состоящему из нескольких частиц:
$selected = `ls -sl`;
$particle = $selected[0];
$countAttr = ($particle+".count");
$count = `getAttr $countAttr`;
for ($i=0; $i<$count; $i++)
{
////// Get the per Particle Position ///////
select ($particle+".pt["+$i+"]");
$partPos = `getParticleAttr -at position`;
////////////////////////////////////////////

print $partPos; // prints
}

Применительно к одной частице этого объекта (его название к примеру
particle1):

select -r particle1.pt[2]; getParticleAttr -at pos;


смотрите http://www.jackals-forge.com/bible/bibPAR8.html
 
Сверху