Я работаю над приложением PD measure poc для iPhone.я пробовал с другими подходами для измерения pd, но все еще не получаю точный результат.
я получаю faceAnchor от func renderer(_ renderer: SCNSceneRenderer, didUpdate node: SCNNode, for anchor: ARAnchor)
, который является методом делегата ARSCNView.
тогда после от faceAnchor я получаю
* * * +1007 1008 * faceAnchor.leftEyeTransform: simd_float4x4 ([[0,99813265, -0,0015954619, 0,061063215, 0,0], [0,0, 0,9996588, 0,026119122, 0,0], [-0,061084054, -0,026070349, 0,9977921, 0,0], [0,03364487,0.027366925, 0.025988795, 1.0]])
и
faceAnchor.rightEyeTransform: simd_float4x4 ([[0.99992144, 0.00032705365, -0.01253119, 0.0], [0.0, 0.999]0,026090285, 0,0], [0,0125354575, -0,026088236, 0,99958104, 0,0], [-0,03348996, 0,027303606, 0,025771776, 1,0]])
матрица
, затем я создал левый глазвектор и вектор правого глаза SCNVector3 с помощью
func createVector(simdFloat: simd_float4x4) -> SCNVector3 {
return SCNVector3(simdFloat.columns.3.x, simdFloat.columns.3.y, simdFloat.columns.3.z)
}
, затем используется
let distanceInMeter = distance(float3(leftEyeVector), float3(rightEyeVector))
let distanceInmm = Float(distanceInMeter * 1000)
Я также пытался с
let distanceX = self.x - toVector.x
let distanceY = self.y - toVector.y
let distanceZ = self.z - toVector.z
return fabsf(sqrtf((distanceX * distanceX) + (distanceY * distanceY) + (distanceZ * distanceZ)))
а также пробовал с созданным пользователем glkvector3г
func glkVector3FromARFaceAnchorTransform(_ transform: simd_float4) -> GLKVector4 {
return GLKVector4Make(transform.x, transform.y, transform.z, transform.w)
}
, а затем
let distanceInMeter = GLKVector3Distance(leftEyePosition, righEyePosition)
я также пробовал с
let distanceInMeter = simd_distance(rightEyeTransform.columns.3, leftEyeTransform.columns.3)
я пробовал с blendShapes, но все еще не получалТочный результат.
Вы можете мне помочь?
Работали ли вы раньше над этим типом измерения PD?
Пожалуйста, поделитесь своей идеей или кодом для справки.
Спасибо.