株式会社デジタル・フロンティア-Digital Frontier

Header

Main

ステレオ(3D)酔い止め

2012/11/12

ステレオムービーチェック、あなたは酔いませんか!

どうも、前回の記事で下ネタな名前のツールを紹介した後社内の女性陣から嫌な視線を感じたソルです。
10月27日にはバイオハザードのCGムービー第2弾「バイオハザードダムネーション」が公開されました!
本作は3Dステレオムービーでも公開されましたが、もうご覧になりましたでしょうか!

S3D映画を制作する上で最も大切な事は、安全に目に優しい画作りをされているかであり、我々も実際にステレオの環境で品質のチェックをしています。長時間3D眼鏡をかけ何回も繰り返して検査するこの作業は目も痛くなりむかむか胸焼けにもなるなど意外と大変な作業なのです。
「同じファイルをLRのカメラだけ変えてレンダーするだけじゃん。そんなにエラー出るの」と思われる方もいらっしゃるかもしれませんが、レンダーした環境の違いや後からのデータの修正など色々な原因によって、色が若干違ったり形状が若干違ったりするなど様々なエラーが発生するのです。
特に左右が微妙に違うエラーは脳に妙な違和感を感じさせ、見る方が気持ち悪くなりがちなので徹底的にこれを選別しなければいけないのです。
ということで今回の記事はこのステレオ酔いに関する内容を紹介させて頂きたいと思います。

時は約1年半前、私はDFに入社しデザイナーとして「鉄拳 blood vengeance」のコンポジット作業をやらせて頂いていました。
この作品も同じくS3DムービーでLチャンネルのコンポジット後にはRチャンネルムービーの変換作業がありました。私は、所属しているチームのRチャンネルの変換作業を担当することになりました。
ステレオチェックはつらい作業ですし、また残念なことにチェック用のマシン数に限りがあり順番待ちが発生したり、チェックマシンが違うフロアにあったため確認したい時はファイルを送り席を移動しなければいけなかったのです!(実は席の移動が一番大変)(当時DFのオフィスは今のようなワンフロアではなかったのです)
これをチェックマシンではなく自分の席でチェックする方法はないかと考え、色々な方法を試してみて一番簡単に実践できたのはAfterEffectsのブレンドモードの「差」で見る方法でした。


<正常フレーム>


<異常フレーム>

上の二つの写真のようにLRの視差による差以外に不自然な差がある場合はエラーの可能性が高いということでした。
この方法でかなり楽になりましたが色などがわずかに違う場合にはエラーだという確信ができなく結局両方を重ねて交差してみるしかありませんでした。


そして、二番目でやったのが1フレームずつ交互に見る方法です。


この方法を使って再生速度を速くしたり遅くしたりする事で大抵のエラーは選別できました。

どちらもAfterEfectsなどのプログラムでも簡単に実践できかなりフロア移動回数を減らすことができましたが、
エラーを確認する為のプレイヤーがあればもっと楽だろうなと思った怠け者の私は
openCVというライブラリーを使いシンプルなプレイヤーを作ることにしました。(そっちのほうが面倒くさそうだけど)
ただ当時は会社でツールを作った経験もほとんどなくみんなに配布する方法も知らず、結局自分のチームだけが使いました。(ただ、これはこれでまた別の種類の酔いが・・・・)

下は当時のコードの一部です。(交互で再生)

// Window作成
cvNamedWindow("ChicaChica", CV_WINDOW_AUTOSIZE);
// 二つの動画からビデオキャプチャを初期化
CvCapture* cvCaptureL = cvCreateFileCapture(argv[1]);	 // argv[1]からLビデオキャプチャ
CvCapture* cvCaptureR = cvCreateFileCapture(argv[2]);	 // argv[2]からRビデオキャプチャ
// 画像処理IplImage
IplImage* cvFrameImage;
// 再生速度
int iPlaySpeed = 33;
// 偶数と奇数判断
int i = 0;
// キー入力結果
int iKey;
// Loop
while(1){
	// 偶数の場合L動画から、奇数の場合R動画から
	if(i % 2 == 0){
		//動画を1フレーム進め、現在フレームのイメージをIplImageに格納
		cvFrameImage = cvQueryFrame(cvCaptureL);						
		}
	else{
		cvFrameImage = cvQueryFrame(cvCaptureR);		
	}
	// 動画が終わると最初のフレームに戻す
	if(!cvFrameImage ){
		cvSetCaptureProperty(cvCaptureL, CV_CAP_PROP_POS_MSEC, 0);
		cvSetCaptureProperty(cvCaptureR, CV_CAP_PROP_POS_MSEC, 0);
		i = 0
	}
	else{
		// cvFrameImageイメージをwindowに描画する
		cvShowImage("ChicaChica", cvFrameImage);	
		// キー入力待ち。iPlaySpeed(ミリ秒)まで待つ
		iKey = cvWaitKey(iPlaySpeed);		
		// ESCキーが押されたらLoop終了
		if(iKey==27) break;
	}
	i++;
}
// キャプチャを解放
cvReleaseCapture(cvCaptureL);
cvReleaseCapture(cvCaptureR);
// Windowを破棄
cvDestroyWindow("ChicaChica");

その1年半後、バイオハザードダムネーションではEXR連番対応、Gamma調整機能などなどさらにパワーアップしたステレオチェックプレーヤーを作り配布しましたが、新しく導入されたRenderPackageシステム(レンダーに必要なデータを集めて同じ環境を再現する)の活躍でエラーが激減したため、あまり使われることなく静かに消えていったのでした。これが私のファーストツールのストーリーでした。

では、また。

Pocket

コメント

コメントはありません

コメントフォーム

コメントは承認制ですので、即時に反映されません。ご了承ください。

*