Help us understand the problem. What is going on with this article?

ARKitのパーティクル・システムをコードで書く

More than 1 year has passed since last update.

はじめに

ARKitを勉強する上で、より表現の幅を広げるためにパーティクル・システムの使い方が必要だと思ったので、
今回はXcodeのインスペクタ設定ではなく、コードでの設定方法を調査しました。

ファイルの作成

パーティクル・システムのファイルを作成
XcodeでNewFile -> SceneKit Particle System Fileで.scnpファイルを新規に作成します。
テンプレートとしてbokeh、confetti、fire、rain、reactor、smoke、starが用意されているので、作成したいパーティクルに近いものを選択してパラメータを調整します。
今回はfireテンプレートを選択しました。
Screen Shot 2019-01-03 at 10.27.07.png
Screen Shot 2019-01-03 at 10.27.20.png

今回はviewDidLoad内に、新規で作成したSCNNodeにパーティクル・システムを設定しています。
(ship.scn内のオブジェクトは削除してあります。)
Screen Shot 2019-01-03 at 10.33.05.png

パーティクルの色

Screen Shot 2019-01-03 at 10.56.05.png
particlecolor

パーティクルの放出量

値が大きいほど放出される粒子の量が多くなる。
Screen Shot 2019-01-03 at 11.01.15.png
birthrate

パーティクルの全体形状 

emitterShapeに放出したい形状を設定すると、パーティクルの全体形状がプレート型、ボックス型に出力できる。
Screen Shot 2019-01-03 at 11.21.55.png
emittershape

パーティクルのサイズ

粒子のサイズを設定。デフォルト設定は1。
Screen Shot 2019-01-03 at 11.46.57.png

particlesize

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

デフォルト設定は1秒。0秒の場合すべてのパーティクルが瞬時に出現する。
Screen Shot 2019-01-03 at 11.59.41.png

emissionduration

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

生成しない時間を設定する。
Screen Shot 2019-01-03 at 13.31.52.png

idleduration

パーティクルの表示期間

パーティクルが生成されてから、消えるまでの時間。デフォルトが1秒。
Screen Shot 2019-01-03 at 13.41.47.png

particlelifespan

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

デフォルト値1秒。値を大きくするとパーティクルの動きが早くなり。小さくすると動作が遅くなる。
Screen Shot 2019-01-03 at 13.55.02.png

speedfactor

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

移動方向に対してパーティクルを引き伸ばす。デフォルトは0。
Screen Shot 2019-01-03 at 14.03.23.png

stretchfactor

まとめ

他にもいろいろ設定はありますが、きりがないのでこのくらいにして、機会があれば別途調査したいと思います。
オブジェクトを配置しただけだと、視覚的にインパクトが欠ける場合や、アニメーションを加えることで表現の幅をもたせたい時に上手く使用できると武器になりそうです。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away