カールノイズパーティクルシステム(CurlNoise Particle System)
パーティクルシステム
新作無料 【リリース日】2018年10月29日
日本作家さんの新作アセット!
コンピュート シェーダにより高速にレンダリングできるパーティクルが新登場!
パフォーマンスの改善、Profileで挙動を制御、
キャラが粒子になって消え去る演出もできる面白いアセットが登場しました!!
パーティクルの特徴
・カールノイズパーティクル (渦巻くように)
・消え去る演出 (モデルの頂点位置からエミット)
・移動量に応じてエミット (動かすと一定の距離で出てくる)
・オブジェクトプーリングにデフォルトで対応
・コンピュート シェーダ(グラボで動作)に対応。高速にレンダリング
・WindowsとMaxOSXのみサポート
【Unity公式キャンペーン】
Unity Plus契約中の方:月額プランを年一括払いに変更するとアセット1つゲット NEW
Unity Pro新規契約者:Pro専用特典 + Tシャツ + アセット3つゲット!
└ Unity Pro with Teams Advanced
★開催期間:2018年11月18日まで
詳しくはこちら
カールノイズとは?
Curl Noice。なんとなく流体っぽく見えるノイズ。
Curlとは「カール」、つまり「渦巻く」という意味からつけられた名前だそう。(自分の浅い知識ながら)もう少し具体的に言うと、ベクトル場を回転(Curl)させることで作るノイズ、ということで「Curl Noise」というと思っています。
引用:UnityのCompute ShaderでCurl Noiseを実装(流体編) - e.blog
移動するとパーティクルが作成される挙動
自分たちで作っているコンテンツのキャラ(エルミナ)を格闘家っぽくするというコンセプトで作ってみた動画。カールノイズパーティクルを適用してみました。 pic.twitter.com/BfK2Xgdz4w
— edom18@VR (@edo_m18) July 16, 2018
粒子になって消えちゃったり
ドラクエ11のリレミト風の演出を作ってみた pic.twitter.com/6J1kvenuUh
— edom18@VR (@edo_m18) July 25, 2018
物質の衝突判定も
やったー。カールノイズの衝突判定もちゃんと動いた。 pic.twitter.com/lMC8pgHjrc
— edom18@VR (@edo_m18) June 29, 2018
↑メッシュを動的に切断するには別売りの「Simple Mesh Cutter」が必要です。
これはちょっと面白そうだ!
デモシーンが無いため、作り方について調べます。
※ 作家さんからTwitterで連絡がありまして、デモシーンの存在を知りました。
アセットストア側のバグか不明ですが、意図したパスにシーンファイルが存在せず、
なぜか「Assets/Scenes/SampleScene」に上書きされる現象が発生しています。
修正されるまで、デモシーンはそこからお試し下さい。
※ 「SampleScene」で作業されている方はインポートする際、上書きにご注意ください!
簡単な実装方法
このパーティクルを動作させるためには「準備」が必要です。
時短で実装できるように要点だけまとめたセットアップ方法をご用意しました。
1.制御するためのPrefabをシーンに配置する
・「CurlParticleSystem」オブジェクトプールする管理用
このPrefabをシーンに配置します(位置は自由)
2.パーティクル設定のPrefab
「CurlParticle」パーティクルの生成に関するパラメータを設定します。
・粒子の数
・生存時間
・サイズ、ランダム
・メッシュ、シェーダ、コンピュート シェーダ、Profile
シーンに設置する必要はありません。
3.デモ用のPrefabを配置する
シンプルにパーティクルが出現する「CurlParticleEmitterDemo」を再生してみましょう。
表示が小さいので、なるだけカメラの目の前に配置します。
実行する
ボタンクリックで黄色いパーティクルがフワッと出現して消えました。
UIはデモ用に用意されています。
オブジェクトプール設計↑
「CurlParticle:4」が再生したデモに割り振られています。
パーティクルの挙動はProfileで設定する
Profileデータにパーティクルのパラメータ群が格納されています。
※「CurlParticle」にProfileをセットして利用します。
・NormalProfile:本来のカールノイズの計算式に則った計算
・FakeProfile:やや計算方法を変えたもの
以上、基本的なセットアップと大まかな説明です。
もっと具体的な解説はこちら↓
具体的な実装方法
アセット内の「readme-jp.txt」を参考にしました。
① 「CurlParticleSystem」をシーンに配置
設置場所は特に関係無いと思います。1つ配置しておこう。
シーンにオブジェクトプールの機能を持つ「CurlParticleSystem」プレハブを配置します。
CurlParticleSystemはパーティクルの生成を担う「CurlParticle」プレハブの参照を保持しています。
インスペクタから設定できる「Limit」の数だけプレハブをインスタンス化し、それを上限としてパーティクルを利用することができます。
「オブジェクトプール」とは、インスタンスの再利用のことです。
Instantiateで複製したオブジェクトをDestroyして再び作成するより、Destroyせず初期化して使えばInstantiate時にかかる負荷(スペックが低いと画面が止まる)を無くします。
※「Limit」の数を上限として実行時に作ります。
ちなみに「Limit」はEmitterコンポーネントがシーンに存在する数です。
デモ用のPrefabを1つ使用した場合、4つ余ってる
② パーティクルの生成を担う「CurlParticle」
「CurlParticle」Prefabはシーンに配置する必要はありません(パーティクルの設定用)
パーティクル群を視覚化するには「Curl Particle」コンポーネントの「Show Gizmos」をONにします。
するとシーンビューにギズモが表示されて視覚的にわかるようになります。
(影響範囲が見て分かるようになる)
パーティクルの設定はスクリプタブルオブジェクトの「CurlParticleProfile」を利用して行います。
各パラメータの詳細な説明は省略させてください。このパラメータ郡は、パーティクルの動きを制御する目的で利用します。
「CurlParticle」コンポーネントの「Show Gizmos」をオンにすると、これらパラメータの内容を視覚化することができます。
ここまでのまとめ
・シーンに配置するオブジェクトプーリングの「CurlParticleSystem」
・パラメータ設定Prefab「CurlParticle」(シーンに配置しなくていい)
CurlParticleSystemが作るパーティクルは、全て「CurlParticle」の挙動になります。
別の挙動を作る場合
「CurlParticleSystem」「CurlParticle」を複製して作ります。(ついになるアセット)
簡単ですね!
プロファイルオブジェクト
「FakeProfile」「NormalProfile」2つのプロファイルがサンプルで用意されています。
プロファイルオブジェクトの上部に、カールノイズのタイプを選択する項目があります。
これは、「Normal」のほうが本来のカールノイズの計算式に則った計算を行ったものです。
一方、「Fake」のほうはやや計算方法を変えたものになっています。
本来の実装方法からすると異なるものですが、動きが異なります。好みに合わせて使い分けてください。アセット内に、それぞれのタイプに応じた適切な値が設定されたプロファイルがあるので、それを元に改変を行ってください。
③ エミッターコンポーネント
空のゲームオブジェクトに設置するだけです。
・CurlParticleEmitter:ノーマルサイズの粒子を放出
・DistanceEmitter:一定の距離に応じて粒子を放出
・ShapeEmitter:モデルの形で粒子を放出 ※ 現在使用不可能
現状3つですが、今後増えてくるかもしれませんね。(衝突判定がブログにあるし)
エミッターの使用例(デモを参考に)
CurlParticleEmitter:ノーマルサイズの粒子を放出
通常の粒子発生です。
「CurlParticleEmitterDemo」コンポーネントは、エミッターのトリガーです。
非常にシンプルです。C#初心者でも理解できると思います。
===============
private CurlParticleEmitter _emitter;
private void Start() {
_emitter = GetComponent<CurlParticleEmitter>();
}
Update:Eキーを入力したら「_emitter.Emit();」を実行
OnGUI():左上にボタンを配置してクリックで「_emitter.Emit();」を実行
===============
Emit() で粒子を発生させるだけ!
Destroy()も無いので通常のパーティクルより簡単になってます。
DistanceEmitter:一定の距離に応じて粒子を放出
※ デモ用のPrefabです。
Distance Emitter
・Distance Threshold:一定距離で放出する 0.1間隔の距離で
Rotater
・回転するだけ
Distance Emitter Demo
・Tキーでトグル。GUI表示。
例えばユニティちゃんの右手に取り付けて適当なモーションをさせると...
ほらこの通り!
一定距離で紙吹雪が右手からわき出ます。
静止した時にはエミットしないから、時間で出現していない事がよくわかりますね。
ShapeEmitter:モデルの形で粒子を放出 ※ 現在使用不可能
SphereやCubeなどのオブジェクトやキャラクターなどなど、
モデルもサーフェイスを基に粒子を発生させるエミッターです。
ユニティちゃんの場合は、
複数のメッシュにわかれているから↑の動画を再現するのはちょっと大変です。
Githubにユニティちゃん専用の粒子発生スクリプトが用意されています。
Unity Chan Effect
23個のメッシュが登録されている!配列にして渡しています。
「Pキー」で発動
キャラ全体が少しずつ白くなり、完全に真っ白になってから、
カールノイズを発生させるようになっていました。
が、ユニティちゃんが消えてエラーが発生しました。
これもパブリッシャーさんが言うようにアセットストアと同じく古い状態なのかなと思います。
アセットストア側に申請した修正済みのコードが公開されたら、
ShapeEmitter.cs辺りを差し替えれば動作するんじゃないかなと思ってます。
楽しみに待ちましょう!
粒子の種類を変更する
粒子はMeshが指定できます。
試しにシリンダーにしてみました。
サンプルデモシーンの場所
Projectに最初から含まれる「SampleScene」に上書きされます。
こちらからお試し下さい。
追記 2018年10月30日 2:05
デモシーンの「Shape Emit」は、エラーが発生して試すことができません。
パブリッシャーへ質問した所、アセットストア側に申請したはずの修正ファイルに差し替わっていないことが判明しました。
正しいファイルに置き換わるまで暫くお待ち下さい。(問い合わせ中)
現在、シェイプエミットが使用できません。
コンピュート シェーダで高速にレンダリング
コンピュート シェーダ は,通常のレンダリング パイプラインと異なって,グラフィックス カード上で動作するプログラムです。これは超並列 GPGPU アルゴリズム,またはゲームレンダリングの一部を加速させるために使用できます。効果的に使用するためには,しばしば GPU アーキテクチャおよび並列アルゴリズム,さらには DirectCompute , OpenCL ,または CUDA に関する深い知識が必要です。
Unityでのコンピュート シェーダ は DirectX 11 DirectCompute テクノロジーにもとづいて作られていて,現在は Windows Vista 以降 かつ シェーダモデル 5.0 を利用可能な GPU が必要です。
GPGPUアルゴリズムにより、グラボで動作するから並列処理で高速化します!
モバイルでの利用はできませんのでご注意を。
WindowsとMaxOSXのみサポートしています。
サンプル画像
メッシュをスパッと切断するアセットは別売りです。
リアルタイムにメッシュをスパッとスライス(カッター)するスクリプト
2017年12月7日リリースの新作アセットです。
Curl Noise Particle System using demo - YouTube(0:09)
Curl Noise particle on a mesh surface demo - YouTube(0:08)
Curl Noise Particle System Demo - YouTube(2:28)
アセット説明(機械翻訳)
Unity 5.5.0 以降のバージョンが必要カールノイズを利用したパーティクルシステムです。 コンピュートシェーダを使って高速にパーティクルをレンダリングします。
パーティクルシステムには、通常のカールノイズを利用したエミッタの他に、メッシュの頂点からパーティクルを生成したり、移動距離に応じてパーティクルをエミットするエミッターがあります。
動画で紹介しているような斬撃エフェクトや、キャラクターの分解エフェクトなどに利用できます。
WindowsとMaxOSXのみサポートしています。
パブリッシャーのアセット(記録用)
パーティクルの挙動を変えるアセット
カールするノイズ・・・
パーティクルの制御でカールさせる(渦巻く)表現の関連として、
既存のパーティクルに曲線を用いて粒子をコントロールしたり、
マグネットルールで引き寄せたり反発させる2つのアセットを紹介しました。
2018年9月4日
パーティクルの挙動に変化を付ける曲線とマグネットツール
【毎日更新】アセット割引情報サイト
毎日リアルタイム更新。
「作家セール、無料アセット、新作アセット」お得な最新情報を入手しよう!
※ 土曜・日曜・月曜はアセットストアのお休み。
今年のイチオシアセット
バーチャルYoutuberシロがご紹介する2018年度のオススメアセット
過去セールから神アセットを探す
過去大セールで登場したタグです。ぜひご活用下さい。
- MADNESS SALE カテゴリーの記事一覧 - Unity AssetStoreまとめ
- Back to School セール カテゴリーの記事一覧 - Unity AssetStoreまとめ
- Unite 2017 Tokyo記念セール カテゴリーの記事一覧 - Unity AssetStoreまとめ
- Biggest Sale Ever カテゴリーの記事一覧 - Unity AssetStoreまとめ
- Wishlist Sale カテゴリーの記事一覧 - Unity AssetStoreまとめ
- Holiday Sale カテゴリーの記事一覧 - Unity AssetStoreまとめ
※右サイドバーの「月別アーカイブ」や「タグ」からチェックすることもできます。
アセットの検索方法
検索ボックスから「アセット名」「希望する機能のワード」を入力してチェックしてください。
【2018年度】無料化&無料アセットまとめ
【3Dモデル】
【シェーダ・パーティクル・Skybox】
【テクスチャ&マテリアル】
【過去ログ】無料アセット
【過去ログ】作者セール&注目アセット
この作品はユニティちゃんライセンス条項の元に提供されています