【发布时间】:2020-04-07 02:05:26
【问题描述】:
我正在使用 ARKit 面部跟踪配置并实时显示面部网格,我可以成功为其添加漫反射和法线贴图,并且它们显示正确,但是粗糙度或金属度没有运气,粗糙度没有效果,金属度是渲染所有黑色和暗淡/不透明,我尝试过的事情:
self.contentNode?.geometry?.firstMaterial?.roughness.contents = UIColor.black //UIColor.whiteself.contentNode?.geometry?.firstMaterial?.metalness.contents = UIColor.black //UIColor.whiteself.contentNode?.geometry?.firstMaterial?.roughness.contents = myMetallnessTextureImageself.contentNode?.geometry?.firstMaterial?.metalness.contents = myRoughnessTextureImage
值得注意的是,大部分的光照管理都是由会话完成的,这就是为什么网格在使用它时会响应环境光和直射光,而当只有环境光时,网格看起来是介电的/粗糙的,当有强定向光时,它看起来金属/光滑,是会话控制了这些参数吗?
如果我将面网格导出为.obj,当在 Xcode 上打开它时,我可以调整材质属性,并且我可以获得一个完全金属光泽的面,但是当将相同的参数实时应用于我的网格时,它们会不工作。
最后,我想要的是能够通过使用灰度图使脸部的某些部分成为金属色。
另外我知道面部跟踪配置不允许使用环境贴图(如果错误请纠正我),因此完全镜像的纹理看起来非常不真实,但无论如何,它应该可以工作。
谢谢!
【问题讨论】:
-
如何管理场景的光照环境?你在用
ARSCNView吗?您的材质是否正确设置为使用 PBR 光照模型? -
@mnuages 是的,我使用的是
ARSCNView,并且材质也已设置:material.lightingModel = .physicallyBased,场景闪电由会话处理,ARFaceTrackingConfiguration自动处理面部网格上的光线. -
你的场景中有灯光吗?
-
@Hermes 不是我添加的,不确定这个配置是否添加了灯光,无论如何,我解决了,我缺少一个参数,请检查答案。谢谢。
标签: cocoa-touch scenekit arkit metal pbr