我正在使用 ARKit 面部跟踪配置并实时显示面部网格,我可以成功向其添加漫反射和法线贴图,并且它们显示正确,但粗糙度或 Metal 度没有运气,粗糙度没有效果, Metal 度是渲染全黑和暗淡/不透明,我尝试过的事情:
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
值得注意的是,大部分灯光管理都是由 session 完成的,这就是为什么网格在使用时会对环境光和直射光做出响应,而当只有环境光时,网格看起来是介电/粗糙的,当有强烈的定向光时,它看起来 Metal/光滑,是 session 控制这些参数吗?
如果我将面网格导出为 .obj
,当在 Xcode 上打开它时,我可以调整 Material 属性,并且可以获得完全 Metal 光泽的面,但是当将相同的参数应用于我的实时网格它们不起作用。
最后,我想要的是能够通过使用灰度图使脸部的某些部分具有 Metal 感。
此外,我知道面部跟踪配置不允许环境贴图(如果错误请纠正我),因此完全镜像的纹理看起来非常不现实,但无论如何,它应该可以工作。
谢谢!
最佳答案
已解决,我的设置方法中缺少此参数:
sceneView.autoenablesDefaultLighting = true
这会向网格反射添加似乎是环境光的东西,并且粗糙度和 Metal 度正在生效。
关于cocoa-touch - ARKit人脸追踪PBR,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59325631/