強火で進め このページをアンテナに追加 RSSフィード

整理された情報は こちら へどうぞ。

2012年02月27日

[][]Terragen 2でSkybox用のテクスチャを作成 → Unityで使う

昨日、iOS向けのOpenGL ES 2.0プログラムについてのUstを観ているとSkybox用のテクスチャの作り方の解説が有りました。「このテクスチャってUnityでも使えるよね?」と思い、試してみたところ問題無く利用出来ましたので作業手順をメモしておきます。

観ていたUstはこちら。Terragen 2という地形(厳密には風景全般)生成を行うアプリによるSkybox用のテクスチャの作り方の解説がされています。Ustでは45:10の辺りから開始。

Ustream.tv: ユーザー sazameki: GLES2.0 Skybox Effect, Recorded on 12/02/26. コンピュータ

http://www.ustream.tv/recorded/20710504

Skyboxとは「球」「半球」「立方体」などのポリゴンの内側にゲーム中の風景のテクスチャを貼ったものです。

遠くの風景などはちゃんとポリゴンで描画せずにこの様に画像で済ましても極端な違和感は発生しません(流石に気をつけて見ると分かるけどw)。この手法を使う事で見た目の品質をそんなに落とす事無く描画時のパフォーマンスを稼ぐ事が出来ます。

Terragen 2

Terragen 2のフリー版はこちらからダウンロード出来ます。

Planetside - Download Terragen 2

http://www.planetside.co.uk/content/view/21/36/

フリー版には非商用のみに使用可能、レンダリングサイズは 800x600 までなどの制限は有りますが自分のテストプログラムに使う分には問題に成ることは無いでしょう。

Terragen 2でのSkybox用のテクスチャ作成手順

地形作成

Terragen 2の使い方についてはこちらのサイトがお勧めみたいです。確かに初心者でも分かり易かったです。

いますぐ始めるTerragen 2

http://www7a.biglobe.ne.jp/~cgw_mk/

Terragen 2での地形の作成についてはこちらのサイトや最初に紹介したUstを参考に作成して下さい。

地形の作成が終わったらSkybox特有の設定を行います。以下の設定を行なって下さい。

  • カメラの「Cameras」タブを選択→「/Render Camera」を選択、「Use horizontal fov」の値を 90 にする。

f:id:nakamura001:20120227124156p:image

  • 「Renders」タブを選択→「/Full Render」を選択、「Image width」、「Image height」の値を 512 にする

f:id:nakamura001:20120227123540p:image

レンダリング

次にレンダリングを行なってテクスチャファイルを作成します。

Skyboxに必要な「正面」「背面」「左側」「右側」「上」「下」の6つの方向にカメラを向けた状態でレンダリングを行います。

カメラの向きは「Rotation」の項目で変更します。左側から「X軸の回転」「Y軸の回転」「Z軸の回転」の量を設定する欄になっています。

f:id:nakamura001:20120227125527p:image

これを以下の様に設定した状態でそれぞれレンダリングします。

ファイル名X軸の回転Y軸の回転Z軸の回転
Front.bmp000
Back.bmp01800
Left.bmp0900
Right.bmp02700
Up.bmp9000
Down.bmp27000

まずは Front.bmp の時の設定を行い、「Renders」タブを選択→「/Full Render」を選択、「Render Image」ボタンします。

※取り敢えず、確認などという場合には /Quick Render の方がレンダリング時間が短くてお勧め。

f:id:nakamura001:20120227125034p:image

するとこの様なウィンドウが開かれるので「Render」ボタンを押してレンダリングを実行します。レンダリングが完了すると右隣のボタンが「Save」という表示に切り替わりますので Front.bmp というファイル名で保存して下さい。同様にカメラの向きを変更し、全てのファイルを作成して下さい。

f:id:nakamura001:20120227125221p:image

Unityで使う

次にUnityでの作業に入ります。

Materialの作成

Terragen 2で作成したテクスチャはMaterialを作成し、そこに割り当てます。

Materialを新規に作成し、「Shader」を「RenderFX/Skybox」に変更します。

f:id:nakamura001:20120227193304p:image

テクスチャの設定

Inspectorに記載されている Front や Back の項目にそれぞれ、該当するテクスチャファイルを設定します。

f:id:nakamura001:20120227193436p:image

UnityでSkyboxを使う場合には全カメラ共通で指定する方法とそれぞれのカメラ個別に設定する2つの方法が有ります。

全カメラで同じSkyboxを使用して問題無い場合はメニューの「Project Settings」→「Render Settings」で表示されるビューの「Skybox Material」の項目で設定します。この場合はSceneビューに表示されるので編集中でも実際のゲーム中と同じ様なイメージで確認出来ます。

f:id:nakamura001:20120227194052p:image

カメラ毎に異なるSkyboxを使いたい場合にはカメラにSkyboxを設定します。Skyboxを設定したいカメラを選択した状態でメニューから「Component」→「Rendering」→「Skybox」でSkyboxを追加します。

f:id:nakamura001:20120227194411p:image

全カメラ向けならココ、

f:id:nakamura001:20120227194140p:image

カメラ別の設定ならココにSkybox用のMaterialをドラッグすればOKです。

f:id:nakamura001:20120227194439p:image

注意点

これで完成。と言いたい所ですがこの状態ではこの様に立方体の境界部分にラインが見えてしまっています。

f:id:nakamura001:20120227194609p:image

これはテクスチャの設定を変更する事で改善出来ます。

テクスチャのInspectorで「Texture Type」を「Advanced」、「Wrap Mode」を「Clamp」に変更後、「Apply」ボタンを押して確定します。

f:id:nakamura001:20120227195334p:image

この変更作業を全てのテクスチャに対して行います。なお、Unityのバージョンが3.5であれば全てのテクスチャを選択した状態でこの変更を行う事で一括で変更可能です。

変更を完了した後に確認するとこの様に描画が改善されているはずです。

f:id:nakamura001:20120227231944p:image

投稿したコメントは管理者が承認するまで公開されません。

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト

コメントを書くには、なぞなぞ認証に回答する必要があります。

トラックバック - http://d.hatena.ne.jp/nakamura001/20120227/1330352219