皆さんこんにちは。いつもご訪問頂きまして心より感謝申し上げます。
先日、 NsFarm Channel に、
"Fusion スクリプト超入門講座"
を紹介したチュートリアル動画をアップしました。
「知っていると便利なちょっとしたテクニック」など情報の共有となれば嬉しいです。
ツイッター 、インスタグラム もやってますので気が向いたらフォローしていただけますと嬉しいです
過去に配信した DaVinci Resolve 関係のコンテンツは、「NsFarm's DaVinci Resolve And Fusion Official Page」にまとめています。
Fusion スクリプト超入門講座。コンソールからノードを制御したりスクリプトとプラグインの違いについて。/ DR 16
・DaVinci Resolve の基本的な使い方、編集方法、初め方、手順
・ノードベースの VFX、コンポジット(合成)ソフトウェア Fusion の使い方、編集方法、初め方、手順
・Fusion スクリプトの作成方法(ビギナー向け)
タイムコード
00:00 イントロ
00:30 スクリプトとプラグインの違いについて
01:35 Fusion のスクリプトガイドの紹介
02:22 コンソールからノードを制御するデモ
04:02 Fusion スクリプトの書き方の デモ
10:10 マクロ、テンプレートとスクリプトの違い
11:29 まとめ
制作に使用した時の PC 環境の紹介です。
------------------------------------------
PC: G-Master Spear Z390-Taichi OC
CPU: Intel Core i9-9900K [5.0GHz OC]
GPU: GeForce RTX2080Ti 11GB
Memory: 32GB
Keyboard:Logicool K750r
Mouse:Logicool M220GR
Mic:FIFINE K670
Headset:SONY MDR-XB450
------------------------------------------
動画内ではスクリプトの書き方をデモしてます。 便利に使えるスクリプトの登場、Fusion エンジニアのレベルの向上に一翼を担えれば嬉しいです。
動画の内容
今日は、Fusion スクリプトの超入門講座ということで進めて行きたいと思います。
今回は超入門ということでスクリプトの入り口付近の紹介、また簡単なサンプルも紹介出来ればと思っています。
この動画がきっかけになって便利な Fusion スクリプトを作る方が一人でも増えてくれれば嬉しいです。
Fusion にはもう少し上級編で .fuse のプラグインがあります。
こちらも別の機会に動画で紹介出来ればと思います。
スクリプトとプラグインの違いを説明しておくとスクリプトは既にあるツール類やシステムの設定をスクリプトファイルから設定できる仕組みです。
例えば既にあるツールの Text+ と Transform を自動で登場させたりノードネームを一括で変更するみたいなことが出来るのがスクリプトです。
一方のプラグインというのは現状無い機能を追加するプログラムになります。例としては前回ご紹介した Vito さんの Blitz のように新しいツールであったり、Modifier に新しい設定を追加できたりするのがプラグインだと思って頂ければ Fusion に関しては良いかと思います。
なのでどちらかというとプログラマー目線的にはプラグインの方が面白いことが出来そうでそちらをやりたい方のほうが多いのではと感じています。
Fuse のプラグインの作り方はまた別の動画でご紹介出来たらと思っています。
今回はスクリプトのお話になりますので宜しくお願い致します。
内容としては春先に開催された Fusion 勉強会でお見せしたデモとほぼ同じになりますのでそちらを見て頂いた方は内容がかぶるところがありますが宜しくお願いします。
Fusion のスクリプトに関しては公式に公開されているのはおそらくこちらの Fusion8 スクリプトガイドになると思います。
https://documents.blackmagicdesign.com/UserManuals/Fusion8_Scripting_Guide.pdf
今回ご紹介するスクリプトはこちらの内容に沿っています。
また、自分の方はでも実際に試してみた API 等をブログにまとめています。
https://www.nsfarm.life/page2020/acl2020BlogFusionScript.html
スクリプトって何っていうところとかサポートされている lua と Python を使う上でのメリット、デメリットみたいなところも自分なりにまとめてありますので興味のある方は参考にして頂ければと思います。
どちらも概要欄に URL を貼っておきます。
では早速ですがまず初めに普段何気なく行っているノードの制御をコンソールを使ってやってみるところから始めてみたいと思います。
コンソールは、Workspace → Console で開くことが出来ます。
通常ノードを配置する時はツールバーから持ってきたり Select Tool から選択してノードパネルに配置したりしますがこれがプログラム的にどうなっているのかをお見せしたいと思います。
ではコンソールにこのような(comp:AddTool("TextPlus"))コマンドを入力して Enter キーを押してみます。
はい、するとノードパネルに Text+ ノードが追加されました。
それではもう一つ comp:AddTool("Transform") を入力して Transform ノードも追加します。
今 2 つの処理を実行しましたが、コンソールは上下キーで過去の履歴を表示出来ます。
この状態で今度は「Transform1.Input = Text1.Output」というコマンドを入力するとどうなると思いますか?
式としては Transform1 の Input に Text1 の Output を入力しています。
感の良い方はわかったかもしれませんがこの状態で Enter を押すとこのように Text1 と Transform1 が接続されます。
つまり、ここで何が言いたかったかというと今やったことをスクリプトファイルに書いて実行すると今の動作が自動化出来ます。
それでは、今行ったことをスクリプトファイルに書いてみます。
スクリプトファイルの保存先は Windows の場合は、
C:\ProgramData\Blackmagic Design\DaVinci Resolve\Fusion\Scripts
になります。見て頂けるとわかりますが Color, Comp, Deliver, Edit, Tool, Utility, Views というフォルダに分かれています。DaVinci 的にはこれだけカテゴリー分けされています。
おそらく、Comp, Tool, Utility が主に使われると思います。
Comp は、コンポジションから Workspace → Script、Tool はノードをクリックしたコンテキストメニューにある Script で実行されるスクリプトを保存します。Utility はすみませんまだ試していません。
それでは Comp フォルダの中に新規に .lua 拡張子のファイルを作成します。
Python の場合は、.py という拡張子でファイルを作成して書きますが今日は Lua 言語のサンプルを作っていきたいと思います。
ファイルが作成出来たらエディタで開きますマイクロソフトから無料でダウンロード出来る VisualCode がおすすめです。
新規にスクリプトファイルを作成したら一度 DaVinci Resolve を再起動して Workspace → Script に先程作成したファイルが表示されていれば OK です。
それではスクリプトを書いていきます。
スクリプトですがスクリプトの開始でコンポジションをロックしてスクリプトの終了でアンロックするコードを書く必要があります。
comp:Lock()
comp:Unlock()
スクリプトガイドにも書かれているのでこちらは忘れずに書いて頂ければと思います。
comp:AddTool("TextPlus")
comp:AddTool("Transform")
Transform1.Input = Text1.Output
Fusion ページに戻って Text1 と Transform1 は削除します。
それではスクリプトを実行してみます。
実行してみる Text1 と Transform1 は出てきましたが接続はされていません。
コンソールにエラーが出力されていて、これは、Text1 が nil で値が入っていないからということがわかります。
AddTool で追加したノードは一度変数と呼ばれる箱に入れて使う必要があります。
そのためこのように書き直します。
comp:Lock()
Text1 = comp:AddTool("TextPlus")
Transform1 = comp:AddTool("Transform")
Transform1.Input = Text1.Output
comp:Unlock()
セーブしてスクリプトを実行してみます。
すると今回はこのように接続された状態でノードパネルに追加されました。
このようにプログラムは一発でうまく動くことはほぼないと思っておいたほうが良いと思います。
プログラマーも完璧では無いのでこのように一つづづバグを潰してプログラムを作っていきます。
このようにバグをとっていく作業はデバッグと呼ばれています。
デバッグする時に有効なものに print 関数があります。
プログラムの情報を print 関数でコンソールに表示することが出来ます。
例えばこのよう書くと
print(Text1);
すると Text1 の情報がコンソールに表示されます。
もう少しわかり易い例だと
print("はじめてのスクリプト");
ダブルクォーテーションでくくったものを文字列として出力することが出来ます。
(dump も便利です)
学習方法のコツですがマニュアルをみるのも大切ですがたくさんサンプルコードを見ることをそして実際に動かしてみることが大切だと思います。
サンプルは、ネット上にあるものかおすすめは Reactor でインストールした極力最新のものをみることをオススメします。
あまりにも古いものは最新のバージョンには対応していないこともあるので注意が必要です。
スクリプト言語なのでダウンロードしたファイルはエディタを使ってソースコードの中身を見ることが出来ます。
もちろん丸パクリは NG ですが書き方を参考にして独自のスクリプトに役立てるのは良いと思います。
はいここまで見ていただけた方はマクロ機能とかテンプレートと何が違うのか気になる方もいるかもしれません。
例えば今回の Text1 と Transform1 を接続したものをテンプレート化出来るのでそれで良いのではと思う方もいるかもしれません。
スクリプトの利点の一つは例えばダイアログを表示してユーザーから情報をとってくることが出来ます。
例として一つサンプルを作ってみましたのでそちらを実行してみます。
このダイアログはスクリプトから実行しています。
ツールを選択して、数量を入力してその数値分ノードを生成するスクリプトのサンプルです。
OK を押すと一気にノードが追加されます。
スクリプトの場合はこのような使い方が出来ます。
ダイアログは AskUser を使って実行出来ます。
こちらのサンプルも概要欄からダウンロード出来るようにしておきますので興味のある方は見てみてください。
またブログの方にも少し書き方のサンプルを書いてあります。
はいいかがだったでしょうか。
今日は、Fusion スクリプトの超入門講座として進めてきました。
「Fusion がきっかけでプログラムを覚えました~」みたいな人が増えれば嬉しく思います。
もし質問がありましたらコメント欄に記載頂けましたら答えられる範囲で回答出来たらと思います。
ではではこれからも DaVinci Resolve の使い方、魅力を伝え、皆様の映像制作に少しでも刺激を与えられたらと思っています。
それでは最後まで読んで頂きましてありがとうございました。
皆さんとの技術&作品共有の場になれば幸いです。
関連記事
⇒ NsFarm's DaVinci Resolve And Fusion Official Page、TOP へ
関連記事