Render.ru

Ротейт с оффсетом

#1
В общем как сделать чтобы ряд объектов поворачивался одной операцией. Первый например на 2 градуса, следующий на 4, следующий на 6... или например в в геометрической прогрессии ?

Через Driven Key можно вроде только напрямую связывать 1:1 , так ?
 

Ghostfly

Активный участник
Рейтинг
19
#2
скриптом. например имя одного обьекта.translateY=имя другого.translateY*2
 
#3
Это типа как в Learning Maya про мячик ? Честно пытался сделать так же - не вышло. Попробую еще раз.
 
Рейтинг
29
#5
//simple time offset

string $root[];
string $express_X;
string $express_Y;
string $express_Z;

$root =`ls -sl`;

addAttr -keyable true -ln offset -at double -dv 5 $root[0];


//creating a text of expressions (converting strings to a text)


$express_X = $root[1]+".rotateX = `getAttr -t (frame-"+$root[0]+".offset) "+$root[0]+".rotateX`;";

$express_Y = $root[1]+".rotateY = `getAttr -t (frame-"+$root[0]+".offset) "+$root[0]+".rotateY`;";

$express_Z = $root[1]+".rotateZ = `getAttr -t (frame-"+$root[0]+".offset) "+$root[0]+".rotateZ`;";


//adding expressions


expression -s $express_X;

expression -s $express_Y;

expression -s $express_Z;
 
#6
Очень плохой экспрешн Вы написали... Использование мел-комманд в экспрешенах это очень очень дурной стиль... а использование getAttr вообще не рекомендуется....
 
#7
А я задачку решала не дома, забыла условие, поэтому на экспрешенах сделала анимацию и колбасинг... Жалко добру пропадать... Повешу как есть :о)))

string $expNam = "rotateX"; // имя атрибута и название эксперешена
float $rotAn = 10; // поворот объекта за фрейм
float $rtAn = 0; // поворот 1-ого выделенного объекта в 0 кадре
float $delt = 30; // разница в повороте между объектами в 0 кадре
string $my[]; //массив с названиями выделенных объектов
$my = `ls -sl`;
int $amount = size ($my);

for ($i=0; $i<$amount; $i++)
{
string $ob = $my[$i] + "." + $expNam;
string $obExp = "if (frame<1) {" + $ob + " = " + $rtAn + ";}" + "\n" + "else {" + $ob + " = " + $ob + "+" + $rotAn + ";};";
// текст экспрешена
expression -s $obExp -n $expNam; // создание экспрешена

$rtAn = $rtAn + $delt;
// вот оно, поворот каждого следующего выделенного объекта на какой-либо
// градус в 0 кадре, арифметическая прогрессия, панимаешь...
//если $rtAn = $rtAn *$delt, получится само сoбой геометрическая
//прогрессия...
}

это для того, чтобы все-все эти бесконечные экспрешены убить одним махом. :о)))
delete -all -e;

З.Ы. Если чуть переписать можно вместо анимации в зависимости от фреймов устроить поворот объектов в зависимости от первого выделенного.
 
Сверху