我如何才能绝对获得ARAnchor的偏航,俯仰和滚动?

第二

我已经尝试了好几天了。

给定一个基于ARKit的应用程序,可以在其中跟踪用户的脸部,如何从其锚点获取绝对值的脸部旋转?

我可以得到ARAnchor的转换,它是simd_matrix4x4。关于如何从该矩阵中获取位置的信息很多(这是第3列),但轮换方面没有任何信息!

我希望能够通过传递YAW,PITCH和ROLL来控制应用程序外部的3D对象。

我尝试的最新东西实际上有些起作用:

let arFrame = session.currentFrame!
guard let faceAnchor = arFrame.anchors[0] as? ARFaceAnchor else { return }

let faceMatrix = SCNMatrix4.init(faceAnchor.transform)
let node = SCNNode()

node.transform = faceMatrix
let rotation = node.worldOrientation

rotation.x .y和.z具有我可以使用的值,但是当我移动手机时,这些值会改变例如,如果我转动180°并继续注视着电话,则值会根据电话的位置而发生巨大变化。

我尝试在ARConfiguration中更改世界对齐方式,但这并没有改变。

我读错了参数吗?这应该容易得多!

第二

我知道了...

有了面部锚点之后,就需要使用其变换矩阵和相机的变换进行一些计算。

像这样:

let arFrame = session.currentFrame!
guard let faceAnchor = arFrame.anchors[0] as? ARFaceAnchor else { return }

let projectionMatrix = arFrame.camera.projectionMatrix(for: .portrait, viewportSize: self.sceneView.bounds.size, zNear: 0.001, zFar: 1000)
let viewMatrix = arFrame.camera.viewMatrix(for: .portrait)

let projectionViewMatrix = simd_mul(projectionMatrix, viewMatrix)
let modelMatrix = faceAnchor.transform
let mvpMatrix = simd_mul(projectionViewMatrix, modelMatrix)

// This allows me to just get a .x .y .z rotation from the matrix, without having to do crazy calculations
let newFaceMatrix = SCNMatrix4.init(mvpMatrix)
let faceNode = SCNNode()
faceNode.transform = newFaceMatrix
let rotation = vector_float3(faceNode.worldOrientation.x, faceNode.worldOrientation.y, faceNode.worldOrientation.z)

rotation.x .y和.z将分别返回面的俯仰,偏航,横滚

我要添加一个小的乘数并将轴的2取反,因此最终结果如下:

yaw = -rotation.y*3
pitch = -rotation.x*3
roll = rotation.z*1.5

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Pannellum 360图像查看器-获得俯仰和偏航

使用Eigen库从旋转矩阵获得俯仰和偏航

如何根据偏航,俯仰和横滚值旋转对象

偏航,俯仰滚动至glm :: rotate

迅捷陀螺仪偏航,俯仰,滚动

俯仰和偏航-位置和传送

javafx-如何相对于节点旋转轴而不是场景旋转轴将偏航,俯仰和滚动增量(不是欧拉)应用于节点?

如何计算3D点的偏航角,俯仰角和侧倾角?

如何在Swift中获取iPhone的当前俯仰,偏航和侧倾?

如何从前向矢量计算俯仰和偏航值

从ARKit中的faceAnchor中提取偏航/俯仰/滚动

使用Cwiid Python的Wiimote Motion Plus的俯仰和偏航

在Flutter中获取设备方向(偏航,横摇和俯仰)

我如何才能获得无需滚动即可显示的html5验证消息?

为什么PlayerController“拥有”偏航俯仰和摇摆,而角色“拥有”其位置?

OpenGL中鼠标输入背后的数学运算和偏航/俯仰值

JavaFX 8转换为俯仰,偏航和侧倾旋转角度

Unity Google VR-从Android设备获取旋转,偏航和俯仰值

Unity3d根据俯仰,横滚和偏航角度列表平滑地旋转对象

处理:从matrix4x4获取偏航角,俯仰和横滚角

相机俯仰/偏航到方向向量

我如何才能获得聪明的常识?

从GLKQuaternion中提取了意外的滚动和俯仰

我如何获得真正的滚动条?

我怎样才能从字符中获得和的值

我如何获得与symfony的路由的绝对URL

2 个传感器读数融合(偏航、俯仰)

我如何才能创建无尽的两侧滚动recyclerView?

我如何才能使金额滚动浏览该部分?