hermemo-エルメモ-

Daydreamアプリ配信に向けて全天球画像作る-Unity

time 2018/09/08

Daydreamアプリ配信に向けて全天球画像作る-Unity
DaydreamアプリをGooglePlayで配信するためには全天球画像が必要になります。要は全体像のようなもの。WindowsだとUnityのAssetも多数あり、情報も多くありますが、Macだとやり方がイマイチ分からず、つまずいたので備忘録として。

sponsored link

参考

とても参考にさせてもらいました。
http://yhrscoding.hatenablog.com/entry/2018/08/04/023436

環境

MacOS 10.13.5
Unity 2018.2.5f1

Asset

今回使うAssetは[360° Screenshot Capture]です。 他にも色々Assetはあるのですが、Windowsにみだったり、有料だったりします。[360° Screenshot Capture]は無料で、Macで利用することが出来ます。
https://assetstore.unity.com/packages/tools/camera/360-screenshot-capture-112864

手順

必要になる画像は以下のような画像です。
4096×4096の大きさで、上下に4096×2048の画像を二枚並べた画像です。ちなみに上下に左右それぞれの目の画像がある方が良いのかも知れません。今回は全く同じ画像でやります。
[360° Screenshot Capture]では4096×2048の画像を生成できます。後は、適当な編集ソフトを使って並べて指定の大きさにします。

使い方

基本的にはReadmeに書いてあります。
このAssetにはPrefabなどはありません。C#スクリプトがあるので、その中に記述されている関数を実行するだけです。
Readmeは /Assets/Plugins にあります。

関数

public static byte[] I360Render.Capture( int width = 1024, bool encodeAsJPEG = true, Camera renderCam = null );

引数

int width: 画像の横幅を表します。縦の大きさは横幅の1/2になります。
bool encodeAsJPEG: JPEGでエンコード(出力)するかどうかを示します。trueであればJPEG, falseであればPNGになります。
Camera randerCam: 画像を撮影するためのカメラを指定します。

戻り値

byte[] で画像の情報が配列として返されます。この情報をC#のFile.WriteAllBytes関数を用いて画像として出力します。

実際にやってみた

今回はゲームの全体の進行を管理している[GameManager.cs]から関数を呼び出します。
任意のタイミングで画像を撮影できるようにキーの入力を検知して画像を出力します。File.WriteAllBytes関数を利用するためには[System.IO]が必要です。スクリプトの先頭でusingして起きましょう。
また、撮影用のカメラは[SerializeField]で設定します。

スクリプト

説明

1-5行目

よくある必要なやつの読み込みです。5行目の System.IO はUnityだとあんまり使わないので、読み込むのを忘れないようにしましょう。File.WriteAllBytes関数を使うのに必要です。

8行目

撮影用のカメラを設定しましょう。[SerializeField]が便利なので使ってます。他の方法でも構いません。

11行目

キーの入力検知ですね。今回は[A]キーで撮影することにしましょう。

12行目

File.WriteAllBytes関数の第一引数はファイルの出力先です。適当にカレントディレクトリ直下にTest.jpegで保存します。
第二引数は保存するデータです。これはI360Render.Capture関数の返り値をそのまま渡します。

加工

ここまででサクッと画像を生成できたと思います。こんな感じ。
後はこれを2枚縦に並べるだけ。正直画像加工ソフトなんていくらでもあるので、何を使ってもいいと思います。
ちなみに僕はパワーポイントをつかって画像を編集することが多いです。

sponsored link

down

コメントする




*

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)



sponsored link