funde-rectangleのブログ

ウルトラごった煮

Aseprite:色効果のあるレイヤーが含まれたファイルを画像出力すると、レイヤーの処理が無効化される

最近Steamで見つけたAsepriteというドット絵エディタがなかなかいい感じです。
https://www.aseprite.org/

アニメーションを列がフレーム、行がレイヤーとしてスプレッド形式で作れるので、
アニメーションの細かい調整ができたり、
フォトショップライクな画像処理(乗算や覆焼きレイヤー)が使えるなど、
これまでにできなかった、色に関する処理がサクッとできてしまいます。
ちまちま色を変えてドット絵を描く必要がありません。(既にフォトショで描いてたら別ですが...)

そんな便利な機能があるものの、トラップもあったので備忘録として対応方法をば。

1. 症状


f:id:funde-rectangle:20191221033327p:plain
今回の被害者、ウールーちゃんです。
かわいいですよね。この子のためだけにポケモン剣買ってしまいました。
ずっとポケモンキャンプ眺めてるので、ストーリーが一向に進みません。


f:id:funde-rectangle:20191221033646p:plain
で、この子にこういうレイヤーを追加して


f:id:funde-rectangle:20191221033608p:plain
こうします。お先真っ暗これ枕。

f:id:funde-rectangle:20191221033716p:plain
でもってレイヤーの設定を変更して

f:id:funde-rectangle:20191221033825p:plain
Opacityを変更してあげると、なんといい感じに透明感が出てくれます。
実際には不透明度を変更しているので、その値に伴ってアルファ値が適用されてます。

f:id:funde-rectangle:20191221034103p:plain
で、これをSave AsでPNGファイルに出力すると...



f:id:funde-rectangle:20191221034133p:plain
こんな感じでレイヤーの不透明度が無視されてしまいます。
なんとまあ・・・・カビゴンの夢であってほしい・・・

2.対策

ColorModeを変更して、色情報の持ち方を変更します。

f:id:funde-rectangle:20191221034330p:plain

ツールバーのSprite -> ColorModeの順に選択すると、
上の画像のとおり出てくるはずです。

デフォルトはIndexに設定されています。これを「RGB Color」に変更した上で、ファイル出力します。

EDGEのようなパレット形式で描画されてる方は流石にもう気づくと思いますが、
ColorModeが「Index」のままだと、パレットで定義した色しか出力されません。
(なぜかAseprite上の描画では不透明度が適用されているのに・・・)
※(2019/12/22訂正) EDGEではわかりませんが、EDGE2ではパレット形式ではなく、256色以上の色で色設定することもできるようです。今まで気づいておらずすみません・・・。
EDGE2:ツールバーの「イメージ」→色数→65536(16bit)

f:id:funde-rectangle:20191221034809p:plain
するとこんな感じでちゃんとレイヤーの不透明度が変わってくれます。
(ツイッターで使ったものをそのままアップしたので拡大されてますが....スミマセン)

DifferenceやDarken、Hard Lightなどの色が変わる処理も同様に、
RGB Colorに変更すればちゃんと適用されます。

見た目はちゃんとできてるように見えるので、間違えやすそうです。

1.3 おまけ(色効果を加えた後の色をパレットとして登録する)

なんと。そんなことができるみたいです。

f:id:funde-rectangle:20191221035841p:plain
Color ModeをRGBModeに変更した上で、
パレット左上のリストボタンをクリックし、
「Create palette from Current Sprite」を選択します。

f:id:funde-rectangle:20191221040042p:plain
一番上の設定を選択したうえでOKを押すと...

f:id:funde-rectangle:20191221040125p:plain
今描画されてる色を使ってパレットを作ってくれます。すごい!

f:id:funde-rectangle:20191221040203p:plain
もちろん透明度を変更して「Create palette from Current Sprite」を実行すると、
それに合わせてパレットを作ってくれます。

しかしこの機能、ColorModeをIndexで実行すると、
うまいこといかず、色情報が欠落してしまいます。
RGB Modeで実行した後にIndexに変えてもダメみたいなので、ちゃんと色情報が引っ張れてないみたいですね。
EDGEみたいに近似色で設定みたいなことができればいいんですが・・・


それにつけても、この色レイヤーのおかげで影をつける処理が格段に楽になりました。
しかし個人的には、絵の描画しやすさはEDGEのほうに軍配が上がるので、
EDGEで描く→Asepriteで処理 という流れが多いです。しばらくは使い分けって感じですね。

(2019/12/22 追記) EDGE2でも16bitカラー化などしておけば、カラーパレットに依存せずに
色の効果を付与できることがわかりました。しかし、レイヤー同士の演算ができるのはやはりApepriteですので、
部分的に効果をつけたり、複雑に色を変更する場合などは使い分けるほうがよさそうです。