Lua

ページ名:Lua

lua.txtをフォーマットしました。

目次

- Luaスクリプトについて -[]

スクリプト制御、スクリプトファイル(*.anm,*.obj,*.scn,*.cam)、テキストのスクリプト制御文字で利用可能なスクリプトにはLua言語が使用出来ます。また幾つかの変数と関数が拡張されています。

- 変数 -[]

対象オブジェクトの情報が以下の変数に入ります。

obj.ox : 基準座標からの相対座標Xobj.oy : 基準座標からの相対座標Yobj.oz : 基準座標からの相対座標Zobj.rx : X軸回転角度(360.0で一回転)obj.ry : Y軸回転角度(360.0で一回転)obj.rz : Z軸回転角度(360.0で一回転)obj.cx : 中心の相対座標Xobj.cy : 中心の相対座標Yobj.cz : 中心の相対座標Zobj.zoom : 拡大率(1.0=等倍)obj.alpha : 不透明度(0.0~1.0/0.0=透明/1.0=不透明)obj.aspect : アスペクト比(-1.0~1.0/プラス=横縮小/マイナス縦縮小)obj.x : 表示基準座標X (ReadOnly)obj.y : 表示基準座標Y (ReadOnly)obj.z : 表示基準座標Z (ReadOnly)obj.w : 画像サイズW (ReadOnly)obj.h : 画像サイズH (ReadOnly)obj.screen_w : スクリーンサイズW (ReadOnly)obj.screen_h : スクリーンサイズH (ReadOnly)obj.framerate : フレームレート (ReadOnly)obj.frame : オブジェクト基準での現在のフレーム番号 (ReadOnly)obj.time : オブジェクト基準での現在の時間(秒) (ReadOnly)obj.totalframe : オブジェクトの総フレーム数 (ReadOnly)obj.totaltime : オブジェクトの総時間(秒) (ReadOnly)obj.layer : オブジェクトが配置されているレイヤー (ReadOnly)obj.index : 複数オブジェクト時の番号 (ReadOnly) ※個別オブジェクト用obj.num : 複数オブジェクト時の数(1=単体オブジェクト/0=不定) (ReadOnly) ※個別オブジェクト用obj.track0 : トラックバー0の値 (ReadOnly) ※スクリプトファイル内のみ使用可obj.track1 : トラックバー1の値 (ReadOnly) ※スクリプトファイル内のみ使用可obj.track2 : トラックバー2の値 (ReadOnly) ※スクリプトファイル内のみ使用可obj.track3 : トラックバー3の値 (ReadOnly) ※スクリプトファイル内のみ使用可obj.check0 : チェックボックスの値 (ReadOnly) ※スクリプトファイル内のみ使用可

- 注意点 -[]

  • モーションブラー等に対応する為にはobj.frameは使わずobj.timeを使うようにしてください。
  • pixel系の関数でオブジェクト全体をドット処理するとかなり重いのであまり実用向きではありません。
  • スクリプトはSJISの2バイト文字の0x5cをエスケープ処理してから実行されます。
  • スクリプト制御、テキストオブジェクト内のスクリプトのUnicode文字はUnicodeタグ(&#????;)に変換されます。
  • 扱えるスクリプトの最大サイズは約32KBです。それ以上の場合はdofile()等を活用してください。
  • スクリプトからスクリプトを呼び出した場合は上手く動作しない場合があります。
  • LuaJITではLua5.0の可変引数(arg変数)が利用できないようです。対応するには5.1の可変引数で実装する必要があります。(0.93-)

- 関数 -[]

ここにあった内容はLua/独自関数に移動しました。

- 使用例 -[]

○テキスト内でスクリプトを使う例[]

以下のテキストでオブジェクト時間のタイムカウンタが表示します。

現在のオブジェクトの時間=

○オブジェクトの座標や角度を時間経過で変化させる例[]

以下のスクリプトで時間と共に右方向に移動しながら右回転します。

obj.ox = obj.ox + obj.time*10obj.rz = obj.rz + obj.time*360

○オブジェクトにフィルタ効果をかける例[]

以下のスクリプトで時間と共に明るくなったり暗くなったりします。

i = math.cos(obj.time*math.pi*2)*50obj.effect("色調補正","明るさ",100+i)

○オブジェクトを複数描画させる例[]

以下のスクリプトでオブジェクトを円状に10個描画します。

n = 10l = obj.w*2for i=0,n do r = 360*i/n x = math.sin(r*math.pi/180)*l y = -math.cos(r*math.pi/180)*l obj.draw(x,y,0,1,1,0,0,r)end

○スクリプトファイル内でトラックバー、チェックボックスの値を使う例[]

スクリプトファイル(*.anm,*.obj,*.scn,*.cam)の先頭で'--track0:名前,最小値,最大値,デフォルト値,移動単位'のように指定するとトラックバーが有効になります。移動単位は'1','0.1','0.01'か省略が出来ます。最大4個のトラックバーが使用できます。

※シーンチェンジでは最大2個になります。'--check0:名前,デフォルト値(0か1)'のように指定するとチェックボックスが有効になります。
--track0:X速度,-10,10,0--track1:Y速度,-10,10,0,1--check0:重力,0obj.ox = obj.ox + obj.track0*obj.timeobj.oy = obj.oy + obj.track1*obj.timeif( obj.check0 ) then obj.oy = obj.oy + obj.time*obj.timeend

○スクリプトファイル内でパラメータ設定を使う例[]

スクリプトファイル(*.anm,*.obj,*.scn,*.cam)の先頭で'--param:デフォルト設定'のように指定するとパラメータ設定の項目が有効になります。最大255バイトまで。

※--color,--file,--dialogと同時に指定出来ません。
--param:dx=10;dy=20;obj.ox = obj.ox + dx*obj.timeobj.oy = obj.oy + dy*obj.time

○スクリプトファイル内で色選択ダイアログを使う例[]

スクリプトファイル(*.anm,*.obj,*.scn,*.cam)の先頭で'--color:デフォルト設定'のように指定すると色選択ダイアログの項目が有効になります。指定した色は変数(color)に格納されます

※--color,--file,--dialogと同時に指定出来ません。
--color:0xffffffobj.load("figure","四角形",color,100)

○スクリプトファイル内でファイル選択ダイアログを使う例[]

スクリプトファイル(*.anm,*.obj,*.scn,*.cam)の先頭で'--file:'のように指定するとファイル選択ダイアログの項目が有効になります。指定したファイルは変数(file)に格納されます

※--color,--file,--dialogと同時に指定出来ません。
--file:obj.load(file)

○スクリプトファイル内で値入力ダイアログを使う例[]

スクリプトファイル(*.anm,*.obj,*.scn,*.cam)の先頭で'--dialog:表示名,変数名=初期値;'のように指定すると値入力ダイアログの項目が有効になります。最大16項目まで指定出来ます。表示名の最後を'/chk','/col','/fig'にするとチェックボックスや色や図形の選択ボタンが追加されます。チェックボックスと選択ボタンはそれぞれ最大4項目まで指定出来ます。

※--color,--file,--dialogと同時に指定出来ません。
--dialog:Xオフセット,x=100;Yオフセット,y=100;obj.ox = obj.ox + xobj.oy = obj.oy + y--dialog:サイズ,size=100;色/col,col=0xffffff;図形/fig,fig="四角形"obj.load("figure",fig,col,size)

○アニメーション効果、カスタムオブジェクトを1ファイルで複数登録する例[]

スクリプトファイル(*.anm,*.obj,*.scn,*.cam)のファイル名の先頭を'@'にして以下のように各スクリプトの先頭に'@名前'のように定義すると複数のスクリプトを纏めて定義することが出来ます。

exedit.anm,exedit.objのスクリプトもこの形式になっています。◇複数登録する場合のファイル内容 [@複数登録例.anm][]
@sample1--track0:速度,-10,10,10obj.ox = obj.ox + obj.track0*obj.time@sample2--track0:速度,-10,10,10obj.oy = obj.oy + obj.track0*obj.time
◇単独登録する場合のファイル内容 [単独登録例.anm][]
--track0:速度,-10,10,10obj.ox = obj.ox + obj.track0*obj.time

○シーンチェンジスクリプトの例[]

以下のスクリプトで時間と共にクロスフェードします。シーンチェンジスクリプトではフレームバッファにシーンチェンジ後の画像、オブジェクトにシーンチェンジ前の画像が入っていてどちらを表示するかの割合をobj.getvalue("scenechange")で取得して処理します。

※0ならオブジェクト、1ならフレームバッファ側になります。
a = 1-obj.getvalue("scenechange")obj.draw(0,0,0,1,a)

○アンカーポイントの表示と座標の取得をする例[]

以下のスクリプトでアンカーポイントの表示と座標の取得をします。

◇ダイアログの変数を使う場合[]
--dialog:座標,pos={}num = 3obj.setanchor("pos",num,"loop");for i=0,num-1 do x = pos[i*2+1] y = pos[i*2+2]end
※3D座標の場合はXYZの3座標ずつ配列に入ります。※pos={}は初期値を入れておくことも出来ます。◇トラックバーを使う場合[]
--track0:X,-1000,1000,0--track1:Y,-1000,1000,0--track2:Z,-1000,1000,0num = obj.setanchor("track",0,"xyz","line");for i=0,num-1 do x = obj.getvalue(0,0,i) y = obj.getvalue(1,0,i) z = obj.getvalue(2,0,i)end
◇複数回のobj.setanchor()を使う場合[]
--dialog:座標1,pos1={};座標2,pos2={}obj.setanchor("pos1",4,"loop","color",RGB(0,255,255));obj.setanchor("pos2",2,"line","color",RGB(0,255,0));
※同じダイアログの変数を複数で使うことは出来ません。

○トラックバー変化方法スクリプトの例[]

以下のスクリプトでトラックバーの値を開始点から終了点まで等速で変化させます。トラックバー変化方法スクリプトでは通常のオブジェクト関係の変数や関数は使用出来ません。スクリプトファイル(*.tra)の先頭で'--twopoint'のように指定すると中間点を無視する変化方法になります。

'--param:初期値(整数)'のように指定するとトラックバー設定が出来るようになります。'--speed:加速初期値(0/1),減速初期値(0/1)'のように指定すると加減速の設定が出来るようになります。
index,ratio = math.modf(obj.getpoint("index"))st = obj.getpoint(index);ed = obj.getpoint(index+1);return st + (ed-st)*ratio;

- Luaのバイナリについて(-0.92) -[]

付属のlua51.dllはLuaの本家サイトにあるバージョン5.1.4に5.1.4-2のパッチを当ててビルドしたものです。

- Lua/LuaJITのバイナリについて(0.93-) -[]

付属のlua51.dllはLuaの本家サイトにあるバージョン5.1.4に5.1.4-2のパッチを当ててビルドしたものです。

付属のlua51jit.dllはLuaJITのサイトにあるバージョン2.0.5をビルドしたものです。

Luaの本家サイト[]

http://www.lua.org/

LuaJITのサイト[]

https://luajit.org/

- Luaのライセンス -[]

Lua License

Lua is licensed under the terms of the MIT license reproduced below. This means that Lua is free software and can be used for both academic and commercial purposes at absolutely no cost.

For details and rationale, see http://www.lua.org/license.html .

Copyright (C) 1994-2008 Lua.org, PUC-Rio.

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

- LuaJITのライセンス -[]

LuaJIT -- a Just-In-Time Compiler for Lua. http://luajit.org/

Copyright (C) 2005-2017 Mike Pall. All rights reserved.

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

[ MIT license: http://www.opensource.org/licenses/mit-license.php ]

[ LuaJIT includes code from Lua 5.1/5.2, which has this license statement: ]

Copyright (C) 1994-2012 Lua.org, PUC-Rio.

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

[ LuaJIT includes code from dlmalloc, which has this license statement: ]

This is a version (aka dlmalloc) of malloc/free/realloc written by Doug Lea and released to the public domain, as explained at http://creativecommons.org/licenses/publicdomain



特に記載のない限り、コミュニティのコンテンツはCC BY-SAライセンスの下で利用可能です。

シェアボタン: このページをSNSに投稿するのに便利です。


最近更新されたページ

左メニュー

左メニューサンプル左メニューはヘッダーメニューの【編集】>【左メニューを編集する】をクリックすると編集できます。ご自由に編集してください。掲示板雑談・質問・相談掲示板更新履歴最近のコメントカウン...

電球ボトル

この記事は種族検索のためのページです。Tardis"元人間の物人の遺伝子は物人の世界から来た同族の遺伝子と全く同じだったの。" - Tardis下記は種族が同じキャラクターのページへのリンク一覧です。...

電球

この記事は種族検索のためのページです。Tardis"元人間の物人の遺伝子は物人の世界から来た同族の遺伝子と全く同じだったの。" - Tardis下記は種族が同じキャラクターのページへのリンク一覧です。...

闇の中心

闇の中心EnglishCenter of Darkness 属性 DemonUnknown目次1 属性解説2 闇の中心の関係者2.1 幽閉されたナイトメア種2.2 幽閉された荒らし3 関連項目属性解説...

この記事は種族検索のためのページです。Tardis"元人間の物人の遺伝子は物人の世界から来た同族の遺伝子と全く同じだったの。" - Tardis下記は種族が同じキャラクターのページへのリンク一覧です。...

野生の毒沼

野生の毒沼EnglishVenomous wild swamp 属性 VenomFeral地理情報地名の由来属性からの連想属性解説[]Venom - A deadly essence that can...

部分フィルタ

部分フィルタ上フィルタオブジェクト部分フィルタとは、部分フィルタに追加されたフィルタ効果を画面の一部分のみに反映させるフィルタオブジェクトの1つである。※フィルタによっては正しく動作しません。目次1 ...

輪郭系エフェクト

輪郭系エフェクト上フィルタオブジェクトこの記事では、「オブジェクトの輪郭」を変更する系のフィルタオブジェクトについて説明する。目次1 凸エッジ1.1 ◇幅1.2 ◇高さ1.3 ◇角度2 エッジ抽出2....

設定ダイアログ/トラックバー

設定ダイアログ/トラックバー上設定ダイアログ目次1 移動の種類2 基本の移動方法2.1 直線移動2.2 曲線移動2.3 加減速移動2.4 瞬間移動2.5 中間点無視2.6 移動量指定2.7 ランダム移...

設定ダイアログ

設定ダイアログ上拡張編集オブジェクトの追加やオブジェクト自体をダブルクリックすることで設定ダイアログが表示されます。表示中にダブルクリックで閉じることも出来ます。目次1 操作方法2 右クリックメニュー...

色関係エフェクト

色関係エフェクト上フィルタオブジェクトこの記事では、色関係のフィルタオブジェクトについて説明する。目次1 色調補正1.1 ◇明るさ1.2 ◇コントラスト1.3 ◇色相1.4 ◇輝度1.5 ◇彩度1.6...

自演コメント風スクリプト

Aviutl 自演コメント風スクリプト anm 種類使用種別アニメーション効果動作種別文字列絵画外部情報作者gometh公開日2017/12/2自演コメントとは、gometh氏によるanm拡張子のAv...

直方体展開

Aviutl 直方体展開 anm 種類使用種別アニメーション効果動作種別3D絵画外部情報作者ティム公開日2011/5/27直方体展開とは、ティム氏によるanm拡張子のAviutlスクリプトの1つである...

盗聴器

この記事は種族検索のためのページです。Tardis"元人間の物人の遺伝子は物人の世界から来た同族の遺伝子と全く同じだったの。" - Tardis下記は種族が同じキャラクターのページへのリンク一覧です。...

液状荒野

液状荒野EnglishLiquid wilderness 属性 SiltPlague地理情報地名の由来属性からの連想属性解説[]Silt - Weaker version of Stone in so...

歪み系エフェクト

歪み系エフェクト上フィルタオブジェクトこの記事では、歪み関係のフィルタオブジェクトについて説明する。目次1 ミラー1.1 ◇透明度1.2 ◇減衰1.3 ◇境目調整1.4 ◇ミラーの方向1.5 ◇中心の...

極座標変換+ぼかしミラー

Aviutl 極座標変換+ぼかしミラー anm 種類使用種別アニメーション効果動作種別基本機能の拡張、2D絵画、3D絵画外部情報作者ティム公開日2012/3/4極座標変換+ぼかしミラーとは、ティム氏に...

本、辞書

この記事は種族検索のためのページです。Tardis"元人間の物人の遺伝子は物人の世界から来た同族の遺伝子と全く同じだったの。" - Tardis下記は種族が同じキャラクターのページへのリンク一覧です。...