●差分顔画像の座標
PerlでもONSでもなかったりしますけれど。
ときに顔画像を立ち絵と合成する座標が判らず、しょうがなく目で見て合わせてみることに。
しかしこれまた丁度いい機能のあるツールが見つからないので、自作で賄ってみようと思い立ち。
欲しい機能
・αPNGを読み込める
・カーソルキーで差分画像を動かせる
・終了時の座標をファイルに出力できる
・予め画像をリスト化しておいて、連続で位置調整ができる
これらの機能とかかる労力と有する技術を色々総合的に判断した結果、Nスクでやることに決定。
…いやまあ、楽なのが一番ですよね。
;mode800 *define
transmode alpha spi "nscrpng.spi|png" usewheel
numalias face,10 numalias base,11 numalias left,12 numalias top,13 numalias step,14
defsub chklocate
game
*start textoff:saveoff erasetextwindow 0 csvopen "stand.csv","w"
;chklocate "ベース画像","差分画像" chklocate "sp/anj_00.png","sp/anj0001.png" chklocate "sp/cho_00.png","sp/cho0001.png" chklocate "sp/kan_00.png","sp/kan0001.png" chklocate "sp/kaz_00.png","sp/kaz0001.png" chklocate "sp/koh_00.png","sp/koh0001.png" chklocate "sp/kou_00.png","sp/kou0001.png" chklocate "sp/nan_00.png","sp/nan0001.png" chklocate "sp/sae_00.png","sp/sae0001.png" chklocate "sp/say_00.png","sp/say0001.png" chklocate "sp/tat_00.png","sp/tat0001.png" chklocate "sp/tou_00.png","sp/tou0001.png" chklocate "sp/tug_00.png","sp/tug0001.png" chklocate "sp/kaz_00_z.png","sp/kaz0003_z.png" chklocate "sp/nan_00_z.png","sp/nan0001_z.png" chklocate "sp/sae_00_z_s.png","sp/sae0001_z_s.png" chklocate "sp/tug_01_z.png","sp/tug0008_z.png"
csp -1 print 1 click end
*chklocate
getparam $base,$face fileexist %0,$base if %0 == 0 goto *error1 fileexist %0,$face if %0 == 0 goto *error2 mov %left,300 mov %top,50 lsp 10,$base,0,0 mov %step,1
*locate_loop
lsp 9,$face,%left,%top itoa $1,%left itoa $2,%top itoa $3,%step add $1,","+$2+"@"+$3 len %0,$1 if %0 mod 2 != 0 add $1," " csp 5:lsp 5,":s/20,20,2;#FFFFFF$1",10,10 print 1
btndef clear btndown 1 getcursor getenter
btnwait %0
if %0 = -19 goto *result if %0 = -1 mov %step,1 if %0 = -2 inc %step:if %step>20 mov %step,20 if %0 = -3 dec %step:if %step<1 mov %step,1 if %0 = -40 sub %top,%step if %0 = -41 add %left,%step if %0 = -42 add %top,%step if %0 = -43 sub %left,%step
goto *locate_loop
*result csvwrite $base,%left,%top return
*error1 csvwrite $base,"not found" return
*error2 csvwrite $face,"not found" return
こんな感じでさっくりと福笑いが完成。
顔画像をカーソルで動かして決定した座標をCSVに出力します。Nスクって便利。
あとは変換する時のテーブルにするなり ImageMagick で総当たり合成するなり。
自作命令に渡すファイル名はPerlで取得したような手入力したような…。

もっとも当然ながら微妙にずれるので、本来の座標が取得出来れば最善なのですが。
何か見落としてないかな。
コメント
素人考えでなんとなく思ったんですが、実際のゲームで合成後の表情のスクリーンショットをとって、その画像を表示させつつ合わせるように表情を重ねて座標を取るとより合わせやすく正確になるのでは?
むしろスクリーンショットでとった画像を服などの合わせやすい輪郭線を残したままある程度切り抜いて中心に表示させた顔なし画像に重ねて表示させたうえで、顔の合成をやれば割と正確になるかも知れません。
それと200%表示の命令があったりしたらそれで調整とかしたら微妙な調整が楽なったりしませんかね?
Posted by: nota | 2008年02月01日 23:15
なるほど、実際の画像・ベース画像・顔差分の3つで二段階に調節するとかなり正確になりますね。
幸いNスクにも透過や拡大処理などありますし、真面目にやれば面白いことが出来そうです。
まあ適切な福笑いの解答を探すのが多少面倒ではありますが…。
でもきっと某改変・抽出スレあたりだとそれくらい気合い入れて合成してるんでしょうね。
助言ありがとうございました。
Posted by: ひとつもり | 2008年02月02日 00:16
http://www.geocities.jp/stm_torm/ImagePos.zip
こんなん作ってみましたが如何でしょう。
ベース画像&顔画像、実際の画像&ベース画像&顔差分、どちらのやり方でも使用可能です。
土台とレイヤ画像はドラックで移動出来、上下左右キーでは最後にクリックした画像が動かせます。
土台を動かすとレイヤも一緒に動く親子関係になっており、それぞれに透過度も設定出来ます。
解像度変更も可能で、位置情報は CSV のタブ区切りで追記保存します。
Posted by: すとーむ | 2008年02月02日 21:28
おお、これはまた素敵なものをありがとうございます。
tjsで作っているんですねー。流石です。
おかげでかなり正確な調整が出来そうです。
ひとまずは暫定で出しておくとして、後でキャプチャしにいかないと。
Posted by: ひとつもり | 2008年02月03日 11:32
ベース画像の位置を良くある背景の解像度に合わせて、LEFT・CENTER・RIGHT、の形式で簡易設置出来る様にしときました。
同じアドレスに上げてますので、こっちに取り替えておいて下さい。
吉里吉里って KAG の方に目がいきがちですけど、こういうちょっとしたアプリを作るのにも向いてたりするんですよね。
にしても物語の後の方で出てくる出番の少ない脇キャラとかいたらキャプるの大変そうですねぇ…。
Posted by: すとーむ | 2008年02月03日 15:10
更新お疲れ様です。
お陰でより合わせやすくなりました。
ううむ、吉里吉里、単独で動作するスクリプト言語として惹かれています。
脇キャラは…無理に探さず、いい場面があるまで忘れておくとします^^;
Posted by: ひとつもり | 2008年02月03日 21:45