如何更改基于物理的照明模型的光强度或颜色?

问题描述

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

如何降低由基于物理的光照模型创建的光的强度或颜色?

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
}

解决方法

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

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

enter image description here

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

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

enter image description here

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...