« C4D ThinkingParticles パーティクルを粉砕して散らす…「PFragment」-03 | トップページ | C4D XPresso[ランダム]ノードが出力する実数値 »

C4D ThinkingParticles PAgeノードの簡単なテスト

「PAge」ノードはパーティクル1粒1粒のライフタイムにブール値を発生させるものです。
時間、グループ間移籍等が対象です。

簡単で、さほど重要ではないテストなので、必要の無いユーザは飛ばしてください。

「PAge」ノードには、「生成」「消滅」「グループに入る」「相対」「絶対」と5種類のタイミングでブール値を発生する事ができます。

今回のテストは、下に示した左から右へパーティクルを各項目で1粒づつ飛ばします。
パーティクルの寿命は全て同じ60fです。

「グループに入る」には、パーティクルの軌道の途中にポリゴンが配置されていて、衝突すると他のグループに移籍します。
その他の項目は、「PAge」単体で指定できます。

「PAge」がOnを出力すると、赤い球体がグローのライトに変わります。

Page_01

まずは、テストの為の C4D ThinkingParticlesの構成です。

「生成」です。
Page_02

パーティクルグループ「A」に設定しいます。
「PStorm」で0フレームに1粒だけ放出します。
「PAge」で「生成」のOnに「PSape」でライトが指定されます。

Page_07

Offの時は球体が指定されるよう「ブール反転」をしています。
この設定は、他の項目も同じように処理をしました。

「消滅」
Page_03

「消滅」はグループ「B」です。
仕組みは、「生成」と同じです。

Page_08

「グループに入る」
Page_04

放出直後はグループ「C1」に所属させ、ポリゴンに衝突すると「C2」へ移籍します。
「球体」と「ライト」の切り替えは「生成」と同じです。
「C1」「C2」の「PAge」は共に「グループに入る」が指定されています。

Page_09

「相対」
Page_05

「相対」は、グループ「D」です。
仕組みは「生成」と同じです。

Page_10

「絶対」
Page_06

「絶対」は、グループ「E」です。
仕組みは「生成」と同じです。

Page_11

パーティクルグループの構成です。

Page_12

今回は複雑な事をしないので、あまり重要ではありません。

では、テストを始めます。

0Fの地点です。
Page_13

「生成」がOnになりました。
他はOffです。
「グループに入る」がオブジェクトが適用されていません。
On/Offどちらでもないのでしょうか…?
理論上では、新たにグループに所属した瞬間にOnが発生するはずなのですが、ジェネレータで放出直後は例外なのでしょうか…?

1Fの地点です。
Page_14

全てがOffのようです。
「グループに入る」にオブジェクトが適用されています。
0Fでの事象は、後ほど…

~17Fまで変化なし。

18Fの地点です。
Page_15

「グループに入る」がポリゴンに衝突して、他のクループに移籍しOnが発生しました。

19Fの地点です。
Page_16

「グループに入る」がOffになりました。

20Fの地点です。
Page_17

「絶対」がOnになりました。

~23Fまで変化なし。

24Fの地点です。
Page_18

「相対」もOnになりました。
「絶対」はOnのままです。

30Fの地点です。
Page_19
絶対の指定は20F~30Fまでです。
30FまでがOnの状態という事ですね。
「相対」はOnのままです。

31Fの地点です。
Page_20

「絶対」がOffになりました。
「相対」はOnのままです。

~42Fまで変化なしです。

43Fの地点です。
Page_21

全てがOffになりました。
確認が残っている項目は「消滅」のみです。

~58Fまで変化なしです。

59Fの地点です。
Page_22

全てがOffのままです。

60Fの地点です。
Page_23

全てが消滅しました。
パーティクルが消滅したので、オブジェクトを割り当てても意味がありません。
この方法では、「消滅」のブールは確認できません。

消滅の確認は、保留とします。
他「生成」「相対」「絶対」は問題ありませんでした。
「グループに入る」は0F以外問題ありませんでした。

では、この「グループに入る」の0Fでの事象は、仕様なのか?それとも不具合なのか?それとも、間違った使用方法をしているのか?
これを確認します。

「グループに入る」のThinkingParticlesに、確認の為のC.O.F.F.E.E.ノードを追加します。

Page_24

C.O.F.F.E.E.ノードは、入力された値をコンソールに表示させる為だけのものです。
「結果」ノードでも可能だと思いますが。

main()
{
  println("frame: " , fm);
  println(bool_1 ," ", bool_2);
}

これで、0Fに戻して、1フレームづつコマ送りしていきます。

frame: 1
0 1
frame: 2
0 1
frame: 3
0 1
frame: 4
0 1
frame: 5
0 1

0Fが出力されません。

C.O.F.F.E.E.ノードを「C2」側に繋いで見ます。

Page_25

0Fに戻して同じように1フレームづつ…

 
 

何も表示されず…

どうやら、「C2」にパーティクルが1粒も存在しないと、この回路自体が働かないのだろう。
グループ間を移籍する付近17Fからコマ送りをして見ます。

frame: 18
1 0
frame: 19
0 1
frame: 20
0 1
frame: 21
0 1
frame: 22
0 1

17Fは表示されず、18Fから表示が開始された。
ブール値も間違えはありません。
やはり、パーティクルが存在しないと、回路自体が働かないようで…

そうすると、0Fのグループ「C1」には、パーティクルが存在しないのか…?

まさかね…
以前取り上げた、XPressoタグ内のノードの実行順に問題があるのかな…

ジェネレータ「PStorm」で生成される前に「PPass:C1」が実行されているのだろう…

タグ内の実行順は指定できないので、XPressoタグを割る事になりますが。

Page_26

Page_27_2

XPressoタグ順で実行順が操作できるので、問題が解消できそうです。

では、0Fへ移動しコマ送りし確認します。

frame: 0
1 0
frame: 1
0 1
frame: 2
0 1
frame: 3
0 1
frame: 4
0 1

ブールの値も正常に表示されています。

0Fの地点です。
Page_28

結果も問題ありません。

ジェネレータと他の処理は、同じXPressoタグ内に格納しない方が良いんだね…
なるほどね…

では、今回の「PAge」テストファイルです。

Page_29

ジェネレータとグループ処理は、テスト前には同じXPressoタグに格納されていましたが、テスト後それぞれ2つに割りました。

「PAge.ZIP」

|

« C4D ThinkingParticles パーティクルを粉砕して散らす…「PFragment」-03 | トップページ | C4D XPresso[ランダム]ノードが出力する実数値 »