最近メタバースが話題となっているので, 少し試してみようかと昨年末にMeta Quest2を購入した.
せっかくなので, Unityを使ってMeta Quest2のコンテンツを作れたらと思い, Unityに再チャレンジしてみることにした.
(実は, かなり昔に一度Unity 5にチャレンジしたことあるのだが, その時はあまり続かなかったー)
今回, リコーTHETAで撮影した360度動画を再生できるようにビューワーを作成してみる.
1. 事前準備
1.1 Unityプロジェクトを作成する
Unityのインストールや新規プロジェクトの作成方法ついては, ネット上に多くの記事があるので, ここでは省略する.
また, UnityでAndroid版をビルドする環境の構築についても, 同様にここでは省略する.
今回使用したUnityのバージョンは, 2021.3.19f1である.
1.2 360度動画を準備する
- RICHO Theta SC2を使って, 360度動画を撮影する.
素材:荒川でリコーTHETA SC2を使って撮影した映像.
2. ビューアの実装[1]
2.1 動画をUnityに取り込む
- ProjectウィンドウのAssetsで, 右クリックしてメニューを出し, 「Import New Asset」を選択する. 360度動画(SampleMovie.MP4)を選択して, Importする.
2.2 投影する天球をシーンに置く
- 今回, 天球モデルは「Sphere100.fbx」[1]をダウンロードし, 利用させていただく. (作成者に感謝ですね!!)
- ProjectウィンドウのAssetsで, メニューから「Import New Asset」を選択し, 「Sphere100.fbx」をImportする.
- Assetsの「Sphere100」をHierarchyウィンドウにD&Dする.
- Hierarchyウィンドウの「Sphere100」を選択し, Inspectorウィンドウ内のTransform - Scale - (X, Y, Z)を(-100, 100, 100)に設定する.
(注) Xを正数としている記事もあるが, 天球の内側からみるので負数となる.
- Hierarchyウィンドウの「Main Camera」を選択し, Inspectorウィンドウ内のTransform - Position - (X, Y, Z)を(0, 0, 0)に設定する.
2.3 マテリアルを作成する
- ProjectウィンドウのAssetsで, メニューから「Create」>「Material」を選択し, 新しいMaterialを作成する.
- Assetsに作成された「New Material」を選択して右クリックでメニューを出し, 「Rename」を選択し名前を変更する. ここでは, 「MovieMat」とした.
- MovieMatを選択し, Inspectorウインドウ内のShaderを「Unlit」>「Texture」に変更する. これにより, 影がつかなくなる.
2.4 天球モデルに動画/マテリアルを追加する
- 360度動画をHierarchyウィンドウの「Sphere100」にD&Dする.
- 「MovieMat」をHierarchyウィンドウの「Sphere100」にD&Dする.
- InspectorウィンドウのVideo PlayerのLoopにチェックを入れる. (Loop再生設定)
(注) 再生スクリプトを実装する古い記事(以前は映像再生にMovieTextureを使用)もあるが, 現在はVideo Playerを使用するようになっているので, InspectorウィンドウのVideo PlayerのPlay On Awakeにデフォルトでチェックが入っていることを確認するのみでOK.
2.5 マウスで方向を変える
こちらの「MouseLock.cs」というスクリプト利用させていただく.
- ProjectウィンドウのAssetsで, メニューから「Import New Asset」を選択し, 「MouseLook.cs」をImportする.
- 「MouseLook.cs」をHierarchyウィンドウの「Main Camera」にD&Dする.
これで, 「Build And Run」すると, WIndows版のexeをビルド後, 実行される.
3. Android版ビューア実装
ついでに, Android版ビューアも作成し, Androidのジャイロセンサを使って向きを変えるようにする.
3.1 PlatformをAndroidに切り替える
Androidのビルド環境が正しく設定されていれば, 問題なく切り替わる.
3.2 ジャイロで方向を変える[2]
- ProjectウィンドウのAssetsで, メニューから「Create」>「C# Script」を選択し, 新しいScriptを作成する.
- Assetsに作成された「New Material」を選択して右クリックでメニューを出し, 「Rename」を選択し名前を変更する. ここでは, 「MovieMat」とした.
- スクリプトを実装する.
[コード]
using System.Collections; using System.Collections.Generic; using UnityEngine; public class CameraMove : MonoBehaviour { // Start is called before the first frame update void Start() { if (!Application.isEditor) { Input.gyro.enabled = true; } } // Update is called once per frame void Update() { if (!Application.isEditor) { mainCamera.transform.rotation = Quaternion.Euler(0, 0, -180) * Quaternion.Euler(-90, 0, 0) * Input.gyro.attitude * Quaternion.Euler(0, 0, 180); } } }
- 「GyroCamera.cs」をHierarchyウィンドウの「Main Camera」にD&Dする.
これで, Android端末をPCに接続して「Build And Run」すると, Android版のapkをビルド&インストールが行われ, 実行される.
360度ビューアの作成を通して, 少しUnityの使い方を思い出してきたー.
次は, Meta Quest2で動画再生できるようにトライしてみようと思う.
---
参照URL:
[1] No hack, no work・UnityとOculusで360度パノラマ全天周動画を見る方法【無料編】
[2] スマホのジャイロでカメラを回転させる方法