差分画像を組み合わせた画像をツクールMV規格の画像ファイルにまとめるスクリプト
3連投稿です。 多分もう投稿するネタがないので、しばらくブログの更新が止まると思います。
まえがき
普段が私が絵を描く時に一番つまらない作業は、差分ファイルを作成することです。
なぜなら、差分を作り終わったあとで修正したい箇所が見つかった時、差分を作成する作 業をやり直す必要があるからです。しかも、差分が増えれば増えるほどその作業が増えて 、面倒になります。
そのくせ、やることは非常につまらない作業で、マウスでカチカチするだけというもので す。脳みそがマッハで腐っていきます。
この問題を解決しよう、ということで、自分用にスクリプトを作成しました。
目次
完成したスクリプト
- https://github.com/jiro4989/scripts/blob/master/special/layover_image.py
- https://github.com/jiro4989/scripts/blob/master/special/flippicts.py
- https://github.com/jiro4989/scripts/blob/master/special/trim4mv.py
- https://github.com/jiro4989/scripts/blob/master/special/pyzip.py
上記のスクリプトを組み合わせて、実際の動作させるスクリプトは下記のようになります。
@echo off set target_dir=actor019 set outname=%target_dir%_R_%%03d set facename=%target_dir%_face%%03d set img="%target_dir%\img" if exist "%target_dir%\" ( python layover_image.py "%img%\image_layer.json" %outname% -o "%img%\stand\right" python flippicts.py "%img%\stand" mkdir "%img%\face" python trim4mv.py "%img%\stand\right" %facename% -o "%img%\face" copy "%userprofile%\Documents\mydocs\image\rpg_mv\actors\README.html" %img% python pyzip.py "%img%" -n "%target_dir%" -x "%target_dir%\src" "%img%\src" "%img%\image_layer.json" "%img%\face\coordinates.csv" echo bat処理が終了しました。 ) else ( echo 指定したディレクトリ%target_dir%は存在しません。 ) pause
処理のフロー
今回の作業を自動化するにあたって下記の手順を想定しました。
- レイヤー分けした差分画像を組み合わせて、1枚の画像ファイルを生成する。
- 画像を任意の順番で組み合わせて、複数の画像を一気に生成する。
- 生成された画像から、左右反転した画像を生成する。
- 画像をトリミングして、RPGツクール用の8枚パネル上に配置する。
- 配布するようにZIPに圧縮する。
- Dropboxにアップする
これらの一連の手順をすべて単一のpythonスクリプトでやらせることも可能でしたが、 役割がそれぞれ全く異なるので、別スクリプトに分けておいて、batやbashでコマンドを つなぐようにしました。
また、今回は自分が配布するときのことを考えて、ZIP圧縮することまで自動化するよう にしました。Dropboxにアップする部分は、batchスクリプトの方でやるようにしています 。デスクトップでDropboxに同期するようにしていると、単純にcopyするだけで、Dropbox に配置できるからです。
設定ファイル
{ "img":{ "ext":"png", "colormodel":"RGBA", "base" : "base", "option": [null,["red","highlight"]], "pattern" : { "necessary":[ { "eyebrows" : "normal" , "eye" : "normal" , "mouse" : "normal" } , { "eyebrows" : "normal" , "eye" : "normal" , "mouse" : "smile" } , { "eyebrows" : "normal" , "eye" : "surprise" , "mouse" : "whisper" } , { "eyebrows" : "normal" , "eye" : "normal" , "mouse" : "spin" } , { "eyebrows" : "normal" , "eye" : "smile" , "mouse" : "smile" } , { "eyebrows" : "angry" , "eye" : "normal" , "mouse" : "shout" } , { "eyebrows" : "sad" , "eye" : "normal" , "mouse" : "whisper" } , { "eyebrows" : "normal" , "eye" : "smile" , "mouse" : "normal" } ], "others":{ "mouse":["normal","smile","whisper","spin","shout"], "eye":[ { "name":"close" ,"eyebrows":["normal"] }, { "name":"scornful","eyebrows":["normal","angry"] } ] } } } }
組み合わせる画像を配置するための、imgディレクトリのrootに配置します。
設定は単純です。 ファイル名の拡張子なしを指定しているだけです。
necessaryは必須の項目です。 この8個は一番最初に生成される画像になります。 1枚目のパネル画像の並び順を指定したい時に使います。
othersはオプションです。 最初の8枚の生成が終わったあとに処理されます。
正直、これで設定するのはやめようと思いました。
後で見た時に思い出すのに苦労するのと、配布するにはやや複雑な設定ファイルになるの で。
所感
実際に動かしてみたら、かなり作業が楽になりました。
絵のメンテとそれを配布する場所に反映する作業は、非常に手間がかかる割に見返りが少 ないです。
特に、ツクールMV用にトリミングする作業は非常に面倒で不毛な作業です。
拙作のTKoolFacetileMaker2でだいぶ楽になったとはいえ、自動化にまでは至っていませ んでした。
一度行って終了、ならまだ良いのですが、何度も修正することや、今後もやるであろう作 業に無駄が残るのは良くないので、それを自動化できたことの意義は大きいです。
今後
今回のスクリプトはPythonで作成しています。 つまり、Windowsの一般ユーザの環境に標準でインストールされていません。
なので、一般向けに配布することを前提にした、スクリプトとして別の言語で書きなおそ うと思います。
現時点での候補としては、下記のものを考えています。
-
- メリット
- 一番使い慣れているので、開発も保守も安定している
- 実行環境も大体にPCにすでにあるため、配布も容易
- 名前のブランドがあるので、ユーザ的にも安心?
- デメリット
- そろそろ新しい言語が勉強したい身としてはあまり触りたくない
- IDEのサポートがあっても書くのが結構しんどい
- メリット
Kotlin
Go
途中までKotlinで作成を進めていたのですが、結局Kotlinの勉強するならJavaでいいかな ぁとか最近思うようになってきたので、これを機会にGo言語に触ってみようと思ってまし た。
GUIアプリの作成がやや厳しそうな話を聞いていますが、今回のスクリプトは自動化が目 的なので、CLIでいいかなぁと考えています。それならGoでもできそう。
なので、今回の移植作業はGo言語で行おうと考えています。
一体どんな言語なのか、すでにワクワクしています。
以上です。