2007-11-04 日曜日
キャラクターなんとか機 おたすけ隊!

「キャラクターなんとか機のサイトに変なコメント発見〜」
# HSP3たん 「yes/no型ダイアログの戻り値は6/7なんです! 1でチェックしてると上書き確認できないんです!」

「すもも、それ書き込んだの私だよ」

「……なんでまともに報告できないかな、この人は」

「それにしても、妙に原因が詳細だね」

「うん、本体を逆コンパイルしたから」

「え、暗号化機能とかついてなかったっけ」

「かなり昔に解いてるよ(spihsp)。しかも解読ソース付き」

「困った子だなあ。恩を仇で返すようなことばっかり」

「そんなことないよ。Cherry拡張パッチのときとおんなじだよ」

「それってつまり私的に改造できるとうれしいってこと?」

「それはたしかに間違ってないかも」
※余談:#includeしたファイルはpackfileに入れなくてもよいのですよ

「で、おたすけって言うのはそれだけ?」

「違うよっ! ここからが本題っ!」

「今までの前フリ意味あったのかなあ……」

「天使の輪(1.xx)、虫はね、いろんなパーツをキャラクターなんとか機で出力したけど、どれも私の求めているプレビュー画面の表示とは違っていた」

「そして一週間前のあの日、ついに見つけたのさ(ブレンド法を)! それがセクシーアルファブレンド(仮)!」

「セクシーアルファブレンド(仮)?」

「そこで出来たのが、このDLLだ〜!!」
http://gocha.s151.xrea.com/down/tool/charaex-20071104.rar

(何も分からない!)

「もう少し説明しよう!」
キャラクターなんとか機はpng+pnaの出力時に、RGBチャンネルを黒背景にアルファブレンド(gmode 7)、アルファチャンネルを加算合成(gmode 5)して対処していた! そのため、半透明部分はRGBチャンネルの背景の影響で黒ずんでしまい、天使の輪(1.xx系列)が黒くなるという悲しい事態が発生していたのだ!
このことが気になったgochaは、レイヤー重ね合わせのアルゴリズムを考えだし、もとい、ほとんど答えを教えてもらい、HSP3用拡張プラグインとして実装したのだ!

「要するに、きちんと合成するための処理を即席で作ってみたってこと?」


「ほらっ! ベリー クロクナーイ!*2」

「これで安心して天使が作れるね!*3」
ちなみに、やってみたいことがまだ少しあります。
- アルファチャンネル付きPNG保存機能(これもimgctl.dllでは出来ないのです)
- imgctl.dllのDIBをHSVでぐりぐりする(RGBベースの機能しかないのが不思議)
imgctl.dllのソースコードは公開されていたのですね。制作中に気づきました。まあ、置いてあったからといってどうするわけでもないのだけれど。
トラックバック - http://d.hatena.ne.jp/GOCHA/20071104/character


