« C4D ThinkingParticlesで遊んでみようと思ったけど、忘れてしまっていた… | トップページ | C4D Python R12 テスト:C4D ThinkingParticlesとC4D Pythonと試行錯誤-1 »

C4D ThinkingParticlesをホンの少しだけ再確認…TPGeneratorとPPass

C4D ThinkingParticlesを少しだけ確認する。

そうかぁ、ThinkingParticlesはC4D Studioのみなんだね…
ごめん、今回は具体的に何かを作るわけではないので…
確認するだけ…

パーティクルグループをいくつか作成する…
3個のパーティクルグループを適当に作って…

Python_tp_04

パーティクルグループを追加したら、カラーの設定も忘れずに… 習慣付けておいた方がいいのかな…

次に一般的なTPジェネレータ… 標準パーティクルと同じようにパーティクルを放出するPStormを追加する…

Python_tp_05

放出してるね…

TPジェネレータのPStormから放出されたパーティクルにパーティクルグループを設定してみる。
パーティクルグループを設定しないと、自動的にルートの「All」グループに設定されるよ。

Python_tp_06

グループ.1に設定し直したのでパーティクルの表示色が赤になったね…

PStormの設定を少し変更するよ。

Python_tp_17

タイプは円のままでもよかったんだけど… 長方形にしました…
生成タイプはショットにしたよ… 1フレーム進むたびにパーティクルが1個放出される…
有効期間というのはパーティクルの寿命で、放出されて30フレームで消滅するんだよ…

では、ThinkingParticles設定ダイアログでフレームを進めながらパーティクル数を確認してみる…
設定ダイアログで、グループ.1が選択されていなければグループ.1を選択してね…

Python_tp_18

60フレームで止めましたが…
パーティクル数は、29フレームまで1個づつ増えているね… それ以降は増えていない事が確認できたね。
29フレーム以降パーティクル数が増えないのは、寿命が30フレームなので、1個づつ消滅しますが、ジェネレータからの1個づつの放出は続いていますので、差し引き0という事だね。

1フレームづつ進めるには、マウス操作でアニメーションツールバーの1フレーム送るボタンを使ってもいいし、キーボードの「G」を使ってもいいし…

では、パーティクルの放出を10フレームから20フレームの間だけにしてみるよ。

Python_tp_19

定数:ブール値が…
0~9フレームは、FALSE
10~19フレームは、TRUE
20フレーム以降は、FALSEになっているね。
それに伴なってジェネレータからパーティクルが放出されているのを確認できたよね。

グループ.1のパーティクル数は、10フレーム~19フレームまで増加し40フレームから減少。
49フレームで0になったのが確認できたと思う。

ここまでの作業は、パーティクルが生成されると自動的にALLグループに設定されるので、生成された直後にグループ「ALL」から「グループ.1」へ変更しているんだよ。

さてと…
ジェネレータの「パーティクル生成」から出力されるパーティクルは、放出された直後のみで、グループ全てのパーティクルを取得するには、「PPass」ノードを使うんだよ。

例えばね、標準パーティクル用のモディファイヤ「タービュランス」見たいに、フレームが進むたびにパーティクルの進行方向を変えようと考えているのに…

Python_tp_20

これだけだと、放出された最初の1回だけしか方向を設定されないので、単純に放射状に広がるだけだよね…

ちなみに、PVelocityはパーティクルに移動方向(速度)を設定するノードですね。

Python_tp_21

フレームが進むたびに違う方向に設定するならば、PPassを使ってグループの全てのパーティクルを取得する必要があるね。

Python_tp_22

久々に組んだんで、適切なのか自信は無いね…
適当すぎ?
PPassの出力は、上「TP Particle」、下「番号」です。

Python_tp_23

パーティクルグループは「All」です。

PGetDataノードは、パーティクルに設定されている位置/回転/大きさなどを取り出すために使うノードですね。

ところで…
PStorm等のジェネレータや他のTPノードの出力で「TP Particle」がありますけど…
C.O.F.F.E.E.ノードの整数型で受け止めることができるんだよ。

Python_tp_27

Pythonノードだと、パーティクルIDと整数でね…

Python_tp_28

C.O.F.F.E.E.ノードで受け止めてみるよ…
それでコンソールに表示してみる。

Python_tp_24

PStormの出力「TP Particle」とPPassの出力「TP Particle」それぞれをC.O.F.F.E.E.ノードの整数で受け取ってみた…

Python_tp_25

0~13フレームまで確かめてみた。
これを見るとGeneratorの番号とPPassの最後の番号が一致しているね。
と、いう事は…
PPassの出力は、本当にグループ内の全てのパーティクルを出力しているようだね。
放出されたばかりのパーティクルを除外する事なく…

次の確認は、意味は無いと思うけど…
TP ParticleをC.O.F.F.E.E.ノードに整数型で入力し、整数型の出力でPGroupにつなぐ…
C.O.F.F.E.E.コードは…

C.O.F.F.E.E.
main()
{
Output1 = Input1;
}

そのまま、スルーアウトさせてみた。

Python_tp_26

C.O.F.F.E.E.ノードの整数型とPGroupのTP Particleは、つなぐ事ができないのだね…

C.O.F.F.E.E.ノードを試したのだから、Pythonノードも試してみようか…
Pythonノードの入力も「整数」にしたよ…

Python_tp_29

Python_tp_30

C.O.F.F.E.E.ノード同様、PPassはグループ内のパーティクルを出力しているんだね…
問題は、なさそうだ…

Pythonノードで整数型でのスルーアウトも試しておく…

Python
import c4d
#Welcome to the world of Python


def main():
    global Output1
    Output1 = Input1

Python_tp_31

C.O.F.F.E.E.ノード同様、Pythonノードの整数出力はPGroupで受け取れない…
そもそもPGroupは、整数入力はできないので、C.O.F.F.E.E.ノードとかPythonノードとかの問題じゃないね…
試す必要は無かったね…

じゃあPythonノードで「パーティクルID」で入出力を試してみる。
入力されたTP Particleをそのまま表示し、ついでにタイプも表示させてみる。

Python
import c4d
#Welcome to the world of Python


def main():
    global Output1
    print Input1, type(Input1)
    Output1 = Input1

Python_tp_32

問題なくつながりました。
パーティクルグループも問題なく、グループ.1に設定されています。
ただし…
Pythonノード内で入力されたTP Particleは整数扱いになっているね…

と、いう所かな…

今回は、このぐらいの確認で良いかな…
あまり重要ではない確認だったかな…

|

« C4D ThinkingParticlesで遊んでみようと思ったけど、忘れてしまっていた… | トップページ | C4D Python R12 テスト:C4D ThinkingParticlesとC4D Pythonと試行錯誤-1 »

コメント

コメントを書く



(ウェブ上には掲載しません)




« C4D ThinkingParticlesで遊んでみようと思ったけど、忘れてしまっていた… | トップページ | C4D Python R12 テスト:C4D ThinkingParticlesとC4D Pythonと試行錯誤-1 »