1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

カメラリングとフォグによるグラフィックの高速化処理

Last updated at Posted at 2019-10-14

参考書籍

この記事を書くに当たって、Unityゲーム プログラミング・バイブル内の内容及びサンプルを使用しています。
No.05の内容を実際に動かしながらさらに深掘った内容なので、本書を読みながら読むのが良いと思います。
より詳細な内容が詰まっていて、サンプルプログラムを実際に動かしながら学べるためおすすめです。

Unityゲーム プログラミング・バイブル

描画処理を最適化の必要性

多数のオブジェクトを配置する場合、描画コストが膨大になってしまう。
必要最小限の描画を行うことで処理コストの最適化を計る必要がある。

カメラリングによる描画範囲の絞り込み

カメラコンポーネント内のClipping Planesの

  • Near:描画開始位置
  • Far:描画終了位置

を指定すると、描画範囲を指定出来る。
スクリーンショット 2019-10-14 15.56.14.png
この範囲が狭ければ狭いほど描画コストは下がるが、ユーザーから見て違和感が無いように調整する必要がある。

全範囲表示する場合

  • Near:0
  • Far:40
スクリーンショット 2019-10-14 15.59.08.png 一番遠い壁まで見えている。 ただし、描画の最適化は一切されておらず、全てのオブジェクトを描画している状態になっている。

Nearを遠くしてみる

  • Near:2
  • Far:40
スクリーンショット 2019-10-14 15.22.38.png cameraの近くが描画対象外になり、グレーになってしまっている。 一般にユーザーの近くは描画対象になるため、Nearを大きな値にすることはない。

Farを近くしてみる

  • Near:0.01
  • Far:1
スクリーンショット 2019-10-14 15.22.16.png ユーザーの眼前まで描画範囲が狭まった。 描画コストは下がっただろうが、見える範囲が狭くゲームとして成り立たない。

Farをもう少し遠くしてみる

  • Near:0.01
  • Far:3
スクリーンショット 2019-10-14 15.23.06.png 描画対象範囲が広がった。 ゲーム性によってはこの描画範囲で問題なさそう。

描画範囲外の見え方を調整する

clear flagsの変更

clear flagsは、何のオブジェクトも描画していない範囲の描画をどのように更新するかの設定

skybox

スクリーンショット 2019-10-14 16.12.27.png スクリーンショット 2019-10-14 16.12.04.png

solid color

単色塗り潰し
スクリーンショット 2019-10-14 16.15.16.png

スクリーンショット 2019-10-14 16.15.36.png 指定した色での塗り潰しになる。 凝った演出がない場合は、単色塗り潰し+フォッグでそれらしい見た目に出来る。

Depth Only

複数台カメラがある場合の処理。
公式より。

例えばプレイヤーの銃を背景で隠れないように描画したい場合は、 1 台のカメラの Depth を 0 に設定して背景を描画し、もう 1 台のカメラの Depth は 1 に設定して武器のみを描画させます。武器を表示するカメラの Clear Flags は、Depth only に設定する必要があります。これにより、画面上の背景空間の表示は維持されますが、各オブジェクトが 3D 空間内でどこに存在するか、という情報はすべて破棄されます。銃が描画されるとき、銃がいくら壁に近くても、銃の不透明な部分が一番上に描画されます。

Don't clear

背景の描画の更新を行わない。
更新を行わないので、予期せぬ表示になるため使うことは無さそう。
スクリーンショット 2019-10-14 16.19.58.png

フォグでそれらしい見た目になるように調整する

clear flagsをsolid colorにした上で、フォグを設定しそれらしい見た目になるようにする。

フォグの設定方法

スクリーンショット 2019-10-14 16.22.59.png Windows > Lightning > Settings > Ohter Settings で設定できる。 スクリーンショット 2019-10-14 16.24.03.png ### Color フォグの色 ### Mode フォグのモードは3つある。 https://docs.unity3d.com/ja/2018.1/Manual/GlobalIllumination.html #### Linear フォグの密度が距離に応じて直線的に増加する。 ##### パラメータ - Start:フォグの開始位置 - End:フォグの終了位置。この位置でフォグの密度が最大になる。 **Clipping PlanesのEndとフォグのEndを一致させる**のが良い。 表示終了位置でフォグの密度が最大になるので見え方が自然になる。
Startが0の場合
  • Clipping PlanesのEnd:2
  • Start:0
  • End:2
スクリーンショット 2019-10-14 16.31.56.png カメラの目の前からフォグが開始するため、全体が薄暗い印象になる。
Startが1.5の場合
  • Clipping PlanesのEnd:2
  • Start:1.5
  • End:2
スクリーンショット 2019-10-14 16.33.54.png

Endから近い場所からフォグがスタートするので、手前は明るく、Clipping PlanesのEndに近い場所にフォグがかかるようになっている。

Exponential

フォグの密度が距離に応じて指数関数的に増加する。
#####パラメータ

  • Density:フォグの密度。0-1で設定し、1になるほど最大のフォグが濃くなる。
Ensityが0.8の場合
スクリーンショット 2019-10-14 16.37.00.png 奥に行くほどフォグがより濃くなっていることが分かる。

Exponential Squared

Exponential同様に、フォグの密度が距離に応じて指数関数的に増加する。
Squared(二乗)されるので、距離に応じてより濃くなる。

1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?