Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 变换整个Cocos2d层以模拟X射线外观_Iphone_Ipad_Image Processing_Cocos2d Iphone_Effects - Fatal编程技术网

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

Iphone 变换整个Cocos2d层以模拟X射线外观,iphone,ipad,image-processing,cocos2d-iphone,effects,Iphone,Ipad,Image Processing,Cocos2d Iphone,Effects,我正在用Cocos2d构建一个iPad应用程序 我想将整个层(及其所有子精灵)转换为看起来有点x射线的东西。也就是说,一个黑白图像,白色发光一点 我希望你们中的一个有一两个想法。:-) 在考虑RGB图像A时,我想到了这一点 将A转换为8位灰度 应用过滤器以增强a的边(*) 用淡蓝色代替白色 应用发光效果或平滑过滤器 (我已经用它测试过了,它可能是一种方法,即使是一种很差的方法,也绝不会显示骨骼效应) (*)还可以在卷积滤波器中使用微分矩阵(如) 由于我不是一名平面设计师,我最好发布我的示例,

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

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


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

在考虑RGB图像A时,我想到了这一点

  • 将A转换为8位灰度
  • 应用过滤器以增强a的边(*)
  • 用淡蓝色代替白色
  • 应用发光效果或平滑过滤器
(我已经用它测试过了,它可能是一种方法,即使是一种很差的方法,也绝不会显示骨骼效应)

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

由于我不是一名平面设计师,我最好发布我的示例,以节省您的时间:

(缩略图似乎不可“点击”) 这些是单数链接:


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

这一切都是使用Cocos2d完成的:

  • 我为我的场景创建了两个层。一层是主游戏层,另一层是效果层。主游戏层是从CCLayer子类化的。效果层是CCColorLayer的子类

  • 效果层的z阶高于主游戏层,也就是说,效果层位于游戏层之上

  • 然后,我使用两种不同的混合模式将外观从法线更改为x射线

  • 代码出租
    谢谢你提供的信息,你知道如何制作一些逼真的x光片!我不确定我是否知道如何在Cocos2d中对层及其所有子层执行此操作。我正在使用Cocos2d中的混合进行x射线近似(更像是反向图像)。如果你不想动态地(即可以更改的图像集是固定的),你可以将它们作为新图像进行预处理,并在旧图像和已处理图像之间进行转换
    @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}];        
    }