トマシープが学ぶ

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

【ARkit2+Unity】現実の3Dオブジェクトをスキャンしてマーカーにするやつ試す。【途中まで】

こちらの記事を見てやりたくなりました。

nn-hokuson.hatenablog.com

jyukoさんも以前やっていました。

www.jyuko49.com

トライ&エラーしてたので、ぐちゃぐちゃ記事になりました。

そしてあきらめる。

環境

Requirements:

だそうです。https://bitbucket.org/Unity-Technologies/unity-arkit-plugin/src/default/より

 

ARkit2

ここからでいいのかな?

bitbucket.org

と思ったら下のほうに「2019/6/3の時点で非推奨!ARFoundationを使え!」って書いてありました。

f:id:bibinbaleo:20190628121202p:plain

ARFoundationはUnityのパッケージマネージャーから入れるやつですね。

tsubakit1.hateblo.jp

www.jyuko49.com

ARkit3も入っているらしい。でもios13を入れられるのはappleにお金払ってる人だけだから私は試すことはできないのか。

blogs.unity3d.com

せっかくなのでAR Foundation使ってみます。

ARkitSDKについて理解するのに1時間かかった・・・

そしてXcodeを頑張ってインストール。久しぶりだ

 そしてこのタイミングでiMacがまた劇遅くんになった。

3Dデータを取る

マーカーにする物体のデータを取るアプリをビルドしないといけない。

ここのARKit ScannerプロジェクトをXcodeでビルドしてもいいし、

developer.apple.com

UnitySDKのExampleに入っているUnityObjectScannerシーンをビルドしてもいい。

どちらにせよXcodeは必要なのか。

ARKit Scannerのほうがやりやすいらしいです。

 ビルド。

点が出てくる。ボックスの中に入れる。

f:id:bibinbaleo:20190629101732j:plain

Scanを押したら6つの面を全て埋めていくように舐め回す。

f:id:bibinbaleo:20190629101735j:plain

そのあとusdzモデルをLoadして表示できるらしい。

f:id:bibinbaleo:20190629101739j:plain

ただ表示したいだけならもうこれで良いじゃん。

わざわざusdzファイル作ってロードしようとしたけど、なぜかロードしてくれなかった。ファイルを選んでもなんのアクションもない。

USDZの作り方はこちら

Vectary×GoogleSiteで超簡単マーカー無しWebAR!!(iosのみ) - トマシープが学ぶ

 

Saveでdropboxとかにに「.arobject」拡張子のデータを保存してPCに送る。

Unityでデータをセット

ARFoundation準備

ARFoundationとArkitPluginを入れました。

ヒエラルキー右クリック>Create>XR>ARSession OriginとARSessionを入れます。

f:id:bibinbaleo:20190628223834p:plain

ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー

Xcodeが11.0betaじゃない人は最新のARパッケージを入れるとエラーでビルドできません。

ARkit3が入っていないバージョンのをどちらも入れたほうがいいかも。

f:id:bibinbaleo:20190629152149p:plain

詳しくは下の方orコメント欄

f:id:bibinbaleo:20190629152049p:plain

ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー

アイコン出た。MainCameraは消す

f:id:bibinbaleo:20190628223837p:plain

.arobject

.arobjectを入れました。写真付きなんだ。

f:id:bibinbaleo:20190628223856p:plain

f:id:bibinbaleo:20190628223851p:plain

Reference Object Library

これをセットするためのLibraryを作らないといけない。参考記事では"Create" > "UnityARKitPlugin" > "ARReferenceObjectsSetAsset"でできるらしいけど、ARFoundationだとない。

代わりに

Projectで右クリック>Create>XR>Reference Object Libraryがあった。これでいいのか

f:id:bibinbaleo:20190628223840p:plain

それっぽい。

f:id:bibinbaleo:20190628223844p:plain

セットできた。

f:id:bibinbaleo:20190629094211p:plain

UnityARCameraManagerのDetection Objectsなんてない

参考記事ではUnityARCameraManagerオブジェクトのUnityARCameraManagerのDetection ObjectsにLibrary的な奴をセットしていたけど、そんなものはない。

しなくていっぽい

f:id:bibinbaleo:20190629094215p:plain

表示する仮想物体の設定

参考記事では空のオブジェクトにGenerateObjectAnchor.csを付けて、Libraryと表示したいprefabをセットしていました。

ただそんなものはない。

AR Tracked Object Managerがそれっぽい。

f:id:bibinbaleo:20190628223848p:plain

これをARSessionOriginにつけた。

f:id:bibinbaleo:20190629094206p:plain

なぜならARTrackedObjectManagerをつけるともれなくAR SessionOriginが自動でついてくるから。それなら最初からついてるAR SessionOriginオブジェクト?につけようと思った。あってるかは知らない。

これにLibraryと表示したい仮想物体のプレハブをセットした。

追記

ArFoundationの公式サンプルの中にObjectTrackingあった。

github.com

開いたらシーンの構成同じだった。天才か?

強いて言えば、ARSessionにSetTargerFramerateがついていたぐらい。

f:id:bibinbaleo:20190629100848p:plain

XcodeBuild(失敗)

UnityでビルドしてXcodeでビルドしたらエラーで来てできなかった。

f:id:bibinbaleo:20190629094203p:plain

undefined symbol:_OBJC_CLASS_$_ARCOllaborateData

なんか設定間違ってるのんなだろうな。雰囲気でやってるから 

コメントで教えてもらいました。

Arkit3の機能がXcodeでUndefinedされているそうです。確かによく見るとARBodyAnchorとかARkit3の機能ですね。

PackageManagerでArkit3が入っていないバージョンのARFoundationとARKitXRPluginを入れると良いかもです。

もしくはサンプルを2.1にしたらよいそうです。サンプルはUnity2019.1以降って書いてました。

おまけ

 これどうやってるんだろう?

 

自分用メモ:ARkit_Obj,ARfoundation-sample-master (iMac)2018.3.8f1