ARKit 4 简介
iPadOS 上的 ARKit 4 推出了全新的景深 API,创造了一种新的方式来访问由 iPad Pro 上的激光雷达扫描仪收集的详细深度信息。位置锚定功能利用 Apple 地图中更高分辨率的数据,能在您的 iPhone 和 iPad app 中将增强现实体验放置在世界的特定地方。此外,对面部跟踪的支持扩展到所有配备 Apple 神经网络引擎和前置摄像头的设备,让更多用户能在照片和视频中体验到增强现实的乐趣。
###创建项目
这几种区别
Metal 是最基础的 适合熟练使用的开发者 可以个性化定义
SpriteKit 2D模型
SceneKit 3D模型 支持iOS11.0以上系统,iphone 6s以上手机(即iphone8,1以上)
RealityKit 支持人体追踪 支持iOS13.0以上系统,iphone xs以上手机(即iphone11,2以上)
创建工程获得实例工程
示例工程内的 ARConfiguration
let configuration = ARWorldTrackingConfiguration()
ARConfiguration包含多种配置类型:
ARWorldTrackingConfiguration: 世界跟踪配置(6DOF),只能使用后置摄像头,需要iOS 11以上。
AROrientationTrackingConfiguration: 使用后置摄像头并仅跟踪设备方向的配置
ARFaceTrackingConfiguration: 人脸跟踪配置,只能使用前置的TrueDepth摄像头,需要iOS 11以上
ARImageTrackingConfiguration: 图像跟踪配置,只能使用后置摄像头,需要iOS 12以上。
ARObjectScanningConfiguration: 提供使用后置摄像头收集现实空间数据,创建参考对象以便在其他AR体验中进行检测(把现实世界的物体解析成3D模型)
ARBodyTrackingConfiguration: 人体跟踪配置,只能使用后置摄像头,需要iOS 13以上和A12芯片
ARPositionalTrackingConfiguration:定位跟踪配置,仅跟踪设备在空间中的位置,使用后置摄像头,需要iOS 13以上。
ARGeoTrackingConfiguration:地理位置跟踪配置,使用GPS、设备指南针和地图数据跟踪感兴趣的地理位置,需要iOS 14以上。
注:可以同时在前置摄像头上使用面部跟踪,在后置摄像头使用世界跟踪。例如,用户可以只使用他们的脸部与后置摄像头画面中的AR内容进行交互。
判别用户手机是否支持
因为我们创建项目的时候是个预置AR的项目 所以初始化项目的时候,已经为我们配置到了,在info.plist内 如果用户手机不支持会下载不了此项目 armv7 是对处理器的要求 A9处理器以上
模型参数 坐标 旋转 模型渲染材质 贴纸
创建一个红色球体 放在屏幕中央 拒摄像头0.5米
将下载的贴纸图片导入项目 选择4K 还是8K
动态创建AR地球+SCNNode+SCNGeometry
1 | //实例化一个几何图形 球 |
用Xcode把3D模型文件转化为.scn文件
3D模型库 需要注册使用, 有收费的和免费的模型
SceneKit支持哪些模型呢 官方文档
只有 .dae是一种比较主流的3D模型格式 但是在主流的模型文件中占比比较少
所以苹果为了让我们找到更多现成的模型 在ARKit2中加入了 usdz模型, 我们可以通过Xcode将当前最主流的模型转换成usdz,供我们使用. 当前最主流的是 .obj格式的模式. 所以可说成我们只支持两种 .dae和.obj obj需要转换下
找一个免费的 .dae格式模型下载下来
这里注意有的好的收费的 模型和贴纸是打包好的 这里的需要单独下载
将dae和贴纸文件导入项目
即使支持dae文件但是我们依旧需要用xcode将文件格式转换成.scn 因为后续有些操作会执行不了, 代码也会给我们提示 所以为了安全方便还是转换下 也很简单
贴纸是多张dds格式的不要慌 iOS支持 然后看图中箭头所指 将对应的贴纸给粘贴上
注意: 如果在使用转换完的.scn模型后运行报错:
不要慌 解决办法
选择个版本就好了, 我之前就遇到这个问题, google了一下才找到原因所在
效果图
将.obj文件转化成.scn文件使用
我们在转换.obj文件时要多一步 不能直接通过工具Convert
没有可视化转换界面 需要终端命令行操作
1 | xcrun usdz_converter /Users/moneylee/Downloads/ArmyTruck_OBJ/armytruck.obj /Users/moneylee/Downloads/truck.usdz |
OMG usdz_converter 已经被启用了, 我Xcode10版本应该是可用的, 我的是12 所以需要换种方式
在这里下载 https://developer.apple.com/download/more/?=USDPython
USDPython 基与python的工具 用于生成,验证和检查usdz文件 包括一个转换器 这个转换器可以从其他3D格式文件以及Pixar和USD库和示例脚本中创建usdz