トマシープが学ぶ

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

Nreal+Conektonを少し触る

前回ドキュメントやサンプルを見つつ一通り動かした。

bibinbaleo.hatenablog.com

今回はPhoton周りもやってみたいのでConektonをつかっていく!

github.com

導入方法

note.com

環境

Unity

conektonの推奨Unityバージョンが分からない

noteの記事によるとConektonはUnity2019.2.11f1で開発されているらしい

Unity2018系でつかえるんだろうか?公式ドキュメントに書いてない気がする

とりあえず2019.4で使う。

AndroidにSwitchPlatformした。

conekton

unitypackageをダウンロードしてインポート。Photonとついているほうは、マルチユーザー機能を使うなら入れる。

f:id:bibinbaleo:20200811161538p:plain

後ろのほうで書くけど、結局unitypackageじゃなくて、プロジェクトごとクローンして開いて作業した。

zenject

unitypackageをダウンロードして入れる。これは必須。私は9.1

f:id:bibinbaleo:20200811161000p:plain

github.com

Photon

Photon使うときはアセットストアからPun2アセットを入れる

assetstore.unity.com

各種SDK入れる

私はnrealの1.2.1を入れた

動作確認は1.3.0だって。

エラー

全部入れてもエラーが31出ている

f:id:bibinbaleo:20200812091002p:plain

'ARSubsystems' does not exist in the namespace 'UnityEngine.XR' (are you missing an assembly reference?)とかARFoundationとかUnityのXR系のエラーが多い

 

→Slackを見る

ARFoundation

ARFoundationを入れたら治った。

f:id:bibinbaleo:20200811172916p:plain

他にもよくわからずXRPluginManagementとかいれた。多分関係ない

f:id:bibinbaleo:20200811172919p:plain

MobilePlayer

MobilePlayerのエラーがまだ出ている

f:id:bibinbaleo:20200812091006p:plain

スクリプト開くと、IPlayerにエラーが出ているので、VSCodeのデバッグ機能?で自動修正したら治った。

f:id:bibinbaleo:20200812110029p:plain

エラーは消えたけど、あとで実行時にエラー出たからちがったのかも

f:id:bibinbaleo:20200812090959p:plain

endifのあとのpublic ~~ => throw new System.NotImplementedException();がいっぱい追加されたのかな

Photonセット

f:id:bibinbaleo:20200812091844p:plain

PhotonのサイトでRealtime作ってIDを入れた

f:id:bibinbaleo:20200812092024p:plain

 

サンプル実行

ARUtilityDemoを実行してみる

f:id:bibinbaleo:20200812093820p:plain

実行はできるが、MobilePlayerでエラーが出て動かない。WASDで移動できるらしい

f:id:bibinbaleo:20200812091846p:plain

Nrealに切り替える

Tools>ARUtility>Symbols

f:id:bibinbaleo:20200812091759p:plain

Nrealにチェック入れる

f:id:bibinbaleo:20200812091943p:plain

エラーが出て実行できない

Assets\Conekton\ARUtility\Scripts\UseCase\ARMarkerDetector\Infrastructure\NRARMarkerDetector.cs(29,55): error CS0117: 'SessionState' does not contain a definition for 'Running'

たぶんNrealのSDK1.2.1を使っているせいかな。

SessionState.Trackingに変えたら消えた。

f:id:bibinbaleo:20200812100847p:plain

やっぱりUnityプロジェクトクローンすることにした

https://github.com/MESON-inc/Conekton.git

プロジェクトごとクローンしてUnity2019.4.5f1で開いて、ZenjectとPhotonを入れたら特にエラーも起きない。Nrealを入れた後↑のエラーは起きるが、それを治したらサンプルシーンも動いた。

たぶんいろいろ最初から入っているからだな・・・

f:id:bibinbaleo:20200812103430p:plain

f:id:bibinbaleo:20200812103426p:plain

プロジェクトセッティングもされているので、AndroidにSwitchPlatformするだけで、特に何もいじらなくてよかった。

f:id:bibinbaleo:20200812103641p:plain

サンプルシーンをビルドしてapkをnrealに入れてら動いた。

f:id:bibinbaleo:20200812111915p:plain

マルチプレイヤー

こちらに使い方が書いてある。基本的に何もしなくていいはず?

https://github.com/MESON-inc/Conekton/blob/develop/jp/GettingStarted-ARUtility.md

https://github.com/MESON-inc/Conekton/blob/develop/jp/GettingStarted-Multiplayer.md

[System]>SecenContectにいろいろセットする

f:id:bibinbaleo:20200812105305p:plain

アバター変更

アバターを変えるにはAvatarPrefabを変更する必要がある。

f:id:bibinbaleo:20200812112015p:plain

デフォルトはSphere*3

f:id:bibinbaleo:20200812105302p:plain

頭だけ変更した。

これでデモシーンをUnityで動かしてシーン確認したらちゃんと変わっていた。

実機でもシーンにカメラを置いたら、ちゃんと頭が動いているのは確認した。Nrealだと手は動いていない。

位置合わせ

複数台の位置合わせはどうやるんだろう。マーカーでやれるっぽいが、どこで設定するのか

 f:id:bibinbaleo:20200814104453p:plain

f:id:bibinbaleo:20200814104450p:plain

 

ARCoreに変更

今手元にNrealが1台しかないので、マルチプレイヤーで来ているか分からない。

ARcoreとしてスマホにビルドしたらNrealとともにできるんだろうか。

切り替えるときはSDKを消す必要がある。

[Tips] ビルド対象を切り替える手順

別のデバイスに切り替える場合には、以下の手順を行う

1. Assets以下に現在のビルド対象のSDKがあったら削除
または、Assets以下のフォルダ名の最後に "~" や 最初に "." をつけて、Unityに無視してもらう
例 ) Assets/~Oculus、Assets/.NRSDK

2. 上記に則って切り替え対象の設定に変更

AR開発者に伝えたい! Conektonの魅力と導入方法|はんちょう|note

f:id:bibinbaleo:20200812111532p:plain

エラー 

Nrealのチェック外したら例のMobilePlayerのエラーが出て動かない。

f:id:bibinbaleo:20200812091846p:plain

試しにビルドしてAndroidスマホに入れてみたが無理だった。