SceneKit - 将晕影添加到 SCNView 无效

SceneKit – Adding vignette to SCNView has no effect

我正在尝试在 SCNView 中设置晕影效果。我在 this tutorial 之后使用或多或少相同的代码执行此操作,因为我对值的范围没有经验。但是当我将它应用到我的 SCNViews 相机对象时,没有任何反应。

关于 vignette 的 docs 读到有必要设置 wantsHDR = true 所以我这样做没有任何明显的区别。

// scene setup (light, models, etc.)
...
sceneView.backgroundColor = .gray
sceneView.allowsCameraControl = true
let camera = sceneView.scene?.rootNode.camera
camera?.wantsHDR = true
camera?.vignettingPower = 0.6

camera?.bloomIntensity = 1.4
camera?.bloomBlurRadius = 1.0
    
camera?.fStop = 20.0
camera?.fStop = 5.0
camera?.focusDistance = 1.0

我只更改了标记为已弃用的参数,但这不是问题所在。

我已经用 Storyboard 实例化了 SCNView,我通过在我的 ViewController 中有一个 Outlet 来访问它,我可以成功地使用很多功能。

此外,我在使用 sceneView.antialiasingMode = .multisampling4X 设置 MSAA4x 时遇到了问题。结果没有区别。还有一些 methods/parameters 与 skybox/environment 照明没有做任何事情(见 )。

控制台中没有显示任何错误。

如果您在场景中添加了新相机,它会渲染晕影。

let cameraNode = SCNNode()
cameraNode.camera = SCNCamera()
cameraNode.position.z = 10
cameraNode.camera?.wantsHDR = true
cameraNode.camera?.vignettingPower = 1
cameraNode.camera?.vignettingIntensity = 1
sceneView.scene?.rootNode.addChildNode(cameraNode)

您的方法无效,因为您正在访问默认摄像头。

cameraNode.camera = sceneView.scene?.rootNode.camera