swift - Swift:使用ARKit Front Camera获取位于“面部坐标”的z向量的1m向量的x和y“世界坐标”
问题描述
我正在尝试计算 z 向量(人脸坐标)的 x 和 y 世界坐标,但结果不准确。难道我做错了什么?
谢谢 这是代码。
public func renderer(_ renderer: SCNSceneRenderer, didUpdate node:
SCNNode, for anchor: ARAnchor) {
guard let faceAnchor = anchor as? ARFaceAnchor else { return }
let blendShapes = faceAnchor.blendShapes
DispatchQueue.main.async {
let eyeParameter = blendShapes[.eyeBlinkRight]
let eyeParameterFloat = CGFloat(truncating: eyeParameter!)
//Obtain transform matrix (World coordinates -> Face coordinates)
let faceMatrix = faceAnchor.transform //Transform property inherent from ARAnchor!
//Inverse the matrix (Face coordinates -> World coordinates)
let inverseFaceMatrix = faceMatrix.inverse
//Convert inverse matrix to inverse SCN Matrix
let scnInvMatrix = SCNMatrix4(inverseFaceMatrix)
//Create 1m SCNVector on the z axe of the face coordinates
let scnVector = SCNVector4(0.0,0.0,1.0,0.0)
//Multiply Vector and Inv Matrix
let FaceVector = self.multiplyMatrixVector(matrix:
scnInvMatrix, vector: scnVector)
解决方案
推荐阅读
- php - GAPI.LOL API 在打开游戏时抛出未知错误
- json - 我有两个 Json 对象。通过使用 Scala 我如何合并这两者?
- django - Reactify Django 或分离的前端和后端
- php - 页脚受到引导程序 c;ass 的影响
- css - SassError:在 npm install sass-loader 后找不到要导入的样式表
- ruby-on-rails - 视图中使用的简单方法应该在哪里定义?
- scala - 我如何将Scala数据框中的每一行重复N次
- windows - 什么 pdfViewer 建议我使用 INK for UWP?
- c# - 缓慢的记录迭代
- r - 在R中循环字符变量