2
1

More than 1 year has passed since last update.

iOS Safari で reality ファイルを扱うときの tips

Last updated at Posted at 2022-07-14

2022年3月ついに iOS 15 で WebXR Device API サポートが来たかと喜んだのもの束の間、 immersive-ar モードが動作しないことが発覚して結局 iPhone で WebAR はまだまだ難しいということを再認識させられたのであった。

一方で Apple は、USDZ という 3D モデルの独自フォーマットや、USDZ に動きやインタラクティブな振る舞いを加えることができる Reality という独自フォーマットを持っており、これらは iOS の AR Quick Look という機能を使って AR 表示することができる。AR Quick Look は iOS Safari からも利用することができるので、現状では iPhone で 6DoF な WebAR を実現するための最もカジュアルな方法ではないかと思う。

Reality ファイルそのものは Xcode に付属の Reality Composer を使うことで簡単に作成することができるが、作成した Reality ファイルを iOS Safari から呼び出す際に少しクセがあったので、それについてまとめる。

Web アプリから AR Quick Look を起動する

Web アプリから AR Quick Look を起動するには、単に Reality ファイルへのリンクを貼るだけで良い。
このとき、anchor タグには rel="ar" 属性を指定する必要がある。

<a rel="ar" href="app.relaity">START AR</a>

「オブジェクトを開けませんでした」エラーが出る場合

AR Quick Look がファイルを開けなかった場合に「オブジェクトを開けませんでした」というエラーメッセージが出る。
ファイルがそもそも存在しない (404) 場合でもこのエラーが出るが、ファイルが確かにホストされているにも関わらずこのエラーが出る場合は、HTTP レスポンスヘッダの Content-Type が適切ではない可能性がある。

例えば Reality ファイルを AR Quick Look で開く場合、そのファイルを取得する際の Content-Type は model/vnd.reality である必要がある。

すぐに AR Quick Look が起動しない場合

リンクをクリックしてもすぐに AR Quick Look が起動せず、画面を1回タップすると開始する、というケースがある。

どうやら iOS Safari は「anchor タグのコンテンツに画像が含まれている場合は AR Quick Look を直接起動させる」という振る舞いをするらしい、ということに試しているうちに気づいた。

画像が含まれていればなんでもいいようなので、たとえば 1px x 1px の透過 GIF 画像を仕込んでも問題ない。

<a rel="ar" href="app.reality">
  START AR
  <img src="data:image/gif;base64,R0lGODlhAQABAGAAACH5BAEKAP8ALAAAAAABAAEAAAgEAP8FBAA7" />
</a>
2
1
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
2
1