トマシープが学ぶ

Unity/VR/AR/デザイン好きのミーハー 記事内容は自分用のメモです

【Unity】OculusAvatar触る【Quest】

GoやQuestで設定する自分のOculusAvatarを自作アプリで使えるかやってみます。

通信もしたいけど、まだ知識がない。。。

追記に追記を重ねぐちゃぐちゃになった。

アバター

ここでいうアバターとはこれです。

f:id:bibinbaleo:20190702120404p:plain

前まで目は眼鏡などでかたくなに隠れていたけど、いつの間にか眼鏡なしverも選べるようになってる!!

眼鏡の下からも目が見えた。

Unityでのダミーアバターの下も目がきょろきょろしている

f:id:bibinbaleo:20190704172544p:plain

本物っぽくなるらしい。

vrinside.jp

喋りに合わせて表情もかわるとも書いてるけど、Questのアバター作成画面で試した限りは変わらなかった。

SDK

OculusIntegrationにAvatar関係も入っています。

assetstore.unity.com

f:id:bibinbaleo:20190702092234p:plain

 

Oculus Avatar SDKというのもありますが、最新版(1.31.0)にはすでにUnity向けのものは入っていなくて、上で言ったIntegrationだけを使えばいいみたいです。

developer.oculus.com

昔はこっちにUnity向けのも入っていたみたい。

 

2年前と少し古いですがこちらの記事を参考に触ってみます。

www.moguravr.com

LocalAvatar

 LocalAvatarというサンプルシーンを触ります。

f:id:bibinbaleo:20190702093410p:plain

実行すると大きいアバターと小さいアバターがいます。自分は大きいアバターに乗り移っています。

f:id:bibinbaleo:20190702093316p:plain

ShowFirstPersonをはずすと

f:id:bibinbaleo:20190702093408p:plain

自分の頭は非表示になります。音と手は表示されるようです。

f:id:bibinbaleo:20190702093311p:plain

どちらも外すと声も手もなくなりました。

f:id:bibinbaleo:20190702093916p:plain

f:id:bibinbaleo:20190702093313p:plain

ちなみにStartWithControllersにチェックを入れるとコントローラーが出ます。

f:id:bibinbaleo:20190702102631p:plain

何も設定してないとQuestのコントローラーでした。

f:id:bibinbaleo:20190702102635p:plain

ここがActiveになってる。

f:id:bibinbaleo:20190702103203p:plain

でも手動ではactiveにできない

RemoteLoopback

鏡のように自分と同じ動きをするアバターが出ます。

f:id:bibinbaleo:20190702103205p:plain

少しだけ動きが遅れていました。

このサンプルではLocalAvatarの動きのデータをPacketという形で送り出し、それを目の前にあるRemoteAvatarが即受け取ることで同じ動きを表現している、ということになります。

Oculus Avatar SDKの使い方&アバター通信サンプル 面白法人カヤック VR部ラボ 第4回 | MoguraVR News - VRの「いま」を掘りだすニュースメディア

 ここのサンプルをいじれば通信ができるのか~

Questビルドでアバターが表示されない

とりあえずAndroidビルドしてQuestで動かしてみます。

Editor上だと仮のアバターだけどQuestなら自分のアバターになるのかな?

・・・そもそも表示されませんでした><

f:id:bibinbaleo:20190702112842p:plain

調べたらアプリをアルファ版に登録しないといけないらしい。

qiita.com

I had to upload to app to oculus store in alpha channel and add myself and my test accounts as testers

そういえば以前そういうツイート見た気がする。。。

 おわり!

QuestはGoでは簡単にできたアルファリリースとかも審査が必要でできない。
note.mu

ただQuestでの動きを取ることはできる。

 あくまで個人のアバターを表示することができない、ということかな?

追記:AppID追加

Goでやる場合など、appIDを手に入れられた場合。

UnityEditorの上のOculus>Avatar>EditorからAppIDを入れるところがある

f:id:bibinbaleo:20190704092806p:plain

古いIntegrationだとOculusAvatar>からこんな感じ。

f:id:bibinbaleo:20190703172830p:plain

あとLocalAvatarにはOculusUserIDを入れる場所がある。これは勝手に入ってた??

f:id:bibinbaleo:20190703172827p:plain

これが必要なのかよくわからない。

あとOculus>Platform>EditにもAppIDを入れるところがあった。

f:id:bibinbaleo:20190704104254p:plain

Rift時代の情報しかなかった。

tips.hecomi.com

framesynthesis.jp

でもOculusGoでAvatar使っているやのせんさんも凹みさんの記事を参考にしたらしい。

公式情報

公式情報みます。 

https://developer.oculus.com/documentation/avatarsdk/latest/concepts/avatars-gsg-unity-mobile/#avatars-gsg-unity-gearvr

Goで書いてる。

テストのためのUserIDも書いてあった。

手順通りにやったけどAndroidでもEditorでもオリジナルアバターは表示されなかった。

ただUserIDをtext表示したらEditorでは数字が表示されたけど、Androidだと何の数字も表示されなかった。

f:id:bibinbaleo:20190704172541p:plain

マジでわからん

フォーラム

forums.oculusvr.com

OculusUserID

凹みさんの記事を参考に、UserIDを取得して自分のモデルを出す。

ここに入力して、

f:id:bibinbaleo:20190704104254p:plain

下のコードでDebugLogにIDが表示されるはず・・・

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using Oculus.Platform;

public class getAPI : MonoBehaviour
{
void Start()
{
Core.Initialize();

Users.GetLoggedInUser().OnComplete(msg => {
Debug.Log("自身の ID" + msg.GetUser().ID); // 自身の ID(16 桁の数字)を表示
Debug.Log("自身の ID文字列" + msg.GetUser().OculusID); // 自身の ID(文字列)を表示
});
}

なかなかされない、生成直後はされないって記事にも書いてあった。

そもそもDebugLogの部分が呼ばれていない。

切り分け???

・OculusGo用でアルファリリースして、自分をテストユーザーに招待してもアプリは表示されない。

f:id:bibinbaleo:20190704094051p:plain

Go用に登録したappIDを入れる

f:id:bibinbaleo:20190704092806p:plain
・この状態でdebugモードでAndroidビルドしてQuestに入れたらダミーのものが表示された!

f:id:bibinbaleo:20190704100128p:plain

古いIntegrationだと下のほうに頭が表示されていたがユーザー独自のものではない。しかも動かない。謎の頭

f:id:bibinbaleo:20190704094141p:plain
・AppID入れない状態でもダミー表示された!??なにもわからん。前は表示されなかったのに


・AppIDを入れてwindowsビルドしたらEditorと同じダミーアバターが表示され動く

f:id:bibinbaleo:20190704094047p:plain

寄り道(飛ばして

アバター表示されない原因を探ってた時の寄り道。関係なかった

参考記事を見たら

Oculus Avatarは、ビルドされたアプリ上だとデフォルト状態で描画されません。これを解決するためには、以下の2点を設定した上でビルドしてください。

・Edit > Project Settings > Graphicsの設定項目の1つ、「Always Included Shaders」のSizeを3つ増やし、Project内のOvrAvatar > Content > Materials にあるAvatarSurfaceShaderAvatarSurfaceShaderSelfOccluding、AvatarSurfaceShaderPBS

を新たな3項目に設定する

 

Build SettingのArchitectureをx86_64

 とありました。

Build SettingのArchitectureをx86_64はWindowsビルドの話かな?

shaderを追加するのはできました。

f:id:bibinbaleo:20190702105919p:plain

これでビルドしたけど表示されなかった。。。

追加したシェーダーってアバターに使われているものなのか?

でも現在のアバターAvatar_Mobile_SingleComponentを使っている・・・

f:id:bibinbaleo:20190702110822p:plain

f:id:bibinbaleo:20190702110813p:plain

これを追加してビルドしても無理だった!!!

f:id:bibinbaleo:20190702111245p:plain

こちらの記事の「Oculus Questアプリをビルドするには」を参考にビルドの設定を変えた。

framesynthesis.jp

「Player Settings… で Graphics APIs の Vulkan を削除する」の部分が見つからなかったけど、AutoGraphicsAPIのチェックを外したら表示されるのかな?と思ってチェック外したら大量に処理が走って時間がかかかかかかかか

f:id:bibinbaleo:20190702112844p:plain

手順的にもIntegrationを入れる前にやることだし、やらかした感

docs.unity3d.com

アバター使っている事例

今回できなかったけど、逆にアバター使えている公式以外のアプリってあるのかな?

こちらのSlidesGoというアプリでは使っていた!

 Goはアルファリリースが割と簡単にできるので使えるのか

 

他はあんまり思いつかないな~VR55とか

あんまり使ってないのかな

あとQuestってOculusRoomsなくなったから余計にアバター見ない。

最後に

「oculus avatar quest」で検索したらVRchatの記事ばっかり出てくる!!!!

Qiitaで探したら出てきた。

かといって「oculus avatar quest -vrchat」で検索してもそんなに出てこない