[中秋活动征文]使用 ARKit 在自己屋子里赏月~

1,201 阅读2分钟

我正在参加中秋创意投稿大赛,详情请看:中秋创意投稿大赛


AR Quick Look 可以非常迅速的在iOS设备上提供强大的AR体验。借着中秋活动,我来教大家如何使用AR Quick Look来实现在自己屋子里赏月。

找一个月亮模型

打开Sketchfab网站,搜索“moon”。

Sketchfab是一个3D模型共享平台,有大量免费、付费的各类3D模型。目前已被EPIC(Unreal引擎开发商)收购。

image.png

记得勾选downloadable,选择可以下载的模型。

  • USDZ格式

USDZ格式全称Universal Scene Description,是由苹果与皮克斯共同研发的AR专属模型格式。在iOS系统中,这个格式的模型使构建AR应用变得非常容易。

image.png

  • Reality Converter

那如果没有USDZ格式的模型怎么办呢?苹果官方也提供了一系列的工具来帮我们制作和转换模型。

image.png

使用Reality Converter可以将大部分其他格式的模型转换为USDZ格式,方便在iOS里使用。

开发AR速览应用

新建项目

打开XCode,新建项目,选择Augmented Reality App

image.png

设置产品名称,bundle id,选择渲染引擎Metal,语言用SwiftObjective-C都行,根据自己的情况选择。

image.png

导入模型

将我们准备好的USDZ模型,导入到项目文件中

image.png

image.png

编写代码

然后打开ViewController.swift,先导入QuickLook

import QuickLook

把示例代码中的如下部分注释掉,因为我们用不到

image.png

然后在代码中添加

//模型的数量
func numberOfPreviewItems(in controller: QLPreviewController) -> Int { return 1 }

//请求模型时返回USDZ模型的本地路径
func previewController(_ controller: QLPreviewController, previewItemAt index: Int) -> QLPreviewItem {
        guard let path = Bundle.main.path(forResource: "moon", ofType: "usdz") else { fatalError("Couldn't find the supported input file.") }
        let url = URL(fileURLWithPath: path)
        return url as QLPreviewItem
}

//当ViewController视图完成显示时,调起QuickLook控制器
override func viewDidAppear(_ animated: Bool) {
    let previewController = QLPreviewController()
    previewController.dataSource = self
    present(previewController, animated: true, completion: nil)
}

运行起来!

是不是非常快的我们就在iOS里构建了一个AR月亮,让我们开始赏月吧!gif图有点大,请耐心等待

2021-09-15 17_55_29.gif