gpt4 book ai didi

ios - 从 ARSCNFaceGeometry 中提取人脸特征

转载 作者:可可西里 更新时间:2023-11-01 05:07:24 26 4
gpt4 key购买 nike

我一直在尝试从 ARSCNFaceGeometry 中提取面部特征(例如嘴巴)以更改其颜色或添加不同的 Material ,但没有成功。我知道我需要创建一个 SCNGeometry,我有 SCNGeometrySource 但无法创建 SCNGeometryElement。已尝试在 update(from faceGeometry: ARFaceGeometry) 中从 ARFaceAnchor 创建它,但到目前为止还不能。非常感谢有人帮助

最佳答案

ARSCNFaceGeometry 是单个网格。如果您希望它的不同区域具有不同的颜色,最好的办法是应用纹理贴图(您在 SceneKit 中通过为 Material 属性内容提供图像来实现)。

没有与网格中的顶点相关联的语义信息——也就是说,没有任何内容表明“这个点是鼻尖,这些点是上唇的边缘,等等”。但是网格在拓扑上是稳定的,因此如果您创建纹理图像在嘴唇周围添加一点颜色或在眼睛上方添加闪电或其他任何东西,它会在脸部四处移动时保持原样。

如果您在开始绘制纹理方面需要帮助,可以尝试以下几种方法:

首先创建一个虚拟纹理

制作一个正方形图像并用双渐变填充它,这样每个像素的红色和蓝色分量基于该像素的 x 和 y 坐标。或者其他一些独特的图案。将该纹理应用于模型,并查看其外观 - 纹理中的地标将指导您在何处绘画。

导出模型

使用 init(blendShapes:) 初始化器和一个空的 blendShapes 字典创建一个虚拟的 ARSCNFaceGeometry(你不需要一个事件的 ARFaceTracking session ,但你确实需要 iPhone X)。使用 SceneKit 的场景导出 API(或模型 I/O)将该模型写入某种 3D 文件(.scn,您可以在 Mac 上进一步处理,或类似 .obj 的文件)。

将该文件导入您最喜欢的 3D 建模工具(Blender、Maya 等)并使用该工具绘制纹理。然后在您的应用中使用带有真实面孔的纹理。


实际上,上面的内容过于简单化了,尽管它是常见情况的简单答案。 ARSCNFaceGeometry 实际上最多可以包含四个子网格,如果您使用 init(device:fillMesh:) 创建它的话初始值设定项。但即使那样,这些部分也不是面部的语义标记区域——它们是常规面部模型中的,是眼睛和嘴巴露出的地方的平面填充物。 p>

关于ios - 从 ARSCNFaceGeometry 中提取人脸特征,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47277914/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com