AsepriteのScripts(Lua)のよく使う処理メモ

ドット絵描画ツールAsepriteは、Luaを用いてプログラムを書き、機能拡張や処理の自動化を行うことができます。

Aseprite
Animatedspriteeditor&pixelarttool

よく使いがちな処理について、備忘録としてまとめておきます。

アラートダイアログを表示する

app.alert("hoge")

ファイル内の全レイヤーを取得する

for i, layer in ipairs(app.activeSprite.layers) do
    app.alert (layer.name)
end

ファイル内の全フレームを取得する

for i, layer in ipairs(app.activeSprite.frames) do
    app.alert (frame.frameNumber)
end

レイヤー内の特定のセルをフレーム番号から取得する

local cel = layer:cel(frame.frameNumber)

各ピクセルごとの色について処理する

local clonedImage = cel.image:clone()
for it in clonedImage:pixels() do
    -- ピクセル情報を取得
    local pixelValue = clonedImage:getPixel(it.x, it.y)

    -- ピクセルの色を取得
    local color = app.pixelColor.rgba(pixelValue)

    -- ピクセルのRGBAごとの値を取得(0 ~ 255)
    local r = app.pixelColor.rgbaR(pixelValue)
    local g = app.pixelColor.rgbaG(pixelValue)
    local b = app.pixelColor.rgbaB(pixelValue)
    local a = app.pixelColor.rgbaA(pixelValue)
    
    -- 色を作成
    color = app.pixelColor.rgba(r, g, b, a)

    -- ピクセルの色を指定
    clonedImage:drawPixel(it.x, it.y, color)
end

getPixel() についてはImageやpositionとの関係性がややこしいので、こちらも要参照

Aseprite
Animatedspriteeditor&pixelarttool

セルを書き換える

local layer = app.activeLayer
local frame = app.activeFrame
local image = Image(app.activeSprite.width, app.activeSprite.height)  -- 空のImage
sprite:newCel(layer, frame, image, 0)

新規レイヤーを作成する

local newLayer = app.activeSprite:newLayer()
newLayer.name = "New Layer"

コメント