トマシープが学ぶ

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

【Nreal】ドキュメント読んだりUnityで色々検証(平面推定/ImageTracking/uGUI/Androidスマホなど)

 前回お豆腐を出すところまでやりました。

bibinbaleo.hatenablog.com

 今回はドキュメント読みつつ、床の位置推定やイメージトラッキング、VRM出すなど色々試す。

developer.nreal.ai

VRM出す

VRMモデル出すだけ

f:id:bibinbaleo:20200804082057p:plain

出た。元のモデル結構黒いけど、ちゃんと見えている

f:id:bibinbaleo:20200804082100p:plain

f:id:bibinbaleo:20200804082104p:plain

HololensだとUWPのせいで、表示おかしかったり読み込めなかったりとかあった気がしないこともないけど、nrealはandroidなので基本的に安定してできますね。

NRCameraRig

Camera3つある

f:id:bibinbaleo:20200731170850p:plain

6dofと3dofを切り替えられるみたい

f:id:bibinbaleo:20200804082404p:plain

平面推定

床にモノを置きたい

サンプルのHelloMRにもPlaneDitectorというオブジェクトおよびコンポーネントがある

f:id:bibinbaleo:20200804082307p:plain

よく見たらHelloMRControllerコンポーネントにMascotというモデルがついている

なにこれ!こんなの初めて見た。

f:id:bibinbaleo:20200804082310p:plain

もしかしなくても、床をポインターでタップしたらこの子が置けた!

f:id:bibinbaleo:20200804084901p:plain

前回やった時気づかなかった・・・。Nrealのロゴが表示されるだけだと思ってた。

mascotを置き換えたら自分のモデルも置けた

f:id:bibinbaleo:20200804084857p:plain

床が白いせいか、なかなか床がきれいに推定されない。空中にできたりする

イメージトラッキング

10個までイメージを記録できるが、今は同時に追跡できるのは1つだけ

f:id:bibinbaleo:20200804083504p:plain

developer.nreal.ai

サンプル

ImageTrackingサンプルを動かしてみた。

f:id:bibinbaleo:20200804183520p:plain

画像はここにある

\Assets\NRSDK\Demos\TrackingImage\Images\nreal_trib.jpg"

f:id:bibinbaleo:20200804183010p:plain

なんかずれてる・・・

奥行きもあってない。

f:id:bibinbaleo:20200804183007p:plainf:id:bibinbaleo:20200804183013p:plain

マーカーをはさんで近づいたら近づくし、離れるとARオブジェクトも離れる。

1mぐらい離れたら消える。

画像の条件

f:id:bibinbaleo:20200804083628p:plain

jpeg,dpi150

Photoshopよりillustratorのほうがいいとかあるんだ

点数

点数を出してくれる。65点以上がよくて40点以下は使わないほうがいいって

 

トラッキングしたい画像を選んで、右クリック>Create>NRSDK>TrackingDatabase

f:id:bibinbaleo:20200804085758p:plain

それでうまくいけば、XX/100って感じで点数が出る

f:id:bibinbaleo:20200804175449p:plain

でも私はほとんどCalculating...になって計測できない。

というか最初QRコードに関しては67点ぐらいで出てたんだけど、他の画像が出なくて、ファイルが日本語名だったのが悪いのかな?と思ってやりなおしたらQRコードもでなくなった;;

f:id:bibinbaleo:20200804090117p:plain

というかQRコードはpngだったのになんで出たんだろう。そこは関係ないのかな。

個別にやりなおしたら出るものもあった。

f:id:bibinbaleo:20200804175446p:plain

トラッキングに使う

データベースをトラッキングに使うには、NRSDKフォルダ内のNRKernalSessionConfigを押して

f:id:bibinbaleo:20200804090758p:plain

そこのTrackingImageDatabaseに作ったデータベースをセットする。

f:id:bibinbaleo:20200804090754p:plain

スクリプトでの使い方はMarkerDetecter.csをみればいいらしい

サンプルシーンではTrackingImageExampleController.cs

f:id:bibinbaleo:20200804183553p:plain

オブザーバービュー

Androidスマホで、Nrealが見ている景色を見れる。

https://developer.nreal.ai/develop/unity/observer-view

サンプルシーンなかった;;

ネットワークだから自分で実装しないといけないのかな?

 

位置合わせはマーカーで行うらしい

ローカルサーバーはNESDK>StartSharingServerで建てられる。

f:id:bibinbaleo:20200804092955p:plain

f:id:bibinbaleo:20200804092930p:plain

コントローラーと入力

https://developer.nreal.ai/develop/unity/controller

NRInputのRaycastModeを変えると、Gaze(頭の動きで選択)とLaser(コントローラー)を切り替えられる

f:id:bibinbaleo:20200804093727p:plain

LaserRaycasterやGazeRaycasterについているMaskを変えると反応しないものを設定できる。

f:id:bibinbaleo:20200804093731p:plain

uGUI

uGUIを操作するサンプルシーンはInput-Interaction

(このNrealのコントローラーチュートリアルに書いてある内容が実装されている)

f:id:bibinbaleo:20200804094316p:plain

EventSystemを消して、CanvasについているGraphicRaycasterを消して、CanvasRaycastTargetを付ければ、uGUIが反応するらしい。

f:id:bibinbaleo:20200804094537p:plain

できた!

f:id:bibinbaleo:20200804182707p:plain

Androidスマホを使う

コンピューティングユニットではなく、Androidスマホをコンピューター&コントローラーとして使うときのメモ

apk入れる時

PackageNameのCompanyNameをnrealにする!!!!!

f:id:bibinbaleo:20200804180458p:plain

f:id:bibinbaleo:20200804180501p:plain

そうしないとNrealを挿したときのアプリ一覧に出てこない。

確かにどうにかしてスマホに入っているアプリをNreal向けのアプリだと認識しないといけないけど・・・ドキュメントに書いてたっけ?普通そこは自分の会社名とか入れる

コントローラー

スマホをコントローラーにするとき、画面の上の部分に独自のボタンなどのUIを置ける。

サンプルはInput-VirtualController

Unity上でスマホでの見方をするときは、NRInputのEmulateVirtualDisplayにチェックを入れると、普通のコントローラーとスマホ画面が切り替わる

f:id:bibinbaleo:20200804184110p:plain

HideDefaultControllerを押すと

f:id:bibinbaleo:20200804183835p:plain

全面のUIが表示される。

f:id:bibinbaleo:20200804093724p:plain

自分でコントローラーUI作る

prefabにあるNRVirtualDisplayを置く

f:id:bibinbaleo:20200804184702p:plain

Gameビューを1080 x 2340にする(縦長)

f:id:bibinbaleo:20200804184956p:plain

こんな感じ。この中に自分でUIを置いて行けばよい

f:id:bibinbaleo:20200804185333p:plain

ちなみにサンプルの構造はこんな感じだった

f:id:bibinbaleo:20200804184851p:plain

不具合?

端末の問題か分からないけど、自作アプリでスマホを使うと、レーザーが出てこなかった。なんも特殊な設定要らないはずだが

あとスマホ画面がこれのまま何のボタンも反応しなくなったりした。

f:id:bibinbaleo:20200804185424p:plain

スマホ側でもグラス内でもホーム画面に戻れない。

最後に

Hololensよりはいろいろ楽にできそう。分からないけど

文字入力は、スマホのUIではできないのかな?

次回Conektonとか触りつつ、Photonの通信してみたい。

f:id:bibinbaleo:20200804183212p:plain

(↑ImageTrackingをしたときの、AR/マーカー/メガネの位置関係を書こうとした図)