aviutl2 トーンカーブ(時間制御)スクリプト
https://x.com/CatWithNeko/status/1972685066963960255
時間制御のカーブエディタを利用したトーンカーブスクリプト
インストール方法
下のスクリプトをリンク先を保存 でスクリプトフォルダに保存 もしくはコピペしたものをメモ帳かなんかで拡張子.anm2にして保存する
使い方
RGBのスライダーを任意の移動方法(直線移動(時間制御)推奨)で0~255まで移動させる
時間制御のカーブをいじる
2025-11-02 RGBのチェックを廃止し、トラックバーの移動方法を確認して判定する方式に変更
code:トーンカーブ(時間制御).anm2
--label:色調整
--track0:RGB0-255,0,255,0,1
--track1:R0-255,0,255,0,1
--track2:G0-255,0,255,0,1
--track3:B0-255,0,255,0,1
local ffi=require("ffi")
local function clamp(x,min,max) return math.max(math.min(x,max),min) end
local function get_lut(tra,track_mode)
local lut=ffi.new("uint8_t256")
if track_mode==0 then --移動なしの場合元の値をそのまま使う
for i=0,255 do
luti=i
end
else
for i=0,255 do
luti=clamp(obj.getvalue(tra,(obj.totaltime-(1/obj.framerate))*(i/255)),0,255)
end
end
return lut
end
local function mix_lut(lutX,lutY)
local final_lut=ffi.new("uint8_t256")
for i=0,255 do final_luti=lutY[lutXi] end
return final_lut
end
local function apply_lut(p,lutR,lutG,lutB,w,h)
for i=0,w*h-1 do
pi*4,pi*4+1,pi*4+2=lutR[pi*4],lutG[pi*4+1],lutB[pi*4+2]
end
end
--トラックバーの値を読んでルックアップテーブルを作る
local lut=get_lut(0,obj.getoption("track_mode",0))
local lutR,lutG,lutB=get_lut(1,obj.getoption("track_mode",1)),get_lut(2,obj.getoption("track_mode",2)),get_lut(3,obj.getoption("track_mode",3))
local finalLutR,finalLutG,finalLutB=mix_lut(lut,lutR),mix_lut(lut,lutG),mix_lut(lut,lutB)
--データ取得
local data,w,h=obj.getpixeldata("object")
local p=ffi.cast("uint8_t*",data)
--ルックアップテーブルの値をぶち込む
apply_lut(p,finalLutR,finalLutG,finalLutB,w,h)
obj.putpixeldata("object",data,w,h)