Unityで使えるSkyboxを作る

こんにちは、Kishiです。今回はSkyboxを作ります。

  1. Blenderを開きます。
  2. UV球を作成します。大きさは中央の立方体よりもかなり大きくしてください。
  3. UV球を選択したまま編集モードからすべての面を選択してCtrl + Shift + Nですべての法線を内側へ向けます。あと、シェーディングから面をスムーズにします。
  4. 下図にシームをつけて展開します。UV図をエクスポートしたらお好きな空を描きます。
    kcs_skybox_6
  5. 描いた空をテクスチャとしてUV球に貼り付けます。
  6. 下図のようにランプの位置とエネルギを調節して太陽のようにします。
    kcs_skybox_2
  7. 中央の立方体を選択して下図のように設定します。
    kcs_skybox_0kcs_skybox_3
  8. F12でレンダリングします。そして、下図のようにお目当ての環境マップを保存します。(撮りなおしたいときは「環境マップをクリア」を選択してからF12)
    kcs_skybox_4

これで環境マップが手に入りました。そしていざUnityに持ってきてSkyboxのCubemapとして使おうとすると、ぐちゃぐちゃになってしまいます。

http://docs.unity3d.com/ja/current/Manual/class-Cubemap.html

このリンクからわかるように、Blenderで作られる環境マップの形のままではUnityでCubemapとして使えません。そこで、

https://github.com/TRSasasusu/blender_envmap_to_unity

このためのPythonスクリプトを作成しました。ライセンスはGPL v3ですが、このプログラム自体をあなたの制作物に含まない限り、その制作物にGPL v3は適用する必要はありません。(もちろん、適用したいならしてもかまいません)

使い方は簡単。ですがその前にPILをどうにかして手に入れます。(運が良ければ

<br />
$ easy_install pillow<br />

<br />
$ pip install PIL<br />

<br />
$ pip install Pillow<br />

で入るのですが、ダメなら

http://www.pythonware.com/products/pil/

で手に入れられます)

それから

<br />
$ python blender_envmap_to_unity.py hoge.png<br />

こうして完成した画像ファイルをUnityに持っていき、Texture TypeをCubemapにし、Fixup Edge Seamsにチェックを入れ、FormatをTruecolorにしてApply。そしてSkybox/Cubemapとしたマテリアルにこれを適用することで、ようやく自作Skyboxを作ることができます。
kcs_skybox_5

Blenderで環境マップを作るときに、UV球だけでなく山などもモデリングして立方体の周りにおいておけば、↑のような風景を作ることも可能です。

Posted on