自分用凄くどうでもいいAviUtl用スクリプトのメモ
閉じる
閉じる

新しい記事を投稿しました。シェアして読者に伝えましょう

×

自分用凄くどうでもいいAviUtl用スクリプトのメモ

2014-05-04 11:41

    https://www.dropbox.com/s/2euc982wa45xmz2/position%28n%29.aup
    サンプル
    5/5 更新 ちょっと訂正があります
    +++++++++++++++

    function position(n)
    --[[ A=position() 等と書くと Aに三次元の座標テーブルを収める
    nは倍率、0だとアニメーション効果等による座標の移動を無視する。引数省略可]]

    local oX,oY,oZ = obj.ox, obj.oy, obj.oz
    if n==nil then n=1 end
    if n==0 then oX,oY,oZ=0,0,0; n=1 end
    local Pos={}
    Pos[1]=(obj.x+oX)*n
    Pos[2]=(obj.y+oY)*n
    Pos[3]=(obj.z+oZ)*n

    return Pos
    end


    なにこれ
    座標を変数(テーブル)で外に出したい場合
    A={obj.x+obj.ox,obj.y+obj.oy,obj.z+obj.oz}
    と書かずとも
    A=position()
    と書けば全く同じ意味に。すごくどうでも良い!
    カッコの中に数値を入力すると座標に倍率を掛けます、マイナスで逆に。(多分使わない)
    0を入れるとアニメーション効果の動きを無視します(トラックバーの値だけ取得)

    ----------------------------------------------------------

    function linkpos(table,n)
    --[[tableに三次元テーブルを受け取ると座標をリンクする
    nは倍率、0だとアニメーション効果等による座標の移動を無視する]]
    local OX,OY,OZ = obj.ox, obj.oy, obj.oz
    if n==nil then n=1 end
    if n==0 then OX,OY,OZ=0,0,0; n=1 end
    obj.ox=OX+table[1]*n
    obj.oy=OY+table[2]*n
    obj.oz=OZ+table[3]*n
    end


    なにこれ
    先程出した座標を収めた変数(テーブル)を使って他のオブジェクトに
    リンクします、上のスクリプトと併用するといいかも

    例えば。
    レイヤー1に円を、スクリプト制御に A = position() と書く
    他のレイヤーに四角を。位置は適当な場所に。スクリプト制御に
    linkpos(A) と書く。
    これで円の座標を動かすと四角も一緒に動きます。
    linkpos(A,0.5)と書けば円の移動の半分だけ四角が移動します。マイナスなら逆方向。

    ---------------------------------------------------------

    function margepos(pos)
    --[[テーブルのマージ、

    position()などで取得した複数のテーブルを一つのテーブルに纏める]]
    local M={}
    for i = 1,#pos do
    M[i*3-2]=pos[i][1]; M[i*3-1]=pos[i][2]; M[i*3]=pos[i][3]
    end
    return M
    end


    なにこれ
    座標テーブルを一つに纏めます
    格子線などに図形の座標をリンクする場合
    此方の動画では

    レイヤー1のオブジェクトに ax=obj.x ay=obj.y az=obj.z
    レイヤー2のオブジェクトに bx=obj.x by=obj.y bz=obj.z
    レイヤー3のオブジェクトに cx=obj.x cy=obj.y cz=obj.z
    anchor = {ax,ay,az, bx,by,bz ,cx,cy,cz}
    anchor を格子線の座標に入力、と言った感じでしたが

    これを使うと
    レイヤー1のオブジェクトに a=position()
    レイヤー2のオブジェクトに b=position()
    レイヤー3のオブジェクトに c=position()
    anchor = marge({a,b,c})
    格子線の座標にanchor で終わりです。ちょっとだけ楽
    引数にはカッコ{} 必須です。marge(a,b,c)だとダメ。
    可変引数をどう扱えばいいのかよくわかりませんでした。

    訂正:: 格子線の座標に直接 marge({a,b,c}) でOKですね。
    ------------------------------------------------------------

    おしまい
    自分が楽したい用途です。
    グループ制御による立方体空間に収めたくない方向け
    ※AviUtlを起動したら上の3つ灰色で書いたものを
    図形などにスクリプト制御を置き、そこにコピペ。
    &実行(=赤いカーソルが重なればいいだけ)すると
    position(n)とlinkpos(n)、margepos(pos)
    使えるようになります。
    =AviUtlを再起動した場合は一度このスクリプトがある部分を
    赤いカーソルが通過しないと使えません。
    position, linkpos,margepos,の部分は好きに名前を変えて構いません
    只の名前なので一文字でも(他のスクリプトと被って無ければ)大丈夫
    数字は使えないっぽい
    広告
    コメントを書く
    コメントをするには、
    ログインして下さい。