4
5

More than 1 year has passed since last update.

360度写真のブラウザでの表示(A-Frame)

Posted at

THETAや、Insta360、GoproMax等色々な360度カメラが普及しましたが、
数年前に、画像をWebに公開する際の技術選定をした結果を記録しておきます。
(新しいネタではありません。ご了承ください。)

<360写真が表示できるライブラリ>

その中でも、A-Frameを選定しました。
A-Frameをおすすめする理由は、

  • ライブラリで組み込めるので、外部依存しない。
  • オープンソースなのでランニングコストかからない。
  • HTMLベースで書ける(動きはJSで作るが・・・。)
  • 一つのソースで、PCブラウザ、スマホ、スマホVR、VRゴーグルすべてに対応する
  • 3D空間を作るイメージなので、3Dオブジェクトも扱える=VRやARにも使える。
    (3D空間で、床がなく、空に360度写真を貼り付けたイメージ。死角のないプラネタリウムのイメージ。)

一枚の360度写真を表示する例

<!DOCTYPE html>
<html>
<head>
	<meta charset="utf-8">
	<title>360° Image</title>
	<meta name="description" content="360° Image - A-Frame">
	<script src="https://aframe.io/releases/1.3.0/aframe.min.js"></script>
</head>
<body>
	<a-scene>
		<a-sky src="360度写真へのPath.jpg" rotation="0 -90 0"></a-sky>
	</a-scene>
</body>
</html>

(360度写真へのPath.jpgはご自身のファイルに合わせてください。)
これだけで360写真表示できます。(A-Frameはnpmでもインストール可能。)
表示されている写真は、平面に見えますが、マウスのドラッグで視線方向を360度自由に変更できます。
お使いの端末が、

  • スマホであれば、ドラッグ以外にも端末を傾けること(ジャイロセンサー)で、視線方向を変更できます。
    • 画面右下のVRボタンを押すと2眼VRモードになり、ハコスコ等の簡易VRゴーグルで見ることもできます。
  • Quest等のVRゴーグルであれば、ブラウザでこのWebページを開き、右下のVRボタンを押すと、VRゴーグルの歩行(頭の方向)で視線方向を変えることができます。

ソースコードを簡単に解説
<a-scene>でA-Frameの空間を定義
この内
<a-sky>今回は360度写真なので、空に360度写真を貼り付けます。

rotationは、X,Y,Z軸の初期回転です。
カメラ機種によって、正面方向が変わるので、Y軸を90度回したりして初期位置(正面)を調整します。
どんな角度で撮影しても、基本的にカメラ側で天頂補正(ジャイロ)が効いているので、
<a-sky>に関しては、Y軸角度の調整のみで大丈夫です。
3D空間なので、本当はカメラ位置、ライト位置等ありますが、360度写真なら自身が中心なので、デフォルトでも大丈夫です。

クラウドサービスを使うこと無く、簡単に360度写真を表示できるサイトを自作できました。

おまけ

360度写真に慣れる「360度写真の中に文字を埋め込めないのか?」となります。
簡単にできます。
sceneの中に<a-text>タグを入れるだけです。

<a-text font="kelsonsans" value="Hello 360" width="6" position="-2.5 2 -1.5"
rotation="0 15 0"></a-text>

ただ、3D空間なので、テキストを置く位置、距離、角度は重要です。

  • 位置はposition(XYZ)で指定、前方1.5m左方向2.5m高さ2mなら(-2.5,2,-1.5)

    • Z軸(奥行き方向) プラスは後ろ方向。マイナスは前方向。
    • X軸(横方向)プラスは右方向。マイナスは左方向。
    • Y軸(縦方向)プラスは上方向。マイナスは下方向。
  • 距離は、カメラから0距離(位置が、0,0,0)では見えないです。

  • 角度rotationは、文字やPNGの場合、視線と水平だとペラペラで見えません。
    (これはカメラ設定後、Look-at-me機能もあります。)

  • テキストは、現状英語フォントしか対応していないので、日本語を出すにはフォントを持参する必要があります。

  • ブラウザの平面で見ているうちは距離に違和感がないのですが、VRで左右視差(立体感)が有ると距離感が全然違って、調整に時間かかかることもあります。

360度写真を表示することができたので、
Web地図上にマーカーリンク等を作成し、iframe等で360度写真を表示すれば、GoogleStreetViewっぽい物を自作することも可能です。

4
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
5