如何检索 ARMeshGeometry 给定面的法线?

How retrieve the normal for a given face of ARMeshGeometry?

给定一个 ARMeshAnchor 'meshAnchor',我可以检索它的几何形状和面:

let geometry = meshAnchor.geometry
let faces = geometry.faces
var i = Int(0)
while i < faces.count
{
   //??? get the normal of faces[i]
   i = i+1
}

如何检索面[i] 的世界坐标中的法线?

每张脸有1张法线吗?每个三角形的每个顶点?或每个网格的每个顶点?

根据 Apple 的说法:https://developer.apple.com/documentation/arkit/armeshgeometry/3516923-normals

var normals: ARGeometrySource { get }
= 光线定义每个面的外侧方向

这是我的解决方案。我使用了面部几何体网格锚点中的 int32。此解决方案应该 运行 没有错误。我能够得到正确的解决方案。就像我通过使用场景理解创建的网格表面然后获得地板上的网格面来测试它一样,它返回 0,1,0(y 是向上方向),这是正确的!顺便说一句,我使用 .first 是因为由于三角形的 3 个顶点,数组中存储了 3 个面。而且它们的法线都是一样的,因为它是一个平面。

   for index in 0..<anchor.geometry.faces.count {         
       let x = anchor.geometry.normals[anchor.geometry.faces[index].first!].0
       let y = anchor.geometry.normals[anchor.geometry.faces[index].first!].1
       let z = anchor.geometry.normals[anchor.geometry.faces[index].first!].2
       let normal = SIMD3(x, y, z) 
    }