青いやつの進捗日記。

メモとしてべんきょうのしんちょくをかいていきます。あとで自分が検索しやすいもん

Placenote SDK + Photon でAR上でお互いを認識してとりあえずはMultiplayerできるように。ただエラー起きがちなのでその対処も含め…

www.youtube.com

これを参考にしていきます。

複数問題がありました。

既存のプロジェクトにUnityPackageを追加 → エラー

まずですよ、この
How to Build a Multiplayer ARKit app with Placenote SDK and Photon
を参考にしてやっていくと

github.com

github.com

この2つをReleaseからUnityPackageでダウンロードする、というのがこの動画の方法の通りやるとそうです。

で、プロジェクトにこの2つを追加する、と。

この動画では空のプロジェクトに追加してやっていたのですが、私は今まで作っていたUnityARKitPluginを使ったアプリのプロジェクトに追加しました。

で、なにも考えずに追加するとですね、エラーが起きまくりBuildもできなくなります。

なぜかと言いますと、この2つのリポジトリからUnityARKitPluginのコードもインポートしてしまうと、エラーが起きるのです。

私はBitbucketのUnityARKitPluginをダウンロードして使っているのですが、 bitbucket.org

たぶんこれとちょっとコードが違います。 で、どこかずれると連鎖して他のところもずれて、エラー。

Assets/
|-UnityARKitPlugin
  |-ARKitRemote/
    |-CompressionHelper.cs
  |-Examples/
    |-ARKit1.5/
      |-UnityImageAnchor/
      |---GenerateImageAnchor.cs
    |-ARKit2.0/
      |-UnityAREnvironmentTexture/
        |-HitCreateEnvironmentProbe.cs
      |-UnityARWorldMap/
        |-UpdateWorldMappingStatus.cs
        |-WorldMapManager.cs
      |-UnityObjectScanner/
        |-ObjectScanManager.cs
      |-UnityTongueAndEyes/
        |-TongueDetector.cs
        |-UnityEyeManager.cs
      |-FaceTracking/
        |-UnityARFaceAnchorManager.cs
  |-Plugins/
    |-iOS/
      |-UnityARKit/
        |-Helpers/
          |-ARKitPlaneMeshRender.cs
          |-UnityARAnchorManager.cs
          |-UnityARgeneratePlane.cs
          |-UnityARUtility.cs
        |-NativeInterface/
          |-AREnvironmenrProbeAnchor.cs
          |-ARObjectAnchor.cs
          |-ARReferenceObject.cs
          |-ARWorldMap.cs
          |-UnityARSessionNativeInterface.cs
    |-ARReferenceObjectsSetAsset.cs
|-UnityARHitTestExample_beta.cs

これらのファイル全てにエラーが起きます。

これら全てただダウンロードして使っているだけのはずなので…まあ頑張ってマージすればいけるのかもしれません…

空のプロジェクトにUnityPackageを追加 → エラー

で、次は動画の通り空のプロジェクトにUnityPackage2つを追加します。まあこれは問題なくBuildまで出来ます。

で、さあ動かしてみよう!となると、XCodeのコンソールに

Empty landmarks, probably tried to fail
LibPlacenote:GetMap()
FeaturesVisualizer:DrawMap()

と出続けます。アプリ側で何が起きるかと言うと、お互いの通信には成功するものの、周辺のマッピングを開始してくれません。理由はよくわかりません。マッピングを始める部分の関数が動いてない感じがします。

Githubのリポジトリをgit clone か Download Zip → 成功

じゃあどうすればええねん!と思ったいたところ、PlacenoteはユーザーサポートのためにSlackチャンネルを用意しているんです。しかもけっこうすぐ反応してくれます。

で、ここでこのエラー他にもいるだろと思い探していたところ、どうやらUnity Packageじゃなくて普通にダウンロードしたりgit cloneしたらいけるぞ、という人がいたので、それでやりました。

github.com

これをGit CloneかDownload Zipして、そこに

github.com

のUnityPackageを追加。

それで、無事いけます。

恐らくPackage化されているものはちょっと更新されていないみたいなので、それが原因かな、と。

f:id:XxGodmoonxX:20190111173234g:plain

Placenote API Key と Photon AppId 忘れるな

あと、重要ですが、Plancenoteのなにかを使う際、そしてPhotonのなにかを使う際はこの2つが必須、のはずです。

BuildしてXCode開いてBuild SucceedしてもXCodeのコンソールに

ibPlacenote: PNGetStatus: Placenote SDK not initialized

って出る場合は、Placenote API keyPhoton AppId が入力されてない、と思います。私の場合はそうでした。ので、要注意。

developer.placenote.com

これに沿ってPlacenote SDK のAPI Keyを取得して、
UnityでAssets/PlacenoteMultiplayerKit/Scenes/MultiplayerSampleSceneを開いて
HierarchyでPlacenoteCameraManagerを開き、
Lib Placenote (Script)Api Keyにコピペして入力。 f:id:XxGodmoonxX:20190111180005p:plain

doc.photonengine.com

これに沿ってPhotonのApp Idを取得して、
UnityでAssets/Photon Unity Networking/Resources/PhotonServerSettingsを開き、
Appidというところにコピペして入力。 f:id:XxGodmoonxX:20190111175944p:plain