Qiita投稿初心者です。よろしくお願いいたします。
前書き
Google Mapの3Dマップを眺めて
「この3DデータダウンロードしてVRで散策したいなー」
と思ったものの、Google Mapからは3Dデータを取り出せないようなので、代替案を探したところ、OpenStreetMapにたどり着いた次第です。
そして、htmlを数行書くだけでWebVRを構築できるステキなA-Frameを使ってVR空間を作ります。
前提環境
- OS:Windows 10
- Webブラウザ:FireFox 55以降 記事中では78.0.2を使用
- Blender:2.8X 記事中では2.83.2を使用
1. OpenStreetMapから3Dマップデータを取得
https://www.openstreetmap.org/ にアクセスして出力したい範囲を表示後、エクスポートでosmファイルをダウンロードします。
ドラッグして別の領域を選択
から領域を選択することも可能です。
2. 3Dマップデータのファイルフォーマット変換
OpenStreetMapの3Dマップデータであるosmファイルは A-Frame
で読み込むことができないため、読み込めるファイルフォーマット、 glTF
もしくは OBJ
へ変換する必要があります。
ここでは、Blenderとそのアドオンを用いて、 glTF
へ変換します。
2.1. Blenderに3Dマップデータを読み込むためのアドオンをインストール
https://gumroad.com/l/blender-osm へアクセスし、アドオンblender-osm
をダウンロードします。価格は$0から入力できます。お好きな価格を設定ください。
インストールはzipを解凍せずBlenderのアドオンインストール機能で可能です。
注意点は、 Testing
のタブではなく Community
のタブの中に入っていることですね。
詳細な手順はこちらの Installation
の項目を参照:blender-osmのドキュメント
2.2. Blenderで3Dマップデータを読み込み
まずはデフォルトで表示される立方体を無慈悲に X
からの D
のショートカットで削除。
N
で右側のメニューを開くと縦のタブに osm
が見えるので、そこからosmファイルを読み込みます。
詳細な手順はこちらの OpenStreetMap import from a local file
の項目を参照:blender-osmのドキュメント
2.3. Blenderから3DマップデータをglTFファイルとして出力
glTF
ファイルの出力アドオンはBlenderに標準搭載されているため、追加アドオンなしで出力できます。
3. A-Frameで3Dマップデータを取り込み
A-Frameで3Dマップデータを取り込みます。
3.1. htmlコード
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Hello, VR Tokyo Station!</title>
<!-- aframe-extras requires 0.9.X aframe -->
<script src="https://aframe.io/releases/0.9.2/aframe.min.js"></script>
<!-- https://github.com/donmccurdy/aframe-extras -->
<script src="https://cdn.jsdelivr.net/gh/donmccurdy/aframe-extras@v6.1.0/dist/aframe-extras.min.js"></script>
</head>
<body>
<a-scene background="color: #EEEEEE">
<a-assets>
<a-asset-item id="map" src="models/map.glb"></a-asset-item>
</a-assets>
<!-- light -->
<a-light color="#FFEEEE" position="-1 1 0"></a-light>
<!-- objects -->
<a-entity id="map"
position="0 0 0"
rotation="0 0 0"
gltf-model="models/map.glb"
scale="1 1 1"
shadow="">
</a-entity>
<!-- movement control -->
<a-entity id="rig"
movement-controls
position="0 0 0">
<a-entity camera
position="0 1.6 0"
look-controls="pointerLockEnabled: true">
</a-entity>
</a-entity>
</a-scene>
</body>
</html>
A-Frame本体のみでは、VRでの移動ができないため、aframe-extrasを追加で読み込んでいます。
index.html
のフォルダ階層に、 models
フォルダを作成し、上記で出力したglTFファイル map.glb
を入れています。
3.2. ライセンス
- A-Frame:The MIT License Copyright © 2015-2017 A-Frame authors.
- aframe-extras:The MIT License (MIT) Copyright (c) 2016 Don McCurdy
4. VRで散策
いざVRのHMDをかぶって、散策してみましょう。
HMDを持っていない場合は、キーボードとマウスで操作可能です。
4.1. htmlファイルの閲覧の仕方
htmlファイルを直接FireFoxで開こうとすると クロスオリジン要求をブロックしました
というエラーで開けないので、ローカルでサーバーを立てるか、NetlifyやGitHub Pagesなどの静的サイトホスティングサービスを使用しましょう。
4.2. VRのHMDでの操作
- 左手のトラックパットで前後左右移動
4.3. キーボードでの操作
FireFoxの画面をクリックすると画面内にマウスカーソルが固定され、操作が可能になります。
- WASDで前後左右移動
- マウスでカメラの方向を操作
- マウスポインターを逃がしたい場合はESCキー
4.4. VRで見た様子
地図データライセンス
© OpenStreetMap contributors