【Unity道場 2016】パーティクル講座

1.5K Views

July 15, 17

スライド概要

2016/2/21に開催されたUnity道場のスライドです。
講師:池和田 有輔(ユニティ・テクノロジーズ・ジャパン合同会社)
リンク:https://github.com/ikewada/dojo_particle

profile-image

リアルタイム3Dコンテンツを制作・運用するための世界的にリードするプラットフォームである「Unity」の日本国内における販売、サポート、コミュニティ活動、研究開発、教育支援を行っています。ゲーム開発者からアーティスト、建築家、自動車デザイナー、映画製作者など、さまざまなクリエイターがUnityを使い想像力を発揮しています。

シェア

またはPlayer版

埋め込む »CMSなどでJSが使えない場合

ダウンロード

関連スライド

各ページのテキスト
1.

2016.2.21 unity 道場 パーティクル講座 ユニティ・テクノロジーズ・ジャパン 池和田 有輔

2.

unity 道場 本スライドで使われているデータ(Unity5.3.2) https://github.com/ikewada/dojo_particle

3.

今回のゴール ~ マスターまでの道のり unity 道場 1 Particle Systemの概要を理解している 2 Particle Systemの構造と各パラメータを理解し エフェクトとして体を成すものを作ることができる 3 パーティクルのために用意されたShaderの特徴を理解し スクリプトでできることを理解できている 4 各パラメータを理解してパーティクルを自由自在に扱い、 思うようなエフェクトを作ることができる COPYRIGHT 2016 @ UNITY TECHNOLOGIES JAPAN

4.

unity 道場 Particle Systemの概要

5.

Particle Systemの概要 unity 道場 そもそもパーティクルとは? ・主に小さな2D画像を大量にアニメーションさせて水、雲、炎などの自然現象をシミュレートするもの。 ・ゲームでは魔法やレーザーなどのエフェクトを表現するために使われる機会が多い。 Particle System (Shuriken)の特徴 ・Unity3.5が初出。 ・Particle Systemの更新はマルチスレッドで行われ、それなりに高速。 ・プレイしなくても確認・編集が可能(調整がとても楽)。 ・Collisionの処理が扱える。 ➡エフェクトのみならずゲームデザインに落とし込むことも可能に。 その他 ・旧パーティクル系コンポーネントに属するEllipsoid Particle Emitter、Mesh Particle Emitter、Particle Animator、Particle Renderer、World Particle Colliderは特に理由のない限り使わない方向で。 COPYRIGHT 2016 @ UNITY TECHNOLOGIES JAPAN

6.

Particle Systemことはじめ unity 道場 とりあえず使ってみよう ・シーンに配置すると白い玉が連続的に出続ける。これを元に編集していくのが基本。 ・プレイしなくてもパーティクルは再生される。 ・シーンビューのパネルで再生、一時停止、早送りなどもできるので活用しよう! COPYRIGHT 2016 @ UNITY TECHNOLOGIES JAPAN

7.

Particle Systemことはじめ unity 道場 各セクションは「モジュール」と呼ばれている ・コンポーネントは多数の折りたたみ可能なモジュールによって成り立っている。 パーティクルを一括編集できるパネルを開く 複雑な構造のパーティクルを編集したい場合は 重宝するが、画面が狭い場合は得策ではない リドローするものにのみ設定を反映 ワイヤーフレーム表示 各モジュールの詳細はマニュアルを参照 ・英語:http://docs.unity3d.com/ja/current/Manual/PartSysMainModule.html ・日本語:http://docs.unity3d.com/Manual/PartSysMainModule.html COPYRIGHT 2016 @ UNITY TECHNOLOGIES JAPAN

8.

モジュールの中身を理解しよう unity 道場 v5.3現在、Particle Systemは18のモジュールよって成り立っている Main Emission Shape Velocity Over Lifetime Limit Velocity Over Lifetime Inherit Velocity Force Over Lifetime Color Over Lifetime Color By Speed Size Over Lifetime Size By Speed Rotation Over Lifetime Rotation By Speed External Forces Collision Sub Emitters Texture Sheet Animation Renderer ■基本 ■移動 ■カラー ■サイズ ■回転 ■イベント ■アニメーション・描画 ・上記のようにカテゴリー分けすることにより、必要なものにアクセスしやすくなるはずだ ・不要なモジュールはアクティブを切っておこう COPYRIGHT 2016 @ UNITY TECHNOLOGIES JAPAN

9.

モジュールの中身を理解しよう unity 道場 Mainモジュール ・パーティクルの初期速度や大きさ、色など基本となる設定はここで。 ・調整時にはLoopingにチェックを入れておこう。 ・Random Between Two ConstantsやCurveを使いこなそう。 ➡カーブデータはプリセットライブラリとして保存したり読み込んだり できるのでガンガン活用しよう! ➡ただし素のAnimationCurveとは互換がない(拡張子からして違う) ので注意すべし。 ・スピードはマイナスの値を入れることができる。 ・基本的にパーティクルの寿命は時間で決まる。移動距離などで消すには Collisionを使うなどで解決しよう。 ➡Lifetime Lossを1にするとコリジョン判定のタイミングで即死する。 COPYRIGHT 2016 @ UNITY TECHNOLOGIES JAPAN

10.

モジュールの中身を理解しよう unity 道場 Mainモジュール(続き) ・5.3での変更点として、3D Start Rotationにチェックを入れることにより、Render Modeがデフォルトの billboard時、パーティクルの角度の変更が可能になった。これに伴いRotation over Lifetimeなど関連するパ ネルも変更された。 ・さらにRandomize Rotation Directionに0-1の数値を入れることによって、確率による逆回転も可能に。 COPYRIGHT 2016 @ UNITY TECHNOLOGIES JAPAN

11.

モジュールの中身を理解しよう unity 道場 Mainモジュール(続き) ・Simulation Spaceは非常に重要な概念で、Localを選択するとパーティクルがオブジェクトを基点とした空間内 を動きまわり、Worldを選択するとオブジェクトは無関係に動くようになる。 ・ポジションの変更は再生中でなくとも正しく反映されるが、ローテーションの変更は再生中のみ反映される ことに注意。 動いてる乗り物の上で真上ジャンプ! 進行方向 進行方向 Local:振り落とされない World:振り落とされる COPYRIGHT 2016 @ UNITY TECHNOLOGIES JAPAN

12.

モジュールの中身を理解しよう unity 道場 Mainモジュール(続き) ・5.3から待望のスケーリングオプション(Scaling Mode)が追加され、拡大縮小に対して次のオプションが選 択できるようになった。 ・Hierarchy:絶対的なスケールに依存して全体を拡大縮小する。 ・Local:親のスケールに依存せずに全体を拡大縮小する。 ・Shape:エミッションシェイプのみ拡大縮小し、個々のパーティクルの大きさは変化しない。 ➡Start時のみ有効であり、動的に変えることはできない。 オリジナル LocalでXを引き延ばした例 SpaceでXを引き延ばした例 COPYRIGHT 2016 @ UNITY TECHNOLOGIES JAPAN

13.

モジュールの中身を理解しよう unity 道場 Emissionモジュール ・放出の頻度及びタイミングを決定する役割を担う。ほぼ有効化が必須。 ・時間に依存して放出する「Time」と距離に依存して放出する「Distance」の2種類のオプションがある。 ・「Distanceにしたのに出ない!」というときはSimulation SpaceをWorldにしてあるかチェックしよう。 ・5.3からBurstsの放出量にもランダム性を持たせることができるようになった。 Shapeモジュール ・エミッターの形状や指定した形状のどこから放出するのかを決定する。 ・Shapeの種類が増え、Skinned Mesh Rendererが使えるようになった。 ➡キャラクターからオーラを出したりゴースト作ったりするのがとても簡単に。 ・Sphereを指定してStart Speedをマイナスにすると、球の中心へと収束するエ フェクトができる。 COPYRIGHT 2016 @ UNITY TECHNOLOGIES JAPAN

14.

モジュールの中身を理解しよう unity 道場 Velocity Over Lifetimeモジュール ・パーティクル個々に一定の速度を与える(等速運動)。 ・進行方向にはMainモジュールのStart Speedを使うが、それ以外の方向に動かしたい場合などに用いる。 Limit Velocity Over Lifetimeモジュール ・減速させたい場合に使う。 ・ここで入力するSpeedは、多くの場合空気抵抗と釣り合いが取れた速度、いわば終端速度となる。 ・Dampenは減速率となる係数。 Inherit Velocityモジュール ・オブジェクト自体の速度をパーティクルに反映させる時に使う。 ・MainモジュールのSimulation SpaceがWorldの時のみのオプションなので、反映されない時はチェックしてみ るべし。 COPYRIGHT 2016 @ UNITY TECHNOLOGIES JAPAN

15.

モジュールの中身を理解しよう unity 道場 Force Over Lifetimeモジュール ・徐々に早くなるミサイルなど、パーティクル個々に加速度を与えたい場合に用いる。 ・重力の表現としても使えるが、特に理由のない限り重力はMainモジュールのGravity Modifireを使おう。 External Forceモジュール ・Wind Zoneを使った場合に用いるもの。 ・細かなコントロールには不向きだが、うまく 使えば様々な表現が可能。 COPYRIGHT 2016 @ UNITY TECHNOLOGIES JAPAN

16.

モジュールの中身を理解しよう unity 道場 Color Over Lifetimeモジュール ・時間によって色を変える場合に用いる。 ・上段でアルファを指定し、下段でカラーの指定をする。 ・補完のためのキーはそれぞれ最大8つまで登録可能。 Color By Speedモジュール ・早さによって色を変える場合に用いる。 Size Over Lifetimeモジュール / Size By Speedモジュール ・上記のスケール版 Rotation Over Lifetimeモジュール / Rotation By Speedモジュール ・上記の回転版 COPYRIGHT 2016 @ UNITY TECHNOLOGIES JAPAN

17.

モジュールの中身を理解しよう unity 道場 Collisionモジュール ・パーティクルと他のオブジェクトとの衝突を管理する。 ・オプションのPlaneは負荷が軽くて対象物(空オブジェクトで十分)のローカルY軸に対してのみ衝突が発生す る。それに対してWorldは一般的なコライダとの衝突を行う。 ・Unity5.3から2D系のコライダに対してもヒットするようになった。 ・Visible Bounceフラグはパーティクル自体のコライダをギズモによって視覚化したものだが、精度は割といい 加減。 ➡これにチェックを入れると、コリジョンモジュール自体を切ってもギズモが表示されるので注意しよう。 ・スクリプトからコリジョンを検出したい場合、Send Collision Messagesフラグにチェックを入れると MonoBehaviour.OnParticleCollision()で拾える。 ➡衝突する側とされる側、どちらに書いても行える。 ・スクリプトと後述するSubEmittersを併用すれば、雨のパーティクルが水面に当たると波紋になり、それ以外の オブジェクトに当たると消えるなどの処理も可能。 COPYRIGHT 2016 @ UNITY TECHNOLOGIES JAPAN

18.

モジュールの中身を理解しよう unity 道場 Sub Emitterモジュール ・パーティクル個々のポジションから派生したパーティクルを発生させる場合、どのタイミングで開始するのかを 決定するためのモジュール。 ・Birth(誕生時)、Collision(衝突時)、Death(消失時)の3つに登録できる。 ・+をクリックすると自動でサブパーティクルが生成されるのからも分かる通り、子オブジェクトを登録するのが ほぼ前提となっている。 COPYRIGHT 2016 @ UNITY TECHNOLOGIES JAPAN

19.

モジュールの中身を理解しよう unity 道場 Texture Sheet Animation モジュール ・テクスチャ上でスプライトアニメーションを行うためのモジュール。 ・マス目状に区切ったセルに対してコマ送りアニメーションを行うイメージであり、縦横のマス目は2のべき乗 (2、4、8・・)にしなくてはならない。 ・Animationオプションで「Whole Sheet」を選択すると全てのコマを使ったアニメーションを行い、 「SingleRow」を選択すると列ごとのシーケンスで行われる(どの列を行うかはランダムにできる)。 ・Whole Sheet ・Single Row ・このランダム性を利用して、右図のように異なった形状や色の パーティクルを単一のオブジェクトからエミットさせることも できる。 COPYRIGHT 2016 @ UNITY TECHNOLOGIES JAPAN

20.

モジュールの中身を理解しよう unity 道場 Renderer モジュール ・スクリーンに対してパーティクルをどう描画するかを決める、重要な役割を担う。 ・Render ModeをStretched BillboardにしてSpeed Scaleを正に設定すると、速度によって進行方向にパーテ ィクルが伸びるため、ダイナミックな表現が行える。また、Meshを選択すれば3Dオブジェクトを飛ばすことも できる。もちろんその場合はパーティクル用シェーダ以外を使うべし。 ・Cast Shadowsにチェックを入れてもプリセットのパーティクル用シェーダは影を落とすことができない。使う にはShadowCasterに対応したシェーダを使う必要がある。 ・5.2で追加されたPivotはかなり面白い機能。スケールに比例して、パーティクルの拡散先がPivotで指定したベ クトルの方向に変化する。 ・Pivot off ・Pivot on COPYRIGHT 2016 @ UNITY TECHNOLOGIES JAPAN

21.

unity 道場 打ち上げ花火を作ろう

22.

ワークショップ:打ち上げ花火を作ってみよう unity 道場 打ち上げ花火を3つの行程に分けて考えてみよう。 打ち上げフェイズ ・花火玉(本体) ・追跡する炎 爆発フェイズ ・拡散する火花 ・炎を追跡する線 ・煙 フェイドアウトフェイズ ・煌めく光 COPYRIGHT 2016 @ UNITY TECHNOLOGIES JAPAN

23.

ワークショップ:打ち上げ花火を作ってみよう unity 道場 まずは舞台設定 ・新規のシーンに置かれたDirectional LightをLightingパネル上のSunに設定し、適当に傾けてスカイボックスを 夜にする。 ・Main Cameraのポジションを(0, 25, -30)、ローテーションを(0, 0, 0)に設定。 COPYRIGHT 2016 @ UNITY TECHNOLOGIES JAPAN

24.

ワークショップ:打ち上げ花火を作ってみよう unity 道場 打ち上げの準備 ・ParticleSystemをクリエイトし、ポジションを(0, 0, 0)、ローテーションを(-90, 0, 0)に設定。 ・上方向に白い玉がエミットされるのを確認してパーティクルインスペクタを下記のように変更。 ・Mainパネル / Start Lifetime: 3、Start Speed: 20、Gravity: 0.5 ・Emissionパネル / Rate: 0.5 ・Shapeパネル / Angle: 5 ・Rendererパネル / MaterialをParticle Fireworkに変更 これで2秒に1回、花火が打ち上げられるようになりました。 とりあえず名前をFireworksとしておこう。 COPYRIGHT 2016 @ UNITY TECHNOLOGIES JAPAN

25.

ワークショップ:打ち上げ花火を作ってみよう unity 道場 玉を追跡する炎を作る ・前項の玉のSub EmittersのBirthの「+」からSubEmitterを生成。これは実質的にクリエイトして子オブジェ クトに設定するのと同じ操作。これを編集して追跡する炎を作ろう。 ・炎は玉を追っかけるものなので、位置を玉自体に追従させ、かつインスタンス化のタイミングを打ち上げ時に設 定する必要がある。 ➡FireworksのSub EmittersパネルのBirthにこのオブジェクトをアサインすることで解決。 ・また、エミット(放出)方法を時間単位でなく、移動量単位に設定するためにEmissionパネルのプルダウンを Distanceに変更し、Rateを30に変更。これにより、Rateが1秒単位でなく1unit(≒メートル)ごとの放出量に 変化する。 ・それからRendererモジュールのMaterialをParticle Fireworkに変更。 これでサブパーティクルは無事玉を追従するようになった。 次のステップで、この玉の塊を追跡する炎に近づけていく。 COPYRIGHT 2016 @ UNITY TECHNOLOGIES JAPAN

26.

ワークショップ:打ち上げ花火を作ってみよう unity 道場 追跡する炎のカスタマイズ ・玉の後方から炎が噴射していくイメージなので、ShapeをConeに変更。 ・また、初期の寿命、スピード、サイズを変更する必要があるのでMainパネルのStart Lifetime、Start Speed、 Start Sizeを調整。ここではそれぞれ1、-1、0.4に設定。 ・スピードをマイナスにしたのは、デフォルトでは進行方向(上方向)にコーンが広がっていくため。実際は後方 に炎を広げる必要があるので、逆向きのマイナスを指定。また、拡散するのではなく収束するようなパーティク ルの実装もスピードにマイナスを代入することで対応可能。 進行方向 進行方向 ☒ Start Speedがプラスの場合 ☑ Start Speedがマイナスの場合 COPYRIGHT 2016 @ UNITY TECHNOLOGIES JAPAN

27.

ワークショップ:打ち上げ花火を作ってみよう unity 道場 追跡する炎のカスタマイズ ・次いで色を変更を行う。Color Over Lifetimeから白→黄→オレンジと 変化するように設定。 ・また、Size Over Lifetimeでは最終的にスケールがゼロになるように設 定。イージングはお好みだけど、なだらかなカーブが良さげ。 ・これでトレイルの演出は完了。 COPYRIGHT 2016 @ UNITY TECHNOLOGIES JAPAN

28.

ワークショップ:打ち上げ花火を作ってみよう unity 道場 爆発を起こそう ・爆発フェイズに必要なのは拡散する火花と煙の2つ。 ・まずは追跡する炎と同様、SubEmittersのDeathに2つオブジェクトを追加 ・ExplosionにリネームしてStart Lifetimeを右のように0.8-1.0に、Start Speedを40-60に、Gravity Modifierを3に設定。また、EmissionのMinと Maxを300にてエミット量を増やしておく。これで大きく弾け飛ぶような動 きに。 ・火花は初速が早く、空気抵抗で急激に減速するのでLimit Velocity Over Lifetimeを有効にしてSpeedのカーブを減速するものに変更し、Dampenを 0.1に設定。これで爆発直後の速度が緩慢に。 COPYRIGHT 2016 @ UNITY TECHNOLOGIES JAPAN

29.

ワークショップ:打ち上げ花火を作ってみよう unity 道場 煙を形作る ・爆発はまだ未完成だが、続いて煙の作成を行う。 ・先ほど作ったサブパーティクルをSmokeとリネームし、Rendererモジュールの マテリアルをParticle Smoke Whiteに変更しておく。 ・調整のため、MainモジュールのStart Sizeを40に、均一化を避けるためにStart Rotationで-180と180の間でZ軸をランダムに回転させておく。Start Colorも アルファを30程度に下げておこう ・また、煙はパーティクル1つで表現するため、EmissionモジュールでButsts数を 1にしておく。 ・徐々にフェイドイン・フェイドアウトするためにColor Over Lifetimeのアルファ を0→255→0と変化するよう設定。 ・大きさも右図のようにSize Over Lifetimeで50パーセントからスタートさせてみ るなどの工夫をするといい感じに COPYRIGHT 2016 @ UNITY TECHNOLOGIES JAPAN

30.

ワークショップ:打ち上げ花火を作ってみよう unity 道場 炎を追跡する線を作り、爆発を華やかに ・続いては爆発を追跡する線を作る ・ExplosionのSub EmittersのBirthにサブパーティクルを追加し、Trailとリ ネームしておこう ・寿命に幅をもたせるためStart Livetimeを0.6-1.2に設定し、Start Sizeを 0.5とする。また、少し明るすぎるのでStart Colorのアルファを100程度に しておく。Gravity Modifierも1にしておけば花火本体とは別にこちらも下 降するようになる。 ・続いてはEmissionモジュールの設定だ。先に作った追跡する炎と同様、 Emissionの設定をDistanceに設定し、移動ごとにパーティクルが生まれる ようにしよう。Rateを6に設定し、MainモジュールのMax Particleを 100000に設定しておく。 ・Shapeモジュールは使わないので切っておこう。 COPYRIGHT 2016 @ UNITY TECHNOLOGIES JAPAN

31.

ワークショップ:打ち上げ花火を作ってみよう unity 道場 炎を追跡する線を作り、爆発を華やかに ・色をつけることによって華やかになる。 ・Color Over Lifetimeのグラデーションを設定し、色を反映させ よう。色は好みで決めれば良いが、白から任意の色に変化させ、 またアルファを最終的に0にしたほうが見栄えが良いかもしれな い。 ・スケールもSize Over Lifetimeで変化させておこう。 ・爆発フェイズは以上。 COPYRIGHT 2016 @ UNITY TECHNOLOGIES JAPAN

32.

ワークショップ:打ち上げ花火を作ってみよう unity 道場 煌めく光を作る ・最後に作る煌めく光は爆発後に起きるので、ExplosionのSub Emitters/ DeathにSecondary Explosionと命名して追加しておく。 ・Secondary ExplosionのStart Lifetimeを0.6-1に、StartSizeを1-3に設 定することで消えるタイミングとサイズに幅をもたせておく。 ・EmissionのBursts数を1に設定してエミットされる数を調整。 ・RendererのMaterialをParticle Fireworkに変更。 COPYRIGHT 2016 @ UNITY TECHNOLOGIES JAPAN

33.

ワークショップ:打ち上げ花火を作ってみよう unity 道場 煌めく光を作る ・動きを少々まばらに、風に流される様を演出するためにVelocity Over Lifetimeを右図のように(-5, -5, -5)、(5, 5, 5)の間でランダムに動作する よう設定します ・最後にColor Over Lifetimeを点滅するように 設定すれば完了です。 COPYRIGHT 2016 @ UNITY TECHNOLOGIES JAPAN

34.

unity 道場 シェーダー、スクリプト その他のテクニック

35.

シェーダーについて unity 道場 ビルトインシェーダ ・基本的にパーティクルで使うべきシェーダは ・/Particles/ディレクトリ以下 ・/Mobile/Particles/ディレクトリ以下 ・基本的にモバイルプラットフォームではMobileを使うべき ・大きく次のようなカテゴリーに分けられる ・Additive ・Alpha Blended ・Multiply COPYRIGHT 2016 @ UNITY TECHNOLOGIES JAPAN

36.

シェーダーについて unity 道場 Alpha Blended ・アルファ値が100%未満の場合、同色を重ねるごとに、その色自体に近づく。 ・紙吹雪や色ガラスなど、発光しないもの全般に使う Additive(加算) ・重なり合うごとに明るくなる。 ・基本的に炎やイナズマなど、光を伴う現象に用いる ➡元が明るいところでは使えない Multiply(乗算) ・絵の具のように混ざり合う色同士が暗くなる。 ・使い所は限られている(闇魔法とか?) ➡元が暗いところでは使えない アルファ100% Alpha Blended Additive Multiply アルファ50% Alpha Blended Additive Multiply COPYRIGHT 2016 @ UNITY TECHNOLOGIES JAPAN

37.

シェーダーについて unity 道場 AdditiveとMultiplyの注意点 ・Additiveは文字通りRGBごとの値を加算していくので、元がゼロで はいくら塗りを重ねても白くなっていくことはないことに注意しよ う。例えば右図の上部のサークルはR99、G33、B00なので、重ね るごとに#FFFF00に近づくだけ、つまり黄色を目指すだけだ。 ・対して下のサークルは明らかに上部のサークルよりも濃い色ではあ るが、Bが10であるため重ねるごとに#FFFFFF、つまり白に近づ いていく。多くのケースで必要とされているのは、このようなRGB いずれも0以上の数値であることを心に留めておこう。 ・Multiply(乗算)シェーダを用いる場合は逆にFFを含む値がある と、いくら重ねても黒には近づかない COPYRIGHT 2016 @ UNITY TECHNOLOGIES JAPAN

38.

シェーダーについて unity 道場 AdditiveとAdditive(Soft) ・Additive(Soft)はデスティネーションに補色を描くこ とにより混ざり具合が緩和されたもの。 Blend One OneMinusSrcColor ・Additiveはそもそも背景が白いと見えにくい、白飛 びしてしまうという特徴がある。実際の炎や光線は明 るい場所ではほぼ見えないが、ゲーム上の表現とし て、白い背景でも見せる必要がある場合がある。この ような時にもSoftを試してみよう。 Additive Additive (Soft) 背景が明るいほど差が顕著に COPYRIGHT 2016 @ UNITY TECHNOLOGIES JAPAN

39.

モバイル版のシェーダーと何が違うのか unity 道場 機能面での違い ・大きくはこの2点のみ ・TintColorがある ・Soft Particleが使える ・よってこの機能を使わなければ、コストの安いモバイ ル版シェーダで十分だったりする。 ・TintColorは微細な色味調整に使うことが前提のよう だが、αを200パーセントにブーストさせたりする のも面白い使い方ではないかと思う ・ちなみにTint Colorは基本に設定すべきデフォルト値 が(0.5, 0.5, 0.5, 0.5)であることに注意しよう アルファ100% アルファ200% COPYRIGHT 2016 @ UNITY TECHNOLOGIES JAPAN

40.

モバイル版のシェーダーと何が違うのか unity 道場 Soft Particle ・もう1つの違いであるSoft Particleは遮蔽物などによりパーティクルが消える際、ボケ足をつけて綺麗にフェー ドアウトさせる機能だ。 ・Deferred Renderingのみの機能なので、カメラあるいはPlayer SettingでレンダリングパスをDeferredに設 定する必要がある。 Soft Particle OFF Soft Particle ON COPYRIGHT 2016 @ UNITY TECHNOLOGIES JAPAN

41.

スクリプトを併用するケースの例 unity 道場 再生・一時停止・パラメータの変更 ・Play On Awakeフラグを立てない限り、パーティクルは再生しない。再生、一時停止、再開などのコントロー ルは基本的には外部のスクリプトから行うことになる。Unity5.2まではスクリプトからアクセスできないパラ メータが多数存在していたが、5.3ではほとんどの変数をコントロールできるようになった。 その他時間に対する諸々 ・早送りやスロー再生したい場合は ParticleSystem.Simulate()の引数にデルタ タイムに変更を与えた値を取ることで実現す る。 ・また、ポーズ中などにタイムスケールを気に せず動かしたい場合も同様。右はタイムスケ ールを無視する例。 COPYRIGHT 2016 @ UNITY TECHNOLOGIES JAPAN

42.

スクリプトを併用するケースの例 unity 道場 個々のパーティクルにアクセスする ・パーティクル個々に直接アクセスして座標、色、角度を変 更することも可能であり、デモとしてPerlin Noiseによっ てデフォームするUnity Logoを作ってみた。 パーリンノイズ(英: Perlin noise)とは、コンピュータグラフィックス のリアリティを増すために使われるテクスチャ作成技法。擬似乱数的な 見た目であるが、同時に細部のスケールが一定である。このため制御 が容易であり、各種スケールのパーリンノイズを数式に入力することで 多彩なテクスチャを表現できる。パーリンノイズによるテクスチャは、 CGIで自然な外観を物に与えるためによく使われる Wikipediaより 池和田の解釈: なんか突っ込んだげば自然な感じの動きができるやつ ・ちなみにノイズ関数のオプションは近々実装される予定 COPYRIGHT 2016 @ UNITY TECHNOLOGIES JAPAN

43.

負荷を軽くするために unity 道場 メッシュは極力エミットさせない ・3Dオブジェクトを飛ばす場合、キャプチャした画像を2Dスプライト アニメーションにするなど、なるべくビルボードを使おう COPYRIGHT 2016 @ UNITY TECHNOLOGIES JAPAN

44.

負荷を軽くするために unity 道場 テクスチャをうまく使う ・ブラックホールの例では、パーティクル個々をエミットするのではな く、一枚のテクスチャ内に多数の粒子(この場合は星々)を書き込 み、膨大なパーティクルに見せている。これも有効な負荷軽減法だ。 COPYRIGHT 2016 @ UNITY TECHNOLOGIES JAPAN

45.

UIを扱う際の注意点 unity 道場 UIのエフェクトとしてパーティクルを使うには ・パーティクルをUIの前面に出す場合はまずCanvasの Render ModeをScreen Space Cameraにしよう。 ➡もちろん3DUIの場合はWorld Spaceでもいい ・描画句はSorting Layer > Order In Rayerで決まる。常に UIのキャンバスより前、あるいは後ろに出したいのであれば Sorting Layerでコントロールしよう。 ・しかし、同一キャンバス上の2つのUIオブジェクトに挟まれ る場合などはUIオブジェクト個々にCanvasコンポーネント をアサインし、Order In Rayerのオーダー番号でコントロー ルすべきだろう。 ・いずれにせよスクリプトを書く必要は無くなった :) COPYRIGHT 2016 @ UNITY TECHNOLOGIES JAPAN

46.

unity 道場 以上です