このシリーズの記事一覧 (クリックで開閉)
【 ナイアガラ超基礎 】
マテリアルと聞くと「なんらかのポリゴンに貼り付けるもの」という印象があると思う(私がそうだった)
実は今回のSprite Renderer
の場合は「マテリアルそのものを飛ばすことができる」という感覚でよい。
つまり一切のメッシュを読み込む必要がなくマテリアルだけ読み込んでやればそれが飛んでいく
まずはマテリアルを作って飛ばしてみる。
できるだけシンプルなステップで解説する。
白と黒だけで星のテクスチャを作成。
※画像はこれをDLしても良いし、好きな白黒画像でもよい。
コンテンツブラウザに画像をドラッグ・アンド・ドロップで追加。
同じくコンテンツブラウザを右クリックでマテリアル
を追加して開く。
※例ではマテリアル名をMA_Star
とした
次に、マテリアルをダブルクリックで開いてコンテンツブラウザの星画像を罫線の枠内へドラッグ・アンド・ドロップ。
※マテリアル編集画面でもctrl+スペース
でコンテンツブラウザを開くことができる(UE5)
するとTexture Sample
ノードとしてマテリアルにテクスチャが読み込まれるので
RGB
とベースカラー
をドラッグして結ぶ。
右上の適用
を押して確定しよう。
コレで完成。
ナイアガラシステムをFountain
のテンプレートで作成しておく。
※作り方はナイアガラ基礎#1で概ね説明している。
今回はパーティクルがわかりやすいように非常に大きいサイズへ変更した。
Initialize Particle
> Sprite Attributes
> Sprite Size Mode = Uniform
> Uniform Sprite Size = 100
Sprite Renderer
のMaterial
に先程作ったマテリアルを適用
Spawn Rate
が多すぎたので5
に調整
さて、これで設定した星が飛び出していると思う。
メッシュを設定せずマテリアルだけ設定しただけで正しく星になっている。
デフォルトで板状のマテリアルが飛んでおり、視点を変更しても面も視点に向くように追従する。
既に気づいていると思うが、重なっている星が欠けている。
これはテクスチャの黒い部分が透過されていないためだ。
今回の記事ではこれを修正していく。
加えて白を設定したのに色が薄い。
これはライティングが薄い影響かと思う。
せっかく星なので少し光らせる調整も合わせて行う。
マテリアルの編集画面に戻って右側の茶色いノードの帯の部分をクリックする
※日本語ではマテリアルの結果ノード
と書いてあるが、英語版ではこのノードをMain Material
ノードというらしい。
すると左下にこのノードのプロパティが出ているのでBlend Mode
をTranslucent
に変更する。
するとMain Material
ノードに書いてある文字列が一部ブラックアウトしてノードが繋げなくなっている。
逆にオパシティ
という部分が入力を受け付けるようになった。
Translucent
マテリアルに透過処理を行うブレンドモードの一つだ。
Texture Sample
のRGB
をエミッシブカラー
とオパシティ
に接続する。
ここに入力されているテクスチャの黒い部分を透過にする。
白い部分は不透明になるが、その中間のグレーは半透明になる。
これが透過する機能。
ベースカラー
と違いここに入力したものは「発光」するようになる。
通常Unreal Engineの色情報は各RGB共に1
を最大値にするが、エミッシブカラーの場合1
を超えた数値が入力できる。
この1
を超えた分が発光量となるので強く光らせたい場合は大きな値を入れる。
※大きくても100
ぐらいまでと考えて良いかと思う。10000
のような大きな値も受け付けるが発光しすぎてシェイプが潰れてしまう。
ここで重要なのは今はテクスチャをそのまま繋いでるので白い部分の入力が1
となっている。
つまり殆ど発光していない状態ではあるが
値が1
でも一応エミッシブカラーにつないであるので、上の映像のように真っ暗でもはっきりと見える状態になるのがポイント。
重なっている星に黒い部分が出なくなったのが分かると思う。
ここからは改良を加えていく。
上の設定に加えて発光するタイプのマテリアルはShading Model
をUnlit
にする場合が多い。
これは他の光をマテリアルに反射しない設定。
そもそもこのマテリアル自体が発光しているので他の光を反射しても影響は殆ど無くなるため。
Default Lit
よりUnlit
のほうが処理が軽いというメリットがある。
この状態で色を付けたい。
しかしInitialize Particle
のColor
を設定しても色が変わらない
ナイアガラの場合注意しないといけないのがマテリアルに色の情報を送ってやらなければならないということ。
手順を順番に説明する。
実はマテリアルに色情報を送る場合ナイアガラのエミッタ側の操作は必要ない。
Particle Color
マテリアル側にParticle Color
というノードを追加しエミッシブカラー
につなぎ直す。
これはナイアガラで設定された色情報を受け取るノード。
他には何も設定しなくてもこれだけで色情報がマテリアルに渡ってくるため即座に色が変化する。
ナイアガラ側へ戻りInitialize Particle
のColor
を調整する。
青く光らせたいのでB=100
という大きな数字に設定する。
Initialize Particle
にてカラーをランダムに(色味が強く出るように)
パラメータからSpriteRotation
に回転を加えて(シンプルな例なので時計回りのみ)
Add Velocity in Cone
の角度なんかも微調整。
ちょっとかわいくなった。
ナイアガラ側からParticle Color
でマテリアルにデータを渡したが他にもいくつかある。
マテリアルノードだけでも無限の可能性があるので、そこにナイアガラが加わると宇宙だ。
この先色々な作例を作っていきたい。