オリジナルマーカーを作った自分を褒めてくれるWebアプリ

作品を覚えてもらいたい
-----------
10月からモノづくり制作を始めQiitaなどのSNSで発信し始めたが、予想より多くの人に読んでいただいている。せっかくなら自分のサイン的なものを作りより印象に残ったらいいなと思った。そこで自分のオリジナルロゴを作りマーカーとして使いARを映しだしたい。

完成品
---------------
画像ロードに時間がかかってしまい、なかなか映し出されないかもしれない。

https://shiny-youtiao-22148d.netlify.app/

完成一歩前の作品がこちら

https://twitter.com/Chanmina_IT/status/1591975120406732800

オリジナルロゴの作成
-------------
今後の制作のためにも自分のロゴがあったほうが分かりやすいと思ったので、[shopifyの無料ロゴメーカー](https://www.shopify.com/jp/tools/logo-maker)を使って作ってみることにした。テンプレートが豊富で5分程度で作ることができた。
![pinterest_profile_image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2885188/997e4c55-594b-351a-34f1-e09eed55f45f.png)

オリジナルロゴをマーカーとして認識させる
---------------------------

出来上がったロゴを読み込むと3Dで励ましの文字が出てくるようにしたい。


この**単純そうな作業にまさか手こずる**とは、、、
<details><summary>参考にするソースコードはこちら</summary>

```html
<head>
  <!-- ① スクリプトの読み込み -->
  <script src="https://aframe.io/releases/0.8.2/aframe.min.js"></script>
  <script src="https://cdn.rawgit.com/jeromeetienne/AR.js/1.6.2/aframe/build/aframe-ar.js"></script>
</head>
<body style='margin: 0; overflow: hidden;'>

<!-- シーンの追加とデバックUIを非表示 -->
<a-scene embedded arjs="debugUIEnabled:false;">

  <!-- 作成したマーカーでのソース -->
  <a-marker type='pattern' url='./marker/pattern-marker.patt'>
    <a-sphere scale=".25 .25 .25" position="0 .5 0" color="#f00">
      <a-animation attribute="position" to="0 1 0" direction="alternate" dur="2000" repeat="indefinite">
      </a-animation>
    </a-sphere>
  </a-marker>


  <a-entity camera></a-entity>
</a-scene>
</body>
</html>
```
</details>

https://liginc.co.jp/457071

この記事を参考に進めていくと
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2885188/5af9073e-0ebd-d3dd-129d-7ce984450d6d.png)

となり、オリジナルマーカーを読み取るとARの物体が表示されるはずだった。しかし**問題発生**！！

```html
 <!-- 作成したマーカーでのソース -->
  <a-marker type='pattern' url='./marker/pattern-marker.patt'>
```

と設定すれば完成しオリジナルマーカーの上にAR図形が表示されるはずだった。

しかしこのコードだけではAR.jsで入手した.pattの画像を読み取ってくれないのだ。**セキュリティーの関係上画像のデータをローカルで保存しているとCORSのエラー**が出てしまう。

> **クロスオリジンリソース共有 (CORS) エラー**は、サーバーが CORS 標準で要求される HTTP ヘッダーを返さない場合に発生します。API Gateway REST API または HTTP API からの CORS エラーを解決するには、CORS 標準を満たすように API を再構成する必要があります。AWS記事より引用。

https://aws.amazon.com/jp/premiumsupport/knowledge-center/api-gateway-cors-errors/#:~:text=%E3%82%AF%E3%83%AD%E3%82%B9%E3%82%AA%E3%83%AA%E3%82%B8%E3%83%B3%E3%83%AA%E3%82%BD%E3%83%BC%E3%82%B9%E5%85%B1%E6%9C%89%20(CORS,%E6%A7%8B%E6%88%90%E3%81%99%E3%82%8B%E5%BF%85%E8%A6%81%E3%81%8C%E3%81%82%E3%82%8A%E3%81%BE%E3%81%99%E3%80%82


そこで図の通りにファイルを作成し[Netlify](https://www.netlify.com/)で**サーバ上にアップロード**することでCORSのエラーを回避し読み取ってもらえるような仕組みにした。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2885188/841173a4-393d-facf-96db-38fb79fa1d68.png)

途中までだが完成したのがこちら！

https://twitter.com/Chanmina_IT/status/1591975120406732800


褒めてくれる3D文字の挿入
-----------------------------
オリジナルのマーカーを読み取ってARが表示されるようになったので、3Dの図形を今度は変えていきたい。

今回はデフォルトでパソコンに入っていたペイント3Dを使って3D文字を作っていきたい。
3D図形を選択して文字を入力するだけで3Dに仕上がった。（3秒でできた）

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2885188/7c41c2f5-2fb0-5fde-d78b-dc381b2482f3.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2885188/c372cc12-51ad-0dc9-ae56-ca7f0a70fd5f.png)


3D文字を先ほどの球体の代わりに映し出したい。コードでいうとこの部分を書き換える。

```html
<a-sphere scale=".25 .25 .25" position="0 .5 0" color="#f00">
      <a-animation attribute="position" to="0 1 0" direction="alternate" dur="2000" repeat="indefinite">
      </a-animation>
    </a-sphere>
```

この部分を全部消して
```html
<a-entity
    position="0 0 0"
    scale="0.05 0.05 0.05"
    gltf-model="https://arjs-cors-proxy.herokuapp.com/[この部分をモデルアップロード直リンクと置き換え]"
></a-entity>
```
代わりにこのコードを入力する。
3D文字を[Media Uploader - 無料アップローダー](https://media-uploader.work/)を使ってアップロードし、そこで得た直リンクを[カッコ内の文字と置き換える]。

これで完成！のはずが、、、

うまくARが映らない。

聞いた話によるとAR画像を読み込むのに結構な時間が必要だとか、、、
~~3時間待ってた強者もいるとかいないとか~~
そこで**永久読み込み待ち装置**を作って待ってみることに。
![IMG_3086 (2).jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2885188/fc270da6-d3be-d87d-3572-dfab6f48897d.jpeg)

40分待っても何も表示されず、、、
コードの確認もしてもらったが手順も何も間違えていない。


**完成図イメージ**
--------------------

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2885188/8937e1ef-cc2f-38f0-94be-cc1cd0f48cc5.png)

過去イチしんどさと成果物が釣り合ってないモノ
------------------------
ここまで読んでいただいた方は、なんとなくちゃんみなという人物が頑張ってWeb制作を行っていると思ってもらえたら幸せだ。

本当は自分の応援するサッカーチームが得点を決めた際に**ARで得点を決めた選手のセレブレーションを写し出したかった**が試みるまでもなく挫折した。

そこで次は以前から覚えてもらいやすくなると思い**自分のロゴ**や**プロ画**を作りたいと思っておりそれをマーカーにAR技術を使いたいと思った。

参考にした記事が**昔の記事**が多かったからか、記事通りにやっても上手くいかずにエラーが出ることが多かった。
結果としてマーカーと3D図形を変更するだけの一見単純な作業に想像以上に手こずってしまい技術と労力の限界でここまでの作品になった。だが最低限のやりたいことはできた。