これは、かつて「AviSynthのぺーじ」として公開されていたものの "残骸" です。ここに記されている内容には、間違いが含まれている可能性があります。より正確で新しい情報を知りたい場合は、AviSynth 付属のドキュメントや AviSynth 公式サイトを参考にすることをおすすめします。私(にーやん)が管理人をつとめる AviSynth Wiki も利用してください。また、このページは、予告なしに削除される可能性もあります。

Dustプラグイン使用時の注意

 前のページでフィールド別にフィルタをかける方法を紹介しました。

 この方法では、トップフィールドとボトムフィールドのそれぞれにフィルタをかけるため、フィルタ(プラグイン)を2回呼び出す必要があります。

 しかしながら、例外的に1スクリプト内で一度しか呼び出すことのできないフィルタも存在します。Dustプラグインに収録されているフィルタ(FaeryDustPixieDustなど)がそうです。

 これらのフィルタを、前のページで紹介した方法でフィールド別にかけようとすると、不具合が発生してしまいます。
[スクリプト例]
SeparateFields()
Top = SelectEven()
Bottom = SelectOdd()
Top = Top.FaeryDust(2) #Dustフィルタ
Bottom = Bottom.FaeryDust(2) #Dustフィルタ
Interleave(Top, Bottom)
Weave()
フィルタ適用前
 試しに左のビデオクリップに、上記のスクリプトを実行してみました。
フィールド別にDust
 すると、エラーこそ出ないものの、左の画像のようになってしまいました。

 どうやら、1フレーム目の画像が挿入されてしまったようです。

Dustプラグインをフィールド別に使用する方法

 フィールド別にDust系のフィルタをかけるためには、それぞれのフィールドごとにDustプラグインを呼び出さなければなりません。

 しかし、1つのDustプラグインからDust系のフィルタを2回呼び出すと、不具合が発生してしまいます。

 この不具合を回避するためには、1つのDustプラグインを使用するのではなく、各フィールドごとに呼び出すプラグインを分ける必要があります。

 つまり、Dustプラグインを2つ使うのです。

 具体的には、次のような手順を取ることになります。
  • 通常のプラグインディレクトリとは別の場所にDustプラグイン(DustV5.dll)のコピーを置く。もしくはDustV5.dllのコピーを別の名前に変更して使用する。この場合、DustV5.dllと同じディレクトリに置いても良い。
  • 関数を作成し、その中でDustプラグインのコピーを読み込んで、Dust系フィルタをかけるようにする。
  • 一方のフィールドには普通にフィルタをかけ、もう一方のフィールドには関数を使用する。
  •  関数については、ユーザー定義関数のページスクリプト入門で解説していますので、参考にしてください。

     ただし、Dust系のフィルタをフィールド別にかける場合に限定するならば、次の[使用例]を自分の環境などに合わせて修正するだけでも構わないでしょう。
    [使用例]
    SeparateFields()
    Top = SelectEven()
    Bottom = SelectOdd()
    Top = Top.FaeryDust(2) #Dustフィルタ
    Bottom = Bottom.Dust5() #Dust5関数
    Interleave(Top, Bottom)
    Weave()

    #Dust5関数
    function Dust5(clip clip)
    {
    LoadPlugin("C:\AviSynth\plugins\DustV5.dll") #プラグインディレクトリを分けるか、リネームする。
    clip = clip.FaeryDust(2) #Dustフィルタ
    return clip
    }
     Dust5が関数の名前、「function Dust5」以下が関数です。

     関数には任意の名前を付けられるため、Dust5という名前である必要はありません。変数同様、名前に使用できる文字は半角英数字(アンダースコア含む)です。ただし数字から始まる名前は使えません。
    LoadPlugin("C:\AviSynth\plugins\DustV5.dll")
     関数内でDustプラグインのコピーを読み込んでいます。

     パスは環境に合わせて変更する必要があります。

     AviSynthデフォルトのプラグインからリネームしたDustプラグインを読み込む場合は、次のように記述します。
    LoadPlugin("C:\Program Files\AviSynth 2.5\plugins\DustV5_Renamed.dll")
     これで、関数内のDust系フィルタは、関数内で読み込んだプラグインから呼び出されることになります。

    << 前へ戻る | 次へ進む >>
    最終更新日 2004年4月19日