ぬるぽ

ゆるくプログラミングなどを語っていくブログ

ARKit入門 その6 パーティクル・システム

f:id:nooootion:20190103200509p:plain

 

 

こんちにちはmorimori(@TatsunoriMorita)です。

 

 

ARの表現をより一層高めるために、パーティクル・システムを使用します。

今回はプログラムで設定を変更する方法をまとめました。

パーティクル・システム - Wikipedia

 

 

パーティクル・システムのファイルを作成

XcodeNewFile -> SceneKit Particle System File.scnpファイルを新規に作成します。

テンプレートとしてbokehconfettifirerainreactorsmokestarが用意されているので、作成したいパーティクルに近いものを選択してパラメータを調整します。

今回はfireテンプレートを選択しました。

f:id:nooootion:20190103194435p:plain

f:id:nooootion:20190103194449p:plain

 

 

今回はviewDidLoad内に、新規で作成したSCNNodeにパーティクル・システムを設定しています。

(ship.scn内のオブジェクトは削除してあります。)

f:id:nooootion:20190103194509p:plain

 

 

パーティクルの色

f:id:nooootion:20190103194615p:plain

particleColor - SCNParticleSystem | Apple Developer Documentation

 

 

パーティクルの放出量

値が大きいほど放出される粒子の量が多くなる。

f:id:nooootion:20190103194651p:plain

birthRate - SCNParticleSystem | Apple Developer Documentation

 

 

パーティクルの全体形状 

emitterShapeに放出したい形状を設定すると、パーティクルの全体形状がプレート型、ボックス型に出力できる。

f:id:nooootion:20190103194753p:plain

emitterShape - SCNParticleSystem | Apple Developer Documentation

 

 

パーティクルのサイズ

粒子のサイズを設定。デフォルト設定は1。

f:id:nooootion:20190103194853p:plain

particleSize - SCNParticleSystem | Apple Developer Documentation

 

 

新規パーティクルの生成期間

デフォルト設定は1秒。0秒の場合すべてのパーティクルが瞬時に出現する。

f:id:nooootion:20190103194952p:plain

emissionDuration - SCNParticleSystem | Apple Developer Documentation

 

  

パーティクルを生成しない時間

生成しない時間を設定する。

f:id:nooootion:20190103195057p:plain

idleDuration - SCNParticleSystem | Apple Developer Documentation

 

 

パーティクルの表示期間

パーティクルが生成されてから、消えるまでの時間。デフォルトが1秒。

f:id:nooootion:20190103195153p:plain

particleLifeSpan - SCNParticleSystem | Apple Developer Documentation

 

 

パーティクルの動作スピードを変更

デフォルト値1秒。値を大きくするとパーティクルの動きが早くなり。小さくすると動作が遅くなる。

f:id:nooootion:20190103195240p:plain

speedFactor - SCNParticleSystem | Apple Developer Documentation

 

 

パーティクルの引き伸ばし

移動方向に対してパーティクルを引き伸ばす。デフォルトは0

f:id:nooootion:20190103195328p:plain

stretchFactor - SCNParticleSystem | Apple Developer Documentation

 

 

まとめ

他にもいろいろ設定はありますが、きりがないのでこのくらいにして、機会があれば別途調査したいと思います。

オブジェクトを配置しただけだと、視覚的にインパクトが欠ける場合や、アニメーションを加えることで表現の幅をもたせたい時に上手く使用できると武器になりそうです。