ここまでは、シーケンス上でCDLを確認する構成を見てきました。
次に、この仕組みをBatch(ショット単位)でも使っていきます。
手動で確認
まずはBatch上で、手動からLook(.ccファイル)を切り替えて確認します。
Batch SchematicにACES2065-1をロード


BatchからもViewとLookが正しく認識


Context Variablesを選択しているクリップのクリップネームに変更



Look(.ccファイル)が適用
シーケンスセグメントと同じで、
データに影響を与えず、ビューポート上の見た目だけが変化している状態です。



Batchビューポートは更新されていますが、
Scopeが更新されていません。
Look on → off → on のようにリフレッシュする必要があります。



Pythonによる自動化(クリップ)
Context Variablesを毎回手動で切り替えるのは現実的ではないため、
Pythonスクリプトで自動化します。
シーケンスではセグメントを選択するため、
そこからリンクしているクリップの名前を取得しています。
shot = seg.source_name.strip()
Batchでは、クリップを直接選択できるため、
そのままクリップネームをSHOTとして使用しています。
shot = selected_clip.name.get_value().strip()
シーケンスとBatchで入口は異なりますが、最終的には同じ処理になります。
[シーケンス] セグメント → クリップ → SHOT [Batch] クリップ → SHOT
以下が実際に使用しているスクリプトです。
最小構成の例として記載しています。
set_shot_from_selected_clip.py
import flame
DEFAULT_SHOT_NAME = "default"
def _set_shot_context(shot_name):
proj = flame.project.current_project
if not shot_name:
raise RuntimeError("SHOT名が空です")
proj.set_context_variable("SHOT", shot_name)
proj.reload_ocio_config()
print("SHOT =", shot_name)
print("contexts =", proj.get_context_variables())
def set_shot_from_selected_clip(selection):
try:
nodes = flame.batch.selected_nodes.get_value()
except Exception as e:
raise RuntimeError(f"選択ノードを取得できません: {e}")
if not nodes:
raise RuntimeError("Clipノードを1つ選択してください")
selected_clip = None
for node in nodes:
try:
if node.__class__.__name__ == "PyClipNode":
selected_clip = node
break
except Exception:
pass
if not selected_clip:
raise RuntimeError("Clipノードを1つ選択してください")
shot = selected_clip.name.get_value().strip()
if not shot:
raise RuntimeError("Clip名が空です")
_set_shot_context(shot)
def set_default_cc(selection):
_set_shot_context(DEFAULT_SHOT_NAME)
def is_batch_visible(selection):
try:
nodes = flame.batch.selected_nodes.get_value()
if not nodes:
return False
for node in nodes:
try:
if node.__class__.__name__ == "PyClipNode":
return True
except Exception:
pass
except Exception:
return False
return False
def always_visible(selection):
return True
def get_batch_custom_ui_actions():
return [
{
"name": "Shot_CDL_Tools",
"actions": [
{
"name": "Set_Selected_Clip",
"isVisible": is_batch_visible,
"execute": set_shot_from_selected_clip,
"minimumVersion": "2026.0",
},
{
"name": "Set_Default_CC",
"isVisible": always_visible,
"execute": set_default_cc,
"minimumVersion": "2026.0",
},
],
}
]
シーケンスセグメントと同じように、「Set Default CC」も用意しています。



チェック用Rec.709ムービー
ショットベースワークフローの場合、チェック用のRec.709ムービーが必要になるケースがあると思います。
Context VariablesにロードしているLook(.ccファイル)から簡単に作成することができます。
Viewを追加
チェック用ムービーはdisplay-referred(ここではRec.709想定)になるため、
今回は「Video」というルールを追加しています。
ViewsにあるCreate Viewから手動でルールを追加することもできますが、config.ocioに追加します。
shared_views: - !{name: ACES 2.0 - SDR 100 nits + CDL, view_transform: ACES 2.0 - SDR 100 nits (Rec.709), display_colorspace: , looks: cdl_per_shot} - ! {name: Video, colorspace: Raw} ----> 追加
Display / active_views
該当displayに登録
displays:
Rec.1886 Rec.709 - Display:
- ! {name: Raw, colorspace: Raw}
- ! [ACES 2.0 - SDR 100 nits (Rec.709), ACES 2.0 - SDR 100 nits + CDL, Video, Un-tone-mapped]
active_viewsに登録
active_views: [ACES 2.0 - HDR 1000 nits (P3 D65), ACES 2.0 - HDR 1000 nits (Rec.2020), ACES 2.0 - HDR 2000 nits (P3 D65), ACES 2.0 - HDR 2000 nits (Rec.2020), ACES 2.0 - HDR 4000 nits (P3 D65), ACES 2.0 - HDR 4000 nits (Rec.2020), ACES 2.0 - HDR 500 nits (P3 D65), ACES 2.0 - HDR 500 nits (Rec.2020), ACES 2.0 - HDR 108 nits (P3 D65), ACES 2.0 - SDR 100 nits (P3 D65), ACES 2.0 - SDR 100 nits (Rec.709), ACES 2.0 - SDR 100 nits + CDL, Video, Un-tone-mapped, Raw]
config.ocio設定は以上です。
View Transform
追加したViewが正しく認識されているか確認


Context VariablesをPythonスクリプトから変更



Colour ManagementノードをBatch Schematicに追加


View > Batchビューポートと同じACES 2.0 – SDR 100 nits + CDLを選択。



Batchでは、Colour ManagementノードのView Transformを使用し、
以下の順序で処理しています。
ACES2065-1(ソース)
↓
Context Variables(CDL適用)
↓
Viewport(SDR 100 nits Rec.709)
↓
Video(出力) ※config.ocioに追加したルールを選択


View TransformからBatchビューポートで確認している状態と出力結果が一致します。
ACES 2.0 -SDR 100 nits + CDL


Video (View Transform)


DaVinci Resolveレンダークリップは、CDLをベイクしているので、Lookをオフにする必要があります。



すべて同じ結果を出力

まとめ
Context Variablesを使うことで、
ショットごとのCDLをLook(.ccファイル)として管理し、
シンプルに切り替えることができます。
シーケンスではViewで確認し、
Batchではそのまま出力することもできるので、
同じルールで運用を統一することができます。
こうした運用は、ACESのシーンリニア(scene-referred)な構造の上で、
表示と出力を分離できることによって成立しています。
なお、Flame 2027ではOCIOまわりにも変更があるため、
こうした運用がどう変わるのかは、今後確認していきます。