パーティクルのConserveを下げて、
エクスプレッションなのでConserveの影響は受けないからだ。
タイムワープの効果を出すためにパーティクルの速度を落としても、これではおかしい。
余計に目立つ。
以前、if分を使って、
----------------------------------------
まずif文を使う
ポリゴンのTorusを作成してz軸を回転させるためのエクスプ
pTorus1.rotateZ += 0.1;
これをフレーム300に達したとき回転を変えるようにしたいので、
まずフレーム300に達したときにフレーム数をプリントするエクスプ
if (frame > 300){
$frame = frame;
print ($frame+"\n");
}
これはちゃんと動いたのでif文をちゃんと機能させられることが
次にこれを回転を変えるために用いてみる。
----------------------------------------
テスト1:
フレーム300に到達したらpTorus2のz軸の回転を0.
それ以外(この場合は1-299)は回転は1。
if (frame > 300){
pTorus1.rotateZ += 0.1;
}
else
{pTorus1.rotateZ += 1;}
テスト2:
フレーム300~599の間はZ軸の回転を0.1にする。
それ以外(1~299と600以降)の回転は1。
if (frame > 300 && frame < 600){
pTorus1.rotateZ += 0.1;
}
else
{pTorus1.rotateZ += 1;}
pTorus1.rotateZ += 0.1;
}
else
{pTorus1.rotateZ += 1;}
----------------------
では実際のパーティクル・エクスプレッションで試してみる。
前準備:
インスタンサーを追加し、パーティクル単位アトリビュートに
rotPPという名前のアトリビュートをvectorで作成し、
<Creation>
particleShape1.rotPP=rand(0,
<Runtime before dynamics>
particleShape1.rotPP += 10;
InsatncerセクションのRoationOptionにあ
ーーーーーーーーーーーーーーーー
このRuntimeのほうをさきほどのif文と同じようにしてや
if (frame > 300 && frame < 600){
particleShape1.rotPP += 1;
}
else
{particleShape1.rotPP += 10;}
----------------------------------------
うまくいったが、
フレーム数を変更しやすくするために変数を使うように修正。
// put time warp start/end frames.
int $start = 30;
int $end = 60;
if (frame > $start && frame < $end){
particleShape1.rotPP += 1;
}
else
{particleShape1.rotPP += 10;}
今回はこれでなんとか動作してくれるものができたし、これで支障がないので終わりとする。
本来ならスピードが落ちるまでの時間を調整し、徐々にスピードが落ちるところまで表現したいところなので、それはまた次回までの課題とする。
0 件のコメント:
コメントを投稿