目录
  1. 1. ARKit 4 简介
    1. 1.1. 判别用户手机是否支持
      1. 1.1.1. 模型参数 坐标 旋转 模型渲染材质 贴纸
      2. 1.1.2. 动态创建AR地球+SCNNode+SCNGeometry
      3. 1.1.3. 用Xcode把3D模型文件转化为.scn文件
      4. 1.1.4. 将.obj文件转化成.scn文件使用
iOS AR和ARKit4

ARKit 4 简介

iPadOS 上的 ARKit 4 推出了全新的景深 API,创造了一种新的方式来访问由 iPad Pro 上的激光雷达扫描仪收集的详细深度信息。位置锚定功能利用 Apple 地图中更高分辨率的数据,能在您的 iPhone 和 iPad app 中将增强现实体验放置在世界的特定地方。此外,对面部跟踪的支持扩展到所有配备 Apple 神经网络引擎和前置摄像头的设备,让更多用户能在照片和视频中体验到增强现实的乐趣。

###创建项目

image-20200822085503314

image-20200822090411080

这几种区别

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处理器以上

image-20200822093353291


模型参数 坐标 旋转 模型渲染材质 贴纸

image-20200822100012737

创建一个红色球体 放在屏幕中央 拒摄像头0.5米

星球贴纸网站 可以下载贴纸

image-20200822101554417

将下载的贴纸图片导入项目 选择4K 还是8K

image-20200822101727098

6501598062963_.pic


动态创建AR地球+SCNNode+SCNGeometry

1
2
3
4
5
6
7
8
9
10
//实例化一个几何图形 球
let sphere = SCNSphere(radius: 0.2)
//设置贴纸 全路径
sphere.firstMaterial?.diffuse.contents = UIImage(named: "art.scnassets/2k_earth_nightmap.jpg")
//模型
let node = SCNNode(geometry: sphere)
//设置位置
node.position = SCNVector3(0, 0, -0.5)

sceneView.scene.rootNode.addChildNode(node)

用Xcode把3D模型文件转化为.scn文件

3D模型库 需要注册使用, 有收费的和免费的模型

3D模型制作工具Blender

SceneKit支持哪些模型呢 官方文档

image-20200822104614540

只有 .dae是一种比较主流的3D模型格式 但是在主流的模型文件中占比比较少

所以苹果为了让我们找到更多现成的模型 在ARKit2中加入了 usdz模型, 我们可以通过Xcode将当前最主流的模型转换成usdz,供我们使用. 当前最主流的是 .obj格式的模式. 所以可说成我们只支持两种 .dae和.obj obj需要转换下

image-20200822105512740

找一个免费的 .dae格式模型下载下来

image-20200822110456588

这里注意有的好的收费的 模型和贴纸是打包好的 这里的需要单独下载

将dae和贴纸文件导入项目

即使支持dae文件但是我们依旧需要用xcode将文件格式转换成.scn 因为后续有些操作会执行不了, 代码也会给我们提示 所以为了安全方便还是转换下 也很简单

image-20200822111827966

image-20200822112509597

贴纸是多张dds格式的不要慌 iOS支持 然后看图中箭头所指 将对应的贴纸给粘贴上

注意: 如果在使用转换完的.scn模型后运行报错: BF95A0BBD9044A89164A7B71A1217873

不要慌 解决办法

image-20200822135025951

image-20200822135055681

选择个版本就好了, 我之前就遇到这个问题, google了一下才找到原因所在

效果图

6551598077912_.pic


将.obj文件转化成.scn文件使用

我们在转换.obj文件时要多一步 不能直接通过工具Convert

没有可视化转换界面 需要终端命令行操作

1
2
3
xcrun usdz_converter /Users/moneylee/Downloads/ArmyTruck_OBJ/armytruck.obj /Users/moneylee/Downloads/truck.usdz
xcrun: error: sh -c '/Applications/Xcode-beta.app/Contents/Developer/usr/bin/xcodebuild -sdk /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk -find usdz_converter 2> /dev/null' failed with exit code 17664: (null) (errno=No such file or directory)
xcrun: error: unable to find utility "usdz_converter", not a developer tool or in PATH

OMG usdz_converter 已经被启用了, 我Xcode10版本应该是可用的, 我的是12 所以需要换种方式

在这里下载 https://developer.apple.com/download/more/?=USDPython

USDPython 基与python的工具 用于生成,验证和检查usdz文件 包括一个转换器 这个转换器可以从其他3D格式文件以及Pixar和USD库和示例脚本中创建usdz

文章作者: 李财
文章链接: http://moneylee.cn/2020/08/19/iOS%20AR%E5%92%8CARKit4/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 MoneyLee’s Blog
打赏
  • 微信
  • 支付宝

评论