我正在使用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 上打开它时,我可以调整材质属性,并且可以获得完全金属光泽的面,但是当将相同的参数实时应用于我的网格时,它们不起作用。
最后,我想要的是能够通过使用灰度贴图使面部的某些部分具有金属感。
我也知道面部跟踪配置不允许环境地图(如果错误请纠正我(,因此完全像镜子一样的纹理看起来很不真实,但无论如何,它应该可以工作。
谢谢!
已解决,我的设置方法中缺少此参数:
sceneView.autoenablesDefaultLighting = true
这在网格反射中增加了似乎是环境光的东西,粗糙度和金属度正在生效。