2 / 4 パーティクル生成と初期化の基本
Contextを操作して、発生数・寿命・Capacityの関係を確かめます。
基準状態の設定
見本のパーティクルはやや複雑な動きをしています。
観察のため、まずは設定を単純化するところから始めましょう。
最初に発生位置と初速をそろえます。
表に沿って値を変え、指定したBlockのチェックを外してください。
BlockとOperatorは再利用しますので、ここでは削除しないよう注意してください。
| 場所 | 基準状態へ変える操作 |
|---|---|
| Initialize | Min Speed・Max Speedのある、Directionから速度を設定するBlockを無効にする |
| Initialize | Operatorが接続されたAdd Positionを無効にする |
| Initialize | PositionのSphereのRadiusを0.025から1へ変える |
| Update | Linear Drag、Turbulence、色を設定する2つのBlockを無効にする |
| Output | SizeをOver Lifeで変えるBlockを無効にする |
これで原点を中心とした半径1の球状の範囲から粒子が生まれます。
発生範囲を広げると、粒子の移動を観察しやすくなります。
色と描画サイズの時間変化も止め、動きに注目して比較しましょう。
初期化の追加設定
パーティクルの1秒当たりの発生数をSpawnで、粒子が生まれるときの初速と質量はInitializeで設定します。
ここでは初速を上向きにそろえ、粒子の動きを観察してみましょう。
Initialize内の空き領域を右クリックし、Set VelocityとSet Massを追加してください。
追加したBlockと、SpawnのConstant Spawn Rateを次の表に沿って設定しましょう。
| 場所 | Block | 今回の操作 | 役割 |
|---|---|---|---|
| Initialize | Set Velocity | 追加し、Velocityを(0, 0.5, 0)へ変更 | 生成時の初速を上向きにそろえる |
| Initialize | Set Mass | 追加し、Massは初期値の1を使う | 外力の比較で使う質量をそろえる |
| Spawn | Constant Spawn Rate | Rateを6000から1000へ変更 | 1秒当たりに生まれる粒子数を減らす |
Graphを保存してPlayし、半径1の発生範囲から粒子が上へ進むことを確認してください。
Initializeで決めた初速に応じて、Updateで位置が更新されます。
表示できない場合は、SceneのGraphの参照と、ContextをつなぐFlowを確認してください。
表示されても動かない場合は、Set VelocityとUpdate Positionが適切に設定されているかをチェックしてみましょう。
適切な Capacity の設定
SpawnブロックのRateは1秒当たりのパーティクル発生数、Initialize Particle ブロックのLifetimeは各粒子の寿命です。
今回の寿命は1〜3秒から一様に選ぶので、平均は約2秒です。
一定のRateで生成を続けると、生存する粒子数の目安は「Rate × 平均寿命」になります。
| Rate | 3秒以上再生したときの同時生存数の目安 |
|---|---|
1000 | 約2,000 |
3000 | 約6,000 |
6000 | 約12,000 |
Capacityは同時に扱える粒子数の上限です。
この数を超えて粒子が生成することはできません。
Rateが高すぎるとパーティクルの在庫切れが発生し、期待通りの数の粒子が生成されなくなります。
かといって無制限にCapacityを増やすのも効率的ではありません。
RateとLifetimeを調整し、必要な範囲で適切に設定することが重要です。
たとえばRateが6000で、すべてのパーティクルのLifetimeが平均2秒と考えると、必要数の目安は12,000です。
Capacity の設定数を調整し、生成に影響があるかを確認してみましょう。
TIP
Capacityに設定された値の分だけパーティクル生成のためのメモリが確保されるため、設定値が大きすぎるとメモリを無駄に消費してしまいます。
かといってあまり小さくすると、必要な粒子が生成されずに意図した通りの生成率を得られなくなります。
RateとLifetimeから計算される必要数の目安よりもわずかに多く設定するのが目安です。
初速を操作する
Initializeはパーティクルが生成される際に一度だけ処理される初期設定のブロックです。
パーティクルの初速はここで設定します。
Set Velocityだけを(0, 0.5, 0)から(0, 1, 0)へ変え、広がり方を比較してください。
Y方向の初速を2倍にすると、同じ寿命の間に上へ進む距離も2倍になります。
- Rateと寿命から、同時に生存する粒子数の目安を求めて適切なCapacityを設定できる。
- 初速を変更して、粒子の移動距離の変化を確認できる。