Nuke、Fusion等のコア・レンダリング・システム——ノードツリーをリアルタイムまたはファーム処理。速度と出力精度を決定。
コンポジットエンジン
コンポジットエンジンは、あらゆるプロフェッショナルなコンポジットソフトウェアの中核です。ノード構造をリアルタイムまたは最終レンダリングで実行するモーターと言えます。ノード間のあらゆる接続を追跡し、データフローを最適化し、どの計算をどの順序で行うかを決定するインテリジェントな計算機として想像するのが良いでしょう。NukeではDAG(Directed Acyclic Graph)エンジンを使用しており、冗長な計算を検出し、フレーム間で結果をキャッシュするため、非常に効率的です。Fusionでは同様のロジックが実行されますが、3D統合がエンジンにより深く組み込まれています。
作業速度はエンジンの最適化に直接依存します。これは、長いショットをスクラブしたり、複雑なキーヤーのスタックをレンダリングしたりする際にすぐに実感できます。効率的なエンジンは、現在表示しているもの(ビューポート最適化)を優先し、より複雑な計算を後回しにします。そのため、7つのロトスコープノード、4つのクオリファイア、1つの3Dトラッカーを連続して接続していても、再生はスムーズに進みます。これは魔法ではなく、エンジンによる賢いリソース割り当てです。また、変更されないノード(例えば、ロトアニメーションの前の静的なグレードノード)はキャッシュできることも認識します。
ファームでのレンダリングでは、エンジンはさらに重要になります。ノード構造は、エンジンが数百のCPUに分散できるように解釈できる必要があります。これはバランスが重要です。ノード間の依存関係が多すぎるとエンジンは並列化できず、構造が少なすぎると、特に4K-60fpsの作業ではボトルネックが発生します。そのため、エンジンがスクリプト内でボトルネック(すべてをブロックするノード)をどこで発見するかを理解することが重要です。
実際には、フローを直線的に保ち、循環依存(エンジンがすぐに拒否するもの)を避けることを意味します。Expressionリンクは賢く使用してください。各Expressionはレンダリング時にCPU時間を消費します。また、ハイビットデプス(16ビットまたは32ビット)で作業する場合、エンジンはより多くのメモリを消費しますが、より正確になります。ほとんどのエラーは誤操作ではなく、スクリプトがエンジンに過負荷をかけること、つまり、同時に多くのReadノードを使用したり、非圧縮シーケンスを使用したり、意図しないループを作成したりすることから発生します。