電子黄泉 2022/07/14 20:17

グラフィックのテコ入れ回

ごきげんよう。「夏と言えば?」と聞かれて思い浮かべることがエッチな水着イラストなTTXinよ。

私が好きな水着のデザインはクロスホルターネックよ!
でも競泳水着も好き。
あとスク水。
いやしかしドスケベビキニも捨てがたい……。

というわけで進捗報告に行きます。(※今回の進捗に水着要素はありません)

グラフィックのテコ入れ

今回は主にプレイヤーモデルのグラフィック改善を行っていました。

キャラクタの表現について

これまでのプレイヤーモデルの問題点と悩みは前回の記事のコメント内で回答しているので省略します。

色々書いてあるけど一番言いたいことは、
「私はスカートの中はしっかり暗くなって欲しい派!」
ということです。服を貫通して光が入るとスカート内の体が発光してるみたいに見えてしまうので……。
私はスカートからの落ち影を受けた太ももと光を直接受けた太もものコントラストが好きなのよ……。

で、コメントでは手を回している余裕がないと言ったけど、悩んだ末に時間を割いて自作のシェーダーを作ることにしました。


T3 Shader

そして出来上がったのがこの "TTXin's Toon Shader"(安直)

略してT3 Shaderよ!

シェーダーなんもわからん状態から作業時間約24時間ぐらいで作りました。

上の画像だとそこまで目立たないけど、髪の陰影や顔に落ちてる髪の落ち影が汚いのでまだ修正しないといけないけど……。


比較[影]

前回までのモデルとの比較です。
左から順に下記のように並んでます。画像では映ってませんが、左側にある照明が光源です。

  • Toon: 全身にUnity公式Toon Shaderを使用したモデル
  • Toon + Lit: Toonの頭に体だけUnity標準Shader(Lit)を使用したモデル
  • T3: 今回自作したシェーダーを使用したモデル

T3ではToon + Litほど彩度の低い影が入らないようになっていることが分かると思います。また、Toon + Litとは違い、頭と体で同じシェーダーを使用しているので、色合いや陰影の付き方の差による違和感も感じないハズです。




下の画像は左にある光源をオブジェクトで遮った際の比較です。


Toonは服に限らず壁だろうと何だろうと物体に遮られてできた照明(Point Light)の影は受け取りません。太陽光(Directional Light)による落ち影は受け取れるので、屋外メインのゲームであれば気にならないと思います。
Toon + Litの場合はToonを使用している頭だけが影の影響を受けないため、画像のような頭の高さにまで影ができるようなオブジェクトで照明の光を遮られた場合、頭だけ光ってるような違和感が出ます。


比較[光]

この動画は手前に赤と青の照明を置いて照らした際の比較です。
Unity公式Toonは照明からの落ち影を受けないようになってる以外にも処理できる光源の数も確か4つまでで、動画みたいに4つ以上の光源が入ると変な切り替わりが発生してしまいます。
ちなみに見た目では4つ以上の光源が入っていないように見えるけど、意外と照明系は見た目以上に範囲が大きい(動画の場合は壁にある照明とかも拾ってる)から反応しちゃうのよね。ビクンビクン。
ここにさらに銃のフラッシュライトとか発砲時の発光なんかも入れようものなら酷い有様よ。
まあそもそもこのToon Shaderを使って光源の処理をしっかりやろうって人の方が少ないだろうけども……。


ということでゲームやグラフィック関係の仕事をしているわけでもない私でも望むシェーダーが作れたのでUnity君やるわね……って思っていました。
下記の事件が起きるまでは。


「前はいたが、今はもういない」

[シェーダー完成後]

「わーい、TTXinちゃん大勝利~」
「思ったより時間かからずに出来上がってよかったわー。7割ぐらいの満足度だけど、まあ後々アップデートしていきましょ」
「さて、プレイヤーシステムに組み込みますか。えいっえいっ」


「おぉん?」

(影に映る謎の人影)

「あなたはそこにいますか?」


というわけでシェーダー作る時間以上にゲーム実行時にこのシェーダーをロードするとモデルが正常に表示されず、存在はするけど透明になるというバグ(よくあるピンク色ですらない)で一週間ぐらい悩まされ、頭が禿げ上がりそうでした。

エラーの表示は何も出てない上にネットやUnity forumで色々な関連してそうな語句で検索しまくっても全然情報が出てこないしで最悪でした……
(´・ω・`)

結局なんとか自力で解析して判ったのがUnityのシェーダー処理を良い感じに最適化してくれる部分が影響してるっぽいという感じでした。(正直Unity側のバグな気が……)
具体的な原因までは特定できていないけど、回避策で上手く動いてくれたのでヨシとしました。


おわりに

私としては今回作成したシェーダーで違和感は殆ど感じなくなったので、これでも違和感を感じてしまうという方はたぶん想像している絵作り(または好み)が私と違うのではないかなーと思います。
改善点はまだいくつかあるのでアップデートはして行くと思いますが、基本的にはここから大きく変えることはたぶん無いです。

次回

2~3週間で記事更新ぐらいが丁度良いペースな感じがしてきたので引き続き同じペースで更新します。
仕事の増殖はたぶん止まったので、作業時間を増やしていきたいですねー。
でも今回のバグ修正でだいぶ体力を持っていかれてしまったので連休の一日ぐらいはオフにしよう。 (ˇωˇ」∠) スヤァ…
久しぶりに絵(太ももの落書き)を描いたら楽しかったし、たまには絵を描くのもありね……。うーん、連休は色々できて素晴らしい。週休3日にして欲しいわ。

では次回の記事でまた会いましょう!皆さんも良い週末を!

この記事が良かったらチップを贈って支援しましょう!

チップを贈るにはユーザー登録が必要です。チップについてはこちら

最新の記事

記事のタグから探す

月別アーカイブ

限定特典から探す

記事を検索