2013年7月8日月曜日

TYGrassesSetUpTool

最近、DFさんのDF TALKの記事を参考にこんなツールを作ってみました。





TYGrassesSetUpTool from Takayuki Yanagisawa on Vimeo.

2013年7月7日日曜日

サウンドウェーブをmayaのtlanslateに持っていく

お久しぶりです。


今回は音声ファイルをmayaにもっていこうと思います。

単純に再生するだけならタイムラインにドラッグ&ドロップで出来ますが、
サウンドウェーブを使ったアニメーション等はできません。

なので今回はサウンドウェーブをmayaのtlanslateへもっていく方法を
ご紹介したいと思います。


まずは、サウンドウェーブをmayaからでも読み取れるカタチに
しなければなりませんので、今回はAfter Effectsを使いたいとおもいます。




















コンポジション設定はこんな感じです。
デュレーションは音声ファイルの長さに合わせてください。

タイムラインに音声ファイルをのっけたら
真っ黒な平面を作成し、その上に真っ白な平面を作成します。














こんな感じです。





















次に、音声ファイルを右クリックし
キーフレーム補助 → オーディオをキーフレームに変換
を実行します。









するとオーディオ振幅というレイヤーができ、
右と左と両方のチャンネルがスライダとしてキーフレームに変換されています。

次に、真っ白な平面の不透明度のストップウォッチのアイコンを
Altキーを押しながらクリックします。
すると、エクスプレッションが打てるようになります。














エクスプレッションの渦巻状のアイコンをドラッグして
スライダの上でドロップします。

では、再生してみてください。
サウンドウェーブに合わせて白黒するアニメーションができていると思います。


つまり、この白黒情報をmayaで読み取りtranslateにもっていこうという算段です。


なので、これをレンダリングします。
※注意 後でテクスチャアニメーションで読み込むので
soundWave.[###].png のように連番の前は必ず.にして下さい。

ファイルフォーマットは非可逆圧縮のpngとかをおススメします。



ここからはmayaでの作業
(maya 2013だと一部melがうまく実行されないので(バグ?)
今回はmaya 2011を使っています)














ハイパーシェードからファイルノードを作成します。

ファイルノードに先ほど作成した画像を読み込みます。






















Use Image Sequenceにチェックを入れると連番で画像を読み込んでくれます。
※注意 AEで書きだしたファイルは0から始まるので0フレーム目が
1枚目のテクスチャになっています。
これを変更したい時は紫色になっているImage Numberの
エクスプレッションを変更する必要があります。

次に、スクリプトエディタを開き以下のMELを実行します。

//////////////////////////////////////////////////////
{
    float $value[];
    string $loc[] =`spaceLocator`;
    for($i=開始フレーム;$i<=終了フレーム;$i++){
        currentTime $i;
        $value =`colorAtPoint -u 0.5 -v 0.5 -o A ファイルノード名`;
        setAttr ($loc[0] + ".ty") $value[0];
        setKeyframe ($loc[0] + ".ty");
    }

}
//////////////////////////////////////////////////////


日本語のところは半角英数字に書き換えて使ってください。

ちなみに今回の場合はこんな感じ。

//////////////////////////////////////////////////////
{
    float $value[];
    string $loc[] =`spaceLocator`;
    for($i=0;$i<=899;$i++){
        currentTime $i;
        $value =`colorAtPoint -u 0.5 -v 0.5 -o A file1`;
        setAttr ($loc[0] + ".ty") $value[0];
        setKeyframe ($loc[0] + ".ty");
    }

}
//////////////////////////////////////////////////////


実行してうまくいけばlocatorが現れ、上下に動きます。

これをスケールの値に入れたりなどして
簡単なモーショングラフィックスなんかも作れますね!



今回のMELの実行内容はこんな感じです。

float $value[];
//float型の配列を定義します

string $loc[] =`spaceLocator`;
//ロケーターを作成し、作成されたロケーター名を配列の0番目にいれます

for($i=0;$i<=899;$i++){ 実行 }
//$iの初期値(0)から$i<=899が成り立っている間ループし、毎回ループ終了後に$iに1を足します

currentTime $i;
//タイムスライダを$iに以降します

$value =`colorAtPoint -u 0.5 -v 0.5 -o A file1`;
//MELのcolorAtPointコマンドを実行し色情報を取得します(詳しくはMELコマンドヘルプへ)

setAttr ($loc[0] + ".ty") $value[0];
//ロケーターの移動Yに色情報から取得した値をいれます

setKeyframe ($loc[0] + ".ty");
//ロケーターの移動Yにキーフレームを打ちます



このブログではMELの解説等を一切してなかったので
MELってなんぞ?って方もいらっしゃるかもしれませんが
簡単に言うとMaya専用のスクリプト言語です。
繰り返し処理等をする時はとても便利です。

もし興味のある方は意外と独学でgoogle先生に聞きながらでも出来ると思いますので
チャレンジしてみてください。