bauhausify美大出身の
WEBエンジニアリング奮闘記
CODING

WebにおけるVRコンテンツ制作について

2019.10.09
WebにおけるVRコンテンツの正体とサンプルサイト、VRのJavaScriptライブラリを紹介します。

WebVRのサンプル集

まずは、手軽に体験できるWeb上のVR作品のリンクを紹介します。
※インタラクティブなコンテンツの場合はVRデバイスが必要です。

SueprMedium

SuperMeidumはMozillaの元エンジニアが作成したVRブラウザです。
OculusStoreやSteamStoreで無料でインストールできるVRアプリです。
URLを直に入力してサイトを試すこともできますが、あらかじめホーム画面に厳選されたサイトが並んでおり、クリックすると実行できます。
コンテンツをやめたい場合は、右コントローラーのスティックを下方向にしばらく押し込むとホームに戻れます。

WebVR Direcctory

WebVR Directoryというサイトでは、様々なVRサイトが一覧で表示されます。私は、Oculus RiftでバーチャルデスクトップごしのFirefoxからアクセスしました。各ページへ移動し、CardoboardアイコンをクリックするとVRモードに切り替わります。
コンテンツによっては終了ボタンがないので、Oculusボタンを長押しして無理やり起動中のアプリを終了することで抜け出すことができました。
SuperMediumから見れるようですが、URLを入力してもなかなか表示されなかったので断念しました。

VRコンテンツの正体

コンテンツ制作の前にVRの正体について話しておきます。 VRコンテンツとは以下の特徴を持ったコンテンツのことを言います。

  • 左右それぞれの目線の画面を描画し、1つの立体感のある映像にみせる
  • VRデバイスのセンサー値を検出できること

VirtualReality(仮想現実)というと大げさに聞こえますが、その実態は、左右の目それぞれからみた視点の異なる映像をVRデバイスに出力しているだけです。
2つの映像を脳が処理し一つの映像のように見せることで遠近感、立体感が増します。

そして、顔の傾き体の動き、手や指の動作をセンサーが検知し、体を動かせば視点が変わり、腕を振れば映像の中のモデルも腕をふるようにつくることで、あたかも仮想現実の中にいるように錯覚します。

リアルタイムで3Dコンテンツを処理するデバイスの能力、自分と周囲の状況を把握するセンサーの技術の発達により、近年どんどん没入感がますようになってきています。
今後はより解像度や、デバイスの小型化が進み、発達していく分野でしょう。

WebにおけるVRコンテンツの制作について

WebでVRコンテンツを作る簡単な方法はライブラリを使用することです。
ライブラリが前項の2画面出力やデバイス情報の取得を補ってくれて、製作者は3D空間上のコンテンツ制作にのみ集中することができます。

  • Three.jsを使い3Dコンテンツを作成しVR対応させる
  • VRに特化したA-Frameを使いより簡単に制作する

Three.js(Gihubスター数55156)の対抗馬としてBablylon.js(スター数10212)が、A-Frame(スター数10542)にはReact 360(7576)があります。
2019年10月現在では、Githubのスター数や実績の多さからみて、Three.js、A-Frameが代表的なライブラリと言えるでしょう。

Three.js

Three.jsはそのままではVR対応できませんが、たった数行で対応することができます。
やり方は、公式サイトのVRページにかかれています。
こちらの方がカスタマイズ性や自由度が高そうですが、3Dの基礎を理解していないと敷居が高いかと思います。
ライト、ジオメトリ、マテリアル、メッシュ、カメラ、マッピング、このあたりのワードが理解できる方は簡単に始めれるでしょう。

A-Frame

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としてみても、非常にわかりやすくとても使いやすそうです。
面白そうなので、次回記事にしたいと思います。

この記事を共有しよう!

前の記事
VRの雑感とWebエンジニアリング目線のVR
関連記事
目次

エムロート [Mwrote]

多摩美術大学
プロダクトデザイン専攻卒業 ->
GUIデザイン会社勤務 ->
現在フロントエンジニア

My site ->
www.mwrote.com