2013年3月14日木曜日

チャンネルボックスからエクスプレッション制御する方法

エクスプレッションを打ったあと、数値を変更するのが面倒な時ありますよね。

今回はそんなメモです。



CreationとRuntime afterとRuntime beforeで同じエクスプレッションを打ち込む事が時々ありますが、たまに数値を片方入力し忘れる事があるので、これを統一化する方法です。

以下に手順を記載します。


・Add Dynamic AttributesのGeneralをクリック。
・Long nameにRadiusmaxと打つ。
・Date TypeをVectorにしてAttribute TypeをPer Particle(array)にしてAdd initial state attributeにチェックを入れてOK。

・同じ手順でRadiusminを作成。

この二つがrand関数の最大値と最小値になります。
radiusmaxとradiusminの名前は解ればなんでも良いです。

以下のようなエクスプレッションを打ち込む。

----------------------------------------

radiusmin = 0.001;
radiusmax = 1;


if (frame == 1)
    seed(1);


radiusPP = (randradiusmax,radiusmin);

----------------------------------------

こうすればradiusminとradiusmaxの値を変えるだけでよくなります。
ただそれでも毎回エクスプレッションエディタを開かなくてはいけないので面倒ですよね。

手順が少し増えますが、チャンネルボックスでrand関数を調整するやり方もあります。


・対象のParticleを選択し、channel boxでEdit>Add attributeを選択。
・Long nameにradiusMaxと入力し、Date TypeをFloatにしてOK
・同じようにradiusMinを作成。
※これを入力してrand関数をいじくりたいと思います。

・radiusMaxを選択してEditからexpressionを選択。
エクスプレッションエディタが表示されるので、Select Object and Attributeの部分をコピー
・radiusmaxにコピーしたものを入れ込んでください。
 以下に例を記載します。

----------------------------------------


radiusmax = radiusMax; //左がアトリビュートの値で、右がチャンネルボックスの値です。
radiusmin = radiusMin;


if (frame == 1)
seed(1);


radiusPP = rand(radiusmax,radiusmin);

----------------------------------------

こうすればチャンネルボックスの値からrand関数を調整する事が出来ます。


エクスプレッションを扱う方々には当然の知識かと思いますが、これから勉強する人や勉強中の方に知って頂ければと思いメモ致しました。

いやまぁ、当然自分が忘れっぽいのでその為でもありますが。。。

0 件のコメント:

コメントを投稿