2013年10月21日月曜日

Unity : Shuriken : Asset : エフェクト調査6 WarFX編

第6回になりました
だらだら続いてますがそろそろけりをつけたい。


WarFXに必要な表現が入ってるので調査します


1.発砲
2.被弾
3.爆発

デス

色々パラメータはありますが、必要そうな所のみ抜粋します。
というわけで、小さく分解調査


MuzzleFlashes

銃口より表示されるガス、光です。

向き : z 方面
時間 : 1s loop
Emission Rate : 10
LifeTime : 0.05

ということは、10発 / 1s のループってことね

■素材
発砲光 (Glow + Light + 発砲光 + 発砲光 + 発砲光 + ガス) /* 親 (子 + 子 + ・・・) */

親1
a1. 基本的な銃口よりの発砲光
Mesh : Plane 1x1 にテクスチャを張ったもの
Shader : WFX/ Addutuve Alpha8
Texture : 256x256 png File rgba(モノクロに見える) なんで、全チャンネル使うかね(もったいない

子6
b1.Glow 銃口周辺部の明るさのフェイク

Mesh : Billboard
Shader : WFX/ Addutuve Alpha8
Texture : 256x256 png File rgba(モノクロに見える)


b2.Light C#でスクリプト制御
 0.05f 発光しろっていう制御 IEnmurator とかよくわからん前置が出てきた。
 参考 > リンク  正直Unity用語かもしらん、まったく自信が無い

b3.Plane a1の複製 角度対応のための複製 45度 づつ
b4.Plane a1の複製 角度対応のための複製
b5.Plane a1の複製 角度対応のための複製

b6.Sparks 銃口、砲身側面よりでる、ガス
Mesh : Plane 1x1 にテクスチャを張ったもの
Shader : WFX/ Addutuve Alpha8
Texture : 256x256 png File rgba(モノクロに見える)


まとめ
1.複数のパーティクルを使用。親子付けしてあるだけである
謎がひとつ解けた。
SubEmiterでどう処理をしているかと思ったが、使ってない
異なるパーティクルシステムの塊だった罠 orz
親が再生状態に入ると、子も、再生に入る


2.謎
 一つのMeshでやったらどうだろう。
 たとえばa1,b3,b4,b5,b6を一つのMeshで作る。
 問題点
 ・汎用性が乏しくなる
 ・ソートがおかしくなる
 などの弊害はありそうだ。

3.スクリプトの発光が肝


被弾 1

破片が飛び散る。跡は無し

■素材
要素は3つ、煙 ( 破片 + 煙 )


a1 Smoke1、着弾後に上がる煙


b1.Debris 飛び散る破片(今回はコンクリート)
LifeTime 0.5 - 2.0
Speed 2-6
Size 0.004 -0.11

Emission : 20
Shape : Cone
Color Over LifeTime : 最後は透明に
Size Over LifeTime : 中 > 大 > 小
Collision :
Texture Sheat Animation : X3, y3, WhileSeet, 0, 9, Random, 1
Rnderer : Billboard

 Shader : Particles / Alpha blended
Texture : 256x256 png File rgba(モノクロに見える)

b2.Smoke 、着弾後勢い良く上がる煙コンクリートの粉末


被弾 2 (弾痕)

被弾後に破壊された跡。時間制限で消える
要素は一つ増える 煙 ( 破片 + 煙 + 弾痕 )

(略 被弾1 に追加要素

Bullet Hole 弾痕の表示ポリ
Type : Mesh : Plane1x1
Mesh Renderer : CastShadow, ReceiveShadow・・・。
Shader : WFX / TransParentDiffuse
+Scriptで制御
//スクリプトの中身//
・UVを付ける 4分割でランダムで表示
・寿命を設定 10fとする
・フェードアウトのパーセンテージを設定 80%
・フェードアウト時間をすぎるとマテリアルのアルファ値を上げ、
 最終的には見えなくする

イテレーターとか使ってるんで注意な( :p


だんだん消えるMesh!!! これだ!!!


爆発

中規模の爆発 元は地雷を想定
火花:線(火花:粉 + 火花 : 粉大 + 火花 : マルチ + 爆発1 + 爆発2 + 火花 : 線3 + 煙)
多いな orz

SubEmitter使って無い

a1 : 火花(線) 重力ありの線上の火花
Renderer : Stretched Billboard
Shader : WFX/Additive Alpha8
Texture: 横長の棒 128x128 RGB (グレーとして使用)
Script : WFX_Auto Destruct Shuriken (スクリプト) 処理後削除する


b1 : 火花(粉) 火花の粉 セットで使用
Renderer : Billboard
Shader : WFX/Additive Alpha8
Texture: 粉5個 128x128 RGB (グレーとして使用)


b2 : 火花(粉大)重力あり 玉状
Renderer : Stretched Billboard
Shader : WFX/Additive Alpha8
Texture: 粉の玉 64x64 RGB (グレーとして使用)


b3 : 火花(マルチ) 火花の粉 セットで使用
Renderer : Stretched Billboard
Shader : WFX/Multiply Alpha8
Texture: 粉5個 128x128 RGB (グレーとして使用) b1 燃焼済み 灰として使用


b4 : 爆破1 大きな炎の塊
Renderer : Billboard
Shader : WFX/Additive Alpha8
Texture: 炎 256x256 RGB (グレーとして使用) 炎テクスチャ


b5 : 爆破2 大きな炎の塊2
Renderer : Billboard
Shader : WFX/Additive Alpha8
Texture: 炎 256x256 RGB (グレーとして使用) 炎テクスチャ 中心の位置が違う


b6 : 火花(粉) 火花の粉 線状 ちょっとぼかしてる
Renderer : Stretched Billboard
Shader : WFX/Additive Alpha8
Texture: 粉5個 128x128 RGB (グレーとして使用)



b7 : 煙 立ち上る直線状の煙
Renderer : Stretched Billboard
Shader : WFX/Additive(Soft) Alpha8
Texture: 256x256 RGB (グレーとして使用)
向きを下向きにし、サイズの拡大で煙を表現。


総括

・あまり、スプライトのアニメーションは使ってなかった。


Shurikenで出来ない事
・オリジナルメッシュでの、透明度、色等のシェーダーパラメータの変異

Shurikenでないと出来ない事
・時間を利用した、透明度、色等のシェーダーパラメータの変異

どちらにしても出来ない事(スクリプトで出来る)
・UVスクロール
・サイズの変更

など、わりとどっちをとってもイバラ。
で、結局スクリプトを使う事になる。 orz


以下わりと急務だと思われるタスク
・スクリプトの制御 ああん
・ツールの開発   ううん
・シェーダーの拡張 ああん

C#くわー orz

0 件のコメント:

コメントを投稿