如何避免Core Motion控制的SceneKit相机滚动?

2024-01-27

我正在将 SceneKit 相机设置为当前CMDeviceMotion使用的态度CMDeviceMotion 扩展 https://gist.github.com/travisnewby/96ee1ac2bc2002f1d480在此描述的answer https://stackoverflow.com/a/33695442/235297:

func deviceDidMove(motion: CMDeviceMotion?, error: NSError?) {
    if let motion = motion {
        let orientation = motion.gaze(atOrientation: UIApplication.sharedApplication().statusBarOrientation)
        cameraNode.orientation = orientation
    }
}

这工作得很好,但是,我想阻止旋转(滚动)并只允许相机转动(偏航)和俯仰。

我尝试将四元数转换回欧拉角,并将滚动角保留为 0:

cameraNode.eulerAngles = SCNVector3(
            x: orientation.pitch(),
            y: orientation.yaw(),
            z: 0)

然而,这仅适用于偏航运动的一半。对于另一半,相机被颠倒过来。我怀疑这是涉及欧拉角的万向节锁问题。

四元数对我来说有点像黑魔法,但是有没有办法直接在四元数级别上删除滚动分量,这样我就可以避免欧拉角?


None

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

如何避免Core Motion控制的SceneKit相机滚动? 的相关文章

随机推荐

  • 如何使 VBA 脚本自动生成“另存为”窗口

    我正在编写一个 VBA 代码 该代码将通过 SAP 软件的自动化屏幕保存 PDF 文件 我已经到达 SAP 询问我要将 PDF 文件保存在哪里的位置 它会打开一个 Windows 资源管理器 另存为 窗口 此时 VBA代码停止 我需要手动输
  • PostgreSQL CROSS JOIN 索引提高性能

    这是我的第二部分question https stackoverflow com questions 49938650 table indexing on postgresql for performance 所以我有下表 CREATE T
  • 当 iOS 10 发布时,我可以使用 Xcode 7.3 提交 Swift 2.2 应用程序吗?

    当 iOS 10 发布时 我是否能够向应用程序商店提交使用 Swift 2 2 运行并使用 Xcode 7 3 构建的应用程序 或者是否必须迁移到 swift 2 3 或 Swift 3 并使用 Xcode 8 构建应用程序 是的你可以 甚
  • 使用 JNI 传递并返回 OpenCv Mat 对象

    我想在 JNI 中编写一个这样的函数 JNIEXPORT jobject JNICALL Java com datumdroid android ocr simple HoughLine nativeDetectLine JNIEnv je
  • Cucumber IDE 可以自动完成功能编写吗?

    有没有Eclipse插件可以用来写黄瓜的特点 http github com aslakhellesoy cucumber wiki feature introduction具有自动完成功能 我想从其他功能中找到并重用步骤会很好 有任何想法
  • Google Charts 次轴折线图

    我目前正在学习一些带有网络编辑的谷歌图表 以扩大我的知识 但我遇到了一个无法解决的问题
  • Select2 v4 无法使用 Tab 键进入,按 Enter 键,然后选择,使用 Firefox(又称无鼠标访问)

    I am currently unable to tab into a Select2 enabled
  • 动画 UICollectionView 标题高度变化

    我目前正在使用带有标题的 UICollectionView 并且想知道如何在需要时设置动画并扩展标题高度 我正在尝试模拟 iPhone 版 Expedia 应用程序中的功能 点击图像会展开标题单元格以显示中心的图像 我已经尝试这个有一段时间
  • Gmail API 批量获得支持吗?

    我正在使用 Gmail API 进行 WEB HTTP 调用 有没有办法批量获取消息内容 看来messages list只返回messageIds messages get只支持单条消息查询 列表API https www googleap
  • 检查 Silverlight 中的互联网连接

    我正在编写一个 Silverlight 4 应用程序 并想在打开已安装的浏览器外应用程序时检查是否存在有效的互联网连接 然后从我的网站下载一些数据 做这个的最好方式是什么 我意识到我可以在 WebRequest 周围放置一个 try cat
  • 使用 jQuery 更改 Chosen.js 选择框的值

    我正在尝试更改选择框的值选择 js http harvesthq github com chosen 覆盖 这个想法是当用户单击按钮时更改所选值 使用常规选择框 我可以通过执行以下操作来更改值 GroupsShowNext unbind c
  • 在 SqlCommand 中使用参数删除

    我使用 ADO NET 从数据库中删除一些数据 如下所示 using SqlConnection conn new SqlConnection connectionString try conn Open using SqlCommand
  • knitr kable:RNW 的 PDF 中的文本颜色为灰色

    当我使用创建表时knitr kableRNW 文件中的函数 PDF 中表格项目的文本颜色显示为灰色 我想把它改成黑色 我怎样才能做到这一点 documentclass article begin document lt lt gt gt k
  • “and”如何与奇数和偶数相关?在JS中

    我的任务是弄清楚如何确定奇数和偶数 我无法使用 我使用 是因为我在互联网上找到了它 但我找不到适合它工作方式的方法 N A 我创建的样本是 if 22 1 0 return true else return false 返回真 按位运算符的
  • 动态嵌套 React.js 组件

    我想创建一个灵活 动态可以使用 React js 呈现的 JSX 表单格式 此格式必须包含嵌套组 一个组可以包含其他组以及问题 var Group React createClass render function return field
  • 如何从 Datareader 获取多行

    这是我的代码 它工作正常 但只返回一行 正如您在 SQL 语句中看到的 我需要在表单中使用的数据网格中返回 2 行 虽然该过程读取 2 行 但它只显示一行 NameAddrmark 是字段的构造函数 public NameAddrmark
  • 向用户发送激活电子邮件

    我该如何检查电子邮件是否确实存在 无法理解明星如何发送带有唯一链接的邮件 用户单击该链接以验证他是电子邮件的所有者 创建 2 个名为激活密钥的新列 并激活并存储一些随机字符串 发送包含激活密钥的电子邮件 并更新与该激活链接匹配的用户已激活
  • 在特定时间和日期调用 iOS 应用程序

    我希望我的 iOS 应用程序能够准确无误地知道特定日期和时间何时到达 现在这个时间可能是几天 几周 几个月 我的应用程序可能处于 backgorund 或终止状态 所以有以下几种选择 A 本地通知 但当我的应用程序处于后台时它不会通知 b
  • Chrome 中的 CSS 动画棘手错误

    我有以下 CSS webkit keyframes fade out from opacity 1 to opacity 0 webkit keyframes fade in from opacity 0 to opacity 1 intr
  • 如何避免Core Motion控制的SceneKit相机滚动?

    我正在将 SceneKit 相机设置为当前CMDeviceMotion使用的态度CMDeviceMotion 扩展 https gist github com travisnewby 96ee1ac2bc2002f1d480在此描述的ans