続かないだろうなと思っていた,ウディタで画像処理(フィルタ処理)の備忘録記事です.
前回は「平均化フィルタ」をウディタ内でやってみて,実用化は難しそうだねって話をしました.
おさらいすると・・・
・マップチップを画素ごとに表示していたのでピクチャ枚数がえげつない(重くなる
・マップタイル内の任意のマップチップを画素単位で分割表示できない
(最大分割可能数は10000なので,2列以上のマップタイルは画素単位での分割が不可能)
ということでした.
詳細はこちら(ウディタで画像処理したい(その1))
そもそもなぜ画素単位で処理を行っていたのかというと,前回の記事に載せた画像のように
画素単位でマップチップにウェーブ等を加える処理を行えるようにしたかったからなんですよね.
そのうえでマップチップにぼかしを加えられたら演出のレベルが上がるかなぁ・・・って感じで
要は汎用的にしたいあまり画素ごとの処理に固執していたというわけ.
そんなこんなで「実装は無理かなぁ」と完全に諦めモードだったんですが,
こんなツイートを発見!
前回の記事を見て興味を持っていただき,
僕とは違うアプローチで平均化フィルタを実装していただきました.
ソースコードも公開されていますが,要約すると以下の通り.
・平均化フィルタを使いたいだけなら,画像ごとを各方向にずらして表示するだけで事足りる
双方の手法の違いを簡単に図で示すとこんな感じ(余計わかりにくいか・・・?
結果的に得られるものはどちらも「平均化フィルタ(モザイク)」ですが,
ピクチャの使用枚数に圧倒的な差があります.
画素ごとに表示する方法では当たり前ですが画素数分ピクチャが必要です.
デフォルトの1画面分(20x15マス)に32x32のマップチップを表示するためには
単純計算で
総枚数30万強ものピクチャが必要となります.
一方で画像をずらす処理では,5x5マスの平均をとる場合でも
最低7500枚で事足ります.
(1マップチップごとにx,y方向それぞれに-2~2マ画素ずらして配置するため1マス25枚必要)
こいつはすげぇや.
この方法に変えることのデメリットを強いてあげるなら,
1画素ごとにエフェクトをかけられなくなることですが・・・
前回の方法はマップチップの表示すら危うい出来なので,実質デメリットなしですね!(よいしょ
前回の記事とは一転して実用化への光が見えてきたので,いろいろ実験しながらとりあえず実装.
その結果がこちら.(前回通り考えたことがその後続くので,結果だけ見たい方はここでおしまい)
こんな感じで,画面スクロールなしの1MAPゲームと相性がいいのではないかと.
今後の展望としては以下の通り.(続けるとは言っていない
・主人公の上に表示される設定のマップチップはぼかせない
・現段階の仕様上レイヤー2以降のマップチップの位置にしたのレイヤーの画像が透ける.
(赤いドアのところがわかりやすいかも.レイヤー1の壁の木目が透けてます.)
・主人公はぼかせない(やりたくない
・オートタイルは非対応(やりたくない
◆◆◆結果はここまで◆◆◆
(以降は妄想やら考察やら試してみたことやら・・・つらつら書き連ねるだけ)