OpenToonz Plugin SDK
OpenToonz では、スタジオやアーティストの要望に応じて、沢山のエフェクトを利用することができます。しかし、もっと新しいエフェクトや、または更に効率的なエフェクトが必要になった場合に OpenToonz 自体を変更することなく、エフェクトのみを後から導入することが可能です。こうした提供方法から、このようにして追加されるコンポーネントを プラグイン と呼びます。これを開発するための SDK がこの Plugin SDK です。 OpenToonz 本体を変更することなく、開発者が好きな効果を追加することができます。
アニメーションの制作には多種多様なエフェクトが使われますし、また画像処理の研究者が沢山の絵のデータにアクセスしたいこともあります。 OpenToonz を拡張する方法はひとつではありませんが、 Plugin SDK では画像データとパラメータにアクセスする方法を提供します。
たとえば、 https://github.com/opentoonz/ では既に開発されているいくつかのプラグインの実装を見つけることができるでしょう。
Plugin SDK では C の開発環境があればプラグインを開発可能です。他のプログラミング言語へのバインディングも比較的容易です。 コンパイラはどのコンパイラでも利用できます。 OpenToonz 本体がどのようにビルドされているかには影響を受けません。 もしあなたのプラグインが複数のプラットフォームで動作する必要があるのであれば、各プラットフォーム向けにビルドする必要があります。
プラグインの実体は、適切なディスクリプタテーブルを提供する、動的ロード可能な共有ライブラリ(dll や dylib)です。このドキュメントでは単に モジュール と呼びます。
プラグインとして提供されたモジュールは、 OpenToonz のインストール先の"Stuff ディレクトリ"と呼ばれる場所の、 plugins ディレクトリの下に配置される必要があります。plugins ディレクトリの中の構造にはよりません。 OpenToonz は必要に応じてこのディレクトリ以下を検索し、プラグインを発見すると認識します。 現在(OpenToonz 1.0 リリース時)、これは OpenToonz の起動時に行われます。
認識されたプラグインは FX Schematic View の Add/Insert FX のメニューで、 "Plugins" の下位から選んで追加できます。 プラグインは FX Schematic View 上で、他のエフェクトやアセットと同様、ノードとして表現されます。
プラグインシステムは DWANGO で新たに開発されたもので、 OpenToonz の元になった Digital Video 版 Toonz シリーズでは動作しません。 また他の製品のプラグインとも互換性がありません。
OpenToonz の機能にアクセスするための必要最低限のインターフェイスが収められています。 C/C++ で利用可能です。 ここにあるインターフェイスは OpenToonz の機能やバージョンに密接に関係するため、適切なバージョンを利用する必要があります。
プラグインの開発を手助けになる、いくつかのユーティリティが収められています。 C++11 でのみ利用可能です。 これらのユーティリティは OpenToonz の機能やバージョンとは直接関係がありませんので、変更やバージョンの不一致があっても問題ありません。 より良いユーティリティが提供された場合は、そちらを使ってもよいでしょう。
ビルドして実効可能な、いくつかのサンプルプラグインが収められています。
Raster 画像を 1px のみボカして後段に送る、ごく初歩的な blur エフェクトのサンプルです。
Column や Viewer 上のギズモでコントロール可能な幾何学変換を提供するサンプルです。
ひとつのモジュールから複数のプラグインを提供するサンプルです。
サンプルは C++11 で記述され、サンプルのビルドシステムには cmake を利用しているので、これらが揃っている必要があります。
plugin_sdk は全てヘッダファイルのみで提供されるため、環境が既にあればサンプルのビルド前に何かを行う必要はありません。 plugin_sdk リポジトリを git clone するか、アーカイブを展開したらすぐに試してみることができます。
サンプルのビルドには cmake 3.0 以降が必要です。 ビルドのため、任意のディレクトリを作り、その中から cmake を呼び出します。
mkdir build
cd build
cmake ../plugin_sdk/samples/blur/
make
ビルドが成功すると blur.plugin というファイルができますので、これを stuff ディレクトリの plugins へコピーしてください。(自動では行われません)
より詳細な技術ドキュメントを参照してください。(TBD)