代码之家  ›  专栏  ›  技术社区  ›  Jay Haase

转换整个Cocos2d层以模拟X射线外观

  •  1
  • Jay Haase  · 技术社区  · 14 年前

    我正在用Cocos2d构建一个iPad应用程序。

    我想将整个层(以及它的所有子精灵)转换成看起来有点x光的东西。也就是说,一个黑白图像,白色有点发光。

    我希望你们中的一个有一两个想法。:-)

    2 回复  |  直到 14 年前
        1
  •  1
  •   Jay Haase    14 年前

    下面是我如何实现一个动态解,它只是一点x射线(我认为它实际上更接近图像的逆)。我无法预处理图像,因为我必须从游戏层的当前状态创建奇怪的图像。

    这都是使用Cocos2d完成的:

    1. 我为我的场景创建了两层。一层是游戏的主层,另一层是效果层。主游戏层是CCLayer的子类。效果层是cccolorrayer的子类。

    2. 效果层的z阶高于主游戏层,即效果层高于游戏层。

    3. 然后我使用了两种不同的混合模式,将外观从普通模式更改为x光模式。

    代码let

    @implementation EffectLayer
    
    - (id) init
    { 
        self = [super init];
    
        if (self != nil)
        {
            self.isTouchEnabled = YES;
            self.color = ccc3(255, 255, 255);
            self.opacity = 0.8;
            [self goNormal];
        }
    
        return self;
    }
    
    - (void) goWeird
    {
        [self setBlendFunc:(ccBlendFunc){GL_ONE_MINUS_DST_COLOR, GL_ZERO}];    
    }
    
    - (void) goNormal
    {
        [self setBlendFunc:(ccBlendFunc){CC_BLEND_SRC, CC_BLEND_DST}];        
    }
    
        2
  •  1
  •   Glorfindel Doug L.    5 年前

    这是我在考虑RGB图像A时想到的。

    • 将A转换为8位灰度
    • 应用过滤器增强a的边(*)
    • 用淡蓝色代替白色
    • 应用发光效果或平滑过滤器

    (我用 ImageJ 它可以是一种方式,即使是一种可怜的方式,也决不会表现出骨骼效应)

    (*)还可以使用微分矩阵(例如 Sobel's )在卷积滤波器中

    既然我不是平面设计师,我最好把我的例子贴出来,让你节省时间: imagebam.com imagebam.com imagebam.com

    (缩略图似乎不可单击) 以下是单数链接: