« 今日の植物 | トップページ | 今朝の富士山と逗子駅のツバメ »

2011年4月28日 (木)

MELスクリプト小ネタと猫画像

3DCGソフトMayaのユーザー向け、個人的によく使うMELの小ネタをいくつか。

●シーン中のマッピング等で使われている全てのファイルテクスチャ名をリストする

string $files[] = `ls -type "file"`;
string $ftn;
for($file in $files) {
   $ftn = `getAttr ($file+".ftn")`;
   print($ftn+"\n");
} 

昔のデータを引っ張り出してきたとき、そのシーンがどのフォルダ(ディレクトリ)のどんな外部画像ファイルを使っているか、ざっと目を通すのによく使います。

●選択したオブジェクトのアニメーションをランダムにシフトする

string $selected[] = `ls -sl`;
float $min = 0;
float $max = 20;
string $animCurve[];
float $v;

for($i = 0; $i < `size $selected`; $i++) {
   $animCurve = `listConnections -t "animCurve" $selected[$i]`;
   $v = `rand $min $max`;
   for($h = 0; $h < `size $animCurve`; $h++) {
      keyframe -e -iub true -r -o over -tc $v $animCurve[$h];
   } }

例えば下の左のように同じアニメーションがついた複数のオブジェクトがあり、それぞれのアニメーションをランダムにシフトしたいような場合に用います。アニメーションをシフトしたいオブジェクトを選択してスクリプトを実行します。$minと$maxで指定した値の範囲でランダムにシフトします。

●初歩的換算系プロシージャー2つ

<1>比率の計算。例えば16:9は1280:?の「?」を知りたいときなど。

proc float ratio(float $a, float $b, float $c) {

   return $c/($a/$b);

}

【使用例】

ratio(16, 9, 1280);
// Result: 720 //

<2>フレーム数を時間に換算。例えば1805フレームは何分何秒何フレームかなど。

proc string frameToTime(int $frame) {

   int $koma, $sec, $min, $s;
   $min = ceil($frame/1800);
   $s = fmod($frame, 1800);
   $sec = ceil($s/30);
   $koma = fmod($frame, 30);

   return($min+"min "+$sec+"sec "+$koma+"frame\n");

}

【使用例】

frameToTime 1805;
// Result: 1min 0sec 5frame //

猫画像。会社ではなく自宅猫のノンコとママ。

042701

人のかばんの上に当たり前のように乗っかっています。女子なのに相変わらず目つきが悪いです。薄幸そうなルックスがノンコの特徴です。

042702

ママ。

042703

042704

|

« 今日の植物 | トップページ | 今朝の富士山と逗子駅のツバメ »

CGのこと」カテゴリの記事