選択したオブジェクトのアトリビュートにランダムなキーを打つMELを紹介します。
使い方
randomKeySelected(キーを打ちたいアトリビュート名, ランダム最小値, ランダム最大値);
というようにコマンドラインに入力して実行してください。
例えば
randomKeySelected("tx", 10, 100);
と入力すると選択しているオブジェクトのtranslateXに10から100の間のランダムな値でキーを打ちます。
以下がソースコードです。
global proc randomKeySelected(string $attrName,float $randStart,float $randEnd){
string $objList[]=`ls -sl`;
for($obj in $objList){
setAttr ($obj+"."+$attrName) `rand $randStart $randEnd`;
setKeyframe ($obj+"."+$attrName);
}
}
こんな簡単なスクリプトは説明する必要もないと思いますが、一応説明書いておきます。
string $objList[]=`ls -sl`;
ここでは$objList[]という名前のstring型の配列に選択されているオブジェクトの名前を格納しています。
for($obj in $objList){
で$objListの要素を一つずつ取り出し、$objという新しく作られる変数に代入します。
$objListの要素全てに対してforの中の処理を繰り返していきます。
選択されているオブジェクトが5個であれば、5個分繰り返すということです。
それではforの中身です。
setAttr ($obj+"."+$attrName) `rand $randStart $randEnd`;
ここでは($obj+"."+$attrName)というアトリビュートに`rand $randStart $randEnd`という値を代入します。
($obj+"."+$attrName)では$controlに格納されているオブジェクト名のアトリビュートを指します。
具体的には
オブジェクト名.アトリビュート名という文字列になります。
`rand $randStart $randEnd`
この``は、この中で実行した処理の返り値をそのまま利用するという意味です。
ここではランダムな値を返すrand関数の結果を利用します。
setKeyframe ($obj+"."+$attrName);
ここでは一つ前の処理でランダム値をセットしたアトリビュートにキーを打っています。
setKeyframe(オブジェクト名.アトリビュート名);
でオブジェクト名.アトリビュート名でキーが打たれます。
使い方
randomKeySelected(キーを打ちたいアトリビュート名, ランダム最小値, ランダム最大値);
というようにコマンドラインに入力して実行してください。
例えば
randomKeySelected("tx", 10, 100);
と入力すると選択しているオブジェクトのtranslateXに10から100の間のランダムな値でキーを打ちます。
以下がソースコードです。
global proc randomKeySelected(string $attrName,float $randStart,float $randEnd){
string $objList[]=`ls -sl`;
for($obj in $objList){
setAttr ($obj+"."+$attrName) `rand $randStart $randEnd`;
setKeyframe ($obj+"."+$attrName);
}
}
こんな簡単なスクリプトは説明する必要もないと思いますが、一応説明書いておきます。
string $objList[]=`ls -sl`;
ここでは$objList[]という名前のstring型の配列に選択されているオブジェクトの名前を格納しています。
for($obj in $objList){
で$objListの要素を一つずつ取り出し、$objという新しく作られる変数に代入します。
$objListの要素全てに対してforの中の処理を繰り返していきます。
選択されているオブジェクトが5個であれば、5個分繰り返すということです。
それではforの中身です。
setAttr ($obj+"."+$attrName) `rand $randStart $randEnd`;
ここでは($obj+"."+$attrName)というアトリビュートに`rand $randStart $randEnd`という値を代入します。
($obj+"."+$attrName)では$controlに格納されているオブジェクト名のアトリビュートを指します。
具体的には
オブジェクト名.アトリビュート名という文字列になります。
`rand $randStart $randEnd`
この``は、この中で実行した処理の返り値をそのまま利用するという意味です。
ここではランダムな値を返すrand関数の結果を利用します。
setKeyframe ($obj+"."+$attrName);
ここでは一つ前の処理でランダム値をセットしたアトリビュートにキーを打っています。
setKeyframe(オブジェクト名.アトリビュート名);
でオブジェクト名.アトリビュート名でキーが打たれます。