【问题标题】:Is it possible to apply a filter on a SKEmitterNode?是否可以在 SKEmitterNode 上应用过滤器?
【发布时间】:2014-01-18 16:13:00
【问题描述】:

我有一个带有 SKEmitterNode 的场景,当直接添加到场景时效果很好。

但是,我想在场景中添加一个 SKEffectNode 来模糊发射器粒子。

这就是它的外观。

@implementation MyScene

-(id)initWithSize:(CGSize)size {    
    if (self = [super initWithSize:size]) {
        /* Setup your scene here */

        self.backgroundColor = [SKColor colorWithRed:1.0 green:1.0 blue:1.0 alpha:1.0];

        SKEffectNode *blurNode = [[SKEffectNode alloc] init];

        CIFilter *blurFilter = [CIFilter filterWithName:@"CIGaussianBlur"];
        [blurFilter setValue:@10.0 forKey:kCIInputRadiusKey];
        blurNode.filter = blurFilter;
        blurNode.shouldEnableEffects = YES;

        NSString *bokehPath = [[NSBundle mainBundle] pathForResource:@"Bokeh" ofType:@"sks"];
        SKEmitterNode *bokeh = [NSKeyedUnarchiver unarchiveObjectWithFile:bokehPath];
        [blurNode addChild:bokeh];

        [self addChild:blurNode];
    }
    return self;
}

这会导致空白屏幕。

由于 SKScene 也是 SKEffectNode 的子类,因此我也尝试将 CIFilter 直接添加到场景中。

-(id)initWithSize:(CGSize)size {    
    if (self = [super initWithSize:size]) {
        /* Setup your scene here */

        self.backgroundColor = [SKColor colorWithRed:1.0 green:1.0 blue:1.0 alpha:1.0];

        CIFilter *blurFilter = [CIFilter filterWithName:@"CIGaussianBlur"];
        [blurFilter setValue:@10.0 forKey:kCIInputRadiusKey];

        NSString *bokehPath = [[NSBundle mainBundle] pathForResource:@"Bokeh" ofType:@"sks"];
        SKEmitterNode *bokeh = [NSKeyedUnarchiver unarchiveObjectWithFile:bokehPath];
        [self addChild:bokeh];

        self.filter = blurFilter;
    }

    return self;
}

同样的结果。

【问题讨论】:

    标签: ios iphone sprite-kit skemitternode


    【解决方案1】:

    如果您确实将滤镜直接应用于场景,则可以实现此效果。将以下内容添加到您的第二个代码中:

    self.shouldEnableEffects = YES;
    

    如果您仍然看到空白屏幕,请尝试在黑色背景上使用亮色粒子而不是白色背景来实现此效果。但预计帧率会大幅下降。在粒子编辑器中为粒子本身使用模糊纹理可能会更好。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-03-04
      • 1970-01-01
      • 2020-08-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多