追記(2008/10/06): サンプルプロジェクトを作った.エントリーと異なる部分もあるが許してください.
Filter設定部
ここではページめくりのトランジション.
…
@class CIImage;
@class CIFilter;
…
@interface Transition : NSObject {
…
CIImage *_inputShadingImage;
CIFilter *_transitionFilter;
…
}
@end
@implementation Transition
…
- (void)start {
[self createTransitionFilter];
…
//アニメーションのスタート 5を参照
}
- (void)createTransitionFilter {
[_transitionFilter release];
_transitionFilter = nil;
NSRect rect = [_delegate bounds];
_transitionFilter = [[CIFilter filterWithName:@"CIPageCurlTransition"] retain];
[_transitionFilter setDefaults];
[_transitionFilter setValue:_initialImage forKey:@"inputImage"];
[_transitionFilter setValue:_finalImage forKey:@"inputTargetImage"];
[_transitionFilter setValue:_initialImage forKey:@"inputBacksideImage"];
[_transitionFilter setValue:_inputShadingImage forKey:@"inputShadingImage"];
[_transitionFilter setValue:[NSNumber numberWithFloat:M_PI_4] forKey:@"inputAngle"];
[_transitionFilter setValue:[CIVector vectorWithX:rect.origin.x Y:rect.origin.y Z:rect.size.width W:rect.size.height] forKey:@"inputExtent"];
}
…
@end
"_inputShadingImage"にいれる画像だがよくわからないが表現上大切らしい.
Core Image Fun Houseの画像から転用してみてはどうだろう.とりあえず用意してリソースからゲットしてみる.
NSBundle *bundle = [NSBundle mainBundle];
NSData *shadingBitmapData = [NSData dataWithContentsOfFile:[bundle pathForResource:@"restrictedshine" ofType:@"tiff"]];
_inputShadingImage = [[[NSBitmapImageRep alloc] initWithData:shadingBitmapData] autorelease];
0 件のコメント:
コメントを投稿