1

我正在使用 ARKit 并尝试按照 Apple 示例将纹理应用于面部锚点。但是,纹理上应用了极其明亮的光。

如何降低基于physicallyBased lightingModel 创建的光的强度或颜色?

func createFaceNode(_ renderer: SCNSceneRenderer) {
    guard let sceneView = renderer as? ARSCNView,
          let geometry = ARSCNFaceGeometry(device: sceneView.device!),
          let material = geometry.firstMaterial
    else { return }

    material.diffuse.contents = #imageLiteral(resourceName: "texture")
    material.normal.contents = #imageLiteral(resourceName: "normal")    
    material.lightingModel = .physicallyBased    
    material.ambientOcclusion.contents = UIColor.darkGray
}
4

1 回答 1

1

为基于物理的着色器降低光的漫射强度就像这样简单(但考虑强度的范围从 0 到 1 归一化):

node.geometry?.materials.first?.diffuse.intensity = 0.1

在此处输入图像描述

或者表面对光的反应是正常的:

node.geometry?.materials.first?.diffuse.intensity = 1.0

在此处输入图像描述

于 2021-01-16T12:18:24.100 回答