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.sy | X / Y 方向の独立した拡大率 |
obj.alpha | 不透明度(0.0 ~ 255.0) |
obj.rx / obj.ry / obj.rz | X / Y / Z 軸の回転角(度) |
obj.rxr / obj.ryr / obj.rzr | X / Y / Z 軸の回転角(ラジアン) |
拡大率(zoom / aspect と sx / sy)
拡大率には 2 通りの指定方法があり、片方を変えるともう片方は自動で計算されます。
入力時点では zoom は sx と sy の平均、
aspect は (sx - sy) / (sx + sy) です。
sx/syを変更した場合 … その値がそのまま使われます。sx/syを変更せずzoom/aspectだけを変更した場合 …sx = zoom * (1 + aspect)、sy = zoom * (1 - aspect)として反映されます。
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.track0 ~ obj.track3 | トラックバーの値(数値) |
obj.check0 ~ obj.check3 | チェックボックスの値(真偽値) |
obj.slider0 ~ obj.slider3 | 整数スライダーの値 |
obj.text | テキスト入力欄の文字列 |
obj.font | フォント選択欄のフォント名 |
obj.dir | フォルダ選択欄のパス |
obj.file_video ~ obj.file_shader | 各ファイル選択欄のパス |
obj.t はアイテムの長さに対する進行割合なので、イージング関数の入力に最適です。
一方 time は実時間(秒)なので、速度や周波数の指定に向いています。
パラメータ(track / check)
obj.track0 ~ obj.track3 はパラメータパネルのトラックバーの値です。
obj.check0 ~ obj.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.slider0 ~ obj.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