time_slice.jpg


時間スライスフィルタを使ってみる

 拙作ツール、Olive+(Olive+の紹介はこちら)に「時間スライス」という動画に対するフィルタが搭載されています。中々説明が難しいのですが、どういう物なのか解説してみたいと思います。ただでさえ説明が難しいので、まずは、どんなものなのか見ていただきます。



 左右に門松らしきCGが回っていますが、実は、後から左右に別々なフレームを合成して作った動画で、問題の「時間スライス」フィルタは、向かって右側のねじれた動画を作り出したフィルタになります。

 元の画像は左側で、「普通に」回っています。問題は右側、なんかねじれてませんか?
 左に表示されている「普通に回転する門松」を、Olive+の時間スライスフィルタで「上から下」「なめらかにつなげるON」「最後のフレームを繰り返すON」「スライス数128」で処理したのが右でねじれている門松なのです。

 適切な素材がなかったので、CGを使っていますが、別に「CGでねじれた画像を作った」訳ではありません。左の画像を時間スライスフィルタにかけると、右の画像になるんです。


時間スライスフィルタの解説

 動画は、以下のように連続する静止画複数枚からできています。

movie.png

 一枚一枚は静止画ですが、これらが連続して再生されることで、動いているように見えています。この一枚一枚の静止画を「フレーム」と呼ぶことにします。
 今、一枚のフレームを取り出して注目し、縦方向に4分割(等分)します。

division.png

 4分割したそれぞれのパートへ下から順に、隣接して時間の異なるフレームのパートを割り当てます。
 一番下のパートにはフレーム1の対応するパートの画像、下から2番目のパートにはフレーム2の対応するパートの画像、下から3番目のパートにはフレーム3の対応するパートの画像、一番上のパートにはフレーム4の対応するパートの画像、と言う感じで、上のパートに行くにしたがって、より先のフレーム(先の時間)の画像を差し込みます。

tslice.png

 次のフレーム2’には、下から順にフレーム2、3、4、5の対応するパートの画像を差し込みます。フレーム3’には下から順にフレーム3、4、5、6の対応するパートの画像を差し込む、と言う様に進みます。

 もう一度、フレーム1’に着目してみると、一番下のパートと一番上のパートでは、4フレーム分の時間差が生じています。これに、鉛直線を回転軸とする回転運動が加わると、「ねじれ」て見えることになります。

 Olive+の時間スライスフィルタでは、以下の様なパラメータを指定可能です。

 ひとまず、「ねじれ」るような動画になるのは、上下方向の場合の鉛直軸回転物体と、左右方向の場合の水平軸回転物体となりますが、「フレームの上端と下端(あるいは右端と左端)で時間差がある」という基本的な特徴によって、普通に撮影した動画が予想外の挙動を示すのがなかなか面白いです。


バリエーション

 他に鉛直軸周りに回転する被写体が無いか、考えてみましょう。

 前節で解説した通り、「フレームの上端と下端(あるいは右端と左端)で時間差がある」のが特徴なので、「ねじれ」にこだわらなければ、左右(上下)にふらふらと動くような被写体にフィルタをかけるのも面白いかもしれません。

 手元に良さそうな素材(動画)が見当たらないので、「シルエット錯視」で作った人形をネジネジしてみます。

  1. まず、元となる動画を作成します。
    1. 「シルエット錯視」のページから、「lady_sil.xitr」をダウンロードしてきます。
    2. 「lady_sil.xitr」をテキストエディタで開いて、データの頭の方の設定値を以下の様に書き換えてセーブします。
      1. var fn_all = 120 ;
      2. var sil = 1 ;
      3. var halfhd = false ;
    3. 少し下に、「// アニメーション設定」と言うところがあるので、ここのif命令が「if(true)」となっていることを確認します。なっていなかったら、変更してセーブします。
    4. 「lady_sil.xitr」をXi-TRACEに読み込んで、レイトレーシングします(アニメーション設定で、AVIファイルを作成(save)する)。
  2. Olive+の「時間スライス」フィルタを適用します。
    1. Olive+を起動して、「連続メニュー ⇒ 時間フィルタ」を選択します。
    2. 入力動画ファイルと出力動画ファイルを聞いてくるので、上で生成した動画ファイル(AVIファイル)を入力とし、出力ファイルを適当に設定します(AVIファイルで出力するのがお勧めです)。
    3. 今度は時間スライスフィルタのパラメータを聞いてきますので、以下のように設定してOKボタンを押します。
      setting.png
      この設定では、上から下に向かって時間が進むので、一番下のパートが一番先の時間の画像になります。従って、最初に回転し始めるのが一番下のパートで、そこから徐々に遅れて上のパートが回転することで「ねじれ」て見えます。
    4. 動画のフレームレートなどを聞いてくるので、OKボタンを押します。しばらくすると完了します。
  3. 基本的には、2.の手順で完了なのですが、「ねじれ」具合を滑らかにするため、120フレーム(30fps=30フレーム/秒だと4秒に相当)で計算していますので、回転速度を調整するために、「連続メニュー ⇒ フレーム数調整」フィルタなどでfpsを調整して使いました。



 「時間スライス」フィルタのパラメータを変更してみて、どんな風に変わるのか、見てみるのも面白いですよ。特に、スライス数(分割数)を変えると、印象が変わります。「分割数を増やす」という事は、1フレーム当たりで見てみると、フレーム内の分割が細かくなるので、合成した時の画像がより滑らか(細やか)になるという事。逆に、分割数を減らすと、粗くなります。
 一方、分割数を増やすと、端から端までの時間差がより広がることになります。逆に、分割数を減らすと時間差は縮みます。分割数で時間差が変わるので、回転体の「ねじれ」に置き換えると、分割数を増やす→「ねじれ」がきつくなる、分割数を減らす→「ねじれ」が緩くなる、という関係になります。
 「分割数」⇔「滑らかさ」⇔「ねじれ度合い」が互いに相関があり、独立に制御できないため、中々思った通りの動画を作るのは難しいかもしれません。まあ、「視覚効果を狙い撃ちする」と言うより、やって見て、「普段見ていたのと違う世界が見られる」という意外性が面白いフィルタなので、難しく考えないのが一番。

 余談ですが、分割数を増やすと、その分処理時間が大量にかかりますので、ご注意ください。


home

download

gallery