タイトル通り、Oculus SDKのAvatarをPhotonで同期させる方法についてです。
(しっかり検証したわけではないので、間違っていたらTwitter等でご指摘ください)
まず、Asset Storeから、Oculus Integrationをインストールします。
Oculusのページにある「Oculus Utilities for Unity」や「Oculus Platform SDK」はインストール「しない」のがポイントのようです。
そして、Oculus Avatar SDKだけは下記からダウンロードしてパッケージをインポートします。
Asset StoreからPhoton Unity Networking Freeをインストールします。
僕の環境では、この時点でコンパイルエラーが発生しました。
これは、NetworkingPeerというクラスがOculusとPhotonの双方に存在しているためです。
Oculus SDK側のソースで、エラーが出ている部分の「NetworkingPeer」を検索し、「Oculus.Platform.Models.NetworkingPeer」に置き換えることによって解消しました。
Photonについては、管理ページでアプリの登録が必要です。
Oculus/Avatar/Content/Prefabs以下の、「LocalAvatar」「RemoteAvatar」をHierachyに配置します。
これも僕の環境だけかもしれませんが、双方の子オブジェクトのDefaultBodyMaterialManagerとDefaultHandMaterialManagerにアタッチされているスクリプトが見つからずNoneになっていましたので、いったん削除しました。(アバターの見た目を変更する際に必要になる気がするので後ほど調査します)
Resourcesフォルダに「LocalAvatar」「RemoteAvatar」をドラッグ&ドロップしてPrefab化し、Hierarchyからは削除します。
下記スクリプトを「PhotonAvatarView」という名称で保存します。
1行だけ公式チュートリアルから変更しています。
「PhotonAvatarView」を、上記で用意した「LocalAvatar」「RemoteAvatar」Prefabにアタッチします。同じく、「PhotonView」もアタッチします。
そして、PhotoViewのObserved Componentsに、それぞれの「Photon Avatar View」をドラッグ&ドロップし、同期対象とします。
下記スクリプトを「OculusAvatarSync」という名称で作成します。
Hierarchyに空のGameObjectを作成し、「OculusAvatarSync」をアタッチします。
また、OVRCameraRigをHierarchyに配置し、既存のCameraを削除します。
これで同期自体は動作しているのですが、ソースを変更したせいか、PhotonAvatarViewでExceptionが発生するケースがあるので引き続き調査しています。(更新予定)