声を出さずともARで「尊い…！」を可視化！

2023/11/15追記）コードが一部古くなっていたので修正

https://twitter.com/nnmshita/status/1469646226526474243

# 「尊い…！」と叫びたい！けど叫べない！
人生では推しを目の前にすると感極まって「尊い…！」と叫びたくなる瞬間がある。
けれど現実に叫ぶのは難しい。なんなら文字で叫びたい。そう思い、ARアプリを作った。

# 尊いAR

https://competent-carson-dd3921.netlify.app/

**＜使い方＞**

1.　アプリを起動
2.　hiroマーカーを映す
3.　**「「「「「　尊い！！！　」」」」」**

# コード
```html:HTML
<script src="https://cdnjs.cloudflare.com/ajax/libs/aframe/1.2.0/aframe.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/ar.js/2.2.2/aframe-ar.min.js"></script>
<body style="margin : 0px; overflow: hidden;">
  <a-scene embedded arjs>
    <!-- hiroマーカーが認識されたら -->
    <a-marker preset="hiro">
      <!-- 「尊い…！」を表示します -->
       <a-entity
          position="0 1 -2"
          scale="5 5 5"
          gltf-model="https://cors-anywhere.herokuapp.com/[作成した3Dモデルのリンク]">       
      </a-entity>

    </a-marker>
    <a-entity camera></a-entity>
  </a-scene>
</body>
```



## 画像の表示
```HTML
<a-marker preset="hiro">
   <!-- 「尊い…！」を表示します -->
   <a-entity
      position="0 1 -2"
      scale="5 5 5"
      gltf-model="https://cors-anywhere.herokuapp.com/[作成した3Dモデルのリンク]">
   </a-entity>
</a-marker>
```
`position="0 1 -2"`　ARで表示させる画像の位置を指定したい場合、数字を変更させる。
`scale="5 5 5"`　ARで表示させる画像の大きくしたい場合、数字を変更させる。


# 3Dモデルを作る
**●ペイント3D**
Windows標準ソフトのペイント3Dを起動。
参考記事は[こちら](https://qiita.com/yamad365/items/49a365646b7d0a9a6512)。

## 吹き出しを描く
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2122226/ad5413e5-136a-e8fa-e496-7c7870209fe8.png)
**「ブラシ」を選択。**
漫画とかでよく見かける心理描写の時の吹き出し、ウニフラッシュを適当に描く。ARにしたときにごまかせるので、雑で問題なし。真ん中の余白は、白で塗りつぶす。

## 文字を入れる
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2122226/ac5e9ef3-713d-2cab-a209-b1630fda7d77.png)
**「テキスト」を選択。**
文字を入力。右のテキスト項目（2Dか3D）を選択して、表示させたい文字を入力する。
ここを選択しないと、文字が入力できないがテキストボックスを閉じると選択解除されるので、**都度選択する必要がある。**
横書きしか入力できないので、縦書きにしたい場合は一文字ずつ入力して縦書き風に配置する。
三点リーダー「…」は横に並んでしまうので、テキストボックス上部に出る:arrows_counterclockwise:マークを選択して文字を回転させる。
今回は漫画っぽさを出したかったので、**漢字をゴシック体、ひらがなを明朝体にした。**

## 透過設定をする
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2122226/4c37f21b-d1d7-6ed2-498a-022094d1d25b.png)
**「キャンバス」を選択。**
「透明なキャンパス」をオンにする。オンにしないと、白背景の四角が表示されてしまうので、**描いたものだけを表示させたい場合は必ずオンにすること。**

## 画像を回転させる
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2122226/2509d873-0cd7-c051-6980-b079832c3da3.png)
**「選択」から、描いた画像を選択。**
右の:arrows_counterclockwise:を選択して、ARマーカーに対して表示したい角度に設定する。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2122226/d88919f6-8a88-1381-2b54-c5cd47861f1e.png)
回転させた画像を確認したい場合は、「3D表示」から確認する。
尊いARはマーカーを置いて使う想定なので、斜め上からマーカーを読み取った場合にいい感じに文字が読めるように角度を付けて設定。（適当）

## 保存する
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2122226/65048b02-beb0-3372-46ac-85949c05952e.png)
ショートカット[ctrl]+[s]を押す。
保存形式が表示されるので、「3Dモデル」を選択。
ファイルの種類が、`3D-GLB(*.glb)`であることを確認して保存する。

# 3Dモデルをアップロードする
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2122226/4f9cccb3-086b-0db5-acd4-b9e3016bfc40.png)
[Firebase](https://console.firebase.google.com/)にログインし、storageを選択。
「&#x2b06;ファイルをアップロード」から、先ほど作成したファイルを選択してアップロードする。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2122226/983b39ca-6889-8a83-b45a-34fb8177ad97.png)
アップロードが完了したら、Firebase上でファイルを選択。
右に表示された名前を右クリックして、「リンクのコピー」を選択。
コピーしたURLをコード内の、`[作成した3Dモデルのリンク]`の部分に張り付けて、完了。

# まとめ
漫画っぽさを残したかったので、立体感のないモデルを3Dで作った。
めちゃめちゃ楽しい。
10分くらいで手軽にARを作れたので、楽しすぎてずっとARアプリを作ってしまう。無限に遊べる。