ガンプラの世界に没入したかった！AR.jsでコックピット視点カメラのプロトタイプを作成

##30代男子。ガンプラで遊んでます！
最近、自分の部屋ができたこともあり、久しぶりにガンプラを作っています。
作ったガンプラは部屋に飾ったり写真を撮ったりしているのですが、ガンプラ自体のクオリティが昔より上がっていたり、スマホのカメラ自体もすごく高性能になっていることで、簡単にカッコイイ写真が撮れるのでテンション上がります。
（バンダイ様のおかげです。私のようなパチ組専門でもすごくカッコイイです。）

実は今度クラファンにブンドド※用のカメラデバイスを出そうとしているのですが、最近AR.jsなるもので手軽にWebでARアプリができることを知ったので、これを使って超プロトタイプ的にブンドドを更に楽しくするARアプリを作ってみました。

※ブンドドっていうのはプラモデルやフィギュアを使ってやる所謂「ごっこ遊び」的なものです。

##コックピット視点でブンドドしたいなーということで
作ってみました。
仕組みは単純でカメラ映像にAR.jsでコックピットの3Dモデルを重ねただけです。

↓ここから遊べます。

https://condescending-dubinsky-4e7646.netlify.app/

<blockquote class="twitter-tweet"><p lang="ja" dir="ltr">先日WEBアプリでもARできるって知ったんで、コックピット視点でガンプラ眺めるアプリ作ってみた。<br>（スクショも撮れるよ。）<br>コックピット作りこんだり、カメラをリモートにしたりできると面白くなるかな。<a href="https://twitter.com/hashtag/%E3%82%AC%E3%83%B3%E3%83%97%E3%83%A9?src=hash&amp;ref_src=twsrc%5Etfw">#ガンプラ</a><a href="https://twitter.com/hashtag/%E6%8B%A1%E5%BC%B5%E7%8F%BE%E5%AE%9F?src=hash&amp;ref_src=twsrc%5Etfw">#拡張現実</a> <a href="https://t.co/BCEgMROtDc">pic.twitter.com/BCEgMROtDc</a></p>&mdash; shoito66 (@shoito66) <a href="https://twitter.com/shoito66/status/1403649201276293124?ref_src=twsrc%5Etfw">June 12, 2021</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script> 

動画はスマホで撮ったもので、PCで見るとこんな感じ。
（Webカメラのピントが上手く合わず・・・）
![selfie (8).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1264471/752f7e3d-eb84-0f31-d2d5-9c6ced3cae16.png)

##仕組みと作り方
今回のアプリは冒頭でも触れている通り、AR.jsというライブラリを活用したWebアプリケーションになっています。
PCやスマホのカメラで移した映像にAR.jsでコックピットの3Dモデルを重ねて表示しています。

↓イメージ的にはこんな感じ
![Qiita挿入用.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1264471/95b45f4b-eafc-1729-ebbb-bd6abe3b1311.jpeg)

###3Dモデルの準備
コックピットの3Dモデルはこちらのサイトで無料のものをダウンロードして使用しました。

https://www.cgtrader.com/ja

少しブレンダーで弄りました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1264471/b383d6e5-2e72-4ca6-984f-9c61bfd68d80.png)

ブレンダーで書き出したモデルをAR.jsで使用する方法は以下の記事にまとめてあります。

https://qiita.com/shoito66/items/770df5b0928d9eecfe53

###Webアプリケーションの作成
今回作成したアプリケーションのコードはこちらです。

<p class="codepen" data-height="265" data-theme-id="light" data-default-tab="js,result" data-user="shoito66" data-slug-hash="oNZPYRW" style="height: 265px; box-sizing: border-box; display: flex; align-items: center; justify-content: center; border: 2px solid; margin: 1em 0; padding: 1em;" data-pen-title="コックピット視点を楽しもう！">
  <span>See the Pen <a href="https://codepen.io/shoito66/pen/oNZPYRW">
  コックピット視点を楽しもう！</a> by shoito66 (<a href="https://codepen.io/shoito66">@shoito66</a>)
  on <a href="https://codepen.io">CodePen</a>.</span>
</p>
<script async src="https://cpwebassets.codepen.io/assets/embed/ei.js"></script>

スタイルやスクリプトにも色々書いてありますが、これはスクリーンショットを取ったり保存したりする部分ですので、ARについてはHTMLだけで完結しています。

スクリーンショットを取る部分はこちらの記事を参考にさせていただきました。

https://qiita.com/fumix/items/7b3372688514c233068d

##周りの人に使ってもらってみた
今回はクラファンに向けたプロトタイプという意味も強いので、折角ならと身近な人に使ってもらいました。
使ってもらった相手は私の奥さん。

頼む前は勝手に以下の様な想像をしていました。
・ガンダムはあまり知らないからこれを使ってブンドドの世界が楽しくなるかはあまり気にしなさそう
・エンジニアなので、起動時間やスクショ部分の使い勝手等についての意見ならもらえるかな

とか思っていたら、実際に使ってもらって返ってきたフィードバックは以下のようなものでした。

**曰く「コックピットに3D感が薄いので視点に合わせてコックピットの中が見えたりすると良い」**
**曰く「コックピットからの眺めってこんなにクリアなの？もっと薄暗かったりしないの？」**
**曰く「このままだとプリクラのフレームと変わらんな」**

はい。ガッツリ本質を突いてきてくれました。
ガンダムを知らない奥さんからしてもこれでは**コックピットに居る気分は味わえない**ようです。
プロダクトの本質に関わる部分なので、ここは早急に改善していかなければ！

とりあえず、今回の改善案としては3つほど
**①コックピットの3D感を高める　
  ⇒　Blender使ってもっとリアルなコックピットを作る**
**②コックピット内で視点を動かせるようにする　
  ⇒　マウスや画面タッチで3Dモデルの確度が変わるようにすればできるか**
**③コックピットからの景色をリアルに　
  ⇒　コックピットの窓部分に半透明のオブジェクトを置く**

今後も色んな人からフィードバックをもらいながら自分の作りたいものに近づけていけたら良いなと思っています。