使用基于图像的照明在3D模型上应用PBR纹理

时间:2018-12-14 12:36:16

标签: ios swift scenekit augmented-reality arkit

在ARKit 2.0中,我尝试使用PBR基础材料。使用.obj文件格式的3D模型。

问题:我看不到深色产品。我不确定这是否与在SceneKit中设置适当的照明有关。请帮助我如何在ARKit / SceneKit中设置PBR基础照明。

尝试以下代码:

//Set lighting
let light = SCNLight()
light.type = .ambient
node.light = light

// if light estimation is enabled, update the intensity 
// of the model's lights and the environment map
if let lightEstimate = self.session.currentFrame?.lightEstimate {
    self.enableEnvironmentMapWithIntensity(lightEstimate.ambientIntensity / 1000.0)
} else {
    self.enableEnvironmentMapWithIntensity(6)
}

// Call environment Map
func enableEnvironmentMapWithIntensity(_ intensity: CGFloat) {

    if sceneView.scene.lightingEnvironment.contents == nil {
        if let environmentMap = UIImage(named: "Models.scnassets/sharedImages/environment_blur.exr") {
            sceneView.scene.lightingEnvironment.contents = environmentMap
        }
    }
    sceneView.scene.lightingEnvironment.intensity = intensity
}

必填结果:http://prntscr.com/luwlax

enter image description here

作为参考,请附加PBR材料:

enter image description here

漫射:https://prnt.sc/luwc40

粗糙度:https://prnt.sc/luwcl7

普通:https://prnt.sc/luwcuw

金属:https://prnt.sc/luwdaz

1 个答案:

答案 0 :(得分:0)

如果您具有 分离的几何 (与框架分开的屏幕),则可以很容易地将纹理分配给这些部分。

如果您具有 组合的几何形状 (所有零件都为一件),则构造此类模型的唯一方法是分配pre-made UV-mapped texture