PICO4でMRTKを使う方法

# はじめ

こんにちは。
ジョジョ好きなXRクリエイターの [もふるね](https://twitter.com/mofurune_k) です。

PICO4でMRTKを使おうと思い、1ヶ月ほど試行錯誤してようやくできたので、その手法を書き記します。
MRTKを使うと、VRとARの切り替え、物を掴む・押すなどができるようになります。
↓参考動画

<iframe width="560" height="560" src="https://www.youtube.com/embed/QSF3oLW8LyQ?si=I39NOm7wNHUIV5jt" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe>

開発環境
・Unity 2022.3.9f1
・PICO Unity Integration SDK v2.3.0
・MRTK3-18
使用機材
・PICO 4


# 参考資料

・PicoでMRTKを使えるようにできるリポジトリ（Phantomさん）
[PicoMRTK3](https://github.com/Phantomxm2021/PicoMRTK3)
・みゃおんさんのzenn記事
[piko4](https://zenn.dev/myaon/scraps/872bf98c955479)
・afjkさんのQiita記事
[【Unity】Pico Neo 3/Pico 4 VRアプリ開発 (1) Pico SDK 2.3.0版](https://qiita.com/afjk/items/6b587034c9ff3afb9e5c)


# １．PICO4の設定

PICO4を開発者モードにしてapkをインストールできるようにしておきます。
方法はこちらの記事 ↓ を参考にして下さい。

https://qiita.com/mofurune/items/175df870c7cd9f2d8ba2

設定 > ラボ > ハンドトラッキングをオンにします。

<img width="600" alt="picomrtk02.jpg" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3518924/331664d6-5301-7275-7418-6effe1dd7c31.jpeg">

これでPICO4の設定は完了です。

<!-- 何故か過去ではなく最新のリポジトリでないと正常動作しなくなったので以下コメントアウト
# ２．GitHubでリポジトリをクローンする

次はGitHubの作業です。
ここでは、[PicoでMRTKを使えるようにできるリポジトリ](https://github.com/Phantomxm2021/PicoMRTK3)をクローンするのですが、最新のものは正常に動作しなかったので過去のコミットのクローンを行います。
私の環境と違う人もいると思いますが、やることは一緒なので適宜読み替えて下さい。

１．GitHub Desktopをインストールする
 [GitHub Desktop](https://desktop.github.com/)をダウンロードしてインストールします。

２．GitHub Desktopでクローン
 ・GitHub Desktopを起動し、左上の「File」メニューから「Clone Repository」を選択します。
 ・表示されるダイアログで、「URL」タブを選択します。
 ・[PICOMRTK3のリポジトリ](https://github.com/Phantomxm2021/PicoMRTK3)のURLを入力します。
 ・右下の青いCloneを押します。
 
 <img width="400" alt="picomrtk04.jpg" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3518924/f96e031f-e48e-0b1c-a62b-9f95902082a5.jpeg">

３．過去のコミットのハッシュを確認
 ・時計のようなマークを押すと今までのコミットが見れます。
 
 <img width="600" alt="picomrtk03.jpg" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3518924/c41f61d6-a5b1-dfd4-cad9-f9a114e4f551.jpeg">
 
 ・2023/9/5のコミットを使いたいので2つ重なる四角のアイコンを押します。すると過去の時点でのコミットのID（SHAやハッシュとも呼ぶ。~~シアーハートアタックの略ではない~~）がコピーされます。
 
 <img width="600" alt="picomrtk05.jpg" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3518924/4f249ccc-c9d1-96ff-55b8-4629a76a3463.jpeg">

 ３．過去のコミットをチェックアウト
 ・リポジトリがクローンされたら、左上の「Repository」メニューから「Show in Explorer」を選択して、リポジトリのディレクトリをエクスプローラで開きます。
 ・Git Bash Hereを行って（もしくはターミナル（コマンドプロンプトやPowerShell）を開いて）、「**git log**」 を実行し、過去のコミットのハッシュを確認します。
 ・ターミナルで、チェックアウトコマンドを使用して過去のコミットに移動します。\<commit-hash>は先程コピーしたハッシュに置き換えてください。
 ```:チェックアウトコマンド
 git checkout <commit-hash>
 ```

 ４．GitHub Desktopに変更を表示
 ・GitHub Desktopを開き、変更が表示されていることを確認します。変更が表示されない場合は、最新の変更を取得するために「Repository」メニューから「Fetch origin」を選択して取得します。

これで、GitHub Desktopを使用して過去のコミットのクローンは完了です。
-->

# ２．GitHubでリポジトリをクローンする

次はGitHubの作業です。
ここでは、[PicoでMRTKを使えるようにできるリポジトリ](https://github.com/Phantomxm2021/PicoMRTK3)をクローンします。
私の環境と違う人もいると思いますが、やることは一緒なので適宜読み替えて下さい。

１．GitHub Desktopをインストールする
 [GitHub Desktop](https://desktop.github.com/)をダウンロードしてインストールします。

２．GitHub Desktopでクローン
 ・GitHub Desktopを起動し、左上の「File」メニューから「Clone Repository」を選択します。
 ・表示されるダイアログで、「URL」タブを選択します。
 ・[PICOMRTK3のリポジトリ](https://github.com/Phantomxm2021/PicoMRTK3)のURLを入力します。
 ・右下の青い「Clone」を押します。
 
 <img width="400" alt="picomrtk04.jpg" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3518924/f96e031f-e48e-0b1c-a62b-9f95902082a5.jpeg">

これで、GitHub Desktopを使用してリポジトリのクローンは完了です。


# ３．Unityの設定

Unity Hubの「ディスクから加える」で先程クローンしたファルダを指定する。

<img width="600" alt="picomrtk06.jpg" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3518924/2b16e895-0cb1-b774-5272-7c87871e166f.jpeg">
 
加えられた「PicoMRTK3」プロジェクトをUnity 2022.3.9f1で開きます。
バージョンが違うと警告されますが、構わずContinueします。

Unityが起動したら、Build SettingsからプラットフォームをAndroidに変更します。

Asset > Scenes > SampleSceneを開きます。

<img width="600" alt="picomrtk10.jpg" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3518924/b4420fde-a3c7-301a-cdd4-9ca930406d51.jpeg">

Project Settingsの設定を行います。
・Project Settings > MRTK3のチェックを以下の通りにします。
　・HandsAggregatorSubsystem
　　・Pico MRTK Hands Aggregator Subsystemをオン
　　・MRTK Hands Aggregator Subsystemをオン
　・HandsSubsystem
　　・Subsystem for Pico Hands APIをオン

<img width="600" alt="picomrtk07.jpg" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3518924/602c1eba-d704-01be-bda8-bccabe67075d.jpeg">

・Project Settings > Player > Settings for Android > Other Settings > Script Compillationのリストに「PICO_INTALL」と「MRTK3_INSRALL」があることを確認します。

<img width="600" alt="picomrtk08.jpg" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3518924/518d56a4-c512-d01d-e94a-148dad265087.jpeg">

・Project Settings > XR Plug-in ManagementのPICOがオンになってることを確認します。

<img width="600" alt="picomrtk09.jpg" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3518924/62a88387-95f3-ebf0-c2ef-07a2194665f6.jpeg">

これでUnityの設定は完了です。
最後にビルドしてPICO4にapkをインストールして起動してみましょう。
（Build And Runができないときは、先にBuildしてからBuild And Runするとできました。仕組みはわかりません...）


# おわりに

PICO4で作りたい物があって、それにはMRTKが必要だけど公式対応してないじゃん！という事でどうにかして使う方法を調べました。
正常に動作する手法を見つけるまで1ヶ月ほどかかって、大変でした。
この記事が「PICO4でMRTKを使いたい」と思う誰かの役に立てればいいなと思います。

私は普段3DモデリングやUnityでXRアプリ開発、VRChat謎機能商品を作ったりしてます。
面白いものが作れたらツイッターでつぶやいたりしてるので気になる人は見に来てみてね～！

<blockquote class="twitter-tweet" data-media-max-width="560"><p lang="ja" dir="ltr">&gt;&gt;&gt; 吉良吉影になれるARアプリ &lt;&lt;&lt;<br><br>シアーハートアタックは手に乗って喋るぞ！<br>もちろん爆発もする。手の上で。<br><br>うっ！こ...このパワーッ！！💥うぐっ！！<a href="https://twitter.com/hashtag/AR?src=hash&amp;ref_src=twsrc%5Etfw">#AR</a> <a href="https://twitter.com/hashtag/XREAL?src=hash&amp;ref_src=twsrc%5Etfw">#XREAL</a> <a href="https://twitter.com/hashtag/JOJO?src=hash&amp;ref_src=twsrc%5Etfw">#JOJO</a> <a href="https://t.co/f4f6brXTNC">pic.twitter.com/f4f6brXTNC</a></p>&mdash; もふるね𓇶 (@mofurune_k) <a href="https://twitter.com/mofurune_k/status/1723716647876497884?ref_src=twsrc%5Etfw">November 12, 2023</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>