ConditionalReader の変更点

  • 追加された行はこの色です。
  • 削除された行はこの色です。
  • ConditionalReader へ行く。

#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 <値>''

すべてのフレームのデフォルト値を指定します。すべての定義されたフレームを上書きするため、型を指定した直後にこれを指定すべきです。この設定を省略するすることも可能ですが、その場合は、必ずすべてのフレームに関する設定を指定しなければなりません。さもなければ、予期せぬ結果につながるでしょう。

''&lt;フレーム番号&gt; &lt;値&gt;''

&lt;フレーム番号&gt; のフレームに対してのみ値を設定します。

''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]] を参照してください。