僕がUnityの師匠に習ったことをテキストと画像で自分がいつでも見返せるように「Terrainテレインを軽くするために注意すること」をまとめたので、みなさんにもシェアしていきます。
「Terrainテレインを使ったらすごく重い…」とお困りの方は、ぜひ最後まで読んで実践してみてください。
明るさの設定を変える
自動生成(Auto Generate)を外す
ウインドウ(Window)→レンダリング(Rendering)→ライトニングセッテイング
(LightningSetting)→自動生成(Auto Generate)を外す
自動生成(Auto Generate)を付けたままだと、Unity内で物体を動かす度、毎回光の計算をして重くなります。
ステージの作成中は移動が多いので外しておこう。
ライトニングセッテイング(LightningSetting)はインスペクターの横に入れると便利だよ
ゲーム中に動かない物体には静的(Static)チェックをつける
ステージの作成中、静的(Static)のチェックは外して全て作り終わったら、ベイク(bake)[焼き付け]しよう。
ステージの作成中につけたままだと、オブジェクトを移動するたびベイクbakeされて動作が重くなるので外しておこう。
テレインは最初から静的(Static)にチェックが入っているよ。
制作中は忘れずに外して作っていこう。
1つ目の設定も共通しますがライトは重いんです。
制作中に少しでも動かすごとに毎回光の計算をする。
ゲーム中、植物や山や岩などや、プレイヤーが触ったりしない建造物や壁などのオブジェクトは動かない物体にベイクで事前に光の計算を処理をしてもらって、ゲーム中はもう動かないよってUnityに教えてあげよう。
テレインだけじゃなく、他の動かないものにも作り終わったら忘れずにつけよう。
ちなみに、静的(Static)の対義語は動的(dynamicダイナミック)やで。
僕は、ダイナミックって30年以上「めっちゃデカいこと」って勘違いしてました。
そういえば知ってるけど留学中全く使わなかった単語やわ。
語学関係の記事、ほぼドイツ語のものだけ読まれてるけど、英語の記事も書いてるから読んでみてね。
ステージ作成前に荒さ(頂点の数)を設定しよう
ステージを作る上で、大事なことが「荒さ」。
テレインは
- 近づくと細かく
- 遠のくと荒く、ざっくりになってくれる
キューブやスフィアなどは、どんなに遠くにあっても処理される=「遠くになっても見た目が変わらない」けれど、テレインは遠かったら見た目が荒くなります。
大きさなどの設定は必ず1番最初にする!
途中で変えると伸び縮みしてせっかく作ったステージのデザインがおかしくなるよ。
まず、テレインを触る前に、staticのチェックを外してね。
テレイン選択→歯車をクリックして設定していこう。
メッシュ解像度 Mesh Resolutions(On Terrain Data)
最初の座標は1000になっている。
個人でゲームを作るなら、そんなに大きいステージはいらないことが多い。
練習で作るなら「100×100×100」「200×200×200」位でOK。
ハイトマップ解像度 Texture Resolutions(On Terrain Data)
ハイトマップ解像度=頂点の数
頂点の数が多い=キレイに見える
頂点も重たいんです。
平面なのに頂点なの?と思うかもしれませんが、こんな感じ。
線が交わっているところ全てが頂点だよ。
少しこんもりさせると、
こんなに頂点が増えちゃいます!
513×513の場合、263,169個の頂点がある!
ユニティちゃんの頂点の数が大体1万位。
何も作っていない状態で513×513だとユニティちゃん約26人分!
スマホゲームでも1万pixel(ピクセル)位はプレイ出来ない可能性があるので注意しようね。
513×513と比べて、257×257の時、2分の1ではなく、4分の1になります。
1024×1024の場合だとなんと4倍!
元から限界値を下げておくと誤差が少なくなるよ。
ピクセル許容誤差 Pixel Error
ピクセル許容誤差=どれだけ雑に映すか
テレインでは1にすると物体から距離が離れてもミチっとしたまま、誤差を増やすと距離が離れたらざっくりに見えます。
ざっくりしすぎると、キャラクターが移動していたら地形が変わってしまう=「カメラからの距離によって形が変化する」ということになります。
なるべくキレイに作りたい(許容誤差を1に近くしたい)、でも軽くしたい。
許容誤差を大きくすると軽くなるけど、キレイに見えない、許容誤差を小さくしすぎると重くなるし、カメラからの距離によって形が変わるもどかしい問題。
まずは5〜10位で設定してみて、少しずつ変えてみよう。
その他の注意事項
ヒエラルキーでテレインを作ると、プロジェクトにも勝手にnew terreinが作られるので、名前を変えてフォルダにきちんと入れておこう。
ヒエラルキーでそれまで作っていたテレインを削除してもプロジェクトのNew Terreinは自動で消えないので、新しいテレインを作った時にわからなくなることがあるので注意しよう。
もしそうなったら、ヒエラルキーのテレインの中の地形データを押すと黄色のぴこぴこが出てくるのでそれで確認しよう。
「LODグループ」を設定しよう
コンポーネントに「LODグループ」をつける。
ゲームオブジェクトがカメラから遠くにあるときはlow poriに、近くにあるときはhigh poriに設定することができる。
ゲーム内に映るもの全て設定した方がいいよ。
こんな使い方もできる
キューブ・スフィア・カプセルを全て同じ座標に配置する。
空のゲームオブジェクトを作成して、キューブ・スフィア・カプセルを全てその中に入れる。
ゲームオブジェクトにLODグループを追加する。
オレンジ色の四角の部分のLOD0をクリックして紫色の四角の部分のAddにキューブを入れる。
同じ様に、LOD1にはスフィアを、
LOD2にはカプセルを
Addの部分に入れていく。
LOD0の距離の時にはキューブだけ表示され、
LOD1の距離の時にはスフィアだけ表示され、
LOD2の距離の時にはカプセルだけ表示される。
パーティクルも入れることができます。
補足として、LOD0だけ設定してLOD1・LOD2を削除することもできるよ。
アセットストアでこれが入っているものもあるので、「LOD」で検索すると距離によって画像の細かさが設定出来るアセットが探せます。
無料のものは少ないけれど、2021年8月末現在で「LOD」検索結果が30ページ程出てきます。
アセットストアは楽しいから時間がすぐ溶けてなくなるので、ほどほどに!
楽しくいろいろ作っていきましょー。
コメント