N高アドカレ の18日目記事です。
はじめに
この記事では、Unityでゲームを作っていて「なんだか安っぽさが消えないなあ」と悩む方に向けて
僕が個人で開発している 朝を知らぬ星 を作っているときに得たノウハウを共有していきます。
簡単に行える対策から、超越的な努力を要さないと解決できない問題までを項目分けして解説していきたいと思います。
初級編
順を追って解説していくので、まずは新しいプロジェクトを作ります。
僕はUnity2019.3.0f1を使っています。
3Dテンプレートを使っていつも通りプロジェクトを作ってみます。
うん!!爽快なほどUnity!!!
何の変哲もないCubeなので解説はしないでおきます。
###マテリアルを変えてみよう
適当にアスファルトのマテリアルを貼ってみました。
MCと書かれているのはこちらの
MasterCube
というCubeのUVを伸びないようにするアセットを使っています。
###スカイボックスを変えてみよう
というアセットを適当に拾ってきて変えてみました。
過去に作ったオブジェクトを適当に置いてみました。
なんだか色味がUnityっぽいし汚い…
夜っぽくしたいので青色にしました
ここまではあまり解説することもないので次に行きましょう
中級編
###リニアカラーにしてみよう
今回はPBRテクスチャを使用しているので採用します。
詳しいことはUnity公式さんが解説してくれているので。
https://www.slideshare.net/nyaakobayashi/ss-85264525
簡単に言うと画面全体の色の計算方法が変わります。柔らかな色になります(デメリットもあるので詳しくはスライドを)
ProjectSettingsからColorSpaceをLinearにします。
テクスチャすべてに変換が走るので、少し時間がかかります。
僅かですが、反射がきれいに出るようになりましたね。
###ディファードシェーディングにしてたくさんのライトを使ってみよう
カメラのレンダリングパスをDeferredに変えます。
Forwardレンダリングでは使えるライトの数に制限があったりするのですが、DefferdではGPUパフォーマンスが許す限りライトが無限に使えます(もちろんデメリットもあるので詳しくは調べてください)
朝を知らぬ星では、ヒットパーティクルにポイントライトを使っているのですが。
そういう実装についてとても効果的になってきます。
試しにスポットライトを置いてみました。(スカイボックスのパラメーターも少し触りました)
ここから色彩をいじってUnity感を抑えていきたいと思います。
上級編
###ポストプロセスを追加してみよう
標準のPostProcessingStackを使います。
とりあえず雰囲気でモリモリしてみました。
###フォグを追加してみよう
今回はこちら
を使います。
ボリュームメトリックフォグ、簡単に言うと木漏れ日のような表現を簡単に作ることができます。
それっぽくなったのでは???
超越編
ここからは朝を知らぬ星の環境で行っている事例を少しだけ紹介します。
後ろの山とかビルみたいなやつです。
このスクショだとわかりにくいのですが、ゲーム内でカメラを自由に動かせる環境で見ると結構かわります。
あまりわかりやすい資料がなかったのですが、このスクリーンショットでは電線と白線を消してみました。
ディテールを増やすことで手間はかかりますが、当たり前ですが圧倒的に見た目が変わります…
#まとめ
PBR環境でUnityっぽさをなくすには、フォグやライティングなどを効果的に使おう。