#code{{
ConditionalReader (clip, string filename, string variablename, bool "show")
}}
ConditionalReader は、各フレーム、もしくは、ある範囲のフレームに関する異なった値を含むテキストファイルから、情報をインポートすることを可能にします。
** パラメータ [#a09bf836]
|~パラメータ|~説明|~デフォルト|
|clip|制御されるクリップ。show=true を指定しない限り、影響を受けない。|必須|
|filename|設定したい変数を含むファイル。|必須|
|variablename|情報を挿入させたい変数の名前。|必須|
|show|true に設定すると、このフレームに与えられた値が画像の上にオーバーレイされる。|false|
** ファイルフォーマット [#e2e2ef56]
ファイルは、プレーンテキスト((訳者註: 参考: [[テキスト形式とは 【プレーンテキスト】 - 意味・解説 : IT用語辞典:http://e-words.jp/w/E38386E382ADE382B9E38388E5BDA2E5BC8F.html]]))です。区切りはすべて半角スペースによって行われ、改行は新しいデータセットを表します。大文字と小文字の区別はありません!
''TYPE (int|float|bool)''
各ファイルの中には、1 つの型のデータのみ含めることができます。現在のところ、'''float'''、'''int''' または '''bool''' の値を持つことが可能です。''TYPE'' というキーワードを使用することによって型を指定します。このキーワードが見つかるまでは何も保存されないので、つねにデータの型を指定することから始めるべきです。一度設定された型は変更することができません!
''DEFAULT <値>''
すべてのフレームのデフォルト値を指定します。すべての定義されたフレームを上書きするため、型を指定した直後にこれを指定すべきです。この設定を省略するすることも可能ですが、その場合は、必ずすべてのフレームに関する設定を指定しなければなりません。さもなければ、予期せぬ結果につながるでしょう。
''<フレーム番号> <値>''
<フレーム番号> のフレームに対してのみ値を設定します。
''R <開始フレーム> <終了フレーム> <値>''
ある範囲のフレームに値を適用します。開始フレーム''および''終了フレームがともに含まれるということに注意すべきです。
''I <開始フレーム> <終了フレーム> <開始値> <終了値>''
ある範囲のフレームにわたって 2 つの値の間を補間します。int と float の値に関してのみ動作します。開始フレーム''および''終了フレーム がともに含まれるということに注意すべきです。
** 型 [#f1adafe7]
前述のとおり、指定可能な型は '''float'''、'''int''' または '''bool''' のいずれかです。
'''int''' は整数で、オプションで、ある記号((訳者註: ここでは、16 進数を指定する際に使用される接頭辞の $ を指しているものと思われます。))から開始することも可能です。
'''float''' は小数点を含む小数で、オプションで、ある記号から開始したり、e または E と小数をあとに続けることが可能です。有効な入力は、-732.103 または 7.12e4 です。
'''bool''' は、'''true''' ('''T'''、'''yes''')または '''false''' ('''F'''、'''no''')のいずれかです。
** 使用例 [#c8503515]
''基本的な使用法''
File.txt:
#pre{{
Type float
Default 3.45567
R 45 300 76.5654
2 -671.454
72 -671.454
}}
上記のファイルは、float 値を返します。デフォルトでは 3.45567 を返します。しかし、フレーム 45 からフレーム 300 までは 76.5654 を返します。さらに、フレーム 2 とフレーム 72 は、-671.454 を返します。~
お気づきのように、後で行われた変更が、ファイルの中で先に行われた設定を無効にします。このことは、フレーム「72」によって説明されます。たとえそれが 45 から 300 の範囲の中にあったとしても、より後方で設定された値が返却されます。反対に、その範囲が「72 -671.454」の''後に''指定されたなら、76.5654 を返します。
このファイルを呼び出すスクリプトは、以下のようになります:
#code{{
colorbars(512,512)
trim(0,500)
ScriptClip("subtitle(string(myvar))")
ConditionalReader("file.txt", "myvar", false)
}}
このスクリプトは、「myvar」という名前の変数に値を代入します。この変数は、[[Subtitle]] によって使用され、条件に応じた値を表示するために [[ScriptClip>ConditionalFilter]] によって呼び出されます。
''注意!'' ConditionalReader() 行は、スクリプトの中で「myvar」を使用した''後に''来ます。
''Overlay の調整''
''AviSynth スクリプト:''
#code{{
colorbars(512,256)
a1 = trim(0,600)
a2 = MessageClip("Text clip")
overlay(a1,a2, y = 100, x = 110, mode="subtract", opacity=0, pc_range=true)
ConditionalReader("opacity.txt", "ol_opacity_offset", false)
ConditionalReader("xoffset.txt", "ol_x_offset", false)
}}
''xoffset.txt:''
#pre{{
Type int
Default -50
I 25 50 -50 100
R 50 250 100
I 250 275 100 250
}}
''opacity.txt:''
#pre{{
Type float
Default 0.0
I 25 50 0.0 1.0
R 50 250 1.0
I 250 275 1.0 0.0
}}
基本的には、x のオフセットと不透明度に関するキーフレームを定義しています。フレーム 25 から 50 にかけて、不透明度は 0.0 から 1.0 に拡大され、テキストは左から右へ移動しています。次に、テキストはフレーム 50 から 250 まで固定され、その後、フェードアウトしながら、さらに右へ移動します。~
何を行っているのかを完璧に説明するよりも、上のクリップを見た方が簡単です。
''複雑な ApplyRange''
すでにお気づきかもしれませんが、スクリプトの中でたくさんの [[ApplyRange()>Animate]] を呼び出すと、リソース問題を引き起こすおそれがあります。[[ConditionalFilter]] とあわせて ConditionalReader を使用すれば、効率的な解決につながります。
File.txt:
#pre{{
Type Bool
Default False
2 True
R 45 60 True
72 True
R 200 220 True
210 False
315 True
}}
上記のファイルは、ブール値((訳者註: true または false。))を返します。デフォルトでは false を返します。しかし、フレーム 2、フレーム 45 からフレーム 60 まで、フレーム 72、フレーム 200 からフレーム 220 まで、フレーム 315 は、フレーム 210 を除いて true を返します。お気づきのように、後で行われた変更が、ファイルの中で先に行われた設定を無効にします。このことは、フレーム「210」によって説明されます。たとえ 200 から 220 の範囲にあっても、後で設定された値(false)が返却されます。
このファイルを利用するスクリプトは、以下のようになります:
#code{{
colorbars(512,512)
trim(0,500)
A=Last
FlipHorizontal() # 複雑なフィルタチェインを追加
B=Last
ConditionalFilter(A, B, "MyVar", "==", "False", false)
ConditionalReader("File.txt", "MyVar", false)
}}
このスクリプトは、「MyVar」という名前の変数に値を代入します。この変数は、未処理のバージョンのソースと反転されたバージョンのソースから選択するために [[ConditionalFilter]] によって使用されます。
''注意!'' ConditionalReader() 行は、スクリプトの中で「MyVar」を使用した''後に''来ます。
#hr
註: このページは、AviSynth 2.5.8 RC3 に同梱されている英語版ヘルプの日本語訳です。原文は、AviSynth をインストールしたフォルダ内の Docs/english/corefilters/conditionalreader.htm にあります。なお、このページのテキストおよび画像のライセンスは、オリジナルのそれに準じます。詳しくは、[[AboutLicense]] を参照してください。