質問: 0.5; } ENDCG } } ``` 元のスクリプトは無職透明で綺麗にレンダリングされていましたが,色を変更するために修正した途端に前後関係が崩壊してしまいました. 半透明のレンダリングは破綻しやすく,描画も重くなりますが,色を付けて半透明にした方が臓器ごとの立体的な把握がしやすいので,何とか半透明の状態でレンダリングをしたいです. いくつかShaderを試し,最初の記事のShaderが一番綺麗に表示することができましたが,回転させると破綻する箇所があり悩んでいます. Inspectorでの設定に改善の余地があるのでしょうか.それともShaderを変えるべきなのでしょうか. お勧めの記事などでも良いのでご教示頂けましたら幸いです.
回答: ご質問者さんの描画しようとしているような、オブジェクト同士が互いに入り組んでいる状況は、自然な半透明表現をするのがかなり困難なケースだと思います。描画順をメッシュ単位で奥から手前になるようにしても、前後関係が複雑なためにどこかしら矛盾が生じてしまいそうです。インスペクタの設定をいじるだけでは、おそらく改善できないかと思います。 順序に依存しない透明表現として比較的シンプルなのは、[Unity5]破綻しない半透明描画を行う | notargs.comのようなディザリングを使う手ではないでしょうか。 シンプルで高速な点は利点が大きいでしょうが、半透明を不透明な網目に置き換えているだけですので、サイトの画像の通り網目模様が現れてしまうでしょう。 ポストエフェクトでぼかしをかける、あるいは最終的な解像度よりも高い解像度でレンダリングしたものを縮小する、といった対策が必要かもしれません。 そのほか、私自身は試してみたことがないためどれほどの品質・パフォーマンスなのか不確かですが、UnityでOIT(Order Independent Tranceparency) - UnityShader 入門(オリジナルの手法はMorgan McGuire、Louis Bavoilによる「Weighted Blended Order-Independent Transparency」)も興味深いですね。 ブレンドの仕方を工夫することで、半透明オブジェクトの描画順に関係なく良好な見た目を得ることができるそうです。ディザリングと比べると実装に手間がかかりそうですが、やってみる価値があると思います。