Преобразование всего слоя Cocos2d для имитации рентгеновского снимка - PullRequest
1 голос
/ 10 ноября 2010

Я создаю приложение для iPad с Cocos2d.

Я хотел бы преобразовать весь слой (и все его дочерние спрайты) во что-то вроде рентгеновского снимка.То есть черно-белое изображение с белым светящимся чуть-чуть.

Надеюсь, у одного из вас, графических ребят, есть идея или две.: -)

Ответы [ 2 ]

1 голос
/ 12 ноября 2010

Вот как я реализовал динамическое решение, которое немного рентгеновское (я думаю, что оно на самом деле ближе к инверсии изображения).Я не мог предварительно обработать изображения, потому что мне нужно было создать странное изображение из текущего состояния игрового слоя.

Все это было сделано с использованием Cocos2d:

  1. Я создал два слоя для моей сцены.Один слой является основным игровым слоем, другой слой является слоем эффектов.Основной игровой слой разделен на подклассы от CCLayer.Слой эффекта подклассируется из CCColorLayer.

  2. Слой эффекта находится в более высоком z-порядке, чем основной игровой слой, то есть слой эффекта находится над игровым слоем.

  3. Затем я использовал два разных режима смешивания, чтобы изменить внешний вид с нормального на рентгеновский.

Код-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}];        
}
1 голос
/ 10 ноября 2010

Это приходит мне на ум при рассмотрении RGB-изображения A.

  • Преобразование А в 8-битную шкалу серого
  • Применение фильтра для усиления краев А (*)
  • Заменить белый на слабый синий
  • Применение светящегося эффекта или сглаживающего фильтра

(я протестировал его с ImageJ , и это может быть способ, даже если плохой, никоим образом не будет демонстрировать скелетный эффект)

(*) Вы также можете использовать дифференциальную матрицу (например, Sobel's ) в сверточном фильтре

Поскольку я не являюсь графическим дизайнером, я бы лучше опубликовал пример, над которым работал, чтобы сэкономить время: imagebam.com http://thumbnails35.imagebam.com/10604/a9d418106030147.jpg imagebam.com http://thumbnails28.imagebam.com/10604/0a3678106030160.jpg imagebam.com http://thumbnails33.imagebam.com/10604/dd7883106030183.jpg

(похоже, что миниатюры не «кликабельны») Это единственные ссылки:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...