まずは、手軽に体験できるWeb上のVR作品のリンクを紹介します。
※インタラクティブなコンテンツの場合はVRデバイスが必要です。
SuperMeidumはMozillaの元エンジニアが作成したVRブラウザです。
OculusStoreやSteamStoreで無料でインストールできるVRアプリです。
URLを直に入力してサイトを試すこともできますが、あらかじめホーム画面に厳選されたサイトが並んでおり、クリックすると実行できます。
コンテンツをやめたい場合は、右コントローラーのスティックを下方向にしばらく押し込むとホームに戻れます。
WebVR Directoryというサイトでは、様々なVRサイトが一覧で表示されます。私は、Oculus RiftでバーチャルデスクトップごしのFirefoxからアクセスしました。各ページへ移動し、CardoboardアイコンをクリックするとVRモードに切り替わります。
コンテンツによっては終了ボタンがないので、Oculusボタンを長押しして無理やり起動中のアプリを終了することで抜け出すことができました。
SuperMediumから見れるようですが、URLを入力してもなかなか表示されなかったので断念しました。
コンテンツ制作の前にVRの正体について話しておきます。 VRコンテンツとは以下の特徴を持ったコンテンツのことを言います。
VirtualReality(仮想現実)というと大げさに聞こえますが、その実態は、左右の目それぞれからみた視点の異なる映像をVRデバイスに出力しているだけです。
2つの映像を脳が処理し一つの映像のように見せることで遠近感、立体感が増します。
そして、顔の傾き体の動き、手や指の動作をセンサーが検知し、体を動かせば視点が変わり、腕を振れば映像の中のモデルも腕をふるようにつくることで、あたかも仮想現実の中にいるように錯覚します。
リアルタイムで3Dコンテンツを処理するデバイスの能力、自分と周囲の状況を把握するセンサーの技術の発達により、近年どんどん没入感がますようになってきています。
今後はより解像度や、デバイスの小型化が進み、発達していく分野でしょう。
WebでVRコンテンツを作る簡単な方法はライブラリを使用することです。
ライブラリが前項の2画面出力やデバイス情報の取得を補ってくれて、製作者は3D空間上のコンテンツ制作にのみ集中することができます。
Three.js(Gihubスター数55156)の対抗馬としてBablylon.js(スター数10212)が、A-Frame(スター数10542)にはReact 360(7576)があります。
2019年10月現在では、Githubのスター数や実績の多さからみて、Three.js、A-Frameが代表的なライブラリと言えるでしょう。
Three.jsはそのままではVR対応できませんが、たった数行で対応することができます。
やり方は、公式サイトのVRページにかかれています。
こちらの方がカスタマイズ性や自由度が高そうですが、3Dの基礎を理解していないと敷居が高いかと思います。
ライト、ジオメトリ、マテリアル、メッシュ、カメラ、マッピング、このあたりのワードが理解できる方は簡単に始めれるでしょう。
redditのWebVRに関する質問でもどのフレームワークがいいか質問が上がっていますね、A-Frameに軍配が人気のようです(MozillaのVRチームもGoogleのA-Frame使っているそうです)。
まだ、さらっとドキュメントを見ただけですが、Introductionのページに以下のHTMLがあります。
<html>
<head>
<script src="https://aframe.io/releases/0.9.2/aframe.min.js"></script>
</head>
<body>
<a-scene>
<a-box position="-1 0.5 -3" rotation="0 45 0" color="#4CC3D9"></a-box>
<a-sphere position="0 1.25 -5" radius="1.25" color="#EF2D5E"></a-sphere>
<a-cylinder position="1 0.75 -3" radius="0.5" height="1.5" color="#FFC65D"></a-cylinder>
<a-plane position="0 0 -4" rotation="-90 0 0" width="4" height="4" color="#7BC8A4"></a-plane>
<a-sky color="#ECECEC"></a-sky>
</a-scene>
</body>
</html>
HTMLとしてみても、非常にわかりやすくとても使いやすそうです。
面白そうなので、次回記事にしたいと思います。