テクスチャの色を選択的に変換するツールを作りたかった【反省会】

ども、ゴコーです。

数日前まで、ふと思い立ってエディタ拡張でツールを作っていました。

ツールの概要は「選択的にテクスチャの色を変更する」というもの。制作期間は1週間。

作った理由は、フリー素材とかで画像があったとして、パレットデータ(ドット絵エディタの作業途中のデータ)なんかあるわけ無いんだから色の入れ替えツールあった方が良いだろ!って思ったからです。超個人的です。素材が増えてきたらそれなりに需要ありそうですけどね。

エディタ拡張した経験自体がほぼないためかなり苦労しましたし、結局完成してません。

正確には、使えなくもないけど重いし、色選択周りがだめだめという結果。うええ。

とりあえず現状できているものの機能を見つつ、反省点とまた作り直すならこうしたいということをメモしておきたいと思います。

scc0

基本的な GUI はこんな感じ。

ツールの名前は SimpleColorChanger です。タイトルバーが文字数に応じて伸びるとかはないので短くSCCに変更しました。

まずは OriginalTexture の DropTextureHere に変換したいテクスチャをつっこみます。

全てリセットする場合は左上の Reset ボタンを、作業が終わった場合は Save を押すことで新しいテクスチャを保存できます。

反省点・改善点1:

テクスチャの入力はウィンドウ全体で受け取れる方が使いやすい

→ドロップ用のイベントがあったはず…

scc2

テクスチャを入れた後です。

左に元の素材テクスチャを表示、右にその色情報を元に作成したテクスチャを表示。下には構成色一覧が表示されます。

テクスチャの質が読み取れる色情報の精度に直結していたので、ウィンドウを閉じるまでの間は強制的に

  • 読み取り/書き込みを有効に
  • 透明に
  • 画質をできるだけ良く(RGBA32)
  • フィルターモードを Point に

と言ったことをしてます。で、ウィンドウを閉じるなどをした際には設定を元に戻すようにしました。

反省点・改善点2:

そもそも全てのピクセルを読み取って右に表示というのが重すぎ

→今個人的にかなりホットな UniRx の新しいバージョンはエディターでも使えるらしいから非同期にしてしまえば良いのではなかろうか

もっと言うなら、全体を見るんじゃなくて、ユーザー側で色を指定する形にした方が良かったんじゃ…

反省点・改善点3:

色一覧の表示が100とか越えてくると重い

→一応、空きスペースは色情報ではなく Space() で埋めているからマシだけど、実行回数が多かった。まとめて1回でやるべき。

反省点・改善点4:

色の認識がガバガバ(おかげでちょっと色の多いテクスチャでは300色以上検知されたりして、止まる)

→色の近さを調べるために色相で比較する、という手法でチャレンジしたけど玉砕。方向性は間違って無かったのかも知れないけど、もっと色々気にすべきことがあったんだろう。

コイツのせいで開発を諦めたと言っても過言では無い。完全に力不足で悔しいので次やるなら画像処理勉強してきっちりやる。

scc3

下のカラーフィールドをクリックして(ここで止まりはしないけど軽いエラーが出る)変更先の色を指定。

反省点・改善点5:

謎のエラー

→レイアウト系のエラーだけど、メッセージを元にコード見てもおかしいところが無い。ネット調べても英語にすら良い解決策がない。ということで詰みました。止まりはしないから使えるけど、何なんだろう

scc4

とりあえず変更した色の感じを見たい場合は真ん中のプレビューボタンを押す。今回は肌を色白にしてみました。

色識別が悪いせいで相手にするピクセルが多く、ここでも止まります。

scc5

Rボタンを押すと色が元に戻ります。

scc6

A を押すと、新しい色で確定します。

全ての色が確定していない場合、保存の際にエラーダイアログが出ます。

反省点・改善点6:

操作の手順次第で確定していない場合にも保存できてしまうバグがあった

→単純な時間不足。しっかりしてほしいよ全く。

scc7

保存してみました。色白なのでファイル名は gok_white にしました。

キャラの背景が気持ち悪いことになっているのはテクスチャへのインポート設定が透明に設定されていないからです。

気になる場合は設定しましょう。

反省点・改善点7:

本当は元のテクスチャのインポート設定を新しいテクスチャに設定するつもりだった。何故か保存に使ったパスを参照してるのに null

→よく考えたら、これは英語では調べてなかった(えー)

scc8

というわけで、透明度を設定した上で拡大表示してみた図。

ちゃんと白っぽく変わってますね。

スポンサーリンク

感想

エディタ拡張の情報自体が少なく、手探りだった上に結果がグダグダという感じでしたが、やっぱり何かを作るのは勉強になります。期間を1週間と決めて取りかかったのも中々引き締まってよかったかなと。

あとは、これを機に Linq とか UniRx とか 画像処理全般とか勉強してみようと思いました。

さて、最後に僕のグダグダを表しているプロジェクトファイルを置いておきますね

https://db.tt/ufuDIFn0

再びこのプロジェクトが日の目を見る時は来るのか!?(笑)

では、また。

Comments

comments

スポンサーリンク
336*280px