2

我正在使用 ARKit 面部跟踪配置并实时显示面部网格,我可以成功为其添加漫反射和法线贴图,并且它们显示正确,但是粗糙度或金属度没有运气,粗糙度没有效果,金属度渲染全黑和沉闷/不透明,我尝试过的事情:

  • self.contentNode?.geometry?.firstMaterial?.roughness.contents = UIColor.black //UIColor.white
  • self.contentNode?.geometry?.firstMaterial?.metalness.contents = UIColor.black //UIColor.white
  • self.contentNode?.geometry?.firstMaterial?.roughness.contents = myMetallnessTextureImage
  • self.contentNode?.geometry?.firstMaterial?.metalness.contents = myRoughnessTextureImage

值得注意的是,大部分光照管理是由会话完成的,这就是为什么网格在使用它时会响应环境光和直射光,而当只有环境光时,网格看起来是介电/粗糙的,而当有很强的定向光,看起来金属/光滑,是会话控制了这些参数吗?

如果我将面网格导出为.obj,在 Xcode 上打开它时,我可以调整材质属性,并且可以获得完全金属光泽的面,但是当实时将相同的参数应用于我的网格时,它们不起作用。

最后,我想要的是能够通过使用灰度图使脸部的某些部分变成金属色。

另外我知道面部跟踪配置不允许环境贴图(如果错误,请纠正我),因此完全镜像的纹理看起来非常不现实,但无论如何,它应该可以工作。

谢谢!

4

1 回答 1

2

已解决,我在设置方法中缺少此参数:

sceneView.autoenablesDefaultLighting = true

这为网格反射添加了似乎是环境光的东西,并且粗糙度和金属度正在生效。

于 2019-12-15T05:28:56.467 回答