スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

UNITY:カスタムイメージエフェクト

サンプルを改造してUNITYのイメージエフェクト(いわゆるポストエフェクト)をカスタム。
UNITYのスタンダードアセットのイメージエフェクトは高級な感じはするんだけど、用意されたパラメータだけでは
いまひとつ狙った絵が作りにくかったのと、やはり仕組みを自分で理解したかったので挑戦。

●ソフトフォーカスフィルター
140316a_BG.jpg
光のにじみのような効果で全体的に絵をやわらかく見せる効果のフィルター。
処理的にはきわめて簡単で、ブラーさせた画面とオリジナルの画面を50%でブレンドしただけ。
ふわっとした感じに背景がなじむのでちょっと高級感が出る。
ただ、上の絵だとちょっとぼやけすぎて距離感がつかみづらくなってしまっている感がある。
プレイアビリティを考えると、もう少し抑え目にかけたほうが良さそう。
ブレンド率を25%まで落としたくらいがちょうどいいかも。
同じような効果のディフュージョンフィルタ-も試してみたんだけど、背景の彩度が上がりすぎちゃって
ちょっと落ち着きがない絵になってしまったので今回はボツに。

●ブルームエフェクト
140316b_BG.jpg
おなじみの、高輝度の部分のみを抽出してぼやかし、元の画像に重ねることでまぶしい光を表現するための処理。
レンダーテクスチャーの回数を抑えるために上記のソフトフォーカスと一緒にまとめて処理できるようにしてみた。
どちらもレンダーテクスチャーでブラーした画面を用意するので、それを使いまわして両方やっちゃおうという魂胆。

UNITYはMSAAとHDRを併用できないという現状の制限があるんだけど、やはりMSAAはマストで欲しい。
そこで、HDRは使用せず、代わりにαチャンネルに高輝度情報を持たせることに。
(これをやるとたぶんアルファブレンド系のシェーダーが使いにくくなるけど、今回は使う予定があまりないのでOK)
光らせたい部分のAチャンネルを1になるようにそれぞれのシェーダーを設定して、
レンダーテクスチャーのαチャンネルをそのまま高輝度部分のマスクとして扱えるように。
そしてブルーム部分の色が際立つようにRGBをいろいろいじって、マスク使って元画像に加算して処理的には完成。

あとはブラーのかかり具合とかをサンプルを改造しながら調整。
ブラー処理はUNITYの関数を使っているみたいで中身まではよくわかっていない。この辺は別の機会に勉強したい。


ここまでやって分かったのだけど、ブラー画像をブルームとソフトフォーカスとで併用したのはちょっと拙速だったかもしれない。
ブルームとソフトフォーカスのボケ方をそれぞれ個別に調節できたほうが絵作りの自由度は高い。
レンダーテクスチャーの数は抑えられたので処理的には間違いなくこっちのが軽いはずなんだけどね。
最初のチャレンジとしてはまずまずだけど、時間があったらやっぱり別々に処理するように分けたほうがいいかもしれない。

イメージエフェクトの仕組みの理解も深まってきたので、次機会があればサンプルの改造じゃなくて1から自作してみたい。
デプス情報を使ったネタとか、試してみたいアイデアが結構ある。

スポンサーサイト

ステージ端エフェクト

気を取り直してゲーム用のシェーダーを書く。
前から必要と考えていた、「これ以上は進めないよ」というステージの端をプレイヤーに知らせるエフェクト。

いわゆる「見えない壁」は、本当に見えないとプレイヤーが混乱するし、
かといって常に見えるようにしてしまうと景観を損ないかねない。
実際に岩や壁などのゲーム上の障害物で道を塞いでしまってもいいのだが、そうすると狭苦しいステージしか作れなくなってしまう。

そこで、景観を損なわず、プレイヤーに端を明示しつつ、見晴らしのいいステージでも問題ない手法をめざして作ったのがこれ。
140308a_BG.jpg
構造的にはただのメッシュコライダー付きの板ポリに、加算ブレンドのシェーダーを載せて
テクスチャーをUVスクロールさせてるだけなんだけど、
シェーダー内でカメラから距離が離れれば離れるほど加算が薄くなっていくようにしてある。
なので、ある程度近くに寄ったときだけ表示され、遠景の見た目には干渉しない。

景観を損ねずにステージ端を明示するという当初の目的は達成できたかな。
テクスチャを変えればSFっぽいバリアーにも見せられるだろうし今後も応用が利きそう。


よーし、これで大体シェーダーはそろってきたかな。あとは砂煙やヒットエフェクトなんかの半透明系のシェーダーか。
UNITYのデフォルトのやつでもひとまず問題はないんだけど、勉強も兼ねてやはり自分で作りたい。
車輪の再発明と人は言うかも知れないが、よい車輪を作ろうと思ったら車輪の仕組みを本当に理解する必要があって、
そのためには自分で作れるようになるしかないと思うんだよね。

番外編 基本機能で作るリアルタイム炎エフェクト

サイクロプスはちょっと行き詰ったので、別のネタを。
SOFTIMAGEの基本機能のみで作るリアルタイム炎エフェクト!
110418a_fire.jpg

まずは動画をごらんあれ。

結構アニメっぽい見た目、かつローコストに使える!

手法の元ネタはこちらの動画。
http://www.nicovideo.jp/watch/sm10719309
訂正。コピペミス、こっちでした。
http://www.nicovideo.jp/watch/sm11035477


●やり方
簡単に解説すると、スフィアマップで炎のテクスチャを貼り付けた凸凹球体を回転させることで不定形な炎の動きを表現するという手法。
これを何とかSOFTIMAGE上で再現できないかとヘルプを見直しながら試行錯誤していたら、なんと基本機能だけでできるではないか!

●OGLシェーダーでスフィアマップ
基本的にはいつもの「OGL Alpha Transparancy」シェーダーで、αつきの炎のテクスチャを球体に張るんだけれども、
その際にUVテクスチャリングじゃなくて、スフィアマップで貼り付けるのがミソ。
110418c_fire.jpg
マニュアルを読み直して始めて知ったんだけど、SIデフォルトのOGL系リアルタイムシェーダーは
もともと「OGL13TEXCOORD」というノードの中で、スフィアマップに対応してた!
通常は「Explicit UV」となっているところを「Spheremap」にしてやると、カメラから見たオブジェクトの法線を基準にテクスチャが貼り付けられる。
後は凸凹した球体をくるくる回すことで、お手軽に炎が動いているように見せることが可能。
球体の回転方向によって炎の流れが変化するので、動画では常に下から上へと流れるようにコンストレイントでカメラに追従させている。
個人的にはパーティクルとかで燃やすよりもこっちのほうがアニメっぽいメリハリのある絵になるので、かなり使えそうな予感。
テクスチャや球体の形状しだいでいろいろなバリエーションも作れそうだし。

●テクスチャ
今回使用した炎のテクスチャ。適当に手描き。αで周囲を抜いてある。
110418b_fire.jpg
もっとしっかり描いても良いけど、こんなんでもわりと十分炎っぽい見た目になってくれる。
ちなみに今回は普通のαブレンドで表示しているけど、加算半透明にしてもいい感じの見た目になる。

●問題点
110418d_fire.jpg
このスフィアマップ、かなりお手軽で嬉しいんだけど、なぜかポリゴンの輪郭付近にごみがたくさん表示されてしまう。
テクスチャが悪いのかと思っていろいろ試したけど、αつきのテクスチャをスフィアマップで貼り付けると
必ずこうなってしまうみたい。グラフィックボードとかのハード的な問題かな~?
ひとまずの回避策として、サブディビジョンをかけてやることでごみが目立たなくなるみたい。
レベル2くらいまでかけるとほとんど発生しなくなるので、当座はこれで凌げそう。
サブディビジョンつかうと、どうしても形状がヌルくなりがちだから本当は根本的な解決ができたらいいんだけど。
だれかいい方法があったらぜひ教えてください。


SOFTIMAGEはつかい始めてから数年立つけど、未だにこういう知らない機能がたくさん眠ってそう。
基本機能の組み合わせだけでも工夫次第でいろいろな表現手法を実現できてしまうところがSOFTIMAGEのいいところだな~。

明日以降はまたサイクロプスに戻る予定。
仕事のほうでそろそろニトロをかましたいのでしばらくは更新ペースが遅くなるかも。

番外編 ミサイルトレイル4 動画編追加

ちょっと修正

ミサイルの本数増やしたり、動き調整したり。
軌跡がカメラの前を横切る瞬間が好き。

番外編 ミサイルトレイル3 動画編

なんとなく形になったので動画作ってみた。

基本的にミサイル本体の位置座標にのみモーションをつければ
ミサイルの向きとか噴射煙は自動的に制御される仕組み。
directionコンストレイントと、エクスプレッションの「Frame Offset」が活躍。

カメラの位置をほぼ固定にしておいて、やや遅れてミサイルを追随するように注視点だけをアニメーションさせると
板野サーカスっぽい絵が作れる。わざと時々ミサイルをフレームアウトさせたりとか。

ミサイルの数も簡単に増やせる(モデルを複製すればOK)し、モーションは位置座標だけにつければ良いし、
その気になればもっと大量に派手な軌道でミサイル乱舞させることも出来そう。

今のところ使うあてはあんまりないんだけど面白かったんでOK!いつか入用になることもあろうて。
プロフィール

JNY

Author:JNY
某ゲーム会社勤務
趣味と修行をかねて個人製作中
Softimage & Cgfx & Unity

最新記事
最新コメント
月別アーカイブ
カテゴリ
カウンター
twitter

Twitter Updates

    follow me on Twitter
    リンク
    上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。