【特集】
Core Imageで体験 - Mac OS Xの高速画像処理
8 Rippleトランジションにもトライ
2006/05/31
もう少し複雑なフィルタも試してみよう。トランジションフィルタの1つ、Rippleフィルタだ。波紋のようなトランジションエフェクトを作成する。
// CIImageのインスタンスを作成する
CIImage* inputImage;
CIImage* inputTargetImage;
CIImage* inputShadingImage;
inputImage = [CIImage imageWithContentsOfURL:[NSURL fileURLWithPath:path]];
inputTargetImage = [CIImage imageWithContentsOfURL:[NSURL fileURLWithPath:targetPath]];
inputShadingImage = [CIImage imageWithContentsOfURL:[NSURL fileURLWithPath:shadingPath]];
// フィルタを作成する
CIFilter* filter;
filter = [CIFilter filterWithName:@"CIRippleTransition"];
// 入力パラメータをデフォルト値にする
[filter setDefaults];
// 入力画像を設定する
[filter setValue:inputImage forKey:@"inputImage"];
// ターゲット画像を設定する
[filter setValue:inputTargetImage forKey:@"inputTargetImage"];
// 環境マップ画像を設定する
[filter setValue:inputShadingImage forKey:@"inputShadingImage"];
// トランジションが起きる領域を設定する
[filter setValue:[CIVector vectorWithX:0 Y:0 Z:479 W:360] forKey:@"inputExtent"];
// 波紋の中心を設定する
[filter setValue:[CIVector vectorWithX:240 Y:180] forKey:@"inputCenter"];
// トランジションの時間を設定する
[filter setValue:[NSNumber numberWithFloat:0.4f] forKey:@"inputTime"];
CIImage* inputImage;
CIImage* inputTargetImage;
CIImage* inputShadingImage;
inputImage = [CIImage imageWithContentsOfURL:[NSURL fileURLWithPath:path]];
inputTargetImage = [CIImage imageWithContentsOfURL:[NSURL fileURLWithPath:targetPath]];
inputShadingImage = [CIImage imageWithContentsOfURL:[NSURL fileURLWithPath:shadingPath]];
// フィルタを作成する
CIFilter* filter;
filter = [CIFilter filterWithName:@"CIRippleTransition"];
// 入力パラメータをデフォルト値にする
[filter setDefaults];
// 入力画像を設定する
[filter setValue:inputImage forKey:@"inputImage"];
// ターゲット画像を設定する
[filter setValue:inputTargetImage forKey:@"inputTargetImage"];
// 環境マップ画像を設定する
[filter setValue:inputShadingImage forKey:@"inputShadingImage"];
// トランジションが起きる領域を設定する
[filter setValue:[CIVector vectorWithX:0 Y:0 Z:479 W:360] forKey:@"inputExtent"];
// 波紋の中心を設定する
[filter setValue:[CIVector vectorWithX:240 Y:180] forKey:@"inputCenter"];
// トランジションの時間を設定する
[filter setValue:[NSNumber numberWithFloat:0.4f] forKey:@"inputTime"];
このフィルタでは、入力画像が3つになる。まず、トランジションは、ある画像から別の画像へと変遷するものなので、オリジナルとターゲットの2枚の画像が必要になる。もう1つは、波紋を描くときに使われる、アルファ値を含む環境マップ画像だ。
これに加えて、トランジションの領域、波紋の中心点を設定する。これらの座標や領域は、CIVectorクラスを使って指定する。CIVectorでは、1次元から4次元までのベクトルを指定可能だ。
最後のトランジションの時間で、0.0から1.0の間で、変遷の度合いを設定する。この値を変化させながら連続して画像を表示すれば、トランジションアニメーションを作ることができる訳だ。
|
|
Ripple動作図 |
対応機種も出そろい、これからに期待
このように、Core Imageを使ったプログラミングは、少ない手間で、とても「派手」な効果を得ることができる。
その反面、Core Imageプログラミングの悩みの種は、対応機種が限られてしまうことだろう。登場当初は、ハイエンド機しか対応を行っていなかった。しかし、Tigerもリリースから1年近くがたち、現行販売されているほとんどの機種で対応するようになってきた。
Apertureのような本格的なソフトも登場し、Core Imageはまさにこれから活躍のときを迎えるだろう。
ヘッドライン
- 三菱電機、太陽光発電向けパワコン用パワー半導体モジュールを発表[20:27 3/18]エレクトロニクス
- テクトロら、アナライザとオシロによるコヒーレントPM-QPSK信号観測を実現[19:58 3/18]エレクトロニクス
- アジレント、光変調アナライザにCD/PMD測定機能オプションを追加[19:36 3/18]エレクトロニクス
- CSR、オーディオ処理とハンドセット向けBluetoothの統合チップを発表[19:11 3/18]エレクトロニクス
- ARM、スマートカード市場向けセキュアプロセッサを発表[18:59 3/18]エレクトロニクス
- MIPSとDMPがAndroid on MIPSで協業[18:46 3/18]エレクトロニクス
- Xilinx、Spartan-6を用いたFAシステムデザイン向けTDPを発表[18:33 3/18]エレクトロニクス
- TI、DLP Cinemaの2Kおよび4K対応プラットフォームがDCIの評価基準を達成[18:17 3/18]エレクトロニクス
- 【連載】『TechNet』の歩き方 第21回 リニューアルしたTechNet Online[09:00 3/18]WinServer2008 R2 導入体験記
- 【ハウツー】概説 Springプロダクト(2) - 柔軟な配備を可能にするSpring DM[09:00 3/18]プログラミング







