ARKit 的相机空间朝向是什么?

2024-04-08

我想更好地理解 ARKit AR Camera 变换所在的相机坐标空间。在文档中 https://developer.apple.com/documentation/arkit/arcamera/2866108-transform, 它说

此变换为相机创建一个相对于设备方向恒定的局部坐标空间。在相机空间中,当设备位于UIDeviceOrientation.landscapeRight https://developer.apple.com/documentation/uikit/uideviceorientation/landscaperight方向 - 即,x 轴始终沿着设备的长轴指向,从前置摄像头指向“主页”按钮。 y 轴指向上方(相对于 UIDeviceOrientation.landscapeRight 方向),z 轴指向远离屏幕一侧的设备。

按照此,UIDeviceOrientation.landscapeRight 文档 https://developer.apple.com/documentation/uikit/uideviceorientation/landscaperight says:

设备处于横向模式,设备直立放置, 左侧的主页按钮。

当我试图理解这一点时,似乎之间存在冲突"the x-axis points to the right when the device is in UIDeviceOrientation.landscapeRight orientation" and "that is, the x-axis always points along the long axis of the device, from the front-facing camera toward the Home button"。前者的+x 位于右侧,后者的+x 位于左侧。

这是我的想象"the x-axis points to the right when the device is in UIDeviceOrientation.landscapeRight orientation":

这就是我的想象"that is, the x-axis always points along the long axis of the device, from the front-facing camera toward the Home button":

感谢任何帮助,谢谢!

更新:它不会影响这个问题,但为了更清楚地说明,我问这个问题的原因是因为我有兴趣从以下位置获取 x、y 和 z 地磁数据值核心位置 https://developer.apple.com/documentation/corelocation/clheading。在“核心位置”中,如果手机处于纵向模式,则 +x 朝右,+y 朝上,+z 朝用户。因此,ARKit 的相机坐标系似乎与 Core Location 中的相机坐标系不同。


让我们先解决一件事,landscapeRight主页按钮位于右侧,手机顶部位于左侧,这与您在图片中显示的不同。所以在你的绘图中,手机应该翻转 180 度。landscapeRight在这种情况下与设备方向不同

首先,Arkit 会话的坐标系将取决于AR 会话的世界对齐设置 https://developer.apple.com/documentation/arkit/arconfiguration/worldalignment

所以你有三个选择

Gravity https://developer.apple.com/documentation/arkit/arconfiguration/worldalignment/gravity

  • 在这种情况下,无论设备的方向如何,Y 都会指向上方,与重力平行

对于 z 轴,ARKit 选择指向设备相机面向的方向并垂直于重力轴的基本向量 (0,0,-1)

  • 据此,z轴将指向相机面向的方向(因此对于前置摄像头,z轴将指向屏幕,而对于后置摄像头,z轴将远离手机并远离您)

  • 然后用右手定则确定 X 轴

重力和航向 https://developer.apple.com/documentation/arkit/arconfiguration/worldalignment/gravityandheading

  • y 轴将与重力平行地指向上方
  • z 轴将指向南(-z 将指向正北)
  • x 轴将指向东

Camera https://developer.apple.com/documentation/arkit/arconfiguration/worldalignment/camera

在这种情况下,相机将始终位于世界坐标空间中的 (0,0,0) y 轴将指向上方(如果您的手机处于纵向模式,则指向右侧),x 轴将从手机顶部指向主页按钮,z 轴将指向远离设备的方向

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ARKit 的相机空间朝向是什么? 的相关文章

  • 应用程序未通过协同设计验证?

    我在提交 iPhone 申请时遇到问题 我看到了一些类似的问题 但没有找到答案 当我存档项目并单击 验证 时 收到错误消息 应用程序未通过协同设计验证 签名无效 或者未使用 Apple 提交证书进行签名 我假设我在协同设计部分做错了什么 我
  • 将 iPhone 上的 stderr 写入文件和控制台

    我正在遵循答案中的建议here https stackoverflow com questions 5179108 iphone how to read application logs from device用于将 iOS 设备上的 NS
  • 退出导航控制器

    我试图离开初始视图控制器 并进入空白视图控制器 这很好 但是这会使空白视图控制器也成为导航控制器的一部分 这不是我想要的 我想脱离视图控制器 在视图控制器中 我尝试退出 它会自行弹出 当我尝试视图中的方法时 将出现目标视图控制器 self
  • 在 UIMenuItem 上设置accessibilityLabel

    我正在尝试设置accessibilityLabel of a UIMenuItem而且似乎没有效果 无论如何 VoiceOver 只是读取项目的标题 let foo UIMenuItem title foo action selector
  • 如何获取 UIWebView 中元素的位置?

    我在 iPad 程序中加载了 html 的 UIWebView 通过使用 webkit column width 我将 html 分为几列 padding 0px height 1024px webkit column gap 0px we
  • Obj-C / Swift 项目中的致命陷阱异常

    我开始将 Swift 代码集成到我的 Obj C 项目中 一切都进展顺利 但今天 当我更新到 Xcode 6 1 时 事情变得很糟糕 我从之前运行良好的 Swift 代码中收到了许多 陷阱 异常 第一次崩溃位于我的 UIFont 扩展中 这
  • 在 swift 中获取 NSImage 的 PNG 表示

    嘿 我在获取 NSImage 对象的 PNG 表示时遇到了一些问题 这就是我正在做的 var imgData NSData coverImgView image TIFFRepresentation var bitmap NSBitmapI
  • 我可以指定泛型是值类型吗?

    我知道我们基本上可以通过使用指定我们的泛型是任何引用类型AnyObject class Foo
  • 在 cocoa touch 中以编程方式将视图位置设置为右上角

    我需要确保一个视图 A 尺寸 200x200 始终与第二个视图 B 全屏尺寸 内的右上角对齐 我想确保无论设备方向如何 视图 A 都保留在该位置 事实是 当使用界面生成器来定位视图时 我对此没有任何问题 但我需要以编程方式构建它 我想我应该
  • 快速将阴影绘制到 uibezierpath

    我有一个奇怪的问题 尽管我确实阅读了很多有关如何执行此操作的教程 但最终结果仅显示贝塞尔线 而不显示任何阴影 我的代码非常简单 let borderLine UIBezierPath borderLine moveToPoint CGPoi
  • 使用 xctool 运行单个 KIWI 规范

    有没有人能够成功地将 KW SPEC 变量传递给 xctool 我正在尝试使用以下命令来运行单个 KIWI 规范https github com kiwi bdd Kiwi wiki Kiwi FAQ q how do i run a si
  • 删除 UINavigationBar 下的 1px 边框 - 不起作用

    IBOutlet var navBar UINavigationBar self navBar setBackgroundImage UIImage forBarMetrics UIBarMetrics Default self navBa
  • APNS(Apple 推送通知服务器)的反馈服务

    我们正在使用Java作为推送通知提供商APNS I我能够将消息发送到APNS但我不知道如何获得该消息的反馈 请帮忙 反馈服务具有类似于用于发送推送通知的接口的二进制接口 您可以通过以下方式访问生产反馈服务feedback push appl
  • iOS 11 浏览器图像错误

    在 iOS 11 中滚动页面时出现以下错误 在 Firefox Safari 和 Chrome 中 在 Android 设备中 不会发生该错误 这些是背景图像 我不知道这是否是导致错误的原因 图 2 显示了图像在 Android 中的用途和
  • ios 如何存储用户输入的详细信息并取回?

    How to Store用户输入的详细信息和Get it Back在ios中 我有以下关注TextFields UserName Email Re enter Email id Phone State Address Localityand
  • 准确地从屏幕上的像素获取颜色并转换其颜色空间

    我需要从屏幕上的像素获取颜色并转换其颜色空间 我遇到的问题是 将值与数字色度计应用程序进行比较时 颜色值不相同 create a 1x1 image at the mouse position if let image CGImage CG
  • 观察 UIDatePicker 的变化

    我注意到没有委托来观察 UIDatePicker 中的变化 有没有一种方法可以在不确认任何内容的情况下检测选择器中何时进行更改 例如它旋转并落在新数字上的那一刻 我希望能够检测到这一点 我考虑过关键值观察 但我不认为有一个属性会立即改变 您
  • Apple 允许后台任务运行多长时间?

    我必须将一系列图像文件上传到数据库 因此 我偶然发现苹果后台执行指南 https developer apple com library ios documentation iPhone Conceptual iPhoneOSProgram
  • AudioPlayer 和锁屏/控制中心控制 Swift [关闭]

    Closed 这个问题需要调试细节 help minimal reproducible example 目前不接受答案 我是斯威夫特的新手 我写信是因为我想问一个问题 我和我的朋友正在开发一个音频播放器 但我们遇到了问题 播放器还可以在后台
  • 一旦 webapp 添加到主屏幕,是否可以强制 iphone/ipod 更新 apple-touch-icon?

    我使用 safari 的所有推荐链接和元标记创建了一个网络应用程序 例如

随机推荐

  • 当我在表单中输入输入时,React 组件不必要地重新渲染

    我有一个反应组件来管理用户登录和退出 当用户在登录字段中输入电子邮件和密码时 整个组件 导航栏 在每次击键时都会重新渲染到 Dom 从而降低了速度 当用户在登录字段中输入凭据时 如何防止导航栏重新呈现 import React useCon
  • 确定一个点是否在由给定纬度/经度的 3 个点组成的三角形内

    我有 3 个点 lat lon 形成一个三角形 我如何找到一个点是否在这个三角形内 Java 代码只是三角形 即 3 个点 public static boolean pntInTriangle double px double py do
  • 使用 Devise 设置会话长度

    我的会话在 1 3 小时未使用后超时 不确定具体多长时间 我该如何调整这个 我查看了文档 似乎找不到这方面的设置 查看 config initializers devise rb 有很多配置设置 包括config timeout in 我的
  • 主线程中的Python套接字接受防止退出

    我正在使用 python 中的套接字 只是为了了解它们 然而 我真的对以下问题感到恼火 import socket soc socket socket socket AF INET soc bind localhost 8000 soc l
  • Twig,减去 2 个日期

    如何用 twig 减去两个日期 我有一个结束日期和一个开始日期 我想要两者之间的差异 例如 对于日期 2015 02 20 和 2015 02 13 我应该获得 7 我怎样才能做到这一点 感谢帮助 第一个解决方案 推荐 使用现有库 您可以使
  • 函数模板专门化类型 - 是可选的吗?

    Is the
  • 重置 HTML5 无效输入状态

    经过验证的输入最初不会被标记为无效 直到值发生更改 如何恢复这个初始状态 我的问题的详细信息 我有一个简单的订单 如果用户单击 添加项目 按钮 我将克隆第一个项目并清空输入字段 但由于我使用的是 html5 验证 清空会使它们无效 这是单击
  • 用于 BroadcastReceiver 的 Firebase 云消息传递意图过滤器是什么?

    我试图在 Android 系统收到 Firebase Cloud 消息通知时运行 Android BroadcastReceiver public class MyBroadcastReceiver extends BroadcastRec
  • 在 Android 上使用 Canvas 绘制两条线之间的区域

    我正在为我的应用程序开发一个简单的统计图形类 我尝试过 aChartEngine 和其他更多 但我更喜欢使用我自己的类 我正在使用包含 Android 的 Canvas 类绘制图形 但问题是我不知道如何填充线条和底部边框之间的区域 现在 矩
  • 在现有工作区上使用新 Eclipse 时如何重新附加 subclipse

    我的工作区中有一些项目是使用 Subclipse 从 SVN 导入的 现在 我使用新版本的 Eclipse 带有 Subclipse 打开此工作区 并且 团队 上下文菜单仅包含 应用补丁 有没有办法让 subclipse 处理这些项目 而无
  • Angular 2:防止路由器添加到历史记录

    我们有一个客户 在我们的应用程序中使用 iFraming 访问他们的网站 他们不希望我们应用程序中的路由器导航影响他们自己网站的后退按钮导航 我们尝试了几种方法 包括使用发布消息来尝试在history back 被触发时让iFrame与父窗
  • 忽略 Inf 值并运行 lm 回归

    这些是我的变量 gt dput y c 22 0713165394207 14 0880914427811 10 9650636244176 1 96648890706268 5 30593850426708 7 5465191603778
  • @MainActor 类是对主要参与者的扩展吗?

    如果正在上课 MainActor MainActor class MyClass NSObject 这是否将其所有扩展放在 MainActor还有 extension MyClass Yes As SE 0316 全球演员 https gi
  • 无法更改购物车总计中的 WooCommerce 优惠券标签

    事实证明 这是一个我无法解决的挑战 我几乎在其他地方都处理过将 优惠券 重命名为 促销 的工作 然而 调用优惠券名称和LABEL的WC LABEL的重命名就困难了很多 这是我正在谈论的内容的屏幕截图 我几乎已将站点范围内 优惠券 的所有用途
  • 为什么预期的字符串变成元组[重复]

    这个问题在这里已经有答案了 我预计变量output format成为一个字符串 但是当我运行脚本时它给了我一个tuple类型并抛出异常 如果我在 Python 解释器中运行 它会给我一个预期的字符串 sout standard access
  • 使用 PHP 内置 Web 服务器进行无脂路由

    我正在学习 fatfree 的路线 发现它的表现出乎意料 这是我在index php中的代码 f3 require once dirname dirname FILE lib base php f3 Base instance echo r
  • 如何将 UIView 出口连接到自定义子视图

    我还是 xcode iOS 新手 并且有以下问题 为了显示一些移动调试信息 我将 UIview 作为出口属性添加 连接到我的视图控制器之一 该视图是 UIview 的自定义子类 现在 我添加了一些 UIlabels 作为子视图到该视图中 并
  • 在 Java 中从 XML 生成/获取 Xpath

    我对建议 伪代码代码 解释而不是实际实现感兴趣 我想浏览 XML 文档及其所有节点 检查节点属性是否存在 如果节点没有属性 get generate String with value of its xpath如果节点确实有属性 则迭代属性
  • 使用编辑器/显示模板中的部分

    我想将所有 JavaScript 代码保留在一个部分中 就在收盘前body在我的主布局页面中标记 只是想知道最好的方法 MVC 风格 例如 如果我创建一个DisplayTemplate DateTime cshtml文件使用 jQuery
  • ARKit 的相机空间朝向是什么?

    我想更好地理解 ARKit AR Camera 变换所在的相机坐标空间 在文档中 https developer apple com documentation arkit arcamera 2866108 transform 它说 此变换