2014年5月27日火曜日

Unityでスカイボックスを設定する

Unityでスカイボックス(Skybox)を設定するメモ。
※記述時はUnity4だったので、Unity5で一部変わっている点を追記。

背景にするテクスチャ

何でも良いのでSkyboxに貼るテクスチャを用意。

今回は貼りこまれ方等を確認しやすくする為、
簡単なグリッドの自作テクスチャを使用。
ドラッグ&ドロップでUnityのAssets ウィンドウに追加。

追加したテクスチャを Assets 上で選択して Inspector を表示。

Unity5の場合: Inspector の Texture Type 欄を Cubemap にする。
Unity4の場合: Inspector の Texture Type 欄を Refrection にする。

するとすぐ下に Mapping 欄が現れるので、そこを

Unity5の場合: Latitude-Longitude Layout(Cylindrical)
Unity4の場合:  Cylindrical とする。

同Inspector内のApplyを押す。

Assets内のテクスチャ表示がちょっと変化するので確認。




Skybox用のマテリアル

Projectウィンドウ内から、Create > Material でAssets内に追加。
ここでは MySkybox とリネームしておく。



マテリアル MySkyboxを選択して、Inspectorを表示。
Inspector内 Shader 欄を、

Unity5の場合: Skybox/Cubemap とする。
Unity4の場合: RenderFX > Skybox Cubed とする。

「None (Cubemap)」の欄へ、先程の MyGridテクスチャをドラッグ&ドロップする。
この時MyGridテクスチャは親(?)の方の立方体の絵を掴んでドラッグ&ドロップ。





Render Setting設定

Unity5の場合: Windows > Lighting で Lighting ダイアログを表示。
  ダイアログ内上部 Scene ボタンをクリック。
  さらに Environment Lighting欄を先程作ったマテリアル MySkyBox に選択。


Unity4の場合: Edit  > Render Setting で Inspectorを表示。

Skybox Material 欄を先程作ったマテリアル MySkyBox に選択。


結果


このような感じで貼られる。
テクスチャのMapping 欄で Cylindrical としているので、このような貼られ方になる。

例えば2D系ソフトで横長長方形に背景絵を描くとする。
上下辺付近は集約されるので絵がつぶれる。
なのでそこはあまり書込をしないか集約して縮んでも違和感がわかりにくいような描き込みにして誤魔化す。

地平線を左右360度回して見せるにはテクスチャ1枚で割りと楽ができるので、簡単に自作する際はお手軽な貼り付け法だと思う。

上下極付近もきちんとつぶれを想定して描いておけば勿論それなりにきれいに見せられる。


背景を立方体にする

テクスチャの Mapping を、

Unity5の場合: 6 Frame Layout(Cubic Environment)
Unity4の場合: 6 Frames Layout に変更

に、するとスカイボックスが立方体になる。


しかしこれでは1つのテクスチャが6面に貼られる。


マテリアル MySkyBox の Inspector から、

Unity5の場合: Shader をSkybox/6 Sidedに変更する
Unity4の場合: Shader をRenderFX/Skyboxに変更する

と、テクスチャ6面を個別設定できる。

前後、左右、上下、計6枚のテクスチャをシームレスにつないだ360度の背景テクスチャを用意してこれに指定すれば立方体でのスカイボックスができる。

Assets Storeで無料のスカイボックスが結構あるので、それらを利用すれば気軽に試せる。


サンプルプロジェクト(Unity5): https://github.com/maruton/Sample_SkyBox

0 件のコメント:

コメントを投稿