MAYAメモログ
Amebaでブログを始めよう!
1 | 2 | 3 | 4 | 5 | 最初次のページへ >>

gridの状態を保存する

■背景などの大きなシーンの作成と、細かいオブジェクトの作成をやっていると

グリッドを切り替えることが多くなります(私は・・・)。

で、毎回オプションを設定しなくていいように、今のgrid設定を保存するMELがほしかったのです。


デフォルトだとScriptEditorにMayaはコマンドを返してくれないのでオプションを -q しました。



↓スクリプト↓

//saveGridOptionToShelf.mel
//command : saveGridOptionToShelf

global proc saveGridOptionToShelf()
{
	string $flags[10] = {"-da","-dab","-ddl","-dgl","-dol","-dpl","-olp","-plp","-s","-sp"};
	string $flag;
	string $values[10];
	int $i = 0;
	for($flag in $flags)
	{
		$values[$i] = `grid -q $flag`;
		$i++;
	};
	string $script = ("grid " +
	     $flags[0] + " " + $values[0] +
	     $flags[1] + " " + $values[1] +
	     $flags[2] + " " + $values[2] +
	     $flags[3] + " " + $values[3] +
	     $flags[4] + " " + $values[4] +
	     $flags[5] + " " + $values[5] +
	     $flags[6] + " " + $values[6] +
	     $flags[7] + " " + $values[7] +
	     $flags[8] + " " + $values[8] +
	     $flags[9] + " " + $values[9] + ";");
	scriptToShelf ("grid", $script, 1);
	//print $script; //上の行をコメントにして、この行を使えば ScriptEditor に出力するだけにもできる
}

アニメータ AndrewGordon のBLOG:SplineDoctors

  SplineDoctors

今年のMasterClassで講師をやっていた ドクター・ゴードンのブログですが、内容がすごく面白い!
ブロッキングどうやってる?とか、ポリッシュってどうよ?とか、アニメーションをつけるにあたっての哲学が書かれていたりします。
私はつい最近までブロッキングもポリッシュも知らずに、なんとなーくしかやっていなかったけど、いざ言葉として認識できると、なんかこう目標が明確になるような気がしてそれだけでアニメーションが上手くなったような気に・・・(これは本当にただの気のせいなんだけど・・・)


英語だし記事もたくさんあるけど、なんとか全部読みたい。。
時間がかかりそうですが、、、

podCast用の有名アニメーターへのインタビューなどもあります。ゴードンがインタビューしている。
中にはDr.エド・カットマル(Pixarの生みの親だ!)やブラッドバードなどへのインタビューもあったり、Pixar好き、というかCGアニメーターとしてはかなり興味深いブログです。

render codec を毎回入力しなくて良いスクリプト

※今のところMobu2009じゃないと機能しません・・・。

■File->Render でムービーを書き出す

このときMotionBuilderではなぜか圧縮方式を毎回聞いてくる・・・。

たいていの場合一度圧縮形式を決めたら、それを変更することはないので、

これは面倒くさい。


なんとか以前の設定を使ってレンダリングできないものかと、pythonスクリプトを調べてみると・・・


■codecExamples.py

サンプルファイルに codecExamples.py を発見。

中を覗くと、どうやら一度目はcodecの設定画面が出るが、二度目以降は以前の設定でレンダーするというもの。


これだ!


ただ、AVI形式が指定される点、一度は必ず設定を聞かれる点が不満。

二度目以降は常に同じ設定でレンダーをしてくれる仕様にしたい。


というわけで、ちょこっと書き換えました。

ボタンだけだけど、ついでにUIも作ってみた。


■ポイント


  mgr = FBVideoCodecManager()

  mgr.VideoCodecMode = FBVideoCodecMode.FBVideoCodecStored


ポイントは FBVideoCodecStored というオプション。以前レンダーをした時に記憶した設定を利用するようになる。

FBVideoCodecAsk というオプションもあり、こちらは毎回 codec を聞いてくる。


■codecStoredRender.py

レンダー設定はオリジナルUIで行い、レンダーのみ作ったUIのボタンで行うという、プログラムとしてはスマートじゃない感じになったけど、売り物でもないし、、、、いいか。


以下スクリプト↓


from pyfbsdk import *
from pyfbsdk_additions import *
import sys

####################
##  Main Scripts  ##
####################
def renderUseSameSetting(control, event):
    try:
        mgr = FBVideoCodecManager()
        lApp = FBApplication()
        
        if (control.Caption == "Render Movie"):
            print "Render video with previous settings."
            mgr.VideoCodecMode = FBVideoCodecMode.FBVideoCodecStored
            lOptions = FBVideoGrabber().GetOptions()
            lApp.FileRender( lOptions )
        else:
            print "Render video with new settings."
            mgr.VideoCodecMode = FBVideoCodecMode.FBVideoCodecAsk
        
    except Exception, e:
        FBMessageBox( "ERROR", "Unknown error encountered. Aborting! " + str(e), "OK", None, None )

#################
##  Create UI  ##
#################
def PopulateLayout(mainLyt):
    x = FBAddRegionParam(5,FBAttachType.kFBAttachLeft,"")
    y = FBAddRegionParam(0,FBAttachType.kFBAttachTop,"")
    w = FBAddRegionParam(-5,FBAttachType.kFBAttachRight,"")
    h = FBAddRegionParam(-5,FBAttachType.kFBAttachBottom,"")
    mainLyt.AddRegion("main","main", x, y, w, h)
    lyt = VBoxLayout()
    mainLyt.SetControl("main",lyt)
    
    label = FBLabel()
    label.Caption = "- Use [File>Render] for set options."
    lyt.Add(label,15)
    
    b = FBButton()
    b.Caption = "Render Movie"
    b.Justify = FBTextJustify.kFBTextJustifyCenter
    lyt.AddRelative(b)
    b.OnClick.Add(renderUseSameSetting)

def CreateTool():
    # Tool creation will serve as the hub for all other controls
    t = CreateUniqueTool("Render +CodecStoring")
    t.StartSizeX = 200
    t.StartSizeY = 100
    PopulateLayout(t)
    ShowTool(t)    

CreateTool()

#END OF SCRIPT#

<追記>

HTMLの <pre> タグを覚えました。

プログラムのインデントなどがこれで見やすくなったかな。

特に python ではインデントでブロック管理するみたいで、pre が無いとコピペしてもエラーが出てしまいます。

だいたい必要なものって用意されているものですね。

1 | 2 | 3 | 4 | 5 | 最初次のページへ >>