前回お豆腐を出すところまでやりました。
今回はドキュメント読みつつ、床の位置推定やイメージトラッキング、VRM出すなど色々試す。
VRM出す
VRMモデル出すだけ
出た。元のモデル結構黒いけど、ちゃんと見えている
HololensだとUWPのせいで、表示おかしかったり読み込めなかったりとかあった気がしないこともないけど、nrealはandroidなので基本的に安定してできますね。
NRCameraRig
Camera3つある
6dofと3dofを切り替えられるみたい
平面推定
床にモノを置きたい
サンプルのHelloMRにもPlaneDitectorというオブジェクトおよびコンポーネントがある
よく見たらHelloMRControllerコンポーネントにMascotというモデルがついている
なにこれ!こんなの初めて見た。
もしかしなくても、床をポインターでタップしたらこの子が置けた!
前回やった時気づかなかった・・・。Nrealのロゴが表示されるだけだと思ってた。
mascotを置き換えたら自分のモデルも置けた
床が白いせいか、なかなか床がきれいに推定されない。空中にできたりする
イメージトラッキング
10個までイメージを記録できるが、今は同時に追跡できるのは1つだけ
サンプル
ImageTrackingサンプルを動かしてみた。
画像はここにある
\Assets\NRSDK\Demos\TrackingImage\Images\nreal_trib.jpg"
なんかずれてる・・・
奥行きもあってない。
マーカーをはさんで近づいたら近づくし、離れるとARオブジェクトも離れる。
1mぐらい離れたら消える。
画像の条件
jpeg,dpi150
Photoshopよりillustratorのほうがいいとかあるんだ
点数
点数を出してくれる。65点以上がよくて40点以下は使わないほうがいいって
トラッキングしたい画像を選んで、右クリック>Create>NRSDK>TrackingDatabase
それでうまくいけば、XX/100って感じで点数が出る
でも私はほとんどCalculating...になって計測できない。
というか最初QRコードに関しては67点ぐらいで出てたんだけど、他の画像が出なくて、ファイルが日本語名だったのが悪いのかな?と思ってやりなおしたらQRコードもでなくなった;;
というかQRコードはpngだったのになんで出たんだろう。そこは関係ないのかな。
個別にやりなおしたら出るものもあった。
トラッキングに使う
データベースをトラッキングに使うには、NRSDKフォルダ内のNRKernalSessionConfigを押して
そこのTrackingImageDatabaseに作ったデータベースをセットする。
スクリプトでの使い方はMarkerDetecter.csをみればいいらしい
サンプルシーンではTrackingImageExampleController.cs
オブザーバービュー
Androidスマホで、Nrealが見ている景色を見れる。
https://developer.nreal.ai/develop/unity/observer-view
サンプルシーンなかった;;
ネットワークだから自分で実装しないといけないのかな?
位置合わせはマーカーで行うらしい
ローカルサーバーはNESDK>StartSharingServerで建てられる。
コントローラーと入力
https://developer.nreal.ai/develop/unity/controller
NRInputのRaycastModeを変えると、Gaze(頭の動きで選択)とLaser(コントローラー)を切り替えられる
LaserRaycasterやGazeRaycasterについているMaskを変えると反応しないものを設定できる。
uGUI
uGUIを操作するサンプルシーンはInput-Interaction
(このNrealのコントローラーチュートリアルに書いてある内容が実装されている)
EventSystemを消して、CanvasについているGraphicRaycasterを消して、CanvasRaycastTargetを付ければ、uGUIが反応するらしい。
できた!
Androidスマホを使う
コンピューティングユニットではなく、Androidスマホをコンピューター&コントローラーとして使うときのメモ
apk入れる時
PackageNameのCompanyNameをnrealにする!!!!!
そうしないとNrealを挿したときのアプリ一覧に出てこない。
確かにどうにかしてスマホに入っているアプリをNreal向けのアプリだと認識しないといけないけど・・・ドキュメントに書いてたっけ?普通そこは自分の会社名とか入れる
コントローラー
スマホをコントローラーにするとき、画面の上の部分に独自のボタンなどのUIを置ける。
サンプルはInput-VirtualController
Unity上でスマホでの見方をするときは、NRInputのEmulateVirtualDisplayにチェックを入れると、普通のコントローラーとスマホ画面が切り替わる
HideDefaultControllerを押すと
全面のUIが表示される。
自分でコントローラーUI作る
prefabにあるNRVirtualDisplayを置く
Gameビューを1080 x 2340にする(縦長)
こんな感じ。この中に自分でUIを置いて行けばよい
ちなみにサンプルの構造はこんな感じだった
不具合?
端末の問題か分からないけど、自作アプリでスマホを使うと、レーザーが出てこなかった。なんも特殊な設定要らないはずだが
あとスマホ画面がこれのまま何のボタンも反応しなくなったりした。
スマホ側でもグラス内でもホーム画面に戻れない。
最後に
Hololensよりはいろいろ楽にできそう。分からないけど
文字入力は、スマホのUIではできないのかな?
次回Conektonとか触りつつ、Photonの通信してみたい。
(↑ImageTrackingをしたときの、AR/マーカー/メガネの位置関係を書こうとした図)