DaVinci Resolveのsettingファイルの再編集(UserControls編)
コントロールの編集
マクロはFusion
にあらかじめ用意されているノードを組み合わせて作成します。
単純にノードを組み合わせるだけでも作成できますが、既存のパラメータの設定を変えたり元々のノードに無いパラメータを追加する事によって多彩なカスタマイズができるようになっています。
そこで既存のパラメータの設定を変えたり新しくパラメータを追加する時には、コントロールの編集ダイアログを使用する事になります。
ダイアログを開くにはノードエディタのノード上かインスペクタのノード名の所で右クリックして出て来るメニューの中から「コントロールを編集...」(Edit Control)という項目を選択します。
コントロールの編集ダイアログを使用してノードに対してコントロールを追加したり既存のパラメータの設定値を変更するとsetting
ファイルには各ノードのブロック内にUserControls = Orderd () {...}
というブロックが作成され、そのブロック内にコントロールが並びます。
また、UserControls
内のコントロールの並び順はノード単体のsetting
ファイルでは関係がありますが、マクロ化したsetting
ファイルではInstanceInput
という形で呼び出してインスペクタに表示する事になるので、ここでの並び順は関係ありません。
InstanceInput
の順番の入れ替え方については別に記事を書いているのでそちらをご覧下さい。
設定項目
コントロールの編集ダイアログで編集できる項目はコントロールの種類によって異なりますが、以下のような共通項目があります。設定項目のsetting
ファイル上でのプロパティーは以下のようになっています。
コントロールの編集ダイアログでの項目 | settingファイルでのパラメータ |
---|---|
名前 ( Name ) | LINKS_Name |
ID | ID = {...}の形 |
種類 ( Type ) | LINKID_DataType |
ページ ( Page ) | ICS_ControlPage |
アニメート可能 ( Animatable ) | INP_External |
パッシブ ( Passive ) | INP_Passive |
ディフォルト ( Default ) | INP_Default |
入力 ( Input Ctrl ) | INPID_InputControl |
ビュー ( View Ctrl ) | INPID_PreviewControl |
コントロールの編集ダイアログでは編集不可な項目
コントロールの編集ダイアログからは編集不可、または編集が困難な項目がいくつかあます。
Number型の値が設定値と誤差が出る
コントロールの編集ダイアログで数値型のディフォルト値等を設定する時に0.2
や0.3
と言った2進数で表せない数値に設定すると近似値になり、小数点第15位まである数値になってしまいます。
例えば0.2
と設定したならば0.200000002980232
といった数値になります。
これは誤差の範囲なので厳密な数値である必要がある場合を除いてはさほど影響がある訳ではありませんが、インスペクタ上でコントロール名をダブルクリックした時にはこの値になるので、ディフォルト値がキリの悪い数値になってしまうのは見た目に美しくありません。
settingファイルを書き直すとスッキリした数値にできます。
既存のコントロールのビューワコントロールをオフにできない
他のコントロールと重なる等でビューワコントロールを表示したくない項目もあると思いますが、既存のコントロールについてはダイアログ上でビュー(View Ctrl)のNone
を選択してOKしてもビューワ上には反映されません。
setting
ファイルを確認するとINPID_PreviewControl
の項目が記載されていません。
INPID_PreviewControl = "None",
コントロールのプロパティーにこの一行を追加する事でビューワコントロールを非表示にできます。
必要以上のデータが記載されてしまう
また、特定のプロパティーだけ変更したいという時にはその項目だけ記述すれば良く、全てのプロパティーを記述する必要はありません。
記述されていないプロパティーはノードのディフォルト値が採用されます。つまり、ビューワコントロールを非表示にして残りのプロパティーはディフォルトで良い場合には以下のようにしてやるだけで良いという事です。エラーにはなりません。
Center = { INPID_PreviewControl = "None" }
また、表示したいページを設定したいだけでもコントロールの編集ダイアログで設定するとそれ以外の情報も記載されてしまいます。ページ設定を変更したいだけならば
Center = { ICS_ControlPage = "Controls" }
のようにしてやるか、InstanceInput
で呼び出す時に
Inputxx = InstanceInput {
SourceOp = "Rectangle1",
Source = "Center",
Page = "Controls"
}
のようにすると良いです。個人的にはInstanceInput
で記載する方が無駄なデータが増えなくて良いし、ページの管理もしやすいのでお勧めです。
コントロールの編集ダイアログでは選択できないオプションが存在する
コントロールの編集ダイアログでは選択肢として与えられていないオプションも、テキストエディタで記載できるものが存在します。
これらは情報が少ないのでどういったものがあるのかは殆ど把握できていませんが、例えばマルチボタンコントロールには通常選択肢として与えられていないデザインを選択できます。
上画像のtest01
からtest04
までは全てマルチボタンコントロールですが、test02
のような通常のボタンコントロールのようなデザインはコントロール編集のダイアログでは選択肢として与えられていません。
因みにtest04
は設定上はボタンコントロールですが、中に表示する文字数が多くなって余白を含めた長さがボタンの枠に納まりきらなくなった場合にはコンボボックスコントロールに変化します。setting
ファイル上での記載は以下のようになっています。
settingファイルでの該当箇所
UserControls = ordered() {
test01 = {
{ MBTNC_AddButton = "a" },
{ MBTNC_AddButton = "b" },
{ MBTNC_AddButton = "c" },
{ MBTNC_AddButton = "d" },
INPID_InputControl = "MultiButtonControl",
MBTNC_ShowBasicButton = false,
MBTNC_ShowName = true,
MBTNC_ShowToolTip = false,
MBTNC_StretchToFit = false,
LINKS_Name = "test01",
},
test02 = {
{ MBTNC_AddButton = "a" },
{ MBTNC_AddButton = "b" },
{ MBTNC_AddButton = "c" },
{ MBTNC_AddButton = "d" },
INPID_InputControl = "MultiButtonControl",
MBTNC_ForceButtons = true,
MBTNC_ShowName = true,
MBTNC_ShowToolTip = false,
MBTNC_StretchToFit = false,
LINKS_Name = "test02",
},
test03 = {
{ MBTNC_AddButton = "a" },
{ MBTNC_AddButton = "b" },
{ MBTNC_AddButton = "c" },
{ MBTNC_AddButton = "d" },
INPID_InputControl = "MultiButtonControl",
MBTNC_ShowBasicButton = true,
MBTNC_ShowName = true,
MBTNC_ShowToolTip = false,
MBTNC_StretchToFit = false,
LINKS_Name = "test03",
},
test04 = {
{ MBTNC_AddButton = "aaaaaaa" },
{ MBTNC_AddButton = "b" },
{ MBTNC_AddButton = "c" },
{ MBTNC_AddButton = "d" },
INPID_InputControl = "MultiButtonControl",
MBTNC_ShowName = true,
MBTNC_ShowBasicButton = true,
MBTNC_ShowToolTip = false,
MBTNC_StretchToFit = false,
LINKS_Name = "test04",
},
}
UserControls = ordered() {...} ブロックが1行で出力されてしまう
これについてはDaVinci Resolve
のsetting
ファイルをテキストエディタで再編集した事がある方は誰しもが経験したモヤッとポイントだと思います。
再現性に一貫性が無いのでどういう条件でこうなるのか、或いは完全にランダムなのかは分かりませんが、コントロールの編集ダイアログで新しくコントロールを追加すると高確率でこの現象が起こります。
1行で出力されてしまう為非常に見辛く、内容を確認するにも再編集するにも都合が悪いです。
手動編集で見やすく改行する事は可能ですが、数が多くなると大変です。また、手動での修正はミスを犯すリスクがあるので避けたいところです。
修正をAI
に頼んだりもしていましたが、web
上のチャット画面に貼り付けて修正された物をコピペするのも面倒になってきました。
GitHub CopilotやCursorなど、エディタ上で支援してくれるAI
を活用する方が良いと思います。
整形用スクリプト
最終的に私はローカル環境だけで整形処理をするPython
スクリプトをいわゆるVibe Coding
という方法でAI
に作ってもらいました。
settingfile_formatter
使い方等はリンク先のREADME.md
をご覧下さい。
文字列リテラル整形スクリプトとの統合をしました。
Discussion