将图形放在额头 ARFaceGeometry 顶点

Place Graphic on Forehead ARFaceGeometry Vertex

我正在尝试找到引用 ARFaceGeometry 网格索引的方法 为了使用 ARKit 将图形放置在面部的特定部位。

我见过很多例子,其中功能与一些 索引号,但我找不到对此列表的任何引用。它似乎 有超过1200个地点。一个教程在左侧使用索引 1064 眼睛。这些数字的来源是什么?这似乎是不好的做法 参考硬性数字 - 如果 Apple 增加更多会怎样?

仅举个例子,假设我制作了一个纹身图片并想将其附加到 用户的额头。我如何找到参考?

我可以像这样在鼻子上粘贴图形 - 但同样,我找不到编号列表 顶点 - 我盲目地使用了有人提到的数字。

func updateFeatures(for node : SCNNode, using anchor : ARFaceAnchor) {

    let child = node.childNode(withName: "myNose", recursively: false) as? MyGraphicNode
    let vertices = [anchor.geometry.vertices[9]]
    child?.updatePosition(for: vertices)

}

任何指南都是 appreciated.Xcode 10 beta 6,iPhoneX

虽然到目前为止,ARFaceGeometry 网格在所有 iOS 11.x 版本和 iOS 12 个测试版中都保持稳定 — 并且它至少保证在地形上保持不变在一个会话中稳定——没有说苹果是否或何时可能会改变网格(比如,有更多的顶点)。语义标记的顶点没有 API。

因此,如您所料,可以将 3D 艺术资产 锚定到兴趣点(例如鼻尖或左眼外角等)如果您通过反复试验找出该点对应的顶点索引,但很难知道该索引在未来 iOS 构建、未来硬件等方面是否仍然有意义

但是,您说的是 "tattoo graphic",这听起来像是 2D 艺术资产 — 您想要的视觉效果可能不是将平面固定到 3D 面上,而是让您的 2D 艺术出现仿佛印在皮肤上。在那种情况下,您根本不想处理顶点。只需将纹理图像应用于几何体 / material — 与网格拓扑不同,更容易想象纹理映射坐标在不同版本中保持相同,因为几何体可以改变而纹理保持不变。可能需要反复试验才能找到纹理图像的哪些区域适用于面部的哪些区域,但一旦找到结果,您就可以无限期地重复使用它。