PFのイベントを整理するスクリプト

max2017のparticle flowだとシンクロ機能使ってもeventがきちんとレイヤーごとに整理されずなんぞこれーという感じだったので解決策をupします。

というかググってPFのイベントを整理するスクリプトをネットで見つけたけど動かなかったので改造して勝手に公開しちゃいますスミマセーン。

PF_MoveratorK

実行するとPFごとにeventsのレイヤーを振り分けて整理します。

プレイバックPart0

CG自習部屋
http://cgjishu.net/blog-entry-153.html
のAriさんの作成したMAYAストップウォッチ&タイミングメーカースクリプトの告知ツイートを見た友人のツイッターのつぶやきに触発されて作った

MAX版ストップウォッチスクリプト。
stopwatch

ほぼAriさんのパクリです。yes indeed. Japanese DOGEZA.

スタート押してラップボタンポチポチしてキーフレーム付きポイント作成します。

最初にタイミングのアタリをつけてみたい、「ちょっとまって playback playback」な時にご利用ください。

AngleUIを使ってみたかったのです。あとリアルタイム時間計測系を試してみたかった。中身は色々と恥ずかしいのでご了承ください。リンクは下記。

StopWatch_1.0.zip

 

自分のスクリプトの方は、煮るなり焼くなり3DCOAT版を作ってなんとなく時間を計ってみたり大量にプリントして壁紙にしたり原子力発電所の計測器にしてみるなど自己責任の上でご自由にご利用ください。

よろしくおねがいいたします。

末代まで選択してやる

子供を全部選択したい時があるじゃないですか。人生には。

maxのctr+pgDnでは非表示になった子供が選択できないので、スクリプトを探っていたんですが

select $box001/…*

で名前入れるとできるようです。ついったーで一度間違って書いてたorz
これだとbox001の部分を名前ごとに書き換えるのがめんどいので、
ネットで見つけたサンプルを改造して

fn getTheChildren obj:selection includeParent:false = 
(
	theChildren = #()
	for c in obj do
	(
		join theChildren (execute ("$'" + (c.name)+"'/"+(if includeParent then "" else "*/")+".../*"))
	)
	theChildren
)

select (getTheChildren includeParent:true)
select (getTheChildren())

というfnにしてみました。
includeParent:true をつけると親も選択、つけないと子供のみ、です。

あとmaxscriptでシーン内の一番上のルートだけを選択するマンにも出会ったんですが
select $/*
ってエディターだとコメントアウトになってしまう罠にかかったのでコメント返し
select $/* –*/
にしてみました。

massFXのtimescale

久々ですね年の瀬ですね。

 

maxのmassFXシミュレーションでスローとか可変とかする時にどうするのかわかったのでメモ。
ちょっとテクニカルむけ。

まず前提として、
元々、massFXやmParticles、rayfireなどのツールでは物理演算のエンジンとしてphysxというものを使用してるので、
根本的な動きの精度や制限はほぼ同じはずなんです。
maya,max,SIがどれもレンダーはmentalray使ってるけど乗せ方の違いとかで出来る事に差が出てるような感じのアレ。

逆に言うと、同様のエンジンなのでシミュレーションの精度やなんかの限界みたいのにぶち当たったら、別口でこれらを試しても根本的にエンジンが変わらないので解決できないかもー、とかそんな判断も出来ます。
ちなみにornatrixのベースのヘアダイナミクスとかもphysxです。調べてみたらblur等はそっち使わずcloth方式にしてるそうです。
(この辺り使用しているエンジンの問題なのかソフト単体の問題なのか切り分けて考えられるとイイデスネ。TPとかICEは物理エンジン複数積んでるので使い分けられたり。

 

で話を戻して、mParticleではスキニングしたオブジェクトのコリジョンができたりraifireの方ではシミュレーション中のスローとか出来たりとか、その辺りの差が出てくるのは制限の中で工夫してたり、実はphysxエンジンではできるけどなにがあったかUIに乗せてないとかあるっぽいのですが(適当
physxの仕様自体にはタイムスケールあるらしいから、出来るんじゃないかなー(願望)
とmaxフォルダの中見てたらありました。

C:\Program Files\Autodesk\3ds Max 2014\stdplugs\stdscripts\(MassFX)

px_globals.ms

この中の776行目辺りに

local delta = 1.0/frameRate

というなんかそれっぽい記述が。1.0決め打ち・・!
で、実際にこの値を制御できるように

my_tracks = newTrackViewNode “K_Physx”
test_ctrl = bezier_float()
addTrackViewController my_tracks test_ctrl “TimeScale”

でトラックビューにパラメーター追加して、スクリプトの方は

local delta = (trackViewNodes[“K_Physx”][“TimeScale”].value)/frameRate

って改造したパラメーターを参照するようにしてみたら

デキマシタワー!

パラメーターアニメーションさせれば途中からスローみたいな処理もできた。massFXクロスの方にも適応されます。
ちなみにシミュレーションのサブステップ数とか精度の問題で、スローにした時と早送りで結果がずれる事もありますからご留意ください
あと、massFXのシミュレーションはベイクされるので、シミュかける作業用PCだけ対応しておけば
レンダー時のマシンは元のpx_globals.msのままで大丈夫です。

不要になってコントローラ消したい時は
deleteTrackViewNode trackViewNodes trackViewNodes[“K_Physx”]
で消えますので、テストで作っちまっただああああというときはこちらで。

上のはシーン直にパラメータ追加してみてますが
要は1.0のとこをどうにかすればいいので
みなさま使いやすいように改造してみてください。

 

ちなみにですが、これと似た感じでmaxのクロスもトラックビュー開いてみるとtimescaleのパラメーターがあって、
いじって見るときちんと反応します。
ただこちらはアニメーションには対応していないようで、ちょっとUIから隠れてるのはその辺りのせいかなーと。

massFXの改造も自分では使えていますが環境とかシーンとか何かしか問題出る可能性は残ってるので、
いつも通り自己責任で試してみてください。
px_globals.msを書き換える前に元ファイルどっかにとっておくとか諸々。

AE置き換えスクリプト微更新(2.22に更新)

AEスクリプトを更新しました。
今度はムービーファイルの置き換えに対応。
あと、初期設定を_t01から_v01に変えました。
t派の人ごめんなさい。主義主張の違いによるジハードは勘弁してください。ちなみに私はたけのこ派です。

ReplaceFootages_2.24.zip

 

ファイル内の文字を「_v01」で検索して、「_t01」とかに置き換えてみるのも、
スクリプトをちょっと改造して使いやすくする第一歩みたいな感じでオススメです。
更に進んでいいかんじに改造できましたら、むしろ逆にそっちを使わせてくださいお願いします。

あとやっぱりスクリプトページをつくった方がいいぽいですね・・

追記
ばぐあったー(^q^)

ので更新しました。リンク先ファイルを2.2から2.21に置き換え。
再DLをお願いいたします。
きのこ派の呪い軽ーくしかテストしてなかったせいですねorz

再追記
まだだ!まだ終わらんよ!(バグ潰しが
再再更新しました。
異なる開始フレームの連番が静止画として置き換えられてしまうバグを修正。
あひゃー

 

再更新

2.24 何かバグか何かあったのかもう忘れたけど微妙に更新してたのでついでにアップ