htmlを書くだけ!WebAR

バジル
2019-10-24
バジル
2019-10-24

ARって何?

Augmented Realityの略。
日本語で「拡張現実感」
日本語で書くと余計わからなくなりますね・・・。
glass_computer2.png
要は現実空間に、カメラを通してなにかを「付加」する技術です。
みなさんがご存知なものでいうと
ドラゴンボールのスカウターとかそんな感じですね。

まぁ、アレは戦闘力という文字しか付加されませんが、
今のARというと動画とか、3Dのキャラクターが表示される、
なんかが主流です。

ARの普及

smartphone_nekorogaru_woman.png
この10年でスマートフォンが急速に普及し、
また性能も爆上げされたおかげで、
誰でも簡単にARを体験できるようになりました。

ARの開発

ARの開発についても、以前と比べると簡単になりましたが、
基礎知識を持っている人が少ないので、難しく見えがちです。
ですが、よほど凝ったものでなければ、簡単に実現できるのです。

study_wakaranai_boy.png

これから、そんな簡単なものの実現について
進めて行きたいとおもいます。

環境を作ろう

何を勉強するにも環境構築がつきもので、
ここが面倒だったり躓いたりすることがあるかと思います。

fc5b18e3-2608-411a-9fb0-ee37a002ac62.png

でもご安心ください!

こちらのサイトを使えば、htmlとjavascriptだけなら
環境を作らなくても大丈夫なんです。

pose_anshin_girl.png

https://glitch.com

右上のsign inから登録するだけです。

signin.png

A-Frame

今回、ARを学ぶにあたってA-Frameを使用します。
特徴としては「HTMLタグを書くだけで3Dオブジェクトを配置できる」
ということです。

早速ページにアクセスしてみましょう。
https://aframe.io/

プロジェクトを作成する

ではaframeのページを開き、「GET STARTED」をクリックします。
getstart.png

次に、Glitch上にプロジェクトを自動で作成できるので、こちらをクリックします。

create_glitch.png

ページが開いたら、「Remix Your Own」をクリックします。

remix.png

これでGlitch上にプロジェクトが作成され、編集する準備ができました。

編集してコードを書いてみよう

では早速ソースを触っていきましょう。
index.htmlが今回触るソースコードです。

index.png

このページの内容を確認したい場合は、
左上の「show」をクリックするとページを確認することができます。

今回は、球体と背景だけを使うので、下記のソースは削除してしまいます。
```
<a-box position="-1 0.5 -3" rotation="0 45 0" color="#4CC3D9" shadow></a-box>
<a-cylinder position="1 0.75 -3" radius="0.5" height="1.5" color="#FFC65D" shadow></a-cylinder>
<a-plane position="0 0 -4" rotation="-90 0 0" width="4" height="4" color="#7BC8A4" shadow></a-plane>
```
そして、代わりに背景を追加しましょう。
背景はa-skyのタグになります。
```
<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title>Hello, WebVR! • A-Frame</title>
    <meta name="description" content="Hello, WebVR! • A-Frame">
    <script src="https://aframe.io/releases/0.9.2/aframe.min.js"></script>
  </head>
  <body>
    <a-scene background="color: #FAFAFA">
      <a-sphere position="0 1.25 -5" radius="1.25" color="#EF2D5E" shadow></a-sphere>
      <a-sky color="#ECECEC"></a-sky>
    </a-scene>
  </body>
</html>
```
これで球体を指定するsphereと背景を指定しているskyだけが残りました。

テクスチャを貼って回転させよう

次にテクスチャを貼ってみます。
assetsからファイルをアップロードします。

upload_earth.png

アップロードしたファイルのURLコピーします

earth_copy.png

それをa-sphreタグ内のcolorを削除し、代わりにsrcで指定します。
```
<a-sphere
  position="0 1.25 -5"
  radius="1.25"
  src="https://cdn.glitch.com/f1432045-b246-46c1-a562-f07b21784e53%2Fearth.jpg?v=1571897568427"
  shadow
></a-sphere>
```

これで球体に地球のテクスチャがはられました。
テクスチャは好きなものを貼り付けて問題ありません。

では、次に地球を回転させてみます。
```
<a-sphere
  animation="property: rotation; from: 0 0 0; to: 0 360 0; dur:10000; loop: true; easing: linear;"
  position="0 1.25 -5"
  radius="1.25"
  src="https://cdn.glitch.com/f1432045-b246-46c1-a562-f07b21784e53%2Fearth.jpg?v=1571897568427"
  shadow
></a-sphere>
```
animationで指定したところがanimationの内容です。

propertyでどんなanimationか指定します。
今回はrotation = 回転です。

どう回転させるのかをfrom、toで指定します。
座標(0, 0, 0)から(0, 360, 0)まで回転させます。

durでどれくらいの時間をかけて回転させるかを指定します。
loopで何度も回転させるかどうかを指定します。
最後にeasingで速度の変化を指定します。

他にも色々あるので、気になる方はこちらを参照してください。

https://aframe.io/docs/0.9.0/components/animation.html

次に背景をつけてやります。
こちらはskyにテクスチャを貼ることになります。

先ほどと同じ様に、a-skyのタグのcolorを削除して、
src=""でURLを指定してあげます。

```
<a-sky src="https://cdn.glitch.com/f1432045-b246-46c1-a562-f07b21784e53%2Fspace.jpg?v=1571898513741"></a-sky>
```

これで宇宙で地球が自転している物を作成することができました。

earth_in_space.png

次回はマーカーを使ったARを進めていきます。