←NiVEまとめメモTOPに戻る


エクスプレッションの評価タイミングも含めた、NIVE Ver1のレンダリング処理手順

2009.12.25に、NiVE愛用者スレ6の889-890に書き込んだものです。
自分なりに色々実験したりしてまとめたものなので、間違っている部分もあるかもしれませんが、
だいたいこんな感じかな〜ということでまとめてみました。おかしなところがあったら指摘して下さい。

■エクスプレッションの種類

  E・・・エフェクトのエクスプレッション
  M・・・マテリアルのエクスプレッション
  A・・・テキストトラックのアニメータエクスプレッション
  Tx・・・テキストトラックのテキストエクスプレッション
  S・・・シャドウコピートラックのシャドウコピーエクスプレッション

  ※「E、M」と「A、Tx、S」は評価タイミングが異なる。
    (「エクスプレッションについて.txt」を参照。
     あと、たしかA、Tx、SはトラックのGetImage()が呼ばれるタイミングで
     評価されると聞いた気がする。)

■前提条件

  ※前提1: 上のトラックからT1、T2、T3と並んでいるとする
  ※前提2: ここでは仮に、
           「T1=カラーイメージ、T2=テキストトラック、T3=シャドウコピートラック(ただしコピー元なし)」
         とする。
  ※前提3: トラック参照型のエフェクト(T印つきのエフェクト)は使っていないものとする。
  ※前提4: トラック1の一番上のエフェクトのエクスプレッションをT1E1(トラック1のエフェクト1)と表す。
         トラック1の2番目のエフェクトのエクスプレッションはT1E2と表す。
         トラック2の1番上のアニメータのエクスプレッションをT2A1と表す。2番目のアニメータはT2A2。
         トラック2のテキストエクスプレッションをT2Txと表す。
         トラック3のシャドウコピーエクスプレッションをT3Sと表す。

■エクスプレッションの評価順序 (を書いていたらなぜか1フレームのレンダリングの流れになっていた)

  1.キーフレームによりプロパティの暫定値が決定される。
  2.タイムラインで上にあるトラックから順にエクスプレッションを評価していく。
    トラック内での評価順序はエフェクトエクスプレッションが先、マテリアルエクスプレッションが後。
    エフェクトエクスプレッションの評価順序は、エフェクトの並び順で上から。
    また、*印つきエフェクトは、「エフェクトの効果の適用は後回しにされる」という性質があるが、
    エクスプレッションについては他のエフェクトと同様に、並び順に従って評価される。
    また、複数のエクスプレッションで同じプロパティを操作した場合は、
    後で評価されたエクスプレッションの数値が有効になる。(上書きしていく)
      T1E1→T1E2→T1M→T2E1→T2E2→T2M→T3E1→T3E2→T3M
  3.2によって、エフェクトとマテリアルのプロパティ値が確定する。
    (アニメータやテキスト、シャドウコピーのエクスプレッションからは
     エフェクトとマテリアルのプロパティ値は設定不可。)
  4.各トラックのレンダリング開始。順番は、タイムラインで下にあるトラックから。
     4−1.トラックイメージの取得。
          読み込んだビデオやイメージなどは元イメージがトラックイメージとして使われるが、
          テキストトラックやシャドウコピートラックでは、ここでトラックイメージの作成が開始される。
          また、このとき、アニメータやテキスト、シャドウコピーのエクスプレッションが評価される。
          テキストトラックについてはアニメータエクスプレッション→テキストエクスプレッションの順に評価される。
          アニメータのエクスプレッションは並び順に上から評価される。
     4−2.4−1によりテキストやシャドウコピーのプロパティ値が確定。
          テキストやシャドウコピーのトラックイメージが作成される。
     4−3.作成されたトラックイメージにエフェクトが適用され、最終的なトラックイメージが確定。
     4−4.マテリアルプロパティにより、トラックイメージのコンポジション内での配置等が決定。
          トラックのレンダリング完了。
  5.4を全てのトラックについて行なう。
    なお、この過程で、結果的に
      T3S→T2A1→T2A2→T2Tx
    という流れでエクスプレッションが評価されることになる。
  6.フレームのレンダリング完了。

  ※注.シャドウコピートラックの「コピー元」で、ちゃんと別のトラックを参照していたり、
      トラック参照型のエフェクト(ブレンドなど)で別のトラックを参照していたりする場合は、
      トラックの並び順なども絡んでエクスプレッションの評価順序が変わってくることがあるので注意。
      例えば下にあるトラックからブレンドで上にあるテキストトラックを参照していると、
      下にあるトラックがレンダリングされる際に、ブレンドによりテキストトラックのGetImage()が実行され、
      テキストトラックのアニメータエクスプレッションやテキストエクスプレッションが評価されることになる。

←NiVEまとめメモTOPに戻る