热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

ARAnchor到底是什么?

如何解决《ARAnchor到底是什么?》经验,为你挑选了1个好方法。



1> ARGeo..:

只是说 ARAnchor是一个看不见的空对象,可以在世界空间中保存3D内容(在锚点位置)。可以将ARAnchor其视为3D对象的局部轴。每个3D对象都有一个枢轴点,对不对?因此,此枢轴点必须满足ARAnchor

如 Apple文档所述:

ARAnchor是现实世界中的位置和方向,可用于在AR Scene中放置对象。在会话中添加锚点有助于ARKit优化该锚点周围区域的世界跟踪准确性,从而使虚拟对象看起来相对于真实世界保持原位。如果虚拟对象移动,请从旧位置移除相应的锚,然后在新位置添加一个。

ARAnchor是ARKit框架中存在的所有其他类型锚的父类,因此所有这些子类均继承自ARAnchor该类。

这是带有平面锚的可视表示的图像。但请记住:默认情况下,您看不到检测到的飞机或其ARPlaneAnchor。

在ARKit 3.0中,您可以ARAnchors使用不同的场景添加到场景中

ARPlaneAnchor

如果水平或/和垂直planeDetection实例属性为ON,则ARKit可以将ARPlaneAnchors添加到会话中。

ARImageAnchor

这种锚点包含有关在AR世界跟踪会话中检测到的图像(锚点位于图像中心)的位置和方向的信息。对于激活,请使用detectionImages实例属性。在ARKit 2.0中,您最多可以跟踪多达25张图像,在ARKit 3.0中,分别最多可以跟踪100张图像。但是,在两种情况下,最多只能同时显示4张图像。

ARBodyAnchor

在最新版本的ARKit中,您可以通过运行会话来启用身体跟踪ARBodyTrackingConfiguration()。您将在Root Joint3D Skeleton中获得ARBodyAnchor 。

ARFace锚

Face Anchor存储有关拓扑和姿势的信息以及您可以使用前置TrueDepth摄像机检测到的面部表情。当检测到脸部时,“脸部固定点”将附加在鼻子后面的脸部中央。在ARKit 2.0中,您只能跟踪一张脸,而在ARKit 3.0中,最多可以同时跟踪3张脸。

ARObjectAnchor

这种类型的锚点保存有关在世界跟踪会话中检测到的真实3D对象的6个自由度(位置和方向)的信息。

AREnvironmentProbeAnchor

Probe Anchor在世界跟踪会议中为特定空间区域提供环境照明信息。ARKit的人工智能使用它为金属着色器提供环境反射。

ARParticipantAnchor

对于多用户AR体验而言,这是必不可少的锚类型。如果要使用它,请trueisCollaborationEnabled实例属性和Multipeer Connectivity框架使用值。

还有其他常规方法可以在AR会话中创建锚点

命中测试法

在屏幕上点击,将一个点投影到一个隐藏的检测平面上,将ARAnchor放置在虚拟射线与该平面相交的位置。

射线投射法

轻击屏幕,还将点投影到隐藏的检测平面上。射线投射与命中测试的主要区别在于,在使用后者的ARKit时,由于它会更多地了解检测到的表面,因此会不断完善射线投射。

特征点

ARKit在现实对象的高对比度边缘上自动生成的特殊黄点,可以为您提供放置ARAnchor的位置。由于采用了命中测试方法,因此这种方法也是可行的。

ARCamera的转型

iPhone相机的位置和方向(矩阵4x4)可以轻松用作ARAnchor的位置。

任何世界立场

将ARAnchor放置在所需场景中的任何位置。

下面是代码片段,如何在renderer方法内实现锚点:

func renderer(_ renderer: SCNSceneRenderer, didAdd node: SCNNode, for anchor: ARAnchor) {

    guard let planeAnchor = anchor as? ARPlaneAnchor else { return }
    let grid = Grid(anchor: planeAnchor)
    node.addChildNode(grid)
}

自2019年RealityKit发布以来,您可以使用其新类AnchorEntity。使用AnchorEntity类作为实体层次结构的根点,并将其添加到Scene实例的anchors集合中。这使ARKit可以将锚实体及其所有层次后代放置到现实世界中。

AnchorEntity 内部存储三个组件:

转变组件

同步化组件

锚固组件

为了找出两者之间的区别ARAnchorAnchorEntity请看这篇文章


推荐阅读
  • 不同优化算法的比较分析及实验验证
    本文介绍了神经网络优化中常用的优化方法,包括学习率调整和梯度估计修正,并通过实验验证了不同优化算法的效果。实验结果表明,Adam算法在综合考虑学习率调整和梯度估计修正方面表现较好。该研究对于优化神经网络的训练过程具有指导意义。 ... [详细]
  • 本文介绍了iOS开发中检测和解决内存泄漏的方法,包括静态分析、使用instruments检查内存泄漏以及代码测试等。同时还介绍了最能挣钱的行业,包括互联网行业、娱乐行业、教育行业、智能行业和老年服务行业,并提供了选行业的技巧。 ... [详细]
  • 开发笔记:加密&json&StringIO模块&BytesIO模块
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了加密&json&StringIO模块&BytesIO模块相关的知识,希望对你有一定的参考价值。一、加密加密 ... [详细]
  • 解决Cydia数据库错误:could not open file /var/lib/dpkg/status 的方法
    本文介绍了解决iOS系统中Cydia数据库错误的方法。通过使用苹果电脑上的Impactor工具和NewTerm软件,以及ifunbox工具和终端命令,可以解决该问题。具体步骤包括下载所需工具、连接手机到电脑、安装NewTerm、下载ifunbox并注册Dropbox账号、下载并解压lib.zip文件、将lib文件夹拖入Books文件夹中,并将lib文件夹拷贝到/var/目录下。以上方法适用于已经越狱且出现Cydia数据库错误的iPhone手机。 ... [详细]
  • CF:3D City Model(小思维)问题解析和代码实现
    本文通过解析CF:3D City Model问题,介绍了问题的背景和要求,并给出了相应的代码实现。该问题涉及到在一个矩形的网格上建造城市的情景,每个网格单元可以作为建筑的基础,建筑由多个立方体叠加而成。文章详细讲解了问题的解决思路,并给出了相应的代码实现供读者参考。 ... [详细]
  • 本文讨论了在openwrt-17.01版本中,mt7628设备上初始化启动时eth0的mac地址总是随机生成的问题。每次随机生成的eth0的mac地址都会写到/sys/class/net/eth0/address目录下,而openwrt-17.01原版的SDK会根据随机生成的eth0的mac地址再生成eth0.1、eth0.2等,生成后的mac地址会保存在/etc/config/network下。 ... [详细]
  • 背景应用安全领域,各类攻击长久以来都危害着互联网上的应用,在web应用安全风险中,各类注入、跨站等攻击仍然占据着较前的位置。WAF(Web应用防火墙)正是为防御和阻断这类攻击而存在 ... [详细]
  • 本文介绍了互联网思维中的三个段子,涵盖了餐饮行业、淘品牌和创业企业的案例。通过这些案例,探讨了互联网思维的九大分类和十九条法则。其中包括雕爷牛腩餐厅的成功经验,三只松鼠淘品牌的包装策略以及一家创业企业的销售额增长情况。这些案例展示了互联网思维在不同领域的应用和成功之道。 ... [详细]
  • 为什么下一个5年,软件定义市场将暴涨32%
    Technavio公司的市场调研分析预测,到2020年全球软件定义一切(SDx)市场年复合增长率将超过32%,向虚拟化的转化是市场增长的主要驱动力。近来 ... [详细]
  • imnewtotheswiftandxcodeworld,soimhavingaproblemtryingtointegrateapackagetomypro ... [详细]
  • 1.webkit内核中的一些私有的meta标签,这些meta标签在开发webapp时起到非常重要的作用(1) ... [详细]
  • 这篇文章主要讲解了“如何应对Android面试”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“如何应对 ... [详细]
  • 1、DashAPI文档Dash是一个API文档浏览器,使用户可以使用离线功能即时搜索无数API。程序员使用Dash可访问iOS,MacOS, ... [详细]
  • 如何使用Java获取服务器硬件信息和磁盘负载率
    本文介绍了使用Java编程语言获取服务器硬件信息和磁盘负载率的方法。首先在远程服务器上搭建一个支持服务端语言的HTTP服务,并获取服务器的磁盘信息,并将结果输出。然后在本地使用JS编写一个AJAX脚本,远程请求服务端的程序,得到结果并展示给用户。其中还介绍了如何提取硬盘序列号的方法。 ... [详细]
  • 本文介绍了在一个局域网内设置复印机共享的步骤和注意事项,包括固定IP地址的设置、打印机共享的操作、防火墙和杀毒软件的关闭、局域网访问权限的保证等。同时提醒用户要确保所有相连的电脑在同一个域。 ... [详细]
author-avatar
不想与你见面_637
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有