へっぽこ技術ブログです

【AR】【Androiod】Unity AR Foundationの開発環境構築 ※覚書

自分用の覚書です。

 

(1) Unity Habをインストールし、そこからUnity 2020をインストール

※いままで推奨通りUnity 2019を使ってましたがもう今日から2020しか使わないぞ!

※これを書いている現在は Unity 2020.2.6f1ですな。おいおい毎日アップデートされてるぞ

※Unity 2021もアルファ版&ベータ版が出てきてる。怖い・・・

f:id:Hiesuke:20210224173029p:plain

 

(2) Unity 2020でプロジェクトを新規作成

(3) Windowメニュー > Package Managerと選択してPackage Managerを起動

(4) Unity registryの一覧表示にして、検索窓にARと入力

f:id:Hiesuke:20210224173339p:plain

 

(5) AR FoundationとARCore XR Plugin(Android開発用)を「Install」

 ※必要ならARKit XR Plugin(iOS開発用)も「Install」

 

(6) Fileメニュー > Build Settingsと選択

(7) Platform欄のAndroidを選択して「Switch Platform」

(8) 「Player Settings...」をクリック

(9) Company Name欄に自分の名前or会社名を入力

(10) 「Other Settings」を展開

(11) Graphics APIsからValcanを削除(Valcanを選択して「ー」ボタン)

(12) 「+」ボタンからOpenGLES2を選択

(13) Auto Graphics APIチェックボックスにチェックを入れる

(14) Multithreded Renderingのチェックを外すf:id:Hiesuke:20210224174435p:plain

 

(15) Minimum API LevelをAndroid 7.0 'Nougat' に変更

(16) Scripting BackendをIL2CPPに変更

(17) ARM64のチェックボックスにチェックを入れる

f:id:Hiesuke:20210224174545p:plain

 

(18) 左のXR Plug-in Managementを選択してARCoreのチェックボックスにチェックを入れる

f:id:Hiesuke:20210224174846p:plain

 

ダイアログウインドウを閉じて、環境設定はこれでおしまい。・・・たぶん

 

余計な設定もありそうに思ってるんだけど、AR Foundationの公式サンプルプロジェクトを開いて設定を確認したらこうなってたので、とりあえずこれで行きたい所存。

 

続いて開発入門を覚書しようと思ってる。

 

【AR】【Android】Unity AR FoundationでARアプリ開発を始めるっぽい

ARアプリ開発を始めようと環境設定をして苦労したというお話

 

Android端末でのARアプリを開発しようと開発マシン(PC)の設定をしてて無茶苦茶苦労したのだけど、結論から言うと

・Unity 2020.2*1を使えば余計な設定いらない

という状況でした。Unityだけで他のアプリやら他のライブラリいらないのよ、Unity純正の機能追加だけでオッケー!

 

Android用のARアプリを作成するにはARCore(Project Tango?)という機能を使うのがセオリーってことで「Unity  ARCore  開発  Android」とかで検索すると色々と記事が出てくるのですが、基本としてはUnity 2018 のほかに Oracle JDK8 + Android Studio(のSDK ManagerとNDK)をインストールしてUnity側でそれらのアプリやらを使う設定を行う(Edit > Preference > External Tools)ことが必要でそれが書かれているのですが、記述通りに行ってもうまくいかなかったんですよね。GradleのテンプレートファイルやらAndroid Manifestの書き換えやらGradleのバージョンを合わせるやらNDKを別途持ってきてインストールするやら……をしてハマる嵌る・・・)

Unity 2019になると、更にXR Legacy HelpersとかMultiなんちゃらというUnityの機能も追加して環境を作らないといけなかったり。まあ環境構築できなかったんですが。

Unity 2020でも同じような設定で環境設定をしようして駄目だったのですが、ARCoreの後継というか上位層としてのUnity純正機能「AR Foundation」で色々試していたら環境設定ができあがりました。まあそれがUnity 2020.2 ならJDKもNDKもGradleのUnityインストール時に一緒に追加するAndroidモジュールでイケルみたいだなということでした。長々書いちゃいましたが、長々と回り道しちゃったなと。

では、ゆるゆると開発に取り組んでみたいと思います。
次の記事は、AR Foundationでの開発入門記事になるかも。まずはTryしてみます!

 

 

*1:自分は2020.2.5f1でした

【Android】ビューバインディング(View Binding) を使いましょうと教えていただきました

ご注意:この記事はまだKotlinではAndroidアプリを一度も(一度も!)作ったことのない人間が書いています。ほんと、お触りしかしたことないのですよ。いろいろごめんなさい。

 

KotlinでAndroidアプリを作る人は「findViewByIdなんて使わなくてもいいんだぜ!キャストが不要になったからっていちいち参照を取得するなんてかったるくてやってられないぜ!! import kotlinx.android.synthetic.main.activity_main.* って書くのはまあちょっとめんどくさいけどな」ってJavaな人にユーエツカンを抱きながら開発をしていると思っているのですけど※1、この synthetics という機能はもう使えなくなるようですね。まあ、超久々にKotlinを試してみたところ使えなくなってたのでググって調べたらわかっただけなんですが。詳しくは↓こちら。

developers-jp.googleblog.com

 

というわけで皆さん、2021年9月に完全終了する機能からAndroidの公式ライブラリであるビューバインディング(View Binding)に切り替えましょう。こちらはJavaでも使えますので。詳しくは↓こちら。

developer.android.com

 

でも個人的にはfindViewByIdが超好きなのですが(老害脳)。

 

おしまい

 

※1 超偏見

【VR】株式会社ハシラス様のライドデバイス「キックウェイ」を使ったアプリを作った

みなさま年末進行お疲れ様です。忙しい中ですが何モノにもなれないHiekichiがお送りいたします。ネンマツシンコー!

 

これは

qiita.com

の12月23日の記事です。たぶん・・・

 

・・・というわけで、表題のとおりライドデバイス「キックウェイ」(by ハシラス)用のアプリを作りました。

作ったのですが、どこまでオープンにしていい情報なのかわからないので、絶対に大丈夫だろうということを箇条書きで記してみます。

 

■キックウェイについて

・キックウェイは風(サーキュレーター)と床移動(左右にちょっと動いたり振動したり)を制御できる乗り物風デバイスVRと連動させて体験させることで体験の質を向上させる。

・キックウェイとUSBで繋がっているPC上でキックウェイのハードウェア(HW)を制御するソフトウェア(サービス)が動いている。キックウェイ対応アプリは専用のコンポーネントを介してHWの制御をサービスに依頼している。ちなみにIPアドレスを指定するだけの簡単設定。

・ハードウェア制御ソフトウェアへの依頼(指示)は、スクリプトから行うこともできるけどTimelineに風とか床移動とか床回転のトラックを作成して、時系列に沿ったクリップを配置するだけでOK。素晴らしい。

 

■作ったアプリについて

・グライダーに乗って飛ぶのを体験するっぽい気持ちのアプリ。

・風を受けて(サーキュレーターが回って)乗ってる(つもり)のグライダーが回転したり浮上したりする。そのグライダーの移動に合わせて風や床移動などのクリップをタイムラインに配置した。

・カメラの移動はタイムラインで行わせるのがふつ~だと思うけど、Cinemachineを使ってみたかったのでそいつのDolly Cart機能でOculus用のカメラ(OVRCameraRig)を移動させている。

・Oculus Quest 2用のアプリとして作った。キックウェイに繋がっているPCで動くHTC Vive用のアプリとして作るのが普通だと思うけど。

 ・開始と終了がめんどくさい(ViveだとPCのキーボードで開始が指示できるけど、Oculus Questだとそうはいかない)ので、アプリ起動とともに児童開始されて延々とループするようにした。

・アプリ開始と同時にDolly Cartでのカメラ移動と、Timelineの開始を行う。カメラの移動が一周したタイミングでTimelineを再度実行させるようにしてみた。まあ、だいたい合ってればいいかなと。

 

 

■その他

 ・HTC Vive用のアプリも初めて作ってみた。でもやっぱりなんか性に合わない。なぜだ?

 

動作はこんな感じです。Vive用に改めて作ってみました。適当な無料アセット(Skybox、シーンなど)をダウンロードしてSteamVR PluginやCinemachineの設定、Timelineなどを作って手直しして・・・で、2時間くらいでした。

www.youtube.com

 

 

というわけで、23日の記事でした。

明日は @godan09先輩の「ちょっとポエムでも書くか「入社3年目から見える風景 もしくは 激動の2020年と2021年生存戦略」という記事です。後輩の皆様ご拝聴くださいませ。楽しみですね。セイゾンセンリャクー!

 

おっと、明日の晩はクリスマスですね。昔は「日没から翌日の日没までが1日だった」ので、12月24日の日没から12月25日の日没までがクリスマスであり、12月24日の日没から12月25日の日の出までが夜(クリスマスのイブニング=クリスマスイブ)である。ってことをアイザック・アシモフ先生のエッセイで知った、ということは毎年なにかしらで伝えていきたいと思います。

間違っても23日をイブイブとか言うなよ! 

 

では良いクリスマス&新年を!

【覚書】チラシの裏にでも今年試みたことをちらっと振り返り書きなぐってみようぜ

注意!:これはブログではなく単なる日記です。というわけでまあ有用な情報は期待しないでください。

 

今年は世界的流行なアレのせいで自分も "引きこもり(Stay Home!)" が絶賛捗っていたわけですが、年度の前半は正直オンライン授業の実施でもうもうもう大忙しでした。だって週に30コマ設定されている授業枠(月曜から金曜日の5日間×50分授業が1日に6回=30コマ)に対して酷いときは27コマ・緩いときでも25コマの授業を実施しないといけなかったんですよ!うちの学校は録画の配信とかで授業は行っていないので、すべてリアルタイムで行いましたからね。もうカツカツですよ。それらの空き時間に授業準備やら教材の作成やらを行っていたわけです。とほほ……

まあ、忙しいなりに新しいことに手を付けるのが必要 or 手を付けざる負えなくなるのが現代社会人かと思いますが、私も生きていくだけでいっぱいいっぱいな中でちょっとだけは新しいことを始めました。せっかくなのでチラシの裏と思って書き殴ってみます。ぶんぶん!

 

(1) Unityちょっとやった

 もちろんチョットデキルのレベルまでではございません。なんとなく使っていたUnityをちょっとだけわかるようになったような気がします。とりあえず「自分にとって新しい項目を覚えるためにそれを使ったショーモ無いアプリを作ってみる」というのを繰り返しました。ちなみに新しい項目ってのは別に世の中的に新しいことってわけではなく、UI使ってみる、OnTriggerEnterメソッド使ってみる、とかのレベルです。

 やっぱり「3D空間とは…」みたいな難しいことを最初に考えるよりも、作りながら試してみるのが理解深まりますよね。もっともっと頑張って本を出版してみたいなあ。

 

(2) VRアプリ開発もちょっとやった

 Unityの流れなんですが、簡単なVRアプリも作ってみました。もちろんマーケット公開するレベルではなく。

 一応 VR-HMDとしては Oculus DK1/ DK2/ CV1 / Go と個人的に購入してはいましたが先達の方々がブログ等に書かれていることをお試しするようなレベルのアプリ(オブジェクトを眺める…程度のアプリ)しか作ったことはなかったんですよね。でもOculus Quest 2のおかげでアプリの作って試す環境が格段に手軽というか手近になった気がします。まあ、これまたUnityの機能を試すレベルのアプリではありますが。ちなみに今回のQuest2は直販ではなくYodobashiで予約購入しました。

 

こういうの(水の呼吸~♪)とか

www.youtube.com

 

こういうの(弾き返すだけ!)を作ってみました。

www.youtube.com

 

書き殴りというか作り殴りですが。

 

ところで結局、VR元年っていつなんですかね?

 

(3) YouTube Liveの配信方法をちょっと覚えた

 なぜだか仕事で配信をしないといけない状況が発生して、泥縄的に覚えました。結構面白い。

 

生きてるとまあちょっとづつ色々新しいことを始めていると思うので、年末なので皆さんも振り返ってはいかがでしょうか、という日記でした。(日記?)

【プログラミング一般】Conway先生に黙祷

授業で Conway's Life Gameについて取り上げたときにググってみたら、Conway先生が今年の4月に「新型コロナウイルス(!)」でお亡くなりになっていることを知りました。

やっぱり密集はいけないのですね。黙祷。

【VR】株式会社ハシラス様のライドデバイス「キックウェイ」を使ったアプリを作(りたか)った

なんか今日、めっちゃ寒いんですけど・・・

 

皆様、いかがお過ごしですが? 自分は本日もオンライン授業を実施中です。つい先ほどまで UnityでUI作ろう!って授業で、Screen Space-Overlayで画面に張り付いているUIとWorld Spaceで空間に浮いているUIの作成などをお話ししておりました。・・・なんていう近況報告は良いとして・・・。

 

この記事は

qiita.com

の12月3日の記事です・・・って、今年はAdventarさんじゃなくてQiitaさんのAdvent Calendarなのか。いきなりハードルが高くなったような気がしたけど・・・まあいいや、気にせず書きましょう。

 

みなさん、VR開発の黎明期から起業され活躍されている株式会社ハシラス様をご存じでしょうか。

hashilus.co.jp

 

古くは乗馬型フィットネス機器(ジョーバとかロデオボーイとか)を活用した乗馬レーシングから始まり、今までに様々なアミューズメント設備とコンテンツを展開されている会社様です。【詳しくはこちらをご覧ください】

そうそう古くはハシラス社長とGOROmanさんが組んでの「オキュ旅」なんてのもありました。その時には自分も出資(カンパ)させていただきました、500円だけですが。

ascii.jp

 

そのハシラス様のご協力をいただきまして、ただいま私の所属する学校にVR用ライドデバイス「キックウェイ」が期間限定ながら導入されています。

ライドデバイスという名の通り、人が乗ってアミューズメント体験をする装置です。公式サイトに「パーソナルモビリティ型モーションシミュレーター」と書かれている通り、VRで見ている風景に合わせて台座がモーションして(動いて)くれるので、VR体験の質を飛躍的に向上させることができます。

hashilus.co.jp

 

こちらが設置いただいたキックウェイです。

f:id:Hiesuke:20201204131413j:plain

全体の風景

右側の銀色の箱とその上に載ってる扇風機、箱の手前の台座、台座から上に伸びている手すりで貸し出しいただいた「キックウェイ」になります。左にあるPC(床の上で青く光っているやつ)やモニターなどは当方で用意したものです。

 

f:id:Hiesuke:20201204131841j:plain

モニターの表示

VRですので、ヘッドマウントディスプレイに画像が表示されていますが、こちらのコンテンツではモニターに同じ画像が表示されているのでサポートする人や見学する人が利用者が見ている画面を一緒に見ることができます。

 

f:id:Hiesuke:20201204132033j:plain

キックウェイ本体

キックウェイ本体です。銀色の箱に収められているモーターで手前の銀色の台座を動かしています。PCの電源を入れると、うにょうにょと動いて初期設定を行ってくれます。

手すりの棒は動きません。ハシラス様を訪問した際に「なんでキックウェイと言うのですか?」と社長にお尋ねしたら、「開発初期段階でキックコースターを分解して入手したハンドルを手すりとして利用したから」とおっしゃってました。

 

f:id:Hiesuke:20201204132751j:plain

台座

台座です。100キログラムまではOKと言われましたので気になる方はダイエットしてお臨みください。

 

以上、ここまでは引用しつつの単なるご紹介ですが、次回は開発の状況を記事として書きますね。ハシラスさんからは特に秘密としてる内容はない旨の話は伺ってますが、一応 社外への開発環境提供のファーストケースらしいので・・・

 

というわけで、今回は「・・・作りたかった(これから作る予定)」編でした。

 

YMIC OG/OBの方、もちろん現役の方も含めてキックウェイを体験してみたい方は、お早めに @Hiekichi までご連絡ください。体験会を開いちゃうよ。

 

p.s.

キックウェイの制御用PCにはHTC Vive proが接続されていて、お貸しいただいているアプリもVive用なのですが、私はOculus派(というのがあるかは知らないけど?)なので Oculus Quest 2用アプリで開発する予定です。

 

当Advent Calendarの明日の記事は、XXXさんによる「XXX」です。わーい、とってもXXXで楽しみですね~。