がぷがぷ工房 2023/05/02 20:41

ライティングの苦悩と進捗

こんばんは、がぷがぷ工房です。

少し前のバージョンから、プレイヤーの頭部に光源を設定していました。
しかしこのライトが多くの場面で違和感をもたらしていたのでVer0.033で削除しました。

ちなみにこの光源は3Dゲームで時々見かける手法で、
キャラクターの周りを明るくしたり、キャラクターの顔を照らすことで影を飛ばし綺麗に見せるという効果があったりします。

私がこのライトを使っていた理由は
ステージのスペキュラ(光沢)を見せる為のものでした。

Unityの光源

Unityの光源には3種類あって
RealTime:リアルタイムに影を描写する(一番重い)
Bake:事前に影を描写する(一番軽い)
Mixed(ShadowMask):近くの影をリアルタイムで描写し、遠くの影は事前に計算する(比較的軽い)
この3種類の特徴から、Bakeで良いんじゃないかと思っていました、とにかく軽いので・・・。
しかしBakeには一つ大きなデメリットがあって、それはスペキュラ(光沢感)が出せないことです。

スペキュラー

スペキュラーはマテリアルに設定された光沢感です。
スペキュラはリアルタイムな光源でしか機能しないので、RealTimeもしくはMixedのライトを使う必要があります。
なので「ゴブリンの洞窟エリア」でMixedライトを利用しています、
洞窟の壁に艶があるだけでかなりクオリティが向上したように見えるのです。
Bakeライト


Mixedライト

ですがやはり重いです・・・、
それと、URPというローエンド向けのレンダリングパイプラインではリアルタイムなライトを同時に8つ描写することしかできません。
洞窟エリアのライトが時々点滅するのはこれが原因です。
Mixedはとても理想的な仕組みではあるのですが、安定性に欠けているという印象を受けます。

ステージ専用ライトの追加

次回の更新では新しくスペキュラを見せる為のライトをテストしたいと思っています。
スペキュラ用ライトOFF


スペキュラ用ライトON

このライトはカメラから正面方向にスポットで照射され
おおよそ100mの範囲にリアルタイム光を当てます。
あくまでステージのみを照らすもので、キャラクターには影響しません。
更にオプションからこのライトのON/OFFと強度を調整出来るようにします。
これによってBakedライトで構成されたステージはよりパフォーマンスが上がり
尚且つ質感を表現することが出来ます。
モバイル端末ではライトをOFFにすることで更にパフォーマンスを上げることも出来ます。

なぜスペキュラーにこだわるのか

「そもそもスペキュラーが必要なのか」という話ですが
painRe:inで使われている3Dmodelのほとんどに、Albedo(色)、Metal(スペキュラー),Normal(おうとつ)が設定されています。
しかしBakedライトを使用した場合、metalとNormalの情報はほぼ機能しない状態になります。


例えばこのスクリーンショットでは、素材の質感はAlbedとEmission(Bloom)と影とAmbient Occlusion(壁の角に強い影を落とす)が見て取れます。
ですがこれは本来求めている絵ではなく
全体にライトを当てることで全く違った絵になります。

ライトがステージを照らしただけで壁がマットな質感になり、エネルギータンクはガラスの様な質感に見えて、足元のタイルの目地はこんもりと浮かび上がり、地面に落ちている血液にも立体感が出たと思います。

このようにUnityではリアルタイムなライトを当てないと多くの情報が失われてしまいます。

まとめ

この問題は結局まだ解決していないのですが・・・
個人的にはMixedライトを多用してコストを上げてリアルな質感を表現するよりも、
Speculer専用のライトを設置して、無理やりにでも誇張された質感を表現した方が良いのかなぁと思っています。
その方が少しだけリッチなゲームにみせかけられるかもしれません。

進捗

現在は「エリア1-5」と「エリア3-3」を同時に勧めています



「エリア3」はロボット系のステージにしたいのですが
アームの操作やロボットの制作でかなり難儀しております・・・。

次回の更新は「エリア3-3」追加と「エリア1-5」のギミック追加になると思います。

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

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

記事のタグから探す

月別アーカイブ

記事を検索