首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >ARKit 2.0 - "lookAtPoint“属性始终为零

ARKit 2.0 - "lookAtPoint“属性始终为零
EN

Stack Overflow用户
提问于 2018-08-24 08:11:36
回答 2查看 857关注 0票数 2

我在iOS 12 (16A5288q)下使用ARKit 2,使用Xcode10Beta6构建,在iPhone X上运行,lookAtPoint总是零。

我使用以下命令访问面部数据(在Swift中):

代码语言:javascript
复制
func renderer(_ renderer: SCNSceneRenderer, didUpdate node: SCNNode, for anchor: ARAnchor) {
    guard let faceAnchor = anchor as? ARFaceAnchor else { return }

    FaceAnchorsProcessedCount = FaceAnchorsProcessedCount + 1
    let rightEyeTransform: simd_float4x4 = faceAnchor.rightEyeTransform
    let leftEyeTransform:  simd_float4x4 = faceAnchor.leftEyeTransform
    let lookAtPoint:       simd_float3   = faceAnchor.lookAtPoint
}

我得到的数据如下:

代码语言:javascript
复制
rightEyeTransform    simd_float4x4    \n[ [9.999874e-01, 0.000000e+00, 5.010252e-03, -3.208227e-02],\n  [2.375229e-04, 9.988756e-01, -4.740678e-02, 2.703529e-02],\n  [-5.004618e-03, 4.740737e-02, 9.988630e-01, 2.525132e-02],\n  [0.000000e+00, 0.000000e+00, 0.000000e+00, 1.000000e+00] ]\n    
leftEyeTransform     simd_float4x4    \n[ [9.978353e-01, 0.000000e+00, -6.576237e-02, 3.208223e-02],\n  [-3.110934e-03, 9.988804e-01, -4.720329e-02, 2.703534e-02],\n  [6.568874e-02, 4.730569e-02, 9.967182e-01, 2.525137e-02],\n  [0.000000e+00, 0.000000e+00, 0.000000e+00, 1.000000e+00] ]\n    
lookAtPoint          simd_float3      (0.000000e+00, 0.000000e+00, 0.000000e+00)    

我做错了什么?或者这是一个已知的bug?

更新2018年10月4日我今天做了一个简单的lookAtPoint测试。我把脸靠近听筒,然后又移得更远,再一次靠近听筒。lookAtPoint的最小z为38.59英寸,最大为39.17英寸(从米转换而来)。

用卷尺测量的实际距离为~4.5英寸和~33英寸。

苹果公司宣称,lookAtPoint将“……相对于面部,估计用户的眼睛聚焦在哪个点上。”似乎是不正确的。

EN

回答 2

Stack Overflow用户

发布于 2018-08-24 09:17:33

是的,我一个月前就试过了,我可以说你是绝对正确的--在那一刻,lookAtPoint实例属性不起作用,甚至连存根都没有。现在它总是返回float3(0.0, 0.0, 0.0)

我猜苹果还没有实现它(它还处于测试状态)。Cross eyes' detection是一个ARKit的特性,我们似乎会在iOS 12最终稳定版中看到它。

目前我没有Mac,也不能检查它,所以尝试使用具有如下开放实例属性的open class

代码语言:javascript
复制
open class ARFaceAnchor: ARTrackable {
    open var leftEyeTransform: simd_float4x4 { get } 
    open var rightEyeTransform: simd_float4x4 { get } 
    open var lookAtPoint: simd_float3 { get }
}

希望它能帮上忙!

票数 0
EN

Stack Overflow用户

发布于 2018-09-18 07:27:21

今天,与XCode 10 (替代测试版)一起发布了iOS 12。我用这些新版本测试了访问lookAtPoint,现在正在填充向量。

Swift代码:

代码语言:javascript
复制
func renderer(_ renderer: SCNSceneRenderer, didUpdate node: SCNNode, for anchor: ARAnchor) {
    guard let faceAnchor = anchor as? ARFaceAnchor else { return }

    let lookAtPoint: simd_float3 = faceAnchor.lookAtPoint
    os_log("lookAtPoint: %.12f,%.12f,%.12f", type: .debug, lookAtPoint.x, lookAtPoint.y, lookAtPoint.z)

日志输出:

代码语言:javascript
复制
2018-09-17 16:17:12.097369-0700 EyeSync[512:41060] lookAtPoint: 0.049317009747,-0.004630976822,0.981833696365
2018-09-17 16:17:12.113925-0700 EyeSync[512:41060] lookAtPoint: 0.050239805132,-0.006484962534,0.981752157211
2018-09-17 16:17:12.130867-0700 EyeSync[512:41060] lookAtPoint: 0.051697697490,-0.011350239627,0.981206715107
2018-09-17 16:17:12.147272-0700 EyeSync[512:41060] lookAtPoint: 0.052744854242,-0.012763299979,0.981896817684
2018-09-17 16:17:12.163683-0700 EyeSync[512:41060] lookAtPoint: 0.054889015853,-0.015469233505,0.982917487621
2018-09-17 16:17:12.180636-0700 EyeSync[512:41060] lookAtPoint: 0.056391790509,-0.017265520990,0.983718335629
2018-09-17 16:17:12.197387-0700 EyeSync[512:41060] lookAtPoint: 0.059109147638,-0.018527992070,0.983208477497
2018-09-17 16:17:12.214021-0700 EyeSync[512:41060] lookAtPoint: 0.061453290284,-0.019032688811,0.981536626816
2018-09-17 16:17:12.230689-0700 EyeSync[512:41060] lookAtPoint: 0.063107110560,-0.019657038152,0.978309571743
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51995867

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档