更新:2021年6月21日。
Google Arcore
允许您为Android和iOS构建应用程序。使用Apple ARKit
,您可以为iOS构建应用程序;与Apple RealityKit
-适用于iOS和macOS。还有一个伟大的旧的PTC Vuforia
被设计用来为Android、iOS和通用Windows平台创建应用程序。
Vuforia的一个重要特点是,如果运行的硬件支持ARCore
/ARkit
技术,则使用ARkit
技术;否则,Vuforia使用自己的AR技术和引擎,称为Software solution,没有依赖的硬件
。
ARCore基于三个主要的基本概念:运动跟踪
、环境理解
和光线估计
。ARCore允许支持的移动设备使用称为并发里程计和映射的特殊技术,在6个自由度(6DOF)中跟踪其相对于世界的位置和方向。COM帮助我们检测水平,垂直和角度跟踪表面的大小和位置。运动跟踪工作稳健,这要归功于来自RGB相机60 fps的光学数据,结合来自陀螺仪和加速度计1000 fps的惯性数据,以及来自ToF传感器60 fps的数据。当然,ARKit、Vuforia和其他AR库的操作方式几乎相同。
下表给出了原始深度API和全深度API之间的差异:
|------------|--------------------|--------------------|
| | "Raw Depth API" | "Full Depth API" |
|------------|--------------------|--------------------|
| Accuracy | Awesome | Bad |
|------------|--------------------|--------------------|
| Coverage | Not all pixels | All pixels |
|------------|--------------------|--------------------|
| Distance | 0.5 to 5.0 m | 0 to 8.0 m |
|------------|--------------------|--------------------|
ARCore比ARKit更老。你还记得2014年发布的《探戈计划》吗?粗略地说,ARCore只是一个重写的Tango SDK。但对FlyBy和MetaIO的明智收购不仅帮助苹果迎头赶上,而且大幅超越。假设这对AR行业有好处。
ARCore的最新版本支持OpenGL ES加速,并与Unity、Unreal和Web应用程序集成。目前,Android平台上最强大、最节能的AR体验芯片组是骁龙888(5nm)、Exynos2100(5nm)和麒麟9000(5nm)--现在谷歌和华为几乎又成了朋友。
ARCore价格:免费。
|------------------------------|------------------------------|
| "ARCore PROs" | "ARCore CONs" |
|------------------------------|------------------------------|
| iToF and Depth API support | No Body Tracking support |
|------------------------------|------------------------------|
| Quick Plane Detection | Cloud Anchors hosted online |
|------------------------------|------------------------------|
| Long-distance-accuracy | Lack of rendering engines |
|------------------------------|------------------------------|
| ARCore Emulator in AS | Poor developer documentation |
|------------------------------|------------------------------|
| High-quality Lighting API | No external camera support |
|------------------------------|------------------------------|
| A lot of supported devices | Poor Google Glass API |
|------------------------------|------------------------------|
以下是用Kotlin编写的ARCore代码片段:
private fun addNodeToScene(fragment: ArFragment,
anchor: Anchor,
renderable: Renderable) {
val anchorNode = AnchorNode(anchor)
anchorNode.setParent(fragment.arSceneView.scene)
val modelNode = TransformableNode(fragment.transformationSystem)
modelNode.setParent(anchorNode)
modelNode.setRenderable(renderable)
modelNode.localPosition = Vector3(0.0f, 0.0f, -3.0f)
fragment.arSceneView.scene.addChild(anchorNode)
modelNode.select()
}
ARKit有一些有用的方法来进行稳健的跟踪和精确的测量。在它的武库中,您可以找到用于保存和检索ARWorldMaps的易于使用的功能。世界地图是持久和多用户AR体验不可或缺的“门户”,允许您在应用程序停用前回到充满相同选择的3D内容的相同环境。同时支持前端
和后端
相机捕获,支持协作会话
,这使得我们可以共享世界地图,也很棒。
对于游戏玩家来说,有一个好消息:多亏了MultipeerConnectivity框架,多达6个人可以同时玩同一个AR游戏。对于3D几何图形,您可以使用一种全新的USDZ文件格式,由Pixar开发和支持。USDZ是一个很好的选择复杂的3D模型与许多PBR着色器和动画。此外,您还可以为ARKit使用以下3D格式。
ARKit不仅可以帮助您在6自由度中跟踪设备相对于世界的位置和方向,还可以帮助您执行人和物体遮挡技术(基于alpha和深度通道的分割)、激光雷达场景重建
、身体运动捕捉跟踪
、垂直和水平面检测
、图像检测
、3D物体检测
、3D物体扫描
。有了人和物体遮挡工具,你的AR内容可以逼真地在现实世界实体的后面和前面传递,使AR体验更加身临其境。此外,真实感反射
,使用机器学习算法和基于人脸的AR体验
,允许一次跟踪多达3张脸。
使用ARKit和iBeacons,您可以帮助识别iBeacon的应用程序知道它在哪个房间,并显示为该房间选择的正确的3D内容。在使用ARKit时,您应该像在ARCore中使用它一样,深入地利用ARAnchor类及其所有子类。
特别要注意RealityKit的卫星-Reality Composer
应用程序,它现在是Xcode的一部分。这个全新的应用程序帮助你为AR构建3D场景。场景建立在现实作曲家可以包装与动态,简单的动画和PBR着色器。Reality Composer可以作为一个独立的应用程序安装在iOS和iPadOS上。
要创建基于ARKit 4.0最新版本的AR应用程序,包括全新的激光雷达扫描仪支持,你需要macOS 11 Big Sur、Xcode 12和运行iOS 14的设备。一个可悲的消息是,ARKit4.0的所有顶级功能都仅限于搭载苹果A12芯片组及更高版本的设备。此外,ARKit4.0是一个值得与金属框架相结合的GPU加速候选。不要忘记ARKit与统一和虚幻紧密地结合在一起。目前,最强大和节能的AR体验芯片组是A14仿生(5nm)。
ARKit价格:免费。
|------------------------------|------------------------------|
| "ARKit PROs" | "ARKit CONs" |
|------------------------------|------------------------------|
| LiDAR and Depth API support | No AR glasses support |
|------------------------------|------------------------------|
| Stable 6 DoF World Tracking | No auto-update for Anchors |
|------------------------------|------------------------------|
| Collaborative Sessions | iOS / Chipsets Restrictions |
|------------------------------|------------------------------|
| WorldMaps, iBeacon-awareness | No ARKit Simulator in Xcode |
|------------------------------|------------------------------|
| 4 rendering technologies | No external camera support |
|------------------------------|------------------------------|
| Rich developer documentation | Quickly drains your battery |
|------------------------------|------------------------------|
以下是用Swift编写的ARKit代码片段:
func renderer(_ renderer: SCNSceneRenderer,
didAdd node: SCNNode,
for anchor: ARAnchor) {
guard let planeAnchor = anchor as? ARPlaneAnchor else { return }
let planeNode = tableTop(planeAnchor)
node.addChildNode(planeNode)
}
func tableTop(_ anchor: ARPlaneAnchor) -> SCNNode {
let x = CGFloat(anchor.extent.x)
let z = CGFloat(anchor.extent.z)
let tableNode = SCNNode()
tableNode.geometry = SCNPlane(width: x, height: z)
tableNode.position = SCNVector3(anchor.center.x, 0, anchor.center.z)
return tableNode
}
|------------------------------|------------------------------|
| "RealityKit PROs" | "RealityKit CONs" |
|------------------------------|------------------------------|
| Can create AR apps w/o ARKit | Intensive usage of CPU/GPU |
|------------------------------|------------------------------|
| Very little boilerplate code | iOS 13+, macOS 10.15+ only |
|------------------------------|------------------------------|
| Suitable for AR/VR projects | Start lagging on old devices |
|------------------------------|------------------------------|
| Robust API for RC scenes | There's no particle system |
|------------------------------|------------------------------|
| Asynchronous asset loading | Lack of Apple documentation |
|------------------------------|------------------------------|
| Autoupdating tracking target | No AR glasses support |
|------------------------------|------------------------------|
以下是用Swift编写的RealityKit代码片段:
override func viewDidLoad() {
super.viewDidLoad()
let textAnchor = try! SomeText.loadTextScene()
let textEntity: Entity = textAnchor.realityComposer!.children[0]
var textMC: ModelComponent = textEntity.children[0].components[ModelComponent]!
var material = SimpleMaterial()
material.baseColor = .color(.yellow)
textMC.materials[0] = material
textMC.mesh = .generateText("Hello, RealityKit")
textAnchor.realityComposer!.children[0].children[0].components.set(textMC)
arView.scene.anchors.append(textAnchor)
}
苹果AR生态系统的一个更重要的部分是现实转换器
应用程序。现在,不使用命令行转换工具,您可以使用现实转换器。这个全新的应用程序使您可以轻松地在Mac上转换、查看和定制.usdz
3D对象。只需拖放常见的3D文件格式,如.obj
、.gltf
或.usdz
,即可查看转换后的.usdz
结果,使用您自己的纹理自定义材质属性并编辑文件元数据。您甚至可以通过内置的基于图像的照明(IBL)选项,在各种照明和环境条件下预览.usdz
对象。
2015年10月,PTC以6500万美元从高通收购了Vuforia。考虑到高通在2010年推出了Vuforia。所以Vuforia是AR家族的姐姐。大姐在看着你们,伙计们!;)
2016年11月,Unity Technologies和PTC宣布了一项简化AR开发的战略合作。从那以后,他们一起工作,将Vuforia AR平台的新功能集成到Unity游戏引擎中。Vuforia可以与Unity、MS Visual Studio、Apple Xcode和Android Studio等开发环境一起使用。它支持广泛的智能手机、平板电脑和AR智能眼镜,如HoloLens、Magic Leap、Vuzix M400和ODG R7。
Vuforia引擎区域目标使开发人员能够使用整个空间,无论是工厂楼层还是零售店,作为AR目标。使用第一个支持的设备Matterport Pro2
摄像机,开发人员可以创建所需位置的详细3D扫描。位置建议在室内,主要是静态的,不超过1,000平方米(约10,000平方米)。一旦扫描产生一个3D模型,它可以转换成一个区域目标与Vuforia区域目标生成器。然后这个目标可以被带入统一。
Vuforia API允许静态
或自适应
模式。当真实世界的模型像大型工业机器一样保持静止时,实现static
API将使用更少的处理能力。这为这些模型提供了更持久和更高性能的体验。对于不稳定的对象,Adaptive
API允许持续的健壮体验。
外部摄像头
特性是Vuforia引擎驱动程序框架的一部分。外部摄像头为增强现实提供了一个新的视角。它允许Vuforia引擎访问手机和平板电脑中配备的摄像头之外的外部视频源。通过使用独立摄像头,开发人员可以创建一个AR体验,提供玩具、机器人或工业工具的第一人称视角。
遮挡管理
是构建现实AR体验的关键特性之一。当你使用遮挡管理时,Vuforia引擎可以检测和跟踪目标,即使它们部分隐藏在日常屏障后面,比如你的手。特殊的遮挡处理允许应用程序显示图形,就像它们出现在物理对象内部一样。
Vuforia支持iOS设备的金属加速。此外,您还可以在您的项目中使用Vuforia示例。例如:Vuforia Core Samples
库包括使用Vuforia特性的各种场景,包括一个预先配置的对象识别场景,您可以将其用作对象识别应用程序的参考和起点。
private void UpdatePlacementPose() {
var screenCenter = Camera.main.ViewportToScreenPoint(new Vector3(0.5f, 0.5f));
var hits = new List<ARRaycastHit>();
arOrigin.Raycast(screenCenter, hits, TrackableType.Planes);
placementPoseIsValid = hits.Count > 0;
if (placementPoseIsValid) {
placementPose = hits[0].pose;
var cameraForward = Camera.current.transform.forward;
var cameraBearing = new Vector3(cameraForward.x,
0,
cameraForward.z).normalized;
placementPose.rotation = Quaternion.LookRotation(cameraBearing);
}
}
Vuforia SDK定价选项:
>
免费许可-您只需注册一个免费开发许可密钥
基本执照(42美元/月,每年计费)-学生
|------------------------------|------------------------------|
| "Vuforia PROs" | "Vuforia CONs" |
|------------------------------|------------------------------|
| Supports Android, iOS, UWP | The price is not reasonable |
|------------------------------|------------------------------|
| A lot of supported devices | Poor developer documentation |
|------------------------------|------------------------------|
| External Camera support | SDK has some issues and bugs |
|------------------------------|------------------------------|
| Webcam/Simulator Play Mode | Doesn't support Geo tracking |
|------------------------------|------------------------------|
| Cylinder Targets support | Poor potential in Unity |
|------------------------------|------------------------------|
结论:
本文向大家介绍财务比率的重要性和局限性是什么?,包括了财务比率的重要性和局限性是什么?的使用技巧和注意事项,需要的朋友参考一下 财务比率的重要性如下- 通过分析和检查以前的结果,比率分析可以在不同项目之间进行关联。 比率分析可用于准备预算,制定政策以及计划未来。 比率分析表明公司是否正在改善。 比率分析充当效率的评估者。 可以进行公司间比较。 讲述短期流动性头寸。 长期偿付能力可以衡量。 借助比率
本文向大家介绍JSON.stringify有什么局限性和哪些技巧?相关面试题,主要包含被问及JSON.stringify有什么局限性和哪些技巧?时的应答技巧和注意事项,需要的朋友参考一下 会忽略,,,不能正确处理,,循环引用。
我想在xamarin中实现增强现实。现有的例子很少。 我想把兴趣点(POI)放在相机视图上。 我无法在xamarin中找到任何用于ARCore和ARKit的样本,但在本地绝对是可能的。所以我可以假设在xamarin中也有可能吗?我只想检查功能的可行性。 所有功能都封装在Xamarin的ARCore和ARKit库中。Android和xamarin。网间网操作系统? 我在本机android和IOS中发
问题内容: 按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实,参考或专业知识的支持,但是这个问题可能会引起辩论,争论,民意调查或扩展讨论。如果您认为此问题可以解决并且可以重新提出,请访问帮助中心以获取指导。 8年前关闭。 对我来说,英特尔语法更容易阅读。如果我只关注Intel语法来遍历汇编林,我会错过任何事情吗?我有什么理由要切换到AT&T(除了能够读取其他人的AT&T程序集之外
本文向大家介绍MySQL ENUM的局限性是什么?,包括了MySQL ENUM的局限性是什么?的使用技巧和注意事项,需要的朋友参考一下 以下是MySQL ENUM的限制- 枚举值不能是表达式 我们甚至不能将表达式用作枚举成员,即使将其计算为字符串值也是如此。 示例 例如,我们甚至可以使用CONCAT函数来导致字符串的求值。 以下查询将不起作用- 无法将用户变量用作枚举成员 另一个限制是我们不能将用
问题内容: 每个案例都有不同的用例吗?什么时候应在makeStyles上使用withStyles? 问题答案: 所述钩API()只能与功能的部件使用。 的高次成分API()可与类组件或功能的部件使用。 它们都提供相同的功能,并没有在无差异的参数和。 如果您将其与功能组件一起使用,则建议您使用Hook API()。与(并在内部委托)相比,有一点额外的开销。 如果您要自定义Material- UI组件