1. スクリプティングガイド - yasami5/sample GitHub Wiki
序論
スクリプトとは何ですか?スクリプティングは、理論上、特定のプログラミング言語を1行ずつ、またはコンパイル済みのバイトコードの形式で解釈します。プリコンパイルされたマシンコードを直接実行するのではありません。 実装の詳細に深く入り込むことなく、その性質上、Fusionなどの複雑なアプリケーションはホストとして機能し、専用のスクリプトAPIを介してその機能へのアクセスを提供できると結論付けることができます。 スクリプト環境は、基になるAPIをラップし、サードパーティのコードに欠陥がある場合にアプリケーション全体をクラッシュさせる可能性が低くなります。 ホストアプリケーションを再起動せずに、コードをその場で変更できます。 さらに、ガベージコレクターは、一般的なスクリプト環境でほとんどのメモリ管理を行います。 これらすべてにより、ネイティブコンパイル済みコードと比較して評価が遅くなりますが、パフォーマンスは通常のグラフィカルユーザーインターフェイスを使用してユーザーが実行できるものを超えています。 Fusionで使用されているLuaのJustInTime(JIT)フレーバーは、多くの場合、ネイティブコードとほぼ同じ速度で実行されることが特に知られています。
最終的には、スクリプトを使用することで、プログラマはスクリプト言語の言語機能とライブラリをホストアプリケーションの機能と混在させることができます。 これにより、サードパーティのデータまたはアプリケーションを統合できます。
Fusion内のスクリプトの実際的な使用例を見てみましょう。 本番環境でのスクリプティングは、次のことに役立ちます。
-
自動化:たとえば、特定のフォルダーからすべてのメディアファイルを読み取り、それぞれについて、コンポジションにロードし、透かしを追加し、拡大縮小して、特定の場所にレンダリングします。
-
反復的なタスク:たとえば、コンポジション内のすべてのセーバーを見つけ、その状態をパススルーに設定します。
-
規則の維持:たとえば、セーバーのパスが常にサーバー上の特定の場所を指し、特定の命名規則に従うようにします。
-
人為的エラーが発生しやすいタスク:たとえば、コンポジションをレンダリングに送信する前に、特定の設定が設定されていることを確認します。
-
アプリケーションのコア機能の拡張:たとえば、サードパーティアプリケーションからアニメーションデータをインポートします。
-
特定のパイプラインのカスタマイズが必要な動作:たとえば、特定のイベントが発生したときに何が起こるかをオーバーライドします。 特定のツールが作成されたときに、特定のツールが表示されるように強制する場合があります。
-
サードパーティアプリケーションとの通信:たとえば、データを交換するだけでなく、イベントを共有します。 特定のパイプラインツールがトリガーされてショットが作成されたら、対応するコンポジションを作成します。
これらは一般的なアプリケーションの例にすぎません。 一部のスクリプトは、その動作を特定のニーズに適合させるためにインターフェースを必要とする場合があります。 これは、構成ファイルまたはアプリケーションの状態から派生した情報(多分、コンポジションで現在選択されているツール)です。 ただし、多くの場合、動作のすべての可能なオプションを示すカスタムダイアログを備えたグラフィカルユーザーインターフェイスが必要です。 後者については、グラフィカルユーザーインターフェイスの章で詳しく説明します。
Fusionでは、FusionScriptと呼ばれるスクリプトAPIを使用して、アプリケーションから最も必要な機能にアクセスできます。 FusionScriptを十分に活用するには、Fusionのしくみに関する基本的な理解が必要です。 このモデルがわかると、必要な機能を見つけるために、スクリプトリファレンスを参照するのが簡単になります。
FusionScriptを使用すると、コンポジションとそのツール、レンダリング、メタデータ、設定、属性、インターフェースなど、Fusionのほぼすべての側面にアクセスして制御できます。
FusionScriptは抽象APIにすぎないため、Fusionに埋め込まれているLuaプログラミング言語、または個別にインストールされている場合はPythonプログラミング言語など、さまざまなスクリプト言語を介してアクセスできます。 これらの言語とその機能は大きく異なりますが、両方の言語からのFusionScriptアクセスは、同じAPIにアクセスするため非常に似ています。 相違点と制限事項については、次の章で説明します。
クイックスタートチュートリアル
さらに苦労することなく、すぐに実際の例に移りましょう。
先に提案したように、現在選択されているセーバー以外のすべてを通過するLuaスクリプトを作成します。 セーバーが選択されていない場合、基本的にすべてのセーバーがパススルーされます。 これは、巨大なコンポジションがあるが、特定のセーバーのみを事前レンダリングする必要がある場合に非常に便利です。
最初のステップ
まず、Script-> Edit-> New…のメニューにアクセスして、新しいスクリプトを作成する必要があります。