過去記事で紹介してない他のTips
いつも使用するわけではなく、時間があるならエミッターから直したほうが良くなります。
基本データは前の記事を参照
DOP後にCluster番号を再設定する
DOPで計算されるとエミットした順番に"dopbject"のパラメーターができます。
DOPまでのパス:Cluster番号
前回の記事をベースにすると、”エミットする順番=Cluster番号”となっているので、
このdopobjectを書き換えて各FieldにCluster番号を再設定する。
Primitive Wrangleで以下のようにVEXを書く
string cluster = prim(0,"dopobject",@primnum); string clusArray[] = split(cluster,":"); i@cluster = atoi(clusArray[1]) -1;
この方法を使用すると、エミッターとシムの結果のCluster番号が一致するので、
後から一部のClusterのエミッターだけ調整したり、一部だけDOPを分岐して処理を変える等が容易にできます。
Cluster Pointからアトリビュートを転送する
以下のようにネットワークを組んで転送する
シムのCluster番号をPointにPromoteするのは、Attribute CopyのMatch by Attributeで、Clusterを指定するため
restは上の方で作っています。前回の記事では作っていないので注意
最初のフレームを消す
転送後に転送した"emit"アトリビュートを使用することで、シムの最初のフレームのエミッターの形がまるわかりになってしまっている部分を削除できる。
ただしそのまま消すと1f減ってしまうので、エミット自体を1フレーム早めるなどの処理をするほうがいい。
早める場合は過去記事のこの部分にTimeshiftを挟む
不正なPointができることがあるので消す
スケールでエミットのインパクトを強調する
clusterアトリビュートを使用したForで以下のTransofrmを処理する
この処理をすると3Dモーションブラーはそのままではかけれないので注意。
Transformノードに以下3つのパラメーターを追加する
- intのimpactframe
- intのduration
- min/max float
impactframeにPointから転送してきたemitアトリビュートを入れる
point(0,0,"emit",0)
durationはスケールし切るまでのフレーム数
min/maxは大きさの最大最小値
Pivot Transformには転送してきたrestをいれる
point(0,0,"rest",0) point(0,0,"rest",1) point(0,0,"rest",2)
Uniform Scaleには以下をいれる
fit($F, ch("impact"), ch("impact")+ch("dur"), ch("sclmin"), ch("sclmax"))