Lor*_*tti 3 overlay blur scenekit sprite-kit swift
我在SCNScene上有一个OverlayPanel SKScene.此面板包含SKSpriteNode颜色.我不知道如何向面板添加背景模糊效果.
另一个问题:我使用此方法添加面板:
colorPanelScene = SKScene(fileNamed: "art.scnassets/ColorPanelScene")!
SCNsceneView.overlaySKScene = colorPanelScene
SCNsceneView.overlaySKScene!.userInteractionEnabled = true;
Run Code Online (Sandbox Code Playgroud)
这是正确的方法还是我应该将面板创建为单独的UIView(并以简单的方式应用模糊效果)?
您可以添加SKEffectsNode
到叠加场景以实现此效果.
这有点棘手,但是按照你的方式加载它是不够的.
此方法仅适用于静态背景.基本上我们要做的是屏幕拍摄背景,然后将其加载SKEffectNode
到模糊中.
在SceneKit编辑器中,向场景中添加一个节点(确保它不是其他节点的子节点),并确保将此节点的类设置为SKEffectNode
带有名称的类,我将其称为EffectNode.这应该zPosition
在设计时尽可能最低.
然后在代码中,您要执行以下操作:
if let effectNode = colorPanelScene.childNodeWithName("EffectNode") as? SKEffectNode {
let blur = CIFilter(name:"CIGaussianBlur",withInputParameters: ["inputRadius": 10.0]);
effectNode.filter = blur;
effectNode.shouldRasterize = true;
effectNode.shouldEnableEffects = true;
UIGraphicsBeginImageContextWithOptions(view.bounds.size, true, 0)
view.drawViewHierarchyInRect(view.bounds, afterScreenUpdates: true)
let image = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
let node = SKSpriteNode(texture:SKTexture(image: image));
effectNode.addChild(node);
}
Run Code Online (Sandbox Code Playgroud)
然后,再添SKNode
上的顶部SKEffectNode
,但要确保它不是的一个孩子SKEffectNode
.将所有叠加元素都抛入其中SKNode
.
归档时间: |
|
查看次数: |
1422 次 |
最近记录: |