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にあります!