iOS11 ARKit:ARKit还可以捕获用户脸部的纹理吗?

iOS11 ARKit:ARKit还可以捕获用户脸部的纹理吗?,第1张

概述我上下阅读了所有ARKit类的完整文档.我没有看到任何描述实际获取用户面部纹理的能力的地方. ARFaceAnchor包含ARFaceGeometry(由顶点组成的拓扑和几何)和BlendShapeLocation数组(允许通过 *** 纵用户面顶点上的几何数学来 *** 纵各个面部特征的坐标). 但是我在哪里可以获得用户脸部的实际纹理.例如:实际的肤色/肤色/纹理,面部毛发,其他独特的特征,如疤痕或出生痕迹?或 我上下阅读了所有ARKit类的完整文档.我没有看到任何描述实际获取用户面部纹理的能力的地方.

ARFaceAnchor包含ARFaceGeometry(由顶点组成的拓扑和几何)和BlendShapeLocation数组(允许通过 *** 纵用户面顶点上的几何数学来 *** 纵各个面部特征的坐标).

但是我在哪里可以获得用户脸部的实际纹理.例如:实际的肤色/肤色/纹理,面部毛发,其他独特的特征,如疤痕或出生痕迹?或者这根本不可能?

解决方法 你想要一个面部的纹理贴图风格的图像?没有API可以帮助您,但您需要的所有信息都在那里:

> ARFrame.capturedImage为您提供相机图像.
> ARFaceGeometry为您提供面部的3D网格.
> aranchor和ARCamera一起告诉您脸部相对于相机的位置,以及相机与图像像素的关系.

因此,完全可以使用当前视频帧图像来纹理人脸模型.对于网格中的每个顶点…

>将顶点位置从模型空间转换为相机空间(使用锚点的变换)
>使用该矢量与相机投影相乘,以获得标准化的图像坐标
>除以图像宽度/高度以获得像素坐标

这将获得每个顶点的纹理坐标,然后您可以使用相机图像对网格进行纹理处理.您可以一次性完成此数学运算以替换ARFaceGeometry提供的纹理坐标缓冲区,或者在渲染期间在GPU上的着色器代码中执行此 *** 作. (如果使用SceneKit / ARSCNVIEw进行渲染,则可以在geometry入口点的着色器修改器中执行此 *** 作.)

相反,如果你想知道相机图像中每个像素对应的面部几何形状的哪一部分,那就更难了.你不能只是颠倒上面的数学,因为你错过了每个像素的深度值……但如果你不需要映射每个像素,SceneKit命中测试是获取单个像素几何的简单方法.

如果你真正要求的是具有里程碑意义的认可 – 例如在相机图像中的位置是眼睛,鼻子,胡须等 – 在ARKit中没有API. Vision框架可能有所帮助.

总结

以上是内存溢出为你收集整理的iOS11 ARKit:ARKit还可以捕获用户脸部的纹理吗?全部内容,希望文章能够帮你解决iOS11 ARKit:ARKit还可以捕获用户脸部的纹理吗?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1008474.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-22
下一篇 2022-05-22

发表评论

登录后才能评论

评论列表(0条)

保存