obj オブジェクト

obj は描画対象を表す中心的なテーブルです。座標・回転・拡大率・不透明度などの値を持ち、 これらを書き換えると描画に反映されます。実行前に現在の値が入り、実行後に書き換えた値が読み戻されます。 関数(ピクセル操作・読み込みなど)は obj の関数 にまとめています。

変更可能なメンバー

これらに代入すると描画が変わります。実行後にプラグインが読み戻します。

メンバー説明
obj.x / obj.y / obj.z描画位置(ピクセル)
obj.ox / obj.oy / obj.oz中心点のオフセット(ピクセル)。回転・拡大の基準がずれる
obj.zoom拡大率(sx と sy の平均、1.0 で等倍)
obj.aspect縦横比(-1.0 ~ 1.0)。正で横を縮小、負で縦を縮小
obj.sx / obj.syX / Y 方向の独立した拡大率
obj.alpha不透明度(0.0 ~ 255.0)
obj.rx / obj.ry / obj.rzX / Y / Z 軸の回転角(度)
obj.rxr / obj.ryr / obj.rzrX / Y / Z 軸の回転角(ラジアン)

拡大率(zoom / aspect と sx / sy)

拡大率には 2 通りの指定方法があり、片方を変えるともう片方は自動で計算されます。 入力時点では zoomsxsy の平均、 aspect(sx - sy) / (sx + sy) です。

obj.zoom = obj.zoom * 1.5

local s = math.sin(time * anim.tau * 2) * 0.2
obj.sx = 1 + s
obj.sy = 1 - s

回転(度とラジアン)

回転は度(rx / ry / rz)とラジアン(rxr / ryr / rzr)の 両方で指定できます。ラジアン版を変更した場合はラジアン版が優先され、 変更しなければ度の値が使われます。

obj.rz = time * 90
obj.rzr = time * anim.tau

読み取り専用メンバー

入力画像の寸法や時間情報など、書き換えても反映されない値です。

メンバー説明
obj.w / obj.h入力画像の幅 / 高さ(ピクセル)
obj.hw / obj.hh幅 / 高さの半分
obj.cx / obj.cy画像中心(幅 / 高さの半分に等しい)
obj.cz常に 0
obj.sz常に 1
obj.diagonal対角線の長さ(sqrt(w^2 + h^2)
obj.timeアイテム先頭からの経過時間(秒)
obj.frame現在フレーム番号
obj.totalframe総フレーム数
obj.totaltime総時間(秒)
obj.tアイテム内の進行割合(0.0 ~ 1.0、frame / totalframe
obj.framerateフレームレート(fps)
obj.layerレイヤー番号
obj.index入力のインデックス
obj.num入力の総数
obj.track0obj.track3トラックバーの値(数値)
obj.check0obj.check3チェックボックスの値(真偽値)
obj.slider0obj.slider3整数スライダーの値
obj.textテキスト入力欄の文字列
obj.fontフォント選択欄のフォント名
obj.dirフォルダ選択欄のパス
obj.file_videoobj.file_shader各ファイル選択欄のパス
obj.t はアイテムの長さに対する進行割合なので、イージング関数の入力に最適です。 一方 time は実時間(秒)なので、速度や周波数の指定に向いています。

パラメータ(track / check)

obj.track0obj.track3 はパラメータパネルのトラックバーの値です。 obj.check0obj.check3 はチェックボックスの値(true / false)です。 名前・範囲・既定値・表示条件は パラメータ指定子 で定義できます。

local amp = obj.track0
local freq = obj.track1
obj.x = obj.x + math.sin(time * anim.tau * freq) * amp

if obj.check0 then
    obj.alpha = 255
end

スライダーと文字列パラメータ

obj.slider0obj.slider3 は整数スライダーの値です。小数を含みません。 表示範囲は obj.slider0 が 1 ~ 10、obj.slider1 が 0 ~ 100、 obj.slider2 が 0 ~ 1000、obj.slider3 が -1000 ~ 1000 です。 状態の切り替えなど、整数値の受け渡しに使えます。

文字列パラメータも参照できます。obj.text はテキスト入力欄の文字列、 obj.font はフォント名、obj.dir はフォルダのパスです。 ファイル選択欄は種類ごとに obj.file_video / obj.file_audio / obj.file_image / obj.file_project / obj.file_mp4 / obj.file_exo / obj.file_subtitle / obj.file_shader で参照し、 選択したファイルのパスを取得します。取得したパスは obj.load へ渡して画像や動画を読み込めます。

スライダーと文字列パラメータは、スクリプトがそれらを参照するとパラメータパネルへ表示されます。 いずれのパラメータも MoonSharp とネイティブの両エンジンから参照できます。

local mode = obj.slider0
obj.load("image", obj.file_image)

よく使う例

中心を基準に振り子のように揺らす

obj.oy = -obj.hh
obj.rz = math.sin(time * anim.tau) * 30

画面サイズに対する相対配置

obj.x = scene.cx * obj.track0 / 100
← グローバル変数 obj の関数 →