この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。
はじめに
こんにちは。モバイルアプリサービス部の平屋です。
本記事では、QuickLook FrameworkのQLPreviewControllerを使用してUSDZファイルをアプリ内で表示する実装を紹介します。
本記事は Apple からベータ版として公開されているドキュメントを情報源としています。 そのため、正式版と異なる情報になる可能性があります。ご留意の上、お読みください。
検証環境
本記事は以下の環境で検証を行っています。
- macOS Sierra 10.13.4
- Xcode Version 10.0 beta (10L176w)
- iOS Deployment target: 12.0
USDZファイル
USDZファイルは以下のような特徴をもちます。
- 3Dモデルを提供するための新しいフォーマットであり、モデルとテクスチャを1ファイルにパッケージできる
- ベースはPixarのUniversal Scene Description
- 対応環境はiOS 12とmacOS Mojave
- USDZファイルへの変換ツールはXcode 10に同梱する
テスト用のUSDZファイル
以下のページから入手できます。
ファイルアプリでUSDZファイルを表示する
iOS標準のファイルアプリを使用すれば、USDZファイルを表示できます。
以下の2種類の方法で表示できます。
- Object
- 3Dオブジェクトを表示
- AR
- 3Dオブジェクトを現実世界に配置
自前のアプリでUSDZファイルを表示する
QLPreviewController
の作成/表示処理を追加します。
import UIKit
import QuickLook
class ViewController: UIViewController {
@IBAction func previewButtonDidTap(_ sender: Any) {
let previewController = QLPreviewController()
previewController.dataSource = self
present(previewController, animated: true)
}
}
そしてQLPreviewControllerDataSource
のメソッドを実装してファイル情報を提供します。
extension ViewController: QLPreviewControllerDataSource {
func numberOfPreviewItems(in controller: QLPreviewController) -> Int {
return 1
}
func previewController(_ controller: QLPreviewController, previewItemAt index: Int) -> QLPreviewItem {
return Bundle.main.url(forResource: "cupandsaucer",
withExtension: "usdz")! as QLPreviewItem
}
}
QLPreviewController
はiOS標準のファイルアプリと同様の画面を提供し、Object/ARの2種類の方法でファイルを表示できます。
さいごに
本記事では、USDZファイルをアプリ内で表示する実装を紹介しました。
簡単な実装だけで実現できるので気になった方は試してみてください!
参考資料
- Integrating Apps and Content with AR Quick Look - WWDC 2018 - Videos - Apple Developer
- ARKit - AR Quick Look Gallery - Apple Developer
- Apple、ARKit 2を発表 - Apple (日本)
- QLPreviewController - QuickLook | Apple Developer Documentation
- QLPreviewControllerDataSource - QuickLook | Apple Developer Documentation