首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何从ARKit中的simdTransform提取旋转值?

如何从ARKit中的simdTransform提取旋转值?
EN

Stack Overflow用户
提问于 2020-12-03 12:51:08
回答 1查看 330关注 0票数 1

我正在使用从iPhone的TrueDepth摄像头捕获的值,在ARKit中为一个ARSCNFaceGeometry设置动画。

摄影机以simd_float4x4格式提供变换数据。这包括节点旋转、位置和缩放。以下是生成的内容的示例:

代码语言:javascript
运行
AI代码解释
复制
simd_float4x4([
            [0.9482585, 0.0065377234, 0.31743154, 0.0],
            [-0.07080679, 0.9789629, 0.1913578, 0.0],
            [-0.3095027, -0.20393308, 0.9287729, 0.0],
            [0.13866597, 0.20701922, -0.57620335, 1.0]
])

我只对对我的FaceGeometry应用旋转感兴趣,并且对它的位置和比例有单独的控制。所以我需要从上面的矩阵中提取相关的旋转值。

我在Apple文档中找不到任何现成的方法来做这件事,它甚至没有解释矩阵的哪些列或行与旋转有关。

我已经完成了以下工作,通过创建一个“虚拟”节点,将simdTransform应用到它,然后访问它的旋转属性,这是有效的。但这感觉很麻烦,因为我在场景中创建对象只是为了执行编程操作。

代码语言:javascript
运行
AI代码解释
复制
let tempNode = SCNNode(geometry: nil)
tempNode.simdTransform = faceTransformArray[index]
ARFaceNode.rotation = tempNode.rotation
tempNode.removeFromParentNode()

有人能提供一个更干净的解决方案吗?

附言:我是个矩阵新手。

提前谢谢你。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-12-04 12:37:42

3D旋转表示为quaternion,它由描述绕其旋转的轴的3D向量和描述围绕该轴旋转的角度组成。

要从4x4SIMD矩阵中获取四元数,可以从矩阵中初始化simd_quatf

代码语言:javascript
运行
AI代码解释
复制
let m = simd_float4x4([
    [0.9482585, 0.0065377234, 0.31743154, 0.0],
    [-0.07080679, 0.9789629, 0.1913578, 0.0],
    [-0.3095027, -0.20393308, 0.9287729, 0.0],
    [0.13866597, 0.20701922, -0.57620335, 1.0]
])
let q = simd_quatf(m)

SCNNoderotation属性表示为SCNVector4,其中x、y和z属性用于描述轴,w用于描述旋转。simd_quatf具有axis (Float)和angle (SIMD3<Float>)属性,因此要获取向量:

代码语言:javascript
运行
AI代码解释
复制
let sq = SCNVector4(q.axis.x, q.axis.y, q.axis.z, q.angle)

您可以在这里看到结果是相同的:

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65126349

复制
相关文章
JavaScript中的链式调用
链模式是一种链式调用的方式,准确来说不属于通常定义的设计模式范畴,但链式调用是一种非常有用的代码构建技巧。
WindRunnerMax
2020/11/26
4.1K0
JavaScript中的链式调用
链模式是一种链式调用的方式,准确来说不属于通常定义的设计模式范畴,但链式调用是一种非常有用的代码构建技巧。
WindRunnerMax
2020/11/27
9010
C++中的链式操作
链式操作是利用运算符进行的连续运算(操作),它的特点是在一条语句中出现两个或者两个以上相同的操作符,如连续的赋值操作、连续的输入操作、连续的输出操作、连续的相加操作等都是链式操作的例子。
恋喵大鲤鱼
2018/08/03
1.3K0
C++中的链式操作
oracle、mysql 分页查询比较
1、 Oracle的分页查询语句 分页查询格式: SELECT * FROM ( SELECT A.*, ROWNUM RN FROM (SELECT * FROM TABLE_NAME) A WHERE ROWNUM <= 40 ) WHERE RN >= 21 其中最内层的查询SELECT * FROM TABLE_NAME表示不进行翻页的原始查询语句。ROWNUM <= 40和RN >= 21控制分页查询的每页的范围。 上面给出的这个分页查询语句,在大多数情况拥有较高的效率。分页的目的就是控制输
java达人
2018/01/31
2.7K0
oracle、mysql 分页查询比较
1、 Oracle的分页查询语句 分页查询格式: SELECT * FROM ( SELECT A.*, ROWNUM RN FROM (SELECT * FROM TABLE_NAME) A WHERE ROWNUM <= 40 ) WHERE RN >= 21 其中最内层的查询SELECT * FROM TABLE_NAME表示不进行翻页的原始查询语句。ROWNUM <= 40和RN >= 21控制分页查询的每页的范围。 上面给出的这个分页查询语句,在大多数情况拥有较高的效率。分页的目的就是控制输
java达人
2018/01/31
2.8K0
Django 2.1.7 模型 - 条件查询、模糊查询、空查询、比较查询、范围查询、日期查询
上一篇Django 2.1.7 模型 - MVT模型增删功能讲述了关于MVT模型中列表的增加数据以及删除数据的功能,在数据返回的过程中,也有部分关于模型之间关联查询的数据。
Devops海洋的渔夫
2019/06/15
10.8K0
多表数据汇总查询之6、字段间比较的查询条件
大海:你可以考虑这样啊,先在PQ的数据里构造一个两个数比较的结果列,然后是不是就跟同一条件多值查询(见文章《按条件动态化查询多表数据之4、同一查询条件多值处理》)的一样了?
大海Power
2021/08/30
7010
15. Django 2.1.7 模型 - 条件查询、模糊查询、空查询、比较查询、范围查询、日期查询
上一篇Django 2.1.7 模型 - MVT模型增删功能讲述了关于MVT模型中列表的增加数据以及删除数据的功能,在数据返回的过程中,也有部分关于模型之间关联查询的数据。
Devops海洋的渔夫
2022/01/17
4.1K0
15. Django 2.1.7 模型 - 条件查询、模糊查询、空查询、比较查询、范围查询、日期查询
从计算、建模到回测:因子挖掘的最佳实践
量化投资与机器学习微信公众号,是业内垂直于量化投资、对冲基金、Fintech、人工智能、大数据等领域的主流自媒体。公众号拥有来自公募、私募、券商、期货、银行、保险、高校等行业30W+关注者,荣获2021年度AMMA优秀品牌力、优秀洞察力大奖,连续2年被腾讯云+社区评选为“年度最佳作者”。 前言 因子挖掘是量化交易的基础。除传统的基本面因子外,从中高频行情数据中挖掘有价值的因子,并进一步建模和回测以构建交易系统,是一个量化团队的必经之路。金融或者量化金融是一个高度市场化、多方机构高度博弈的领域。因子的有效时
量化投资与机器学习微信公众号
2022/05/17
6.6K0
从计算、建模到回测:因子挖掘的最佳实践
Python | 5 分钟解读 Python 中的链式调用
如果你是有打算从事有关数据分析或者数据挖掘的等数据科学领域的工作,或者和我一样目前就是从事相关领域的工作,那么「链式调用」对我们而言是一门必修课。
咸鱼学Python
2020/05/13
3.5K0
DolphinDB:金融高频因子流批统一计算神器!
DolphinDB为海量结构化数据的极速存储、检索、计算与分析提供了一站式解决方案,特别适合金融行业用来处理大规模数据,尤其是L1,L2以及逐笔委托的行情数据。
量化投资与机器学习微信公众号
2021/03/15
4K0
DolphinDB:金融高频因子流批统一计算神器!
链式操作
检测页面是否可用 <script> $(document).ready(function() { }); </script> <script> $(function() { }); </script> jQuery插件 jQuery Validation jQuery Treeview jQuery Autocomplete jQuery UI 避免和其他库的冲突 先引入其他库再引入jQuery的情况。 <script src="other
用户8442333
2021/05/20
6430
PHP中的对象比较
在之前的文章中,我们讲过PHP中比较数组的时候发生了什么?。这次,我们来讲讲在对象比较的时候PHP是怎样进行比较的。
硬核项目经理
2020/03/27
1.9K0
python中字典的比较
今天碰到一个字典比较的问题,就是比较两个字典的大小,其实这个用的不多,用处也没多少,但是还是记录一下。
py3study
2020/01/08
4.6K0
队列的链式存储
#define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<stdlib.h> #include<memory.h> //节点结构体 struct node { //只维护指针域 node* next; }; //队列结构体 struct queue { //头节点 node pheader; //队列的长度 int size; //记录链表尾部的指针 node* ptail; }; //隐藏queue结构体,不让用户改变结构体内部的
大忽悠爱学习
2021/03/05
3450
队列的链式存储
栈的链式存储
#define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<stdlib.h> #include<string.h> #define MAX 1024 //节点的结构体 struct stackNode { //只维护指针域 stackNode* next; }; //栈的结构体 struct lstack { //这里头节点不写成指针形式,是因为栈的结构体会开辟在堆区 //如果头节点用指针形式表示,就要用头节点指针指向一个开辟在堆区的头
大忽悠爱学习
2021/03/05
2930
栈的链式存储
jQuery的链式操作
在jQuery中,执行完mouseover或者mouseout等方法之后,都会返回当前的对象,所以可以进行链式操作(注意语法)
用户7657330
2020/08/14
5230
链式调用this
jQuery在JavaScript库中的一哥地位是不可撼动的,虽然随着这几年框架的崛起和一些大平台移除了jQuery的依赖,但不可否认jQuery还是前端开发必须掌握的技能。
wade
2020/04/24
1.1K0
链式调用this
链式Consumer
今天发现一种方便的链式Consumer写法 import lombok.experimental.UtilityClass; import java.util.function.Consumer; import java.util.stream.Stream; /** * @author VampireAchao * @since 2022/6/2 10:57 */ @UtilityClass public class LambdaHelper { @SafeVarargs pu
阿超
2022/08/21
5920
链式调用
爱学习的前端歌谣
2023/10/24
1320
链式调用

相似问题

Scala中的链式比较

23

查询dolphindb中占用的内存

128

简化链式比较

237

Python链式比较

42

奇怪的链式比较

10
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文