【问题标题】:ARKit face tracking PBRARKit 人脸追踪 PBR
【发布时间】:2020-04-07 02:05:26
【问题描述】:

我正在使用 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 上打开它时,我可以调整材质属性,并且我可以获得一个完全金属光泽的面,但是当将相同的参数实时应用于我的网格时,它们会不工作。

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

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

谢谢!

【问题讨论】:

  • 如何管理场景的光照环境?你在用ARSCNView吗?您的材质是否正确设置为使用 PBR 光照模型?
  • @mnuages 是的,我使用的是ARSCNView,并且材质也已设置:material.lightingModel = .physicallyBased,场景闪电由会话处理,ARFaceTrackingConfiguration 自动处理面部网格上的光线.
  • 你的场景中有灯光吗?
  • @Hermes 不是我添加的,不确定这个配置是否添加了灯光,无论如何,我解决了,我缺少一个参数,请检查答案。谢谢。

标签: cocoa-touch scenekit arkit metal pbr


【解决方案1】:

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

sceneView.autoenablesDefaultLighting = true

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

【讨论】:

  • 这么重要的一行代码 :) 非常感谢!!!
猜你喜欢
  • 2021-05-15
  • 1970-01-01
  • 2017-10-05
  • 1970-01-01
  • 1970-01-01
  • 2019-01-20
  • 2014-10-07
  • 2019-11-11
  • 2021-09-03
相关资源
最近更新 更多