Cesium の VR モード
【概要】
Cesium は、3次元の地図を Web ブラウザで表示するための JavaScript ライブラリである。CesiumJS には VR モードがあり、画面を左右 2 つのビューポートに分割して立体視表示を行う。ここでは、VR モードの切り替えボタンを表示する手順を示す。
【目次】
【関連する外部ページ】
- VRButton(CesiumJS リファレンス): https://cesium.com/learn/cesiumjs/ref-doc/VRButton.html
- workingDog/webvrtest(旧 WebVR API を用いた実装例): https://github.com/workingDog/webvrtest
【サイト内の関連情報】
- 3次元地図システム Cesiumについて
前準備
Cesium の準備
- Cesium を使ってみる の Web ページを参考に、Cesium の準備が終わっていること
Web ブラウザの準備
- VR モードの左右 2 画面表示は、WebGL が動く Web ブラウザであれば確認できる
- VR ヘッドセットと連動させる場合は、WebXR に対応した Web ブラウザ(Chrome、Edge など)を使う
- Firefox(デスクトップ版)は WebXR を既定で無効にしている。使う場合は、アドレスバーに
about:configと入力し、dom.vr.webxr.enabledを true に設定する
VR ボタンを表示する HTML ファイルの作成
Cesium サーバの Apps/HelloWorld.html を Apps/HelloWorldVR.html にコピーし、Apps/HelloWorldVR.html を次のように書き換える。your_access_token の部分は、取得した Cesium ion のアクセストークンに置き換える(https://ion.cesium.com/tokens)。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Hello World!</title>
<script src="../Build/Cesium/Cesium.js"></script>
<style>
@import url(../Build/Cesium/Widgets/widgets.css);
html, body, #cesiumContainer {
width: 100%; height: 100%; margin: 0; padding: 0; overflow: hidden;
}
</style>
</head>
<body>
<div id="cesiumContainer"></div>
<script>
Cesium.Ion.defaultAccessToken = 'your_access_token';
const viewer = new Cesium.Viewer('cesiumContainer', {
vrButton: true,
terrain: Cesium.Terrain.fromWorldTerrain()
});
</script>
</body>
</html>
vrButton: true は、VR モードの切り替えボタン(VRButton ウィジェット)を作成するオプションである。プログラムから切り替える場合は viewer.scene.useWebVR に true を設定する。左右の目の間隔は viewer.scene.eyeSeparation、焦点距離は viewer.scene.focalLength で調整できる。
VR モードで地図を見る
- Cesium サーバを起動し、Web ブラウザで次の URL を開く
http://localhost:8080/Apps/HelloWorldVR.html
- 画面右下の VR 切り替えボタン(めがねの形のボタン)をクリックすると、全画面表示に切り替わり、左右 2 画面の立体視表示になる
- 元に戻すときは Esc キーを押す