2009年3月アーカイブ

実は結構前から話題には上っておりましたProgressionのget~系メソッドについて、少々書いてみようと思います。

というのもカヤックさんのエントリー(gihyoの記事の紹介をいただいております。ありがたい事です。)とflabakaさんのエントリーでget~系のメソッドが紹介され始めましたので、便乗してエントリーさせていただこうかなと。

今まではProgressionのScene間のデータの受け渡しに関して、「シングルトンでやる」みたいな意見もちらほら聞かれたのですが、今は圧倒的にget~系のメソッドを使っています!という声が多いですね。get~系のメソッドはProgressionに無くてはならない要素の一つだと思います。

さて、どんなメソッドがあるか見てみましょう。

Progressionインスタンスの参照用
getProgressionById(設定したidを持つProgressionインスタンスを取得)
getProgressionBySceneId(指定sceneIdのProgressionインスタンスを取得)
getProgressionsByGroup(設定したgroupを持つProgressionインスタンスを含む配列を取得)
getProgressionsByRegExp(設定したfieldName が条件と一致する Progression インスタンスを含む配列を取得)

Commandインスタンスの参照用
getCommandById(設定したidを持つCommandインスタンスを取得)
getCommandsByGroup(設定したgroupを持つCommandインスタンスを含む配列を取得)
getCommandsByRegExp (設定したfieldName が条件と一致する Commandインスタンスを含む配列を取得)

SceneObjectインスタンスの参照用
getSceneById(設定したidを持つSceneObjectインスタンスを取得)
getSceneByName(指定scenenameのSceneObjectインスタンスを取得)
getSceneBySceneId(指定sceneIdのSceneObjectインスタンスを取得)
getScenesByGroup(設定したgroupのSceneObjectインスタンスをを含む配列を取得)
getScenesByRegExp(設定したfieldName が条件と一致する SceneObjectインスタンスを含む配列を取得)

様々なオブジェクトのインスタンスの参照用(私は主にキャストオブジェクト参照用として使用しています)
getInstanceById(設定したidを持つオブジェクトのインスタンスを取得)
getInstanceByGroup
getInstancesByGroup(設定したgroupを持つオブジェクトのインスタンスを含む配列を取得)
getInstanceByRegExp
getInstancesByRegExp(設定したfieldName が条件と一致する オブジェクトのインスタンスを含む配列を取得)

>elmo様よりミスの指摘がありましたので修正しました。ありがとうございます!

私が把握しているのはこの辺りです。ものすごく充実していますね。まだあるのかな?

この中でも比較的大活躍をしてくれるのがカヤックさんのブログでも紹介されているgetInstanceByIdなのですが、さらに便利なのがgetInstanceByGroupといったGroup系です。

例えばなのですが、メニューボタンが並んでいる場合、このメニューボタンのセットを1つのグループにしておくとgetInstanceByGroupでメニューボタンの参照が配列で取得出来てしまいます。

使った事は無いのですが~ByRegExpもサーバーとの連携あたりで大活躍しそうですね。。(検索に引っ掛けるとか)
本当になんでも出来るフレームワークだなーと感心しながら今日も何かを作っています。

使い方の実例ですが、近々この辺を利用したサンプルを公開しますのでお待ちを。
出来はあまり期待しないでくださいね。
それではー。

こんにちは!
Progressionの拡張の話(カスタムシーンとか)の話を書こうと思ってちょっとしたものを作ったり、出せるようにいじったりとしていたのですが、あまりにも作業が遅れ、世に出す前にProgression拡張機能コンテストの受付が始まってしまいました。。。
このタイミングで出すのはネタが万が一かぶってしまう人もいないとも限らないので、エントリーとしてのお披露目は辞めようと思います。

なので、方針を変更して、本当にいまさらなのですが、3月6日に行われましたProgression勉強会の感想らしきものを書いていこうと思います。


・カスタムコマンド
これは、簡単なものをいくつか作っておりましたので、すぐ理解できました。
こちらとか、こちらのエントリーにも軽く載せてあります。また、nium先生の話にほんの少し登場したLoopCommandはこちらです。

これを大幅にパワーアップされたコマンドがサンプルとして紹介されておりました。
サンプルのコマンドはCommandListクラスを拡張されて作られており、コマンドのシリアルリストと同様の使い方が出来る様になっていました。こっちの方が断然スマートだな!と感心しきりでした。。。。
CommandListクラスを拡張して簡単なものを作るとすればあれかな。。。と今作っていたりします(おそらくコンテストには出しませんけど)。


・カスタムシーン
ざっくり言うとおそらくみなさんカスタムシーンを意識せずに作成していると思います。
同じようなシーンの場合、汎用シーンクラスを一つ作って使いまわすと思いますが、それこそがカスタムシーンなのだと思います。汎用性の高低が今回のコンテストに相応しいか否かという所なのではないでしょうか。誰もが使えるシーンクラスかどうかという所がポイントになると思います。
サンプルとして紹介されたシーンクラスは独自のイベントを追加した形になっていて、かなり実用できそうです。これもスゲーと思いました。


・カスタムコンポーネント
一度もカスタムコンポーネントを作成した事が無かったので、今回一番の目当てはコレでした。作り方自体はants lab.さんのこちらのエントリーとほぼ同内容でした。
後はどうやってProgression用に作るかという事ですが、サンプルとしてアップされているファイルを一式ダウンロードして、その中のshared\classes\jp\progression\components\CoreComponent.asとかshared\classes\jp\progression\components\HandMagicEffect.asとかを見れば良いと思います。
横着でごめんなさい。
(このへんは時間があればじっくり解説したいですね。。。)


私はコンテスト提出用の物をじわじわ作り始めてはいるのですが、正直間に合うかどうか分からなくなってきました。間に合わなかったら即公開ですね。
ちなみに全力で自分用の何かを作っています。

自分であったらいいなと思うものを作れば、それはきっと誰かも使いたいんじゃないかと思いますね。

ちなみにドメイン取りました。こっちもいまさら感ありすぎる。。。

大幅に遅れてしまいましたが、前回のソースコードを置いておきます。

横方向のブラー
縦方向のブラー

結局コメント等入っていないソースコードですが、ここで説明したいと思います。

ポイントはブラーフィルタをある部分に適用させれれば良い。の一点に尽きます。
ですから、適用範囲を振り分ける以外はこの記事のソースコード
を流用しています。

//ピクセルの参照
float2 pos = outCoord();
//楕円の範囲 注:centerpointは外部設定パラメータ
float2 ellipsepos = float2(float((pos.x + centerpoint[0]) / 2.0) , pos.y);
float dist = distance(centerpoint,ellipsepos);
//適用範囲のみにブラー
if (dist > radius){
    /*記事のサンプルソースコード*/
} else {
    dst = sampleNearest(src,pos);
}

この縦横ブラーをかけて一緒にこのTintフィルタをかけています。
実際中身を書き換えたフィルタを使用していますが、こっちの方が良く出来ていると思います。

このくらいさっさと公開しろよ!とお叱りを受けそうですね。
ちなみに結局コントラストフィルタは思うような効果にならず、このままにしておきます。
もっと細かい調整が出来るようにならねば。

いつの間にか3月も過ぎてしまいましたね。。。Progressionのカスタムシーンの事を書く予定がなかなか考えがまとまらないうちに他の事に手を出してしまったりしていましたので、その記事を書きます。
カスタムシーンのエントリー明日書けるといいな。。

さて今回手を出した事とはCBCNETのこの記事が発端です。
ミニチュア風景をPixelBenderで実現出来ないかと。

少し考えて、手元にあるものとサンプルで上がってるものを組み合わせれば出来そうだったのでやってしまいました。

今回は3つのフィルタを同時適用させています。
あるものをベタベタ切り貼りで作ったので中身は酷い状況なんですが。。。

それで作ったのが以下の物になります。



それで次の日に_simoさんの5ive.blogのこのエントリを読み、ぼかしが楕円である事を認識し、以下の様に変更しました。


この楕円ぼかしの問題は中心がずれて適用されてしまう事で、現在ペンディング中です。まだまだPixelBenderを使いこなせていないです。

今回のソースの大元ですが、
ぼかしの部分はこの記事に掲載されているソースの改造で、色味の変更はここに掲載されているフィルタのソース(確かTintだったと思います)の改造です。
今回学習したのはPixcelBenderでパラメータ変更可能なガウスブラーはかなり面倒だという事です。

なので最初から自分で作った訳では無いですが、少し考えればサクッと色々な効果が実現出来るので楽しいです。
ソースコード本体はダウンロード出来るようにしますが、少々整えてから公開しますので、今暫くお待ちください。

追伸:今Pixel Bender Exchange見てたらコントラストのフィルタを発見したので、もう少しいじるかも。。。

このアーカイブについて

このページには、2009年3月に書かれたブログ記事が新しい順に公開されています。

前のアーカイブは2009年2月です。

次のアーカイブは2009年4月です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。