FC2ブログ

PlayHomeスタジオアイテム作成講座(応用編 4)

13. RenderQueueを理解する

俗に「透過病」とか「アルファ病」とか言われている(言われていた?)透過シェーダー特有の現象があります。
百聞は一見に如かずなので、早速進めて行きましょう。

13-1 フレームを無効にする
いつものように"mod_deskclock"をSB3Uで開きます。
ファイラーで"clock"をダブルクリックし、エディターの左ペイン"Object Tree"で"Expand All"を押してすべて展開表示します。
"body"フレームを選択して、エディターの右ペイン"Frame"のタブにある"is Active"のチェックを外します。
同様に、"hand","plate"もチェックを外して、"cover"だけチェックが入った状態にします。
これで、時計のカバー以外は無効になって表示されないので、時計のカバーだけが表示されます。

13-1-1.jpg

次にエディターの左ペインで"Material"を開き"m_cover"を選択します。
"Color"欄の"A"の値を"0"にします。

13-1-2.jpg

セーブしてゲームフォルダに上書きコピーします。
ではスタジオを起動して、時計(だった物)をロードしてみましょう。

13-1-3_.jpg

下着が透けてます!
前髪も透けてますがw

※服は透過シェーダーを使用していないので透けません
多分水着は透けます。

これがいわゆる「アルファ病です」
透過シェーダーを使ったマテリアルが重なると、度々こういう事があります。
当時原因が分からなかったから「病」ってつけたんでしょうね。

13-2 アルファ病の原因
Unityではカメラから遠い物から順番に描写されていて、透過する物も例外ではないそうです。
なので、本来正常に描写されていればこのような現象は出ないはず。

13-3 RenderQueueとは何か
要は描写する順番ですかね。
Unity上では以下のようになってます(Unity5.5のマニュアル抜粋)

Background = 1000:背景
Geometry = 2000: ほとんどのオブジェクト(不透明な物)
AlphaTest = 2450 アルファテストする形状(?
※2500までは不透明とみなされる。

Transparent = 3000 ガラス、パーティクルエフェクトなど
Overlay = 4000 オーバーレイ専用(レンズフレアなど)

遠くの物からカメラに近づくにしたがって数字が大きくなっていきます。
気にしなければならないのは透過する物だけですが、不透過の物でもRenderQueueを大きく設定すると手前に描写されます。

で、透過するオブジェクトが重なった場合に、後から描写しなければならない物(物理的に手前にある物)を先に描写してしまうとアルファ病が出るようです。
RenderQueueはシェーダー自体にあらかじめ設定されていて、SB3U上で"CustomRenderQ"を"-1"に設定すると、その値が使用されます。
逆に、"CustomRenderQ"に数字を入れると、その値が使用されます。
公式で設定されている数値をぱっと見た限りでは↓こんな感じでした。

眼鏡 3000
ブラ 3040
後ろ髪 3400(幅があるかも)
前髪 3500-3536あたり

※MODはどう設定されているか分からんので注意
※前髪は何層も透過オブジェクトが重なっているので結構な数が使われます。

ここで、先ほどの時計のカバーですが、"CustomRenderQ"を3050くらいにすれば「ブラは透けないけど前髪は透ける」という状態になるのですが、分かりますか?
CustomRenderQが「ブラ < 時計カバー < 前髪」となりますのでこの順に描写されますが、物理的には「ブラ < 前髪 < 時計カバー」の順です。
では実際にやってみます。
13-2-1.jpg

13-2-2.jpg

ちょっと分かりにくいですが、下着は透けてませんが、髪の毛は一部透けています。

キャラに重なった場合に正常に表示される(アルファ病を起こさない)ためには"CustomRenderQ"が3600くらいないとダメですね。

13-4 公式アイテムのCustomRenderQ(ueue)
正しいんだか正しくないんだか良く分かりませんが、ちょっとだけ公式アイテムを調べたらこんな数値でした。

草、レース 2450
ガラス類 3000
スフィア 7000
液だまり 9960

RenderQueueが同じオブジェクトが重なった場合はカメラからの距離に応じて描写順序が変わります。
なのでこの場合はアルファ病は起きません。
が、公式がこんな数値なので、アルファ病は起きなくても表示がおかしくなるのは避けられません(奥にあるのに手前に表示されるとか)
3600くらいにしておけばキャラ関係の物は大丈夫ですが、ガラス類と重なるとおかしくなりそうです。


ちなみに、公式アイテム(髪も)のCustomRenderQはマテリアルに設定してある場合と、フレーム内のMonoBehaviorに設定してある場合があるので気を付けましょう。
13-3-1_.jpg

フレームにぶら下がっているMonoBehaviorに[SetRenderQueue]という記述がある場合には、そっちにCustomRenderQueueが掛かれています。
13-3-2_.jpg


今回はこれで終了です。
次回はマップ類(ノーマルマップとか)とシェーダーのパラメータ辺りをさらっと説明します←詳しくないので

一応次で終わりの予定です。
関連記事

コメント

非公開コメント

No title

今迄の探究成果を惜しみ無く出しきっとるのぉ~ w
いゃあ~有難い限り!
Nockyはんのマニュアル文章、画像に至るまで全てストックして
今まとめとる最中...。
ホンマもんのBibleやがな! おおきにな ^^

Re: No title

RLAさん

調べたものをすぐ記事にする泥縄スタイル()
なんかこう、行き当たりばったりで書いてるので、あんまりまとまってないんですよねぇ。
プロフィール

Nocky

Author:Nocky
ILLUSIONのゲーム"プレイクラブ"、"ハニーセレクト"、"プレイホーム"のSSと、キャラに着せる洋服をメインに扱っていました。
登場するモデルは全て成人です。

Counter
PV(2016.11.24-)
カレンダー
11 | 2018/12 | 01
- - - - - - 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 - - - - -
カテゴリ
リンク
DAZ Studio
プレイホーム2
プレイホーム
ブロとも申請フォーム

この人とブロともになる