LoginSignup
2
2

More than 1 year has passed since last update.

VRChatプレイヤーによるParticle System解説 ~Shape Module編~

Last updated at Posted at 2021-12-16

この記事はUnity 2019.4.29f1の記事です

Emission Module編 << ここ >> Velocity over Lifetime編

はじめに

この記事はちょっとParticle System触れるようになったけどまだまだ知らないパラメーターだらけで抵抗感がある人向けにじゃあ全項目解説しようという記事です。

パーティクル?シェーダー?憧れるけどよくわかんない…という人は最近はVRCUnity勉強会などで初歩の初歩から解説してくれる講座などが解説されているのでそこに参加してみたりするといいでしょう。

その他にこの記事はアドベントカレンダーにしてParticle Systemの記事を増やしてパーティクルへの抵抗感を減らしてやろうという企みもあります。

Shape Moduleってどこ?

image.png
ここのShapeって書いてあるやつ

本題

Shape

デフォルト Cone
パーティクルの発生源の形状を決めるパラメーター
ここを何にするかによって設定できるパラメーターが変わる
どういうパーティクルを作りたいかで何を選択するか大きく変わる
以下の解説では同じ項目は省略して説明する


Sphere,Hemisphere

放出方向 球の中心から外に向かう方向
球、半球状
半球は底面にはパーティクルが発生しない

Radius

デフォルト 1 (0.0001~3.402823e+38)
単位 m
球の半径

Radius Thickness

デフォルト 1 (0~1)
パーティクルの発生する領域の厚み
image.png
赤と黒の領域がパーティクルの発生する領域で0にすると表面のみから発生するようになる
他の項目でもこの概念を使うのでこの概念を覚えていたほうが良い

Arc

デフォルト 360 (0~360)
パーティクルの発生する領域の角度
実際にパラメーターを操作してみるとわかりやすい

Mode

デフォルト Random
領域からどういった順序でパーティクルが発生するか定めるパラメーター
Loopにすると時計のようにぐるぐる発生点が回る、Ping-Pongにすると半周はLoopのように動きもう半周は反転して動く…を繰り返す
Bursts SpreadにするとEmissionのBurstを使用した際に均等にまばらに散らばるように発生点が散らされる

Spread

デフォルト 0 (0~1)
単位 割合
0.5にすれば2方向に、0.33にすれば3方向に、0にすれば全方向に放出方向を分けるパラメーター


Cone

放出方向 発生面の表面方向、パラメーターによって変更できる
シャワーのような円柱~円錐形

Angle

デフォルト 25 (0~90)
単位 度
image.png
図のように広がる角度を指定するパラメーター

Emit from:

デフォルト Base
パーティクルの発生する領域を面からにするか上で指定した領域内からにするか指定するパラメーター


Donut

放出方向 ドーナツ面に対して外側方向
ドーナツ状
所謂トーラス

Radius

デフォルト 1 (0~3.402823e+38)
単位 m
ドーナツの大半径

Donut Radius

デフォルト 0.2 (0.0001~3.402823e+38)
単位 m
ドーナツの小半径


Box

放出方向 正面のみ
立方体

Emit from:

デフォルト Volume
立方体のどこからパーティクルが発生するか決めるパラメーター
Volumeが全体、Shellが面、Edgeが辺から発生する
ShellとEdgeのみ選択するとBox Thicknessという項目が出てくる

Box Thickness

デフォルト (0,0,0)
パーティクルの発生点の偏りを決めるパラメーター
0~1の間で設定でき、X軸の値が大きくなればX方向に、Y軸が大きくなればY方向にと発生点をずらす


Mesh

放出方向 指定したメッシュの法線1方向
自分で好きなメッシュを指定できる

Type

デフォルト Vertex
指定したメッシュのどこからパーティクルが発生するか決めるパラメーター
Vertex(頂点)、Edge(辺)、Triangle(三角面)の3つから選択する
Vertex、Edgeを選択した時にModeが、Edgeを選択した時にSpreadとSpeedが設定できる

Mode

デフォルト Random
どういった順番で指定した場所からパーティクルが発生するか決めるパラメーター
Loop、Ping-Pongの動作は前述だが基準となる順番は頂点インデックス2の順番になる

Spread

デフォルト 0 (0~1)
パーティクルの発生点がどれだけ散らばってるか決めるパラメーター
数字を0.03とかにすると一部の箇所からのみ出るようになって1にすると1箇所からしか出ない、もちろん0だと全部から満遍なく出る

Speed

デフォルト 1 (-3.402823e+38~3.402823e+38)
LoopやPing-Pongにするとわかりやすいが上のパーティクルの発生順のサイクルの速度にかかる倍率
数値を大きくすると高速で発生点が変わる

Mesh

メッシュを指定するとこ

Single Material

デフォルト 無効(0)
マテリアルスロットが複数あるマテリアルの内特定のマテリアルが割り当てられてる所をパーティクルの発生点にするパラメーター
0から始まっているが一番目のマテリアルスロットは03

Use Mesh Colors

デフォルト ON
メッシュの頂点カラーをパーティクルに適用するかどうか決めるパラメーター

Normal Offset

デフォルト 0 (-3.402823e+38~3.402823e+38)
単位 m
発生点を法線方向にどれだけずらすか決めるパラメーター


Mesh Renderer

放出方向 指定したメッシュの法線方向
別オブジェクトのMesh Rendererを指定できる
上のMeshと違う点はそれぞれが独立してるためアニメーションとかで動かしたりの自由が効くこと


Skinned Mesh Renderer

放出方向 指定したメッシュの法線方向
別オブジェクトのSkinned Mesh Rendererを指定できる
Skinned Mesh Rendererはボーンが通ってたりシェイプキーが使えるメッシュ、アバター本体とかがそう


Sprite

放出方向 正面のみ
Spriteに自動で設定された三角面

Sprite

任意のSpriteを指定するとこ


Sprite Renderer

放出方向 正面のみ
別オブジェクトのSprite Rendererを指定できる


Circle

放出方向 円の中心から外に向かう方向(ガイドの平面に沿って)
円状


Edge

放出方向 真上
辺1本


Rectangle

放出方向 正面のみ
四角
Rectangle(長方形)と書いてあるが正方形


Texture

デフォルト なし
平面、立体のShapeを指定した時にパーティクルの色に特定のテクスチャを指定できる
テクスチャを指定するとClip Channel, Clip Threshold, Color affects Particles, Alpha affects Particles, Bilinear Filteringが設定できる

Clip Channel

デフォルト Alpha
特定のチャンネルの色をカットするための設定
カットするチャンネル(RGBA)を指定する

Clip Threshold

デフォルト 0 (0~1)
カットする閾値を設定する

Color affects Particles

デフォルト ON
テクスチャの色がパーティクルに影響するか

Alpha affects Particles

デフォルト ON
テクスチャの透明度がパーティクルに影響するか

Bilinear Filtering

パーティクルにテクスチャで色を付けるときの補完をどうするかどうか

Position, Rotation, Scale

Shape全体の形にかかるTransform
下のこれを押すと簡単に設定できる
image.png

Align To Direction

デフォルト OFF
パーティクルの向きを強制的にパーティクルの放出方向に向けるパラメーター

Randomize Direction

デフォルト 0 (0~1)
パーティクルの発生した瞬間の向きをどれくらいランダムにするか決めるパラメーター

Spherize Direction

デフォルト 0(0~1)
パーティクルの放出方向をどれくらいランダムにするか決めるパラメーター

Randomize Position

デフォルト 0 (0~3.402823e+38)
単位 m
パーティクルの発生点をどれくらいランダムにするか決めるパラメーター

おわり

というわけでShape Moduleの解説でした
長かった
次はVelocity over Lifetime Moduleの解説です


Emission Module編 << ここ >> Velocity over Lifetime編


  1. よくわかんなかったらいいです 

  2. 全ての頂点にはそれぞれを区別する頂点インデックスという値が設定されてるらしい、正直難しくてそれ以上はよくわからない 

  3. 0番目から数えることはUnityに限らずよくある 

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2