SceneKitのパーティクルシステムの使い方


3D体験をよりリッチにしてくれる、パーティクルシステムについて紹介します。

パーティクルシステムとは

パーティクル・システム(英: particle system)はコンピュータグラフィック技術のひとつで、運動する粒子により構成される事象を表現するために使われる。

一般にパーティクル・システムを用いて模擬される事象の例としては、炎、爆発、煙、流水、火花、落葉、雲、霧、雪、埃、流星、毛髪、毛皮、草地、あるいは光跡や呪文の視覚効果などが挙げられる。
https://ja.wikipedia.org/wiki/%E3%83%91%E3%83%BC%E3%83%86%E3%82%A3%E3%82%AF%E3%83%AB%E3%83%BB%E3%82%B7%E3%82%B9%E3%83%86%E3%83%A0

SceneKitデフォルトのパーティクルシステム

デフォルトでこんなに用意されています。これらのパラメータを調整したり、粒の色、形、画像を変えたりして様々な表現が可能です。

bokeh confetti fire rain reactor smoke star

パーティクルを作ろう

ファイルの作成

パーティクルシステムのファイルは、NewFile -> SceneKit Particle System Fileの順に選択し、作成します。

先に紹介したデフォルトのパーティクルの中からテンプレートを選択します。

右側のタブからBirth RateやSpeed, Shapeなど色々調整できます。

具体的な調整方法は無限大なので今記事では割愛します。

コード

空間のrootNodeにパーティクルシステムを発生させる場合、以下のように、SCNNodeを作成しaddParticleSystemするだけです。

物体からパーティクルシステムを発生させたい場合は物体のNodeに対してaddParticleSystemしましょう。

let particle = SCNParticleSystem(named: particle.rawValue + ".scnp", inDirectory: "art.scnassets")
let particleNode = SCNNode()
particleNode.addParticleSystem(particle!)
sceneView.scene.rootNode.addChildNode(particleNode)

ペチャバトの必殺技にもパーティクル

私の現在開発しているペチャバトでも、炎、雷、煙などがパーティクルシステムによって作られています。

サンプルコード

https://github.com/kboy-silvergym/ARKit-Emperor のParticleにあります!