我有一个场景套件节点,我想为其添加发光效果。
let newScene = SCNScene(named: "art.scnassets/cubeOne.scn")!
let newNode = (newScene.rootNode.childNode(withName: "cubeOneNode", recursively: false))!
newNode.geometry?.firstMaterial?.selfIllumination = UIColor.red
newNode.geometry?.firstMaterial?.ambientOcclusion = UIColor.red
sceneView.scene.rootNode.addChildNode(newNode)
您可以通过使用所谓的 CIFilter 并将其附加到您的节点来实现此目的 - 但我个人不推荐这样做,因为它的性能非常高,并且使用了大约三倍的内存。
我建议在您的相机上配置此功能。它还会花费更多的 GPU 性能和一些内存,但不会像 CIFilter 那样多。尝试一下:
camera.wantsHDR = true
camera.bloomThreshold = 0.8
camera.bloomIntensity = 2
camera.bloomBlurRadius = 16.0
camera.wantsExposureAdaptation = false
然后使用节点材质的
emission.intensity
属性。将其设置在 2.0
到 5.0
之间,具体取决于您希望效果可见的程度。我通常使用 .physicallyBased
照明选项作为我的渲染引擎。
PS:使用红色并不会增加非常强烈的效果。真正强烈的是青色或绿色。使用红色,您可以将
emission.intensity
值提高到 20.0
或更高。