将CIFilter添加到SCNNode会将节点转换为白盒

时间:2018-02-27 01:38:49

标签: ios scenekit arkit

我想将CIGaussianBlur添加到正在ARKit中显示的SCNNode

但是,添加该过滤器会将节点变为“白框”。这是没有和带过滤器的节点。

CIFilter

SCNNode with no CIFilter

使用CIFilter

SCNNode with CIFilter

以下是相关代码:

let gaussianBlurFilter = CIFilter(name: "CIGaussianBlur")!
gaussianBlurFilter.name = "blur"

node.filters = [gaussianBlurFilter]
let material = node.geometry?.firstMaterial
material?.diffuse.contents = UIColor.blue

node.position = SCNVector3(x: 0, y: 0, z: -0.39)
camera.addChildNode(node)

以前的Stack Overflow问题表明在Metal上无法添加CIFilter,但我相信现在可以从iOS 11开始。

另外,我正试图在UIVisualEffectView上实现SCNNode类型的效果,所以如果您知道另一种方法,请告诉我们!

1 个答案:

答案 0 :(得分:1)

您可以尝试以下方法:

let gaussianBlur    = CIFilter(name: "CIGaussianBlur")
gaussianBlur?.name  = "blur"
gaussianBlur?.setValue(15, forKey: "inputRadius")
node.filters        = [gaussianBlur] as? [CIFilter]

并像这样配置SceneView:

sceneView.antialiasingMode    = .none
sceneView.isJitteringEnabled  = false

enter image description here