4つトバシて、3ds Max 2012!

3ds Max Ver.9からバージョン4つとばしてver.2012です。max9を使うこと約5年、ようやく新しいバージョン使えます。

サブスクリプション契約の必要なかったやろ…4バージョンもとばしたのにたいして変わってない無いのもビックリです。使ってくうちに良くなったトコロ分かってくるんでしょうけど。

War Machine by Grant Warwick

制作用のPCには難なくインストールできましたが、問題はネットワークレンダリングまわり。

あまり参考にはならないと思いますが、お役に立てば。
続きを読む “4つトバシて、3ds Max 2012!”


Maya Backburner 2 こうなるハズ

自分の書いたMELを変更するかAutodeskの「performExportToBackburner.mel」を変更するか悩みましたが。結局自分のを変更することに。

シーンファイルのコピーをレンダリングするよーに。(選択可)
レンダリング範囲はMayaのレンダリング設定ではなく、プレイバックスライダを参照。
タスクサイズの変更。レンダラの選択。

ぐらいは実現する予定。ちゅーことでUIは追加してみた…。

一番の目的はジョブを投げたら、制作PCの電源を切ってもいいようにすることです。外部参照もレンダリングするシーンも出力画像もNASへってこと。

あと、この期におよんでなのですが、昔のmelスクリプトに不具合がありました。

string $serverGroupName = "maya7";

とありましたが、ここを別のサーバグループに書き換えても変わらないよーになってました。55行目を

string $UIServerGroupName = `textFieldGrp -editable true -label "Server Group Name" -text $serverGroupName UIServerGroupName`;

としていただければちゃんと動きます。修正したファイルをおいておきます。失礼しました。

htNetRenderViaBb_v11


Maya Backburner再び?

ライセンスマネージャ周りの問題もあっさり解決していただいて、只今ネットワークレンダリングPCへMayaをインストール中。眠い!

BackburnerマネージャやWebモニタも最新版に入れ替える必要があるのかなと思ってましたが、古いBackburner(2007.0.2)で全然問題なしですね。コマンドとタスクファイルを送るだけなので当たり前か?ってかやっぱり(いまだに)CommandLineTools経由なんだ?

左がAutodesk製、右がhTaka製

いまさら何言うとんねんって感じですが、初めてAutodesk製のMayaからBackburnerを使いました。全てのプラットフォーム対応していて、あとメール通知設定がありますね。僕が作った「htNetRenderViaBb.mel」との違いはその辺かな。

また、Autodesk製のほうはレンダリング出力先の設定がありませんね。Mayaの設定を参照しているようです。「プロジェクトパス + imageパス」ってぐあいに連結して出力先を決定するようになっています。

テストレンダリングをして気づきましたが、これにはちょっと落とし穴があって、「imageパス」をUNCパスにしてもプロジェクトパスとの連結を必ずしてしまうので思い通りの出力先になってくれません。プロジェクトパス以下の相対パスへしか出力できない仕様です。htNetRenderViaBb.melのほうはMayaの設定とは別に設定しますのでこれを一応解決できてます。

Autodesk製のほうを改良されたいなら「Maya2012¥scripts¥others¥performExportToBackburner.mel」の217行目から219行目あたり

string $imagesDir = `workspace -q -fileRuleEntry "images"`;
if($imagesDir != "")
    $exportSysCmd = $exportSysCmd + " -rd \\\"" + $projectPath + "/" + $imagesDir + "\\\"";

ここにimageパスがUNCパスなら$projectPathは無視するよう分岐を追加してやればいけるハズです。ただしUNCパスはWindowsのみに通用するものなので、キレイなコードにしたいなら環境がWindowsである場合の条件分岐「if(`about -windows`)」もお忘れなく。

これから本格的にMayaを使うようになるなら「htNetRenderViaBb.mel」もアップデートしますよ。
(数年の沈黙を破って?!)


MAX2AE

一段落したと思ったらすぐに次のお仕事。大忙しっ!

さて、欲しいな〜と思ったけど$250もするんですね、MAX2AE。高すぎってことで、自分で作る準備です。探せばどなたかが公開されてるんでしょうけどね。

まずは基本的なところから位置の取得、例えば15フレーム目のpoint01の位置を知りたければ、

at time 15 in coordsys world $point01.pos

これをスタートからエンドまでループさせれば、ノードのワールド座標は簡単に取得できますね。

for i=animationRange.start to (animationRange.end - animationRange.start) do (
	print ("frame " + (i as string)+ ":" + (at time i in coordsys world $point01.pos) as string)
)

カメラの書き出しですが、AfterEffectsのカメラはターゲット付きなので、maxのフリーカメラを書き出したい場合、カメラのZ方向と「ターゲットまでの距離」を使って適当なターゲット位置を計算します。

if superClassOf selection[1] == camera do
(
	case classOf selection[1] of
	(
		Freecamera:
			(
				td = selection[1].baseObject.targetDistance
				tartgetPos = [selection[1].dir.x * -1 * td + selection[1].pos.x , selection[1].dir.y* -1 * td + selection[1].pos.y, selection[1].dir.z * -1 * td + selection[1].pos.z ]
			)

		Targetcamera:
			(
				tartgetPos = selection[1].target.pos
			)
	)
)

あとはカメラのFOVやロール角を書き出せばOKかな。

ちなみに、レンズフレアエフェクト等の位置参照用に、スクリーン座標を知りたい場合は、

p = selection[1].pos * viewport.getTM()
screen_topLeft = mapScreenToView [0,0] (p.z) [RenderWidth,RenderHeight]
screen_bottomRight = mapScreenToView [RenderWidth,RenderHeight] (p.z) [RenderWidth,RenderHeight]
world_size = screen_topLeft - screen_bottomRight
x_aspect = RenderWidth/(abs world_size.x)
y_aspect = RenderHeight/(abs world_size.y)
screenPos = point2 (x_aspect*(p.x - screen_topLeft.x)) (-(y_aspect*(p.y - screen_topLeft.y)))

です。アクティブビューポートとレンダリングサイズを元にピクセルで結果(screenPos)を取得できます。


Offset Layer Start Time

粗編されてる方に電話したら作業中、、、明日朝もらって月曜朝までにフィニッシュ出来るかな?

さて、レイヤーのスタート時間をずらしたい、1″6’22fの2秒半後は何時?テンパって作業してると単純な計算さえままならないので、簡単なスクリプトを突貫で作りました。レイヤーをドラッグ中「情報」パレットに「Δ」として表示されるんですけどね。

hTAEUtilityPalette

レイヤーを選択(複数も可)してオフセット時間を入力してボタンを押すだけ。in点では無くってスタート時間がオフセットされます、キーフレームも一緒についてくるって事です。上では時間を正しくコロンで記述していますが、「2.15」としてもかまいません。

ホントは選択したキーだけオフセットもやりたいんですが、またおいおいね。スクリプトがエラそうな名前なのは以後ゴテゴテと機能追加してくためです。初めてUIを持ったスクリプトを作りましたけど、これでええんかなぁ。

ちなみに、「Shift+Alt+j」で時間指定の代わりに「+」をつければ現在時刻をその分だけ移動できます。

これやってからShift押しながらレイヤーをドラッグしてスナップかけても良いんですが、おかしなところにスナップしたりしますもんね。