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先生に聞きながらでも出来ると思いますので
チャレンジしてみてください。

2013年6月1日土曜日

フェースにコンストレインする

今回は、動画でチュートリアルを作ってみました。
試験的にささっと作ったので見にくかったり、
分かりにくかったりするかもしれませんがご容赦下さい。


さて今回は、フェースにコンストレインするという事ですが
用途は、服にボタン等のオブジェクトが付いている場合等に使えると思います。

服のボタンはスキンウェイトを振るとオブジェクトが伸びてしまうが
骨にコンストレインすると位置がずれる・・・
なんて状況ありますよね?



ちなみに先に書いておきますが今回の肝は
アトリビュートの転送です。
これを使ってUV座標からワールド座標に追従させます。
まぁ見てもらえば分かると思いますが。


ただ今回は最近発見したばっかりで簡単な検証しかおこなっておりません
もし不具合などありましたらコメント頂けると嬉しいです。



face constraint tutorial from Takayuki Yanagisawa on Vimeo.


質問や感想等ありましたらコメントお願いします!