Lua/独自関数

Aviutlでは、以下の関数が追加されています。

## ○obj.mes

`obj.mes(text)`

テキストオブジェクトの中で指定のテキストを追加します。テキストオブジェクトのテキスト内のみ使用出来ます。

※obj.を省略してmes()のみでも使用出来ます。
* text : 表示するテキストを指定します。

例：obj.mes("この文字が挿入されて表示されます")

## ○obj.effect

`obj.effect([name,param1,value1,param2,value2,...])`

指定のフィルタ効果を実行します。メディアオブジェクトのみ使用出来ます。引数なしで呼ぶとスクリプト以降のフィルタ効果を実行します。

* name : エフェクトの名前を指定します。
* param1 : エフェクトのパラメータの名前を指定します。
* value1 : エフェクトのパラメータの値を指定します。
	+ param?,value?の組み合わせは必要な分だけ指定できます。

※トラックバー、チェックボックス以外の設定のparam,valueはオブジェクトファイルのエクスポート等で出力された時の名前や値になります。
※名称が変わるトラックバーはエクスポート等の出力での名前を参照して下さい。
※ディスプレイスメントマップの形状指定で"type"を0,"name"を"\*tempbuffer"に指定するとtempbufferを形状として読み込みます。
例：obj.effect("色調補正","明るさ",150,"色相",180)

## ○obj.draw

`obj.draw([ox,oy,oz,zoom,alpha,rx,ry,rz])`

現在のオブジェクトを描画します。メディアオブジェクトのみ使用出来ます。通常何もしなくても最後に描画されますがobj.draw()を使うことによりオブジェクトを複数回描画することが出来ます。

※obj.draw()を使用した場合スクリプト以降のフィルタ効果は実行されません。
※obj.effect()を引数なしで呼ぶことで事前にスクリプト以降のフィルタ効果を実行出来ます。
* ox : 相対座標X
* oy : 相対座標Y
* oz : 相対座標Z
* zoom : 拡大率(1.0=等倍)
* alpha : 不透明度(0.0=透明/1.0=不透明)
* rx : X軸回転角度(360.0で一回転)
* ry : Y軸回転角度(360.0で一回転)
* rz : Z軸回転角度(360.0で一回転)

例：obj.draw(2,10,0)

## ○obj.drawpoly

`obj.drawpoly(x0,y0,z0,x1,y1,z1,x2,y2,z2,x3,y3,z3[,u0,v0,u1,v1,u2,v2,u3,v3,alpha])`

現在のオブジェクトの任意部分を任意の四角形で描画します。メディアオブジェクトのみ使用出来ます。

※内角が全て180度以下の平面以外は正しく描画されません。
※頂点0から3が時計回りになる面が表面になります。
※obj.drawpoly()を使用した場合スクリプト以降のフィルタ効果は実行されません。
* x0,y0,z0 : 四角形の頂点0の座標
* x1,y1,z1 : 四角形の頂点1の座標
* x2,y2,z2 : 四角形の頂点2の座標
* x3,y3,z3 : 四角形の頂点3の座標
* u0,v0 : 頂点0に対応するオブジェクトの画像の座標
* u1,v1 : 頂点1に対応するオブジェクトの画像の座標
* u2,v2 : 頂点2に対応するオブジェクトの画像の座標
* u3,v3 : 頂点3に対応するオブジェクトの画像の座標

例：obj.drawpoly(-50,-50,0, 50,-50,0, 50,50,0, -50,50,0, 0,0, obj.w,0, obj.w,obj.h, 0,obj.h)

## ○obj.load

`obj.load([type],...)`

現在のオブジェクトの画像を読み込みます。typeを省略した場合は自動的に判別します。

※読み込まれていた画像は破棄されます。
### ◇動画ファイル

`obj.load("movie",file[,time,flag])`

動画ファイルから指定時間の画像を読み込みます。

* file : 動画ファイル名
* time : 表示する画像の時間(秒)(省略時はオブジェクトの現時間)
* flag : 0=アルファ無し / 1=アルファ付き
* 戻り値 : 動画の総時間(秒)

例：obj.load("movie","c:\\test.avi")

### ◇画像ファイル

`obj.load("image",file)`

画像ファイルを読み込みます。

* file : 画像ファイル名

例：obj.load("image","c:\\test.bmp")

### ◇テキスト

`obj.load("text",text[,speed,time])`

テキストを読み込みます。色とサイズ、フォントの制御文字が使用出来ます。speed,timeを設定すると表示する文字数を変更出来ます。

※テキストオブジェクトには使用出来ません。
* text : 読み込むテキスト
* speed : timeパラメータの1秒間で表示する文字数
* time : speedパラメータに対する経過時間

例：obj.load("text","この文字が画像として読み込まれます")

### ◇図形

`obj.load("figure",name[,color,size,line])`

図形を読み込みます。

* name : 図形名
* color : 色(0x000000～0xffffff)
* size : 図形のサイズ
* line : 図形のライン幅

例：obj.load("figure","円",0xffffff,100)

### ◇フレームバッファ

`load("framebuffer"[,x,y,w,h])`

フレームバッファから読み込みます。

* x,y,w,h : フレームバッファから取得する範囲(省略時は全体)

### ◇仮想バッファ

`load("tempbuffer"[,x,y,w,h])`

仮想バッファから読み込みます。

※仮想バッファはobj.copybuffer(),obj.setoption()で作成することが出来ます。
* x,y,w,h : 仮想バッファから取得する範囲(省略時は全体)

### ◇レイヤー上のオブジェクト

`obj.load("layer",no[,effect])`

指定のレイヤー上のオブジェクトを読み込みます。

* no : レイヤー番号(1～)
* effect : 追加エフェクトの実行( true=する / false<デフォルト>=しない )

### ◇直前オブジェクト

`obj.load("before");`

直前オブジェクトを読み込みます。カスタムオブジェクトで他のオブジェクトを読み込む前の時のみ使えます。

## ○obj.setfont

`obj.setfont(name,size[,type,col1,col2])`

obj.load()のテキストで使うフォントを指定します。

※スクリプトの呼び出し毎に指定する必要があります。
* name : フォント名
* size : フォントサイズ
* type : 文字の装飾(0～4)
* 0=標準文字 / 1=影付き文字 / 2=影付き文字(薄)
* 3=縁取り文字 / 4=縁取り文字(細)
* col1 : 文字の色(0x000000～0xffffff)
* col2 : 影・縁の色(0x000000～0xffffff)

## ○obj.rand

`obj.rand(st_num,ed_num[,seed,frame])`

乱数を発生させます。通常の乱数と異なり同一時間のフレームで常に同じ値が出るように乱数を発生させます。

※obj.を省略してrand()のみでも使用出来ます。
* st\_num : 乱数の最小値
* ed\_num : 乱数の最大値
* seed : 乱数の種(省略時はオブジェクト毎に異なる乱数になります。プラスの値を指定すると種が同じでもオブジェクト毎に異なる乱数になり、マイナスの値では種が同じならば全てのオブジェクトで同じ乱数になります)
* frame : フレーム番号(省略時は現在のフレームになります)

例：obj.rand(10,20)

## ○obj.setoption

`obj.setoption(name,value)`

現在のオブジェクトの各種オプションを設定します。

※スクリプトの呼び出し毎に指定する必要があります。
* name : オプション名
* value : オプション値

### ◇裏面を表示しない

`obj.setoption("culling",value)`

* value : 0=表示 / 1=非表示

### ◇カメラの方向を向く

`obj.setoption("billboard",value)`

* value : 0=向かない / 1=横方向のみ / 2=縦方向のみ / 3=向く

### ◇シャドーの対象

`obj.setoption("shadow",value)`

* value : 0=非対象 / 1=対象

### ◇アンチエイリアス

`obj.setoption("antialias",value)`

* value : 0=しない / 1=する

### ◇合成モード

`obj.setoption("blend",value[,option])`

* value : 0=通常 / 1=加算 / 2=減算 / 3=乗算 / 4=スクリーン / 5=オーバーレイ / 6=比較(明) / 7=比較(暗) / 8=輝度 / 9=色差
	+ 以下は仮想バッファ専用の合成モードです。
		- "alpha\_add"=色情報は加重平均してアルファ値は加算します
		- "alpha\_max"=色情報は加重平均してアルファ値は大きい方を採用します
		- "alpha\_sub"=色情報は何もせずにアルファ値を減算します
		- "alpha\_add2"=色情報は重ね合わせしてアルファ値は加算します
* option : "force"=強制指定モード

フレームバッファへの描画の合成モードは元々の合成モードが通常の場合のみ反映されます。元々が通常以外の場合で反映させるには"force"オプションを指定してください。

### ◇描画先を仮想バッファに変更する

`obj.setoption("drawtarget","tempbuffer"[,w,h])`

* w,h : 仮想バッファのサイズ(省略時は初期化しません)

描画先を仮想バッファにすると`obj.draw(),obj.drawpoly()`での描画が仮想バッファに対して行われます。この場合はオブジェクトの持っている座標等の設定は反映せず引数の座標そのままで描画されます。サイズを指定すると仮想バッファを透明色で初期化します。仮想バッファは全てのオブジェクトで共用になります。

### ◇描画先をフレームバッファに変更する

`obj.setoption("drawtarget","framebuffer")`

`obj.draw(),obj.drawpoly()`の描画先をフレームバッファにします。フレームバッファに対してdraw()等で描画を行っていない場合にはsetoption()で変更しなくてもスクリプト終了後には自動的にフレームバッファに対しての描画となります。

### ◇スクリプト内でフレームバッファに描画されたかのステータスを変更する

`obj.setoption("draw_state",flag)`

* flag : true=描画済み / false=未描画

### ◇オブジェクトのフォーカス枠モード

`obj.setoption("focus_mode",value)`

* value : "fixed\_size"=大きさ固定の枠にする

### ◇カメラのパラメータを設定する

`obj.setoption("camera_param",cam)`

カメラの各種パラメータを設定します。カメラがエディットモードの時は反映されません。

※カメラ効果、スクリプト(カメラ制御)のみ使用可
* cam : カメラのパラメータ(テーブル)
	+ .x : カメラの座標X
	+ .y : カメラの座標Y
	+ .z : カメラの座標Z
	+ .tx : カメラの目標座標X
	+ .ty : カメラの目標座標Y
	+ .tz : カメラの目標座標Z
	+ .rz : カメラの傾き
	+ .ux : カメラの上方向単位ベクトルX
	+ .uy : カメラの上方向単位ベクトルY
	+ .uz : カメラの上方向単位ベクトルZ
	+ .d : カメラからスクリーンまでの距離(焦点距離)

例：cam = obj.getoption("camera\_param");

## ○obj.getoption

`obj.getoption(name,...)`
現在のオブジェクトの各種オプションを取得します。

* name : オプション名

### ◇トラックバーの移動モード

`obj.getoption("track_mode",value)`

* value : トラックバーの番号
* 戻り値 : 0=無し / 1=直線 / 2=曲線 / 3=瞬間 / 4=中間点 / 5=移動量 / 6=ランダム / 7=加減速 / 8=反復

### ◇オブジェクトの区間の数

`obj.getoption("section_num")`

* 戻り値 : 区間の数(中間点の数+1)

### ◇スクリプト名を取得する

`obj.getoption("script_name"[,value][,skip])`

* value : フィルタ効果の上下の相対位置(0は自分/マイナスは上/プラスは下)
* skip : 無効になっているフィルタ効果をスキップするか( true=する / false<デフォルト>=しない )
* 戻り値 : スクリプト名(対象がスクリプト以外なら空のテキスト)

例：if obj.getoption("script\_name") == obj.getoption("script\_name",-1) then

※標準で入っているスクリプト名は取得出来ません
### ◇GUIの表示状態を調べる

`obj.getoption("gui")`

* 戻り値 : true=表示 / false=非表示

※動画の出力中は非表示状態になります。
### ◇カメラ制御状態を取得する

`obj.getoption("camera_mode")`

* 戻り値 : 0=カメラ制御対象外 / 0以外=カメラ制御対象

### ◇カメラのパラメータを取得する

`obj.getoption("camera_param")`

* 戻り値 : カメラのパラメータ(テーブル)

※テーブルの内容はobj.setoption("camera\_param")と同じです。
例：cam = obj.getoption("camera\_param");

### ◇個別オブジェクトが有効かを調べる

`obj.getoption("multi_object")`

* 戻り値 : true=有効 / false=無効

## ○obj.getvalue

`obj.getvalue(target[,time,section])`

現在のオブジェクトの設定値を取得します。

* target : 設定種別
	+ 0=トラックバー0の値
	+ 1=トラックバー1の値
	+ 2=トラックバー2の値
	+ 3=トラックバー3の値
	+ "x"=基準座標X
	+ "y"=基準座標Y
	+ "z"=基準座標Z
	+ "rx"=基準X軸回転角度
	+ "ry"=基準Y軸回転角度
	+ "rz"=基準Z軸回転角度
	+ "zoom"=基準拡大率(100=等倍)
	※obj.zoom(1.0=等倍)と異なっているので注意
	+ "alpha"=基準不透明度(0.0～1.0/0.0=透明/1.0=不透明)
	+ "aspect"=基準アスペクト比(-1.0～1.0/プラス=横縮小/マイナス縦縮小)
	+ "time"=オブジェクト基準の時間
	+ "layer7.x"=レイヤー7のオブジェクトの基準座標X
	※layer[レイヤー番号].[設定種別]で別レイヤーのオブジェクトの値を取得出来ます
	+ "scenechange"=シーンチェンジでの表示割合(0.0～1.0) シーンチェンジのみ使用可
	※使い方はシーンチェンジスクリプトの例を参照してください
* time : どの時点の値を取得するかの時間(秒)(省略時は現時間)
* section : 時間の基準となる区間の番号(省略時は開始点)
	+ 0=開始点 / 1=最初の中間点 / 2=2個目の中間点 / -1=終了点
	※対象オブジェクトの時間制御は反映されません。

## ○obj.setanchor

`obj.setanchor(name,num[,option,..])`

アンカーポイントを表示します。この関数を呼び出した時にアンカーポイントの表示設定とアンカーが移動していた場合の変数への反映を行います。この関数は呼び出し毎に8回まで呼び出す事が出来ます。呼び出し順序や回数を変更すると正しく反映されない場合があります。

* name : --dialogで指定されている座標を格納する変数名を指定します。
※変数名を文字列として指定
"track"を指定すると--track0から指定されているトラックバーの始点終点中間点の値を参照します。
※直接テーブル変数名を指定するとアンカー表示や移動なしで線だけを表示します。
* num : アンカーポイントの数を指定します。全てのアンカー合計で16個まで指定できます。
* name="track"の場合は0を指定して下さい。アンカーポイント数は開始終了中間点の数になります。
* option : 各種オプションを列挙出来ます。
	+ "line"=アンカーポイントを線で結びます。
	+ "loop"=アンカーポイントを線で結び一周させます。
	+ "star"=アンカーポイントをオブジェクトの中心とそれぞれ線で結びます。
	+ "arm"=アンカーポイントとオブジェクトの中心を線で結びます。
	+ "color"=上記オプションの線の色を変更します。後続の引数に色(0x000000～0xffffff)を指定します。
	+ "inout"=上記オプションの線の表示をIN,OUT側の2個として表示します。(アンカー数は半々になります)
	+ "xyz"=アンカーポイントを3D座標で制御します。※デフォルトは2D座標
	※カメラ制御+シャドーで使用する場合にプレビューで影部分が少しずれる場合があります。
* 戻り値 : 取得したアンカーポイントの数

例：obj.setanchor("pos",3)

n = obj.setanchor("track",0,"line")
☆trackテンプレートでの実装方法
※"track"の場合を除きます。

```
{{Track|dialog=.setanchor/anc:{} }}

```

## ○obj.getaudio

`obj.getaudio(buf,file,type,size)`

音声ファイルからオーディオデータを取得します。オブジェクトの時間を基準とした位置のデータを取得します。

* buf : データを受け取るテーブルを指定します。
※nilを指定すると第3戻り値でテーブルを返します。
* file : 音声ファイル名("audiobuffer"を指定すると編集中の音声データが取得出来ます)
* type : 取得データの種類
	+ "pcm"=PCMサンプリングデータ(16bitモノラル)
	+ "spectrum"=周波数毎の音量データ
	+ "fourier"=音声を離散フーリエ変換したデータ(sizeの指定は不要)
	※元周波数の1/2048～1/2まで1/2048刻みの1024個のデータになります(たぶん…
* size : 取得するデータ数(指定した値より少ない場合があります)
* 戻り値 : 取得したデータ数,サンプリングレート

例：n = obj.getaudio(buf,"audiobuffer","spectrum",32)

n,rate = obj.getaudio(buf,"c:\\test.wav","pcm",1000)
n,rate,buf = obj.getaudio(nil,"c:\\test.wav","pcm",1000)
## ○obj.filter

`obj.filter(name[,param1,value1,param2,value2,...])`

指定のスクリーン全体へのフィルタ(フィルタオブジェクト)を実行します。拡張編集プラグインで追加されたフィルタのみ使用出来ます。引数の指定方法はobj.effect()と同様になります。フィルタによっては正しく使用出来ない場合があります。

※オブジェクトの画像データが壊れる場合があります。
例：obj.filter("色調補正","明るさ",150,"色相",180)

## ○obj.copybuffer

`obj.copybuffer(dst,src)`

画像バッファをコピーします。

※コピー先の画像バッファのサイズはコピー元のサイズに変更されます。
* dst : コピー先のバッファ
	+ "tmp"=仮想バッファ
	+ "obj"=オブジェクト
	+ "cache:xxxx"=キャッシュバッファ(xxxxは任意の名前)
* src : コピー元のバッファ
	+ "frm"=フレームバッファ
	+ "obj"=オブジェクト
	+ "tmp"=仮想バッファ
	+ "cache:xxxx"=キャッシュバッファ(xxxxは任意の名前)
	+ "image:xxxx"=画像ファイル(xxxxはスクリプトフォルダからの相対パスの画像ファイル名)
* 戻り値 : true=成功 / false=失敗

※dstとsrcの組み合わせは以下のものが使用できます。
* "obj" <= "tmp"
* "obj" <= "frm"
* "obj" <= "cache:xxxx"
* "obj" <= "image:xxxx"
* "tmp" <= "obj"
* "tmp" <= "frm"
* "tmp" <= "cache:xxxx"
* "tmp" <= "image:xxxx"
* "cache:xxxx" <= "obj"
* "cache:xxxx" <= "tmp"

キャッシュバッファの名前は全てのオブジェクトで共通となります。キャッシュバッファや仮想バッファは画像データのキャッシュから確保されるので他の画像等をキャッシュ数より読み込むと破棄される場合があります。

※小さい画像等の場合は面積の合計が最大画像サイズ分で一つのキャッシュ分になります。
※キャッシュを使う場合はスクリプトの呼び出し毎に完結させた方が無難です。
## ○obj.getpixel

`obj.getpixel(x,y[,type])`

現在のオブジェクトのピクセル情報を取得します。引数なしで呼ぶとオブジェクトのピクセル数を取得できます。

※ピクセル数はobj.w,obj.hと異なる場合があります。(色々あって分かりづらくなってます…)
* x,y : 取得するピクセルの座標
* type : ピクセル情報のタイプ("col","rgb","yc")
※省略時は obj.pixeloption("type") で指定したタイプ(通常は"col")
* 戻り値
	+ タイプが"col"の場合 : 色情報(0x000000～0xffffff)と不透明度(0.0=透明/1.0=不透明)
	col,a = obj.getpixel(0,0,"col")
	+ タイプが"rgb"の場合 : 各8bit(0～255)のRGBA情報
	r,g,b,a = obj.getpixel(0,0,"rgb")
	+ タイプが"yc"の場合 : YCbCr内部形式
	y,cb,cr,a = obj.getpixel(0,0,"yc")
	+ 引数なし : 横、縦のピクセル数
	w,h = obj.getpixel()

## ○obj.putpixel

`obj.putpixel(x,y,...)`

現在のオブジェクトのピクセル情報を書き換えます。引数なしで呼ぶとオブジェクトのピクセル数を取得できます。受け渡すピクセル情報のタイプはobj.pixeloption("type") で指定したタイプになります。

* x,y : 書き換えるピクセルの座標
* 色情報
	+ タイプが"col"の場合 : 色情報(0x000000～0xffffff)と不透明度(0.0=透明/1.0=不透明)
	obj.putpixel(0,0,col,a)
	+ タイプが"rgb"の場合 : 各8bit(0～255)のRGBA情報
	obj.putpixel(0,0,r,g,b,a)
	+ タイプが"yc"の場合 : YCbCr内部形式
	obj.putpixel(0,0,y,cb,cr,a)

## ○obj.copypixel

`obj.copypixel(dst_x,dst_y,src_x,src_y)`

現在のオブジェクトのピクセル情報をコピーします。

* dst\_x,dst\_y : コピー先の座標
* src\_x,src\_y : コピー元の座標

## ○obj.pixeloption

`obj.pixeloption(name,value)`

`obj.getpixel(),obj.putpixel(),obj.copypixel()`の処理オプションを設定します。

※スクリプトの呼び出し毎に指定する必要があります。
* name : オプション名
* value : オプション値

### ◇ピクセル情報タイプを指定する

`obj.pixeloption("type",value)`

* value : "col" / "rgb" / "yc"

### ◇ピクセル情報の読み出し先を指定する

`obj.pixeloption("get",value)`

* value : "obj"=オブジェクト / "frm"=フレームバッファ(アルファ値がありません)

### ◇ピクセル情報の書き込み先を指定する

`obj.pixeloption("put",value)`

* value : "obj"=オブジェクト / "frm"=フレームバッファ(アルファ値がありません)

### ◇書き込む時のブレンドタイプを指定する

`obj.pixeloption("blend",value)`

* value : 引数なし=置き換え / 0=通常 / 1=加算 / 2=減算 / 3=乗算 / 4=スクリーン / 5=オーバーレイ / 6=比較(明) / 7=比較(暗) / 8=輝度 / 9=色差

## ○obj.getpixeldata

`obj.getpixeldata([option,...])`

現在のオブジェクトの画像データを読み出します。この関数はDLLを利用して画像処理をする為のものです。画像データは現在のオブジェクト画像の解像度でRGBA(32bit)形式で格納されます。画像データの内容は`draw(),effect()`等の描画処理系の関数を使用すると壊れますので必要であれば別の領域にコピーして処理して下さい。

* option : 各種オプションを列挙出来ます。
	+ "work"=画像と同じサイズのワークバッファのポインタを取得します。
	+ "alloc"=メモリ(フルユーザデータ)を確保して格納します
* 戻り値 : データのポインタ(ユーザーデータ),横,縦のピクセル数

例：data,w,h = obj.getpixeldata()

work = obj.getpixeldata("work")
## ○obj.putpixeldata

`obj.putpixeldata(data)`

現在のオブジェクトへ画像データを書き込みます。この関数はDLLを利用して画像処理をする為のものです。getpixeldata()で取得出来る画像データ形式と同じ物を現在のオブジェクトに書き込みます。画像データの解像度はオブジェクトと同じでなけれなばなりません。

* data : 画像データへのポインタ(ユーザーデータ)

例：obj.putpixeldata(data)

## ○obj.getpoint

`obj.getpoint(target[,option])`

トラックバーの値を取得します。

* target : 整数=各区間でのトラックバー値
	+ 0=開始点 / 1=最初の中間点 / 2=2個目の中間点 / ...
		- optionで取得する関連トラックの相対位置を指定することが出来ます。
	+ "index"=現在の区間での位置を取得します。
		- 開始点と最初の中間点の間の場合は0.5等の少数で表されます。
	+ "num"=開始終了中間点の総数を取得します。
	+ "time"=現在の時間を取得します。
		- optionで時間を取得する区間を指定することができます。
	+ "accelerate"=加速度が設定されているかを取得します。
		- 戻り値 : true=有効 / false=無効
	+ "decelerate"=減速度が設定されているかを取得します。
		- 戻り値 : true=有効 / false=無効
	+ "param"=トラックバーの設定値を取得します。
	+ "link"=関連トラックでのインデックスと総数を取得します。
		- index,num = obj.getpoint("link")
		- 関連トラックは座標等で他のトラックの値を取得する為に使用します。
		- X座標での戻り値：0,3 / Y座標での戻り値：1,3 / Z座標での戻り値：2,3

## ○obj.getinfo

`obj.getinfo(name,...)`

各種環境情報を取得します。

* name : 取得する情報の名前

### ◇スクリプトフォルダのパスを取得する

`obj.getinfo("script_path")`

* 戻り値 : スクリプトフォルダのパス

### ◇動画の出力中かを調べる

`obj.getinfo("saving")`

* 戻り値 : true=出力中 / false=非出力中

### ◇最大画像サイズを取得する

`max_x,max_y = obj.getinfo("image_max")`

* 戻り値 : 最大画像サイズ(横幅,高さ)

## ○obj.interpolation

`obj.interpolation(time,x0,y0,z0,x1,y1,z1,x2,y2,z2,x3,y3,z3)`

連続した点p0(x0,y0,z0),p1(x1,y1,z1),p2(x2,y2,z2),p3(x3,y3,z3)から時間time(0～1)に応じたp1,p2間の座標を計算します。

※y,z座標は省略することが出来ます。
例：x,y,z = obj.interpolation(time,x0,y0,z0,x1,y1,z1,x2,y2,z2,x3,y3,z3)

x,y = obj.interpolation(time,x0,y0,x1,y1,x2,y2,x3,y3)
## ○RGB

`RGB(r,g,b)`

色情報(0x000000～0xffffff)と赤(0～255),緑(0～255),青(0～255)各要素の相互変換をします。r,g,bを2つ指定した場合はオブジェクトの時間経過に応じて色を変化させます。

例：col = RGB(r,g,b)

r,g,b = RGB(col)
col = RGB(r1,g1,b1,r2,g2,b2)
## ○HSV

`HSV(h,s,v)`

色情報(0x000000～0xffffff)と色相(0～360),彩度(0～100),明度(0～100)各要素の相互変換をします。h,s,vを2つ指定した場合はオブジェクトの時間経過に応じて色を変化させます。

例：col = HSV(h,s,v)

h,s,v = HSV(col)
col = HSV(h1,s1,v1,h2,s2,v2)
## ○OR / AND / XOR

`OR(a,b) / AND(a,b) / XOR(a,b)`

OR,AND,XORのビット演算をします。

例：c = OR(a,b)

## ○SHIFT

`SHIFT(a,shift)`

算術シフトをします。shiftが正の数だと左シフト、負の数だと右シフトになります。

例：b = SHIFT(a,1)

## ○debug\_print

`debug_print(text)`

指定の文字をOutputDebugString()に送ります。デバッグ用です。

※スクリプト実行エラーのメッセージは自動的にOutputDebugString()に送られるようになっています。
* text : デバッグ表示文字

例 : debug\_print("デバッグ表示")