« Nreal の MR Space を起動した時に上に出てくる 0DoFモード、3DoFモード、6DoFモードの違いは? | トップページ | HDMI 入力を Nreal Light や Nreal Air に出力するよう変換するコネクタ Wacom Link Plus ACK42819 について(その1) »

2022.06.25

MR(Mixed Reality:複合現実)グラス「 Nreal Light 」、「 Nreal Air 」で動くアプリを作ってみよう!

| |コメント (0)

 このエントリーをはてなブックマークに追加

どうも、かげさんです(^^)/
あなたがこの記事を読んでいるのは何回目でしょうか?
初めての方、いらっしゃい!
複数回目の方、再訪問ありがとです(・∀・)

サングラスっぽい見た目の MR(Mixed Reality:複合現実)グラスNreal Light 」を使えるようになりました。

せっかくなので「 Nreal Light で動く自作プログラム」を作ってみたい!!

そこで、MESON Tech Blog の記事「Unityを使って初めてのNreal Airアプリを作ってみよう!」を参考にしてレッツチャレンジ♪



最大201インチのシアター級巨大スクリーン(ARグラス越しに4mで130インチ、6mで201インチに相当)で映像をお楽しみいただくことができます。
TUVが認めた目に優しいARグラス:国際的な独立第三者検査・認証機関であるテュフラインランド(TUV Rheinland)からハードウェアレベルの「低ブルーライト・フリッカーフリー」認証を取得しました。

この記事を参考にした理由は、2つあります。

  1. 記事の投稿日が2022/03/11と最近のものだったため
  2. ハマりポイントとかもオレンジのアイコンで書かれていて分かりやすく感じた。

ちなみに参考にしたのは「 Nreal Light 」ではなく「 Nreal Air 」の記事です。

「 Nreal Air 」は、2022/03発売モデルで「 Nreal Light 」を小型軽量化して映像品質を向上させ低価格にしたものです。新しいのが動くならそれより前に発売された「 Nreal Light 」でも動くだろうという考えのもと、やっていきます。

結論から言うと、「 Nreal Light 」でも「 Nreal Air 」でも、ちゃんと動きました。

でも、参考記事があってもハマる時は、ハマる。

つまりはハマったということですじょ…(´・ω・`)

なので、かげさんがハマったことも合わせて書いていきますね(*^^*)

参考画像が小さいと感じる場合、画像をクリックすると拡大表示されるので活用してください。

また、間違っているところとか、こうしたら良いよとかありましたら、記事を修正しますので教えてくださいね。

準備するもの

  • Nreal Light
    参考にした記事が Nreal Air なので、Nreal Air でも問題ないです。
  • Nreal Light 対応の Android スマートホン
    かげさんは、au の「 XPERIA 5Ⅲ SOG05 」を使ってる。
    2022/06/11時点では、ソフトウェア開発キット(NRSDK)が iPhone に対応していないので Android スマホが必須です。
  • Unity 2020.3.30f1
    古いバージョンですが、参考記事と同じにしたほうが安全そうなので。
    かげさんの Unity の知識は、Unity のバージョン4以前のもの中心なので、あまり役に立たないと思われる(´・ω・`)
    実質、 Unity 初心者といって良いでしょう。
  • NRSDK 1.8.0
    ソフトウェア開発キットは、この記事を書いた時点での最新版(2022/03発売の Nreal Air にも対応した)バージョンを使います。
    NRSDKのトップページからは最新バージョンしかダウンロードできないので、現在、公開されているものをダウンロードしましょう。
    なお、一部の旧バージョン NRSDK は「このリンク」からダウンロードできます。

Unity Hub のインストール

まずは開発環境の Unity のインストールですが、「 Unity Hub という Unity のバージョンを管理するソフト」からインストールします。

https://unity3d.com/jp/get-unity/download

Nrsdk01

かげさんは参考記事のとおりに 上記の Unity Hub をダウンロードして作業しましたが、途中の Unity Editor のインストールのところで目的の Unity 2020.3.30f1 を選択できなくて該当バージョンを探すことになりました。

なので、最初から https://unity3d.com/jp/unity/qa/lts-releases?version=2020.3 で「LTS リリース版 2020.3.30f1」のところにある Unity Hub を選択したほうが良いのかもしれません。

最新版の Unity でもすんなりと動くかもしれませんが、Nreal に限らず、Unity 開発では Unity のバージョンと SDK のバージョンを揃えないとうまく動かないといった話もよく聞くので、かげさんは安全性を重視して参考記事の実績がある組み合わせにすることにしました。

だって開発環境準備でハマると、その開発環境の知識がないから原因特定が大変なんだもん…(´・ω・`)

Nrsdk02

「はい」ボタンをクリック。

Nrsdk03

「同意する」ボタンをクリック。

Nrsdk04

「インストール」ボタンをクリック。

Nrsdk05

Nrsdk06

「完了」ボタンをクリック。

続いて Unity Hub のアカウントを作ります。

Nrsdk07

「create account」をクリック。

Nrsdk08

必要事項を入力して「Create a Unity ID」ボタンか、or から下のアイコンを選択して別のアカウントを利用して作成します。

かげさんは、Google アカウントを利用することにしました。(Android ユーザだし、Googleアカウント流用が簡単なので)

どうやってアカウントを作るかで画面遷移が変わってくるので、ここでは省略。(実は、スクショを取り忘れたとも言う)

アカウントが作れてログインしたら、Unity Hub を開くかの確認画面が出ます。

Nrsdk09

「Unity Hub を開く」ボタンをクリック。

Nrsdk10

「Got it」ボタンをクリック。

Unity Editor のインストール

続いて Unity Editor のインストールなんですが、参考記事に従って作業していたかげさんは、ここで困りました。

次の画面が出て、しかも「2021.3.4f1」しか選べないだと…(´;ω;`)

Nrsdk11

ここはかなりグダってしまった…

目的の「2020.3.30f1」は、どうやったら選べるんだ?って悩みました。

とりあえず先に進むとバージョンを選べるかも?ということで「Install Unity Editor」ボタンを押してみた。

Nrsdk12

ライセンス選択の画面になってしまった…。

パーソナルエディションのライセンスで良いので「Agree and get personal edition licence」ボタンをクリック。

Unity Editor のインストールが始まってしまった…(´・ω・`)

が、新しいのを入れるつもりはないのでキャンセル。

Nrsdk13

何か設定がないか見てみよう。「Preferences」ボタンをクリック。

Nrsdk14_20220611153901

とりあえず「表示」を「日本語」に変更。

しかし、それっぽい設定は無い…

Nrsdk15

エディタがないとダメなので「エディタのインストール」ボタンをクリック。

Nrsdk16

正式リリースのところを見ると2020.3は「2020.3.35f1」と目的のバージョンよりも新しい。その他のバージョンにあるのは2022だったのでアーカイブから古いのを探す必要があるので「アーカイブ」をクリック。

Nrsdk16_20220611155801

「ダウンロードアーカイブ」をクリック。

Nrsdk17

「Unity 2020.x」をクリック。

Nrsdk18_20220611160301

下の方にスクロールして「Unity 2020.3.30f1」の「Unity Hub」をクリック。

Nrsdk19

エディタのインストールオプションでは、開発ツールの「Microsoft Visual Studio Community 2019」に加えて、Android を使うので「Android Build  Support」、「Android SDK & NDK tools」、「OpenJDK」にもチェックを入れる。

Android 系の3つにチェックが入っていないと、後で出てくるビルドの段階で JDK not found が出てしまうので注意しましょう。

ちなみに、かげさんは、チェックを入れていたのにビルド段階で JDK not found が出てハマりましたとさ…(´・ω・`) 

参考記事が正しくて、操作が正しくても、ハマるときはハマるのです。(´;ω;`)

※このときの解決方法は後述のビルドのところを参照。

Nrsdk20_20220611161401

さらに下の方にスクロールして言語パックの「日本語」にチェックを入れて「次へ」ボタンをクリック。

Nrsdk20_2

Visual Studio 2019 のライセンスに同意して「次へ」ボタンをクリック。

Nrsdk21

Android SDK と NDK のライセンスに同意して「インストール」ボタンをクリック。

Nrsdk215

インストールが始めたら、この画面は「X」ボタンで閉じた方がインストールの進捗が見れて良い。

Nrsdk22

この画面に切り替わるまでも長い…。

「▶」をクリックするとダウンロードの一覧が展開され、進捗状態がわかって便利。

ダウンロードが始まってから、かなり長い。12個インストールするのに先にすべてをダウンロードしてからインストールが始まるので長いのです…

Nrsdk23

「はい」ボタンをクリック。ここも結構長い。

Nrsdk24

なぜか、Android NDKのインストールが失敗した…

ダメ元で「失敗したダウンロードをすべて再実行する」ボタンをクリック。

Nrsdk25

今度は成功した。

なんだったんだ…

Nreal Light向けアプリのプロジェクト作成

まずは新しいプロジェクトを Unity Hub から作成します。

Nrsdk26

「プロジェクト」を選択し、「新しいプロジェクト」ボタンをクリック。

Nrsdk27_20220611165701

「すべてのテンプレート」を選択後、「3Dコア」を選択して「プロジェクト名」や「格納場所」を指定して「プロジェクトを作成」ボタンをクリック。

時間がかかりますが、起動したら下図のような画面が表示されます。

Nrsdk28

かげさんは、Unityのインストールから行っているので、こういうウィンドウ配置ですが、既にインストールしている人や最新バージョンをインストールしている場合は画面配置が違うかもしれません。

Android プラットフォームに変更

Nrsdk29

メニュー「File」-「Build Settings」をクリック。

Nrsdk30

「Build Settings」画面で Platform が標準の「PC, Mac & Linux Standalone」になっているので「Android」に変更し、「Switch Platform」ボタンをクリック。

Android 向けに変更できない場合は、Unity Editorのインストールのときに Android 向けの3つを選択し忘れているかもしれません。必要に応じて下図のように Unity Hub のインストールからモジュールを追加してください。

Nrsdk31

Nreal デバイス向けのソフトウェア開発キット(NRSDK)のダウンロードとインポート

NRSDK 1.8(この記事を書いている時点の最新版)をダウンロードするURLはコチラです。

https://developer.nreal.ai/download

Nrsdk32

利用規約やNrealプライバシーポリシーを読んで同意したら「I agree to the oboveterms and conditions」にチェックを入れて、Nreal Developer としてログインします。

Nrsdk33_20220611192601

Nreal Developer としてログインします。(かげさんは、Googleアカウントにしました)

Nrsdk34

「I agree to the oboveterms and conditions」にチェックを入れて、「Download」ボタンをクリック。

NRSDKがダウンロードされます。NRSDKは、最新バージョンしかダウンロードできません。

ダウンロードされたファイルをダブルクリックして起動します。しばらくしたら下図の画面が表示されます。

Nrsdk35

「Import」ボタンをクリックします。

しばらくすると Unity Project の Assets のところに NRSDK が表示されます。

Nrsdk36

シーンを準備して Nreal Light 向けアプリのセットアップ

Nrsdk37

メニュー「File」-「New Scene」をクリック。

Nrsdk38

「Basic(Build-in)」を選択し、「Create」ボタンをクリック。

カメラは、NRSDK が提供するカメラを使う必要があります。このため、最初からある「 Main Camera 」は不要なので削除します。

Nrsdk39

Hierarchy から「 Main Camera 」を選択し、右クリックメニューから「Delete」をクリック。

Nrsdk40

Project の Assets から「 NRSDK 」をダブルクリック ⇒ 「 Prefubs 」をダブルクリック。

Nrsdk41

Ctrlキーを押しながら「NRCameraRig」と「NRInput」をクリックして、Hierarchy にドラッグ&ドロップ。

Nrsdk42

シーンを保存するため、メニュー「File」-「Save」をクリック。

今回は「NrealLightScene」という名前でAssets/Scenesフォルダに保存。(Assetsフォルダ配下じゃないといけない

参考にした記事によると、この段階でビルドすれば、何も表示されないものの Nreal Light が認識してくれるらしいのだが…

この段階でビルドしようとして「JDK not found」

たぶん、このタイミングではまだビルドをしない方が良いと思います。

実は、このタイミングがかげさんにとってのハマりポイントだったからです…(´;ω;`)

軽い気持ちで、この段階でビルドしてみるか!

と思い、メニュー「File」-「Build Settings」で表示される画面で「Build And Run」ボタンビルドしてみると「JDK not found」が出てしまいました!

具体的なエラーメッセージとかはスクリーンショットを取り忘れました…(またか…)

え!? ちょっと待って! Unity Editor インストールのときに OpenJDK とか、Android のビルドに関する項目はチェックつけてただろ…

ネットで調べるとやはり「JDK not found」が出てきた記事は、Unity Editor インストールのときに OpenJDK とか、Android のビルドに関する項目のチェックをつけてないパターンのようだった。

Unity 2019.3 でJDK、NDK、SDKが無いエラーが出る場合の対応方法」や「【Unity】Androidビルドに必要なJDKはUnityHubで解決」、Unity 公式ドキュメント「Android 環境の設定」とか、いくつか類似の記事があったので、OpenJDK のチェック漏れは、Android ビルドしようとするときにやりがちな罠らしい。

でも、かげさんは、ちゃんとやったのよ?(´・ω・`)

OpenJDK とか Android のビルドに関連する項目だけ再インストールするかと思ったら、Unity Hub のモジュールの追加では、チェックをはずせずアンインストールできない。アンインストールできなければ再インストールもできないぞ。もしや後からモジュールを追加はできても、モジュール再インストールはできないのか…(´・ω・`)

そして、たどり着いたのは「UnityでOpenJDKがインストールされない場合の解決法(Windows)」という記事で、ここに「Unity Hub」は同じバージョンのモジュールを再インストールできないと書いてあった…orz

しかも、「UnityでOpenJDKがインストールされない場合の解決法(Windows)」にも書いてあるが、アンインストールしても消えないファイルとかもあるらしいし、まとめのところをみると、「Unity Hub」経由のインストールで失敗する人もいるらしい

どうやら、かげさんは失敗する人だったっぽい…(´;ω;`)

むぅ、Unity Hub はともかく、最低限、Unity Editor をアンインストールしてインストールし直すか…

ということで、アンインストールするなら、ここまで作業していた Unity の作業は一旦保存しとかないとな。

そして、ここで一度保存したことが「別の闇への扉」になることに、この時のかげさんは気づいてなかった…

ちなみに保存したことが悪いのではなくて、保存したものを開いた後に確認を怠ったのが「別の闇への扉」になったのでした…

Unity Editor をアンインストールしてから、改めてインストールし直しました。

アンインストールは、Unity Hub から行います。

Nrsdk_editor

Unity Hub で「インストール」を選択し、アンインストールするエディタバージョンの右端にある「歯車」ボタンを選択、「アンインストール」を選択。

Unity Editor のインストールは、前述した方法の通りです。

最初の Unity Editor のインストール時に出ていた「Android NDKのインストールが失敗」も発生せず、すんなりインストールされました。

この段階でビルドをしたところ「JDK not found」は出なくなりました。

最初の時の「Android NDKのインストールが失敗」が影響していたのかもしれません。

でも、この時点でもビルドはうまくいきませんでした。

おそらく、この後に行う Project tips の設定をしていなかったり、ビルドしたファイルの格納先を直接 Android 端末にしようとしていたのが悪かったんじゃないかと思います。

この段階では「実はまだ設定し忘れていることがあるのかも?」と考え、先に進むことにしたのでした。

オブジェクトを配置

このままだと何も表示されないのでオブジェクト Cube を配置します。

ここからの作業をする前に確認すべきことがあります。

左上にある「Hierarchy」のツリーリストの一番上が先程名前をつけて保存した「NrealLightScene」になっていることを確認しましょう。

かげさんは、先に書いたように Unity Editor をアンインストールしてインストールし直すために、Unity プロジェクトごと保存をしました。

そして Unity Editor をインストールしてプロジェクトを開き直した後に、シーンが「NrealLightScene」ではなく、最初からあるSimpleScene」になっていたのに気づかず作業を進めてしまいました。これにより Android 端末で作ったものを動かした時に、Nreal Light で白いキューブが表示されるはずが、Android 端末に表示されてしまった。原因に気づくのにしばらくかかりました…orz

気づいてみたら「NRSDK のカメラを追加したシーンを使っていないんだから、Nreal Light 上で表示されない」のは当たり前だったよ。(´;ω;`)

あなたは、かげさんと違ってシーン名をちゃんと確認しましたね? では、続き、行ってみよう!

Nrsdk43new_20220625171801

Hierarchy の 「+」から「3D Object」-「Cube」をクリック。

Nrsdk44new

Cubeがシーンに配置された。

Nrsdk45new

「Game」ウィンドウを「Scene」ウィンドウの左中程までドラッグ&ドロップ。

Nrsdk46new

「Game」ウィンドウと「Scene」ウィンドウを両方見れるようになった。

念のため確認ですが、「Game」ウィンドウは上図の中央部分のように真っ黒ですよね?

下の図のように遠くにキューブが見えませんよね?

Nrsdk46

上図のようになっている場合、先程のシーン確認を怠っている可能性ありです。戻って確認しましょう。

問題なければ、せっかくのキューブなので少し移動して傾けてみる。

Nrsdk47new

Positionは、x=0、y=0、z=3で設定。
Rotationは、x=30、y=-45、z=-15で設定。

すると「Game」ウィンドウが上図のようになります。

次にNRSDK の Project Tips を利用してプロジェクト設定を適切にする。

Nrsdk48new

メニュー「NRSDK」-「Project Tips」をクリック。

Nrsdk49

かげさんの場合、全部で4件のエラーとワーニングが出ていた。
これを「Accept All」ボタンをクリックして修正します。

Nrsdk50

確認画面が出るので「Yes, Accept All」ボタンをクリック。

Nrsdk51

修正の取り込みが終わったら「Close Window」ボタンをクリックします。

シーンを登録してビルド

Nrsdk52new

メニュー「File」-「Build Settings」をクリック。

Nrsdk53new

最初は紫の枠のところに何も表示されていません。「Add Open Scenes」ボタンをクリックして、今開いているシーンを登録します。

Nrsdk54new_20220625182101

Android スマホを PC に USB ケーブルで接続して「Build And Run」ボタンを選択。

Android 用にビルドしたファイル .apk を格納するフォルダを選択します。

ビルドが始まります。それなりに時間がかかります。

ビルドが終わると .apk ファイルを Android 端末にインストールしてくれるはずなんですが…

かげさんの場合、こんなメッセージが表示されました。

Nrsdk55

Android デバイスが接続されていないだと…

いやいや、普通に接続されていてエクスプローラからも Android 端末のファイルにアクセスできるんだけど…

USB ドライバに問題があるならエクスプローラからもアクセスできないだろ…

Unity プロジェクトのフォルダに .apk ファイルはできているのは確認した。

つまりビルドは問題なくできている。

とにかく動かしてみたいんだ!

ビルドができているなら動かしたい。とにかく動かしたい! 動かしてみたいんだ!

ということでスマートなやり方ではないんだけど、こんな方法を取りました。

PC と Android スマホを USB で接続。

61_

Android スマホ側で「アクセスを許可しますか?」と出たら「許可」を選択。

PC のエクスプローラで Unity プロジェクトのフォルダまで移動し、ビルドした「NrealLight1stApp.apk」をコピー。

エクスプローラで Android スマホにアクセス。とりあえず、かげさんの場合、PC\SOG05\内部共有ストレージ\Download まで移動。

コピーした「NrealLight1stApp.apk」を貼り付け。

これでスマホ側の Download フォルダに「NrealLight1stApp.apk」をダウンロードした扱いになる。

62_files 63_

スマホ側のファイルアクセスアプリ、かげさんの場合、「Files」を起動。

カテゴリから「ダウンロード」を選択。

64_

「NrealLight1stApp.apk」を選択。

「このアプリをインストールしますか?」というメッセージが出るので「インストール」を選択。

65_play

「Play プロテクトによりブロックされました」「このアプリのデベロッパーは、Playプロテクトで認識できません。デベロッパーが不明なアプリは安全でない可能性があります。」というメッセージが出るので「インストールする」を選択。

テストするのにPlayプロテクトとか通す必要があるのかわからないし、このアプリのデベロッパーは、自分であって不明じゃないんでインストールを強行します。

66_

「アプリを送信してスキャンしますか?」「このアプリはまだPlayプロテクトにスキャンされたことがありません。自分や他のユーザを守るため、アプリを送信してセキュリティスキャンを行ってください。」というメッセージが出るので「送信しない」を選択。

うるさい黙れ! とにかく動かしたいんだ!

それに下の方に「NrealLight1stApp をインストールしました。」「開く」と出ているんで「開く」を選択。

67_nreal

「Error Code 5, Please connect your Nreal Grasses.」「Quit」と出るので「Quit」を選択。

よし! Nreal グラス用のアプリとして認識されているっぽいぞ! (・∀・)

Nebula で認識されるかな?

Nebula から起動

スマホから USB ケーブルを外して、Nreal Light を接続します。

Nebula が起動します。

確認したいのはミラーリングモードではなく、MR モード。

70_nebulatop

MR Space から起動できるアプリを作ったので MR モードを選択します。

Nreal_shot_1656185159918

メニューをスワイプして 2 ページ目にスライドします。

グループ1にある「NrealLight1stApp」が作ったアプリなので選択します。

Nreal_shot_1656185228275

Nreal Light で白いキューブが見えれば成功です。

できればどういうふうに見えているかのスクショもあると良いんですが、視界スクショはまだ実装していないのでね…

(おまけ)シーンの確認を怠った場合の見え方

ちなみに何度か注意したシーンの選択を間違うと、アプリは起動しても Nreal Light 上では何も表示されずに下図がスマホに表示されます。

Screenshot_20220612004330

まとめ

後半、スマートな感じにはならなかったけど、とりあえず Nreal Light で表示できた。

なお、Nral Air でも問題なく見えました。

ここから少しずつプログラムを実装していこうか。

ここまではOKだ



最大201インチのシアター級巨大スクリーン(ARグラス越しに4mで130インチ、6mで201インチに相当)で映像をお楽しみいただくことができます。
TUVが認めた目に優しいARグラス:国際的な独立第三者検査・認証機関であるテュフラインランド(TUV Rheinland)からハードウェアレベルの「低ブルーライト・フリッカーフリー」認証を取得しました。


Nreal Streaming Box(エンリアル ストリーミングボックス) NR-7101AGL - ARグラス/スマートグラス Nreal Air 専用/Android・iOS 両対応/Nreal Airにケーブルで接続するボックス

 このエントリーをはてなブックマークに追加

| |コメント (0)

このエントリーへのリンク

このエントリーのリンクを入れるHTML:

コメント

このブログの新着コメントをRSSリーダに登録する為のxml




←名前とメールアドレスは必須です。
URLも記入すれば、URLのみが公開されます。
メールアドレスのみですと、メールアドレスが公開されてしまいますので、御注意ください。

↓コメント本文では、「a href」「b」「i」「br/」「p」「strong」「em」「ul」「ol」「li」「blockquote」「pre」のタグが使えます。絵文字をクリックすると、本文にタグを挿入できます。