はじめに
UnityのOculus Integrationはエディタ上でカメラの動きをエミュレートできるOVRHeadsetEmulator
があります。
- https://developer.oculus.com/documentation/unity/latest/concepts/unity-hmd-emulation/
- https://qiita.com/numa08/items/8f67026b59f8b72174a3
このコンポーネントはOVRCameraRig.prefab
とOVRPlayerController.prefab
にアタッチされているのですぐに使えるのですがv1.38とv1.39でOpenVRがサポートされた時に動かなくなってしまいました。せっかくの便利なコンポーネントなので動くように直してみました。
※1.37以前と1.40はそのままで動作します。
修正方法
InitOVRManager()
を実行するかどうかの判定をエディタの時は無視します。これはOpenVRサポート前と同じ挙動です。
diff --git a/Assets/Oculus/VR/Scripts/OVRManager.cs b/Assets/Oculus/VR/Scripts/OVRManager.cs
index bff7d992..4f6f3d45 100644
--- a/Assets/Oculus/VR/Scripts/OVRManager.cs
+++ b/Assets/Oculus/VR/Scripts/OVRManager.cs
@@ -1294,7 +1294,9 @@ public class OVRManager : MonoBehaviour
private void Awake()
{
//If OVRPlugin is initialized on Awake(), or if the device is OpenVR, OVRManager should be initialized right away.
+#if !UNITY_EDITOR
if (OVRPlugin.initialized || (Settings.enabled && Settings.loadedDeviceName == OPENVR_UNITY_NAME_STR))
+#endif
{
InitOVRManager();
}
別の方法
Oculusのフォーラムにも修正方法がありOVRPlugin.initialized
を反転してInitOVRManager()
を実行しています。ですがこのプロパティはドキュメントがなく挙動が分からないので上記のようにエディタの時だけ変更した方が安全です。
- https://forums.oculusvr.com/developer/discussion/comment/700778/#Comment_700778
- http://hondasoft.com/2019/06/25/oculus-integration-1-38%E7%99%BB%E5%A0%B4%EF%BC%81/
diff --git a/Assets/Oculus/VR/Scripts/OVRManager.cs b/Assets/Oculus/VR/Scripts/OVRManager.cs
index bff7d992..30ee8cde 100644
--- a/Assets/Oculus/VR/Scripts/OVRManager.cs
+++ b/Assets/Oculus/VR/Scripts/OVRManager.cs
@@ -1294,7 +1294,7 @@ public class OVRManager : MonoBehaviour
private void Awake()
{
//If OVRPlugin is initialized on Awake(), or if the device is OpenVR, OVRManager should be initialized right away.
- if (OVRPlugin.initialized || (Settings.enabled && Settings.loadedDeviceName == OPENVR_UNITY_NAME_STR))
+ if (!OVRPlugin.initialized || (Settings.enabled && Settings.loadedDeviceName == OPENVR_UNITY_NAME_STR))
{
InitOVRManager();
}