COLORSβ、自動で着座画像を作ろうと…した、失敗

AVISynthのMaskフィルタ、Layerフィルタの練習にはなったのでメモを残しておく。

#元となる画像(立ち素体、立ち用服)のファイルを読む
base=ImageSource("21000_CC_1.png",end=1,use_DevIL=true,pixel_type="RGB32")
#元画像のアルファチャンネルのみ取り出しマスク画像にしておく(黒=透明領域)
basemask = ResetMask(ShowAlpha(base))
#腰より上を残す(太ももはこっち向いてると見なした形状)ようなマスク画像を読む(黒=切り抜く領域、白=残す領域)
mask1=ResetMask(ImageSource("mask1.png",end=1,use_DevIL=true,pixel_type="RGB32"))
#元画像のアルファチャンネルのマスク画像と合成し腰より上を切り抜くマスク画像を作る
bodymask = ResetMask(Layer(BlankClip(1,width=300,height=350),Mask(basemask,mask1),"add"))
#bodymaskをマスクとして元画像からくり抜き、腰より上の絵を作る
body = Mask(base,bodymask)
#膝より下を残すマスク画像を読む
mask2=ResetMask(ImageSource("mask2.png",end=1,use_DevIL=true,pixel_type="RGB32"))
#元画像のアルファチャンネルのマスク画像と合成。膝より下を切り抜くようなマスク画像を作る。
legmask = ResetMask(Layer(BlankClip(1,width=300,height=350),Mask(basemask,mask2),"add"))
#膝より下の絵を作る
leg =Mask(base,legmask)
#腰より上の絵に、膝より下の絵を、y座標30pixel上方にずらして合成
newbase = Layer(body,leg,"add",y=-30)
#test1****.pngに出力
ImageWriter(newbase,"test1.png",0,0,"png")

できあがりは微妙…おまけになんかImageWriterの性能のせいか、微妙に絵がぼやけてる気が。
机上で考えたようにはいかんですね。素体だけならまあそれなりだったんですがね…maskの描き方次第とは思うのだけど、maskを服ごとに作り替えるんでは、専用の服作るのと手間一緒だからな…