« C4D 少しガッカリさせられた「ランダム」ノード… | トップページ | C4D ThinkingParticles ポリゴンオブジェクト内にパーティクルを配置する。 »

C4D ThinkingParticles 簡単なスプラインエミッタを作ってみる -02「ごめんなさいスプラインエミッタ」…

いったいどこに目を付けているのだろうか…
相変わらず、自分の目は節穴だね…

普通なら気付くはずなのに、全く気付かず…

「ランダム」ノードの出力に「正規化ベクトル」がある事なのだ…
気付かなかったので前回の「C4D ThinkingParticles 簡単なスプラインエミッタを作ってみる」の記事で「放射状のランダム正規化ベクトル」XGroupを作ってしまったのだ…

「ランダム」ノードに出力「ベクトル」を追加したときに気付いてもおかしくないのにね…
C.O.F.F.E.E.のRandomクラスしか使っていなかったせいだろう…

修正すると…

Splineemi_30

「万能」ノードでの正規化が不必要になります。

これで、C4D R11.5Demoでは問題が解消されます。
「SplineEmi_04.ZIP」

それでも、C4D R9.5/C4D R10.5Demo/C4D R11.0Demoでは、スプライン上の一点から集中的に放出されるのは変わりません。

R9.5
Splineemi_31

生成されたパーティクルからランダムシードを使って、位置とベクトルを取得しているので、放出ベクトルも同じものが適用されています。

でも、妙だなぁ…生成されたパーティクルから取得したランダムシードが「ランダム」ノードの範囲外だと言う事になる。
R11.0以下は…
R11.5からは範囲内…?
と言うことは、TPジェネレータが生成するパーティクルのランダムシードに問題があるのだろうか?

スプラインエミッタ内で、何が起きているのか確認してみよう。
C4D R11.0Demoで作業します。

「ランダム」ノードに入力されている「ランダムシード」と「ランダム」ノードの出力「実数」をコンソールに表示してみます。

「SplineEmi_05.ZIP」

Splineemi_32

main()
{
  println(it , " " , ft);
}

---- 0 ----
69069 -0.253999
475628534 0.355551
1129920459 0.019733
772999772 0.914357
1730348409 0.864458
1674351794 0.849474
1662200407 -0.797180
2044158072 0.833932
1641506277 0.049502
797919022 -0.143114
596140963 0.379245
1156259412 0.285974
1059494673 -0.151765
584849258 0.034011
786050991 0.439569
1221861360 0.171753
929943805 0.422713
1200308582 -0.221233
507288187 0.878837
1692139852 -0.926137
1904931753 -0.974435
1850655010 -0.353643
369258503 0.047017
799809128 -0.560679
147369749 0.938935
1756254878 -0.690861
6896723 0.938388
1755943748 -0.706904
2139778881 -0.312607
415461850 0.102124
---- 1 ----
858082143 -0.583663
621886432 0.780285
1253597229 -0.999936
313875158 -0.815328
195930411 -0.169268
1423160380 -0.999936
1642819033 -0.999936
1274349970 -0.999936
1313350071 -0.999936
2066831448 -0.999936
5850181 -0.560379
339294734 -0.007186
1406484739 -0.999936
924206132 -0.999936
41963377 0.073349
1413113930 -0.999936
1381782287 -0.999936
2000049104 -0.999936
211008349 -0.087593
1311690822 -0.999936
1280795611 -0.999936
1978213164 -0.999936
1705473033 -0.999936
1543925250 -0.999936
1925136231 -0.999936
1489374792 -0.999936
865871221 0.608258
1734802814 -0.999936
98005427 0.079522
268448036 0.680922
---- 2 ----
63650721 0.387128
392690362 0.530513
12207807 0.139680
1367500736 -0.999936
1282597517 -0.999936
1880007094 -0.999936
463784587 -0.999936
1271615004 -0.999936
1390544441 -0.999936
1602874994 -0.999936
1896007959 -0.999936
1820934200 -0.999936
577000101 -0.999936
1965989102 -0.999936
1362808419 -0.999936
1458985492 -0.999936
2146317265 -0.999936
1043540266 -0.999936
289023599 -0.432747
1710520240 -0.999936
109630909 0.525990
69979942 -0.242800
1606475067 -0.999936
1441346828 -0.999936
1484661865 -0.999936
1766230754 -0.999936
1835908807 -0.999936
1918496296 -0.999936
289721301 -0.018278
507975774 -0.999936
---- 3 ----
1938446099 -0.999936
1665646340 -0.999936
1680619521 -0.999936
776139674 -0.999936
1704391199 -0.999936
1984660384 -0.999936
331912429 -0.999936
471685270 -0.999936
1503042539 -0.999936
2138167292 -0.999936
773770905 -0.999936
1304642386 -0.999936
1931157623 -0.999936
769071128 -0.999936
965775621 -0.999936
19361742 -0.973010
1561398211 -0.999936
1879269364 -0.999936
1049118769 -0.999936
1191074314 -0.999936
508275151 -0.999936
1141279632 -0.999936
1508188189 -0.999936
1060781574 -0.999936
1422984859 -0.999936
257177324 -0.414050
1143407817 -0.999936
323426242 -0.999936
602271271 -0.999936
1516224008 -0.999936
---- 4 ----
2035982901 -0.999936
1778819902 -0.999936
1624894579 -0.999936
200817892 0.389560
1841652833 -0.999936
1368153210 -0.999936
1251167615 -0.999936
6590336 0.170394
2068936525 -0.999936
1520009078 -0.999936
1473977675 -0.999936
406802908 -0.999936
1941554937 -0.999936
1641613362 -0.999936
1751721943 -0.999936
454221816 -0.999936
58064741 0.384408
1121694382 -0.999936
1689254179 -0.999936
162878932 0.731257
1365675153 -0.999936
1892940522 -0.999936
409525551 -0.999936
1013223280 -0.999936
121674365 0.480675
823270630 -0.999936
1407180795 -0.999936
1755457740 -0.999936
783947049 -0.999936
1933579426 -0.999936
---- 5 ----
536857991 -0.999936
1791983080 -0.999936
259369109 -0.999936
56466974 -0.724659
287191507 -0.999936
1871293124 -0.999936
2041495745 -0.999936
293352794 -0.999936
75978975 -0.101715
1489341280 -0.999936
698714541 -0.999936
1262163542 -0.999936
1422544555 -0.999936
2058075068 -0.999936
801828697 -0.999936
50543890 -0.291204
1355079479 -0.999936
204773336 -0.999936
162307525 0.968931
553870734 -0.999936
24090243 0.364541
1736719284 -0.999936
1470169329 -0.999936
1508641738 -0.999936
174702735 -0.207630
1980138320 -0.999936
1530086621 -0.999936
1735093190 -0.999936
826632539 -0.999936
1682639532 -0.999936

最初の0Fは、まともなランダム値を出力していますが、1F以降-2174783647~2174783647範囲外でもないのに、同じ数値-0.999936を出力しています。

時間が進むたび増えていきます。

0F
Splineemi_33

30F
Splineemi_39

60F
Splineemi_40

コンソールに表示された5Fまでの数値を見ると、小さい「ランダムシード」だけが変化しています。
まさか、

時間が進むたびに範囲が狭まっているのだろうか…

では、このランダムシードを1/100にしてみよう。

「SplineEmi_06.ZIP」

Splineemi_41

これで、ランダムシードを1/100にしました。
再生してみます。

---- 0 ----
690 -0.652514
4756285 -0.746397
11299204 0.130262
7729997 0.539170
17303484 0.358753
16743517 0.338521
16622004 0.522134
20441580 0.218407
16415062 -0.789517
7979190 0.568639
5961409 0.773829
11562594 -0.927039
10594946 0.828501
5848492 -0.489615
7860509 0.934422
12218613 -0.728277
9299438 -0.505723
12003085 -0.592227
5072881 -0.381195
16921398 -0.219256
19049317 0.660303
18506550 -0.253531
3692585 0.830548
7998091 -0.215544
1473697 0.099426
17562548 -0.976820
68967 -0.260560
17559437 0.822999
21397788 -0.273017
4154618 0.551061
---- 1 ----
8580821 0.854198
6218864 -0.852090
12535972 -0.064014
3138751 -0.968188
1959304 0.418345
14231603 -0.654607
16428190 -0.832908
12743499 0.419215
13133500 -0.535739
20668314 0.854125
58501 0.894294
3392947 0.819976
14064847 -0.756359
9242061 0.355116
419633 -0.579335
14131139 -0.379881
13817822 0.578086
20000491 0.323098
2110083 0.019120
13116908 0.867183
12807956 0.508415
19782131 0.144119
17054730 -0.763765
15439252 0.373134
19251362 -0.934604
14893747 0.987698
8658712 -0.953800
17348028 -0.854643
980054 -0.859203
2684480 -0.073166
---- 2 ----
636507 -0.266107
3926903 -0.204720
122078 0.691418
13675007 -0.552186
12825975 -0.342400
18800070 -0.146638
4637845 0.356301
12716150 -0.723361
13905444 -0.413947
16028749 0.288914
18960079 -0.056099
18209342 0.925215
5770001 0.778717
19659891 -0.979334
13628084 0.758438
14589854 -0.158509
21463172 -0.460124
10435402 -0.713463
2890235 -0.734553
17105202 -0.727189
1096309 -0.324701
699799 -0.452497
16064750 -0.440741
14413468 0.623951
14846618 0.221630
17662307 -0.324755
18359088 -0.196406
19184962 0.343293
2897213 -0.550123
5079757 0.697335
---- 3 ----
19384460 -0.304237
16656463 0.692164
16806195 -0.996957
7761396 -0.220309
17043911 0.628918
19846603 0.706392
3319124 -0.205802
4716852 0.134227
15030425 -0.856377
21381672 -0.460814
7737709 0.656780
13046423 -0.496762
19311576 -0.528501
7690711 0.587723
9657756 0.265381
193617 0.130165
15613982 -0.831725
18792693 -0.185333
10491187 -0.374560
11910743 0.214839
5082751 -0.048453
11412796 0.391064
15081881 -0.693654
10607815 0.390643
14229848 -0.788604
2571773 0.855909
11434078 0.384162
3234262 -0.054947
6022712 -0.665011
15162240 -0.959275
---- 4 ----
20359829 -0.724925
17788199 -0.828685
16248945 -0.557726
2008178 -0.726650
18416528 0.570750
13681532 -0.018995
12511676 -0.468463
65903 -0.788428
20689365 -0.402624
15200090 0.752829
14739776 0.549803
4068029 0.949573
19415549 0.059746
16416133 0.118933
17517219 -0.488528
4542218 -0.159597
580647 -0.506321
11216943 0.897231
16892541 0.398937
1628789 -0.262716
13656751 0.465176
18929405 -0.316259
4095255 -0.003908
10132232 -0.241820
1216743 -0.245420
8232706 0.461672
14071807 0.332038
17554577 0.901260
7839470 0.255491
19335794 0.123588
---- 5 ----
5368579 0.282921
17919830 -0.767268
2593691 0.580072
564669 0.612331
2871915 0.325813
18712931 -0.065120
20414957 -0.013304
2933527 0.544994
759789 -0.681461
14893412 0.675527
6987145 -0.983453
12621635 0.721272
14225445 -0.093334
20580750 -0.259984
8018286 0.015690
505438 0.256531
13550794 -0.092631
2047733 -0.701544
1623075 0.949727
5538707 -0.570459
240902 -0.776566
17367192 0.724411
14701693 0.631365
15086417 -0.273746
1747027 -0.042116
19801383 -0.213080
15300866 -0.439719
17350931 -0.003808
8266325 0.137241
16826395 -0.518978

先ほどと変わって5Fになっても、-0.999936が表示されていません。

時間が進むとランダムシードの範囲が狭まるかもしれません。
少し再生します。

45Fを過ぎると再び、-0.999936が増えていきます。

60F
Splineemi_42

---- 60 ----
5078248 -0.260449
1055232 -0.517818
19731293 -0.999936
6133614 -0.762187
8550359 0.162666
6757766 0.978428
18056920 -0.999936
859322 -0.411887
17588444 -0.999936
6223468 -0.897833
8422296 -0.545455
9211193 0.395768
15864813 -0.999936
13252900 0.199022
21133099 -0.999936
18895563 -0.999936
7423477 -0.980467
20479640 -0.999936
3769408 -0.263996
9856522 -0.975287
6390999 0.473484
4694432 -0.877271
12705485 -0.869356
7478038 -0.566471
9364861 -0.423649
21046629 -0.999936
16530611 -0.999936
184231 -0.546275
11548433 0.650582
20379634 -0.999936

ランダムシードを更に小さくします。1/1000にして見ます。

420Fから、-0.999936が増えていきます。

---- 450 ----
1653303 -0.388037
1729882 -0.430829
1719308 0.759941
1505280 -0.605722
2116003 -0.999936
1123043 -0.019755
391736 -0.682887
690233 0.385707
1765860 -0.281212
2017512 -0.999936
1682784 0.142634
14158 0.065375
827508 -0.453417
2073703 -0.999936
60071 0.013599
168205 0.588334
2061615 -0.999936
518715 -0.733058
695521 0.852075
1896461 0.790830
906951 -0.771382
134174 -0.434714
897965 0.286096
121563 -0.708378
1740399 0.343905
79514 -0.490443
851351 0.963405
1755552 -0.342384
863543 -0.277537
2032177 -0.999936

1/10000での4120Fです。

---- 4120 ----
1891099965 0.560135
2133112998 -0.999936
1718573243 -0.984007
124230284 0.454836
1264380905 0.982754
2102250594 -0.999936
386970183 0.156739
62155688 -0.988951
211471189 0.429560
1067332062 -0.462783
739590803 0.081915
603706500 0.743735
1861808001 -0.308811
1896047898 -0.220618
284513695 0.668255
1601089824 0.256181
1002669165 -0.934212
1303945750 0.159593
1059845995 0.517411
1227988348 -0.386140
1060599321 0.881967
1719854290 -0.441501
558035959 -0.442861
2096690584 -0.999936
762212485 0.811777
1840048462 0.427421
77518659 -0.446461
459593076 -0.690241
1678434225 0.450075
163785610 0.974012

1/1で1Fから、-0.999936が増えていきます。
1/100で45F付近から、-0.999936が増えていきます。
1/1000で420F付近から、-0.999936が増えていきます。
1/100004050F付近から、-0.999936が増えていきます。

おおよそ1Fあたりの分母は(10000÷4000F = 2.5)となり…

10秒のアニメーションだと300F必要になり、1/(300F×2.5)⇒1/750と言う事になるのだろうか…
ただのツジツマ合わせの様だ…

まさかパーティクル数が変わると、この数値も変わるなんて事はないだろうか…

では、これを組み込んでツジツマを合わせてみる。

「SplineEmi_07.ZIP」

Splineemi_43

左下分母の処理です。

Splineemi_44

時間ノードで、開始フレームと終了フレームを取得しアニメーション時間を求めます。
実数に変換すると秒数になりフレームレートと掛け合わせるとフレームが求まります。
後は、先ほどの2.5を掛けた値が分母となります。

強引に不具合に蓋をした感じで、気持ちが悪いのですが…

ただし、R11.5ではこの部分が必要ではないので、バージョンを判定して処理をするように、次のようなノードを追加します。

Splineemi_45_2

「C.O.F.F.E.E.」ノードでC4Dのバージョンを取得し、R11.5未満はFALSE、R11.5以上はTRUEを出力します。

main()
{
  if(GetC4DVersion() < 11500)
    return FALSE;
  else
    return TRUE;
}

「条件分岐」ノードで、R11.5以上はパーティクルのランダムシードをそのまま流し、R11.5未満は調整したランダムシードを流します。

今回は「条件分岐」ノードを使いましたが、この辺り全てを「C.O.F.F.E.E.」ノードで処理できます。

素晴らしいほどに、ツジツマあわせになりました。
R9.5~R11.5まで対応できます。
「ランダム」ノード仕様なのか不具合なのか分からない状態は、凄い気持ちが悪いね…

「SplineEmi_08.ZIP」

複数のバージョンを使用する場合などで、バージョン違いを判断して処理する方法に使えそうですが…

いつまでも古いバージョンを使ってないで、もういい加減R11.5にバージョンアップした方が良いんだね…

今回の内容は、醜いものになりまして… ごめんなさい…

|

« C4D 少しガッカリさせられた「ランダム」ノード… | トップページ | C4D ThinkingParticles ポリゴンオブジェクト内にパーティクルを配置する。 »