はじめに
- WebAR(=スマホのブラウザ上で行うAR)において、WebXRというオープンな仕様(=ネイティブのARの機能をブラウザから使える)をsafariが採用してない。(chromeは採用してるらしい)
- よって万人に質の高いARを提供するのは難しい
- WebXR APIが使えずとも高品質なARが使える8th wallというサービスはあるが、コストが高い
- そこで機能は限定されるがiOS/Androidが提供するAR Quick Look / Scene Viewerを使うのがコスパが良い場合がある
使用できる3Dファイル
glbとはglTFをテクスチャなども含めzipにしたもののようです。 glTFはWebGLの使用を決めている団体が作っている。
model-viewer.js & .glb
- model-viewer.jsはGoogleが作っているライブラリ。
- model-viewerタグを書き、.glbのファイルだけ置いておくとiOS/Android両方使える。
- 内部でAR QUickLook / SceneViewerがそれぞれ起動するようだ。
- iOS(Safari)は、.glb→.usdzの変換をやってくれる
- 生のusdzより機能は制限されるのか
- ちなみにsafariではusdzに直リンクすればAR Quick Lookが起動した。
- iOSは読み込んだり変換は処理的に無駄な気がする。usdzを作成し、model-viewer.jsは使わず分岐させた方が良い気がする
コード
<!DOCTYPE html> <html lang="ja"> <head> <meta charset="utf-8"> <title>ModelViewer-Test</title> </head> <body> <script type="module" src="https://unpkg.com/@google/model-viewer/dist/model-viewer.js"> </script> <model-viewer ar ar-modes="scene-viewer webxr quick-look" alt="d" src="d.glb" quick-look-browsers="safari chrome"> </model-viewer> <script> document.querySelector('model-viewer').addEventListener('load', (event) => { event.target.activateAR(); }); </script> </body> </html>
スケールを固定する
<model-viewer src="hoge.glb" ar ar-scale="fixed"></model-viewer>
usdzの作成
容量の目安
- Dennisは30k polygon
- Dennis Posed 004 3d model - Free3D