Kinect重量挙げ #6 エフェクト合成

オーラや火花などのエフェクトはUnityのパーティクルシステムとして制作しました。これをKinectの実写映像に重ねるのですが、実写へのCG合成はもっともウソくさく見えるところ。違和感をなくそうと思えば道のりは果てしないですが、いくつか基本的なことを注意すればうっかり違和感を増してしまうことだけは避けられます。

解像度/フレームレート

仮にエフェクトが現実に生じてそれを撮影しているとしたら、実写とエフェクトとで解像度やフレームレートが異なるはずがありません。おなじ映像に収まっているのですから。でもこのことに無頓着で、CG部分だけ妙に精細でヌルヌル動いてる、みたいな作品は案外よくあります。

光学系

実写映像はカメラにまつわる物理的制約に大きく支配されています。負荷のかかる処理ですが、CG側でもできるだけ同様の現象をシミュレートしてやりましょう。画角設定をはじめ、被写界深度・シャッタースピード(モーションブラー)・フレアなどUnityのプリセットフィルタだけでもかなり再現できるはず(より高度な現象を再現するミドルウェアも存在する)。実写カメラの設定にパラメータを合わせます。

EffectLayer

エフェクトレイヤー。パーティクルはブラーの代わりに速度でストレッチさせ、さらに光のにじみ(ブルーム)を加える

センサー/フィルム

これもカメラの話。実写では感度に比例してノイズが増えたり、じつはダイナミックレンジがすごく狭かったりします。対するCGはその点ひじょうに理想的で、大きなギャップがあります。

Noise Filter

【右】ノイジーなKinect映像に合わせてエフェクトにもノイズをかける

環境

おもに直接/間接のライティング。場合によっては反射、大気などの条件を実写に合わせます。さいわい本件は発光パーティクルが近くに出るだけなのでとくに気にしてません。環境といえば火花が床に当たるとはね返るくらい。しかしいまになって考えるに、Kinectのデプスをうまく使えばパーティクルの光で実写を照らせたかも?

グレーディング

実写のトーンからCGが浮いていることがよくあります。Unityにはカラーコレクションフィルタもあるので活用します。

ごまかし

合成は映像の情報量が少ないほどなじみやすく、というより見分けにくくなります。ポケコン並の解像度や白黒二値のような極端を想像するとわかります。しかしただ情報量を下げると単に低品質とみなされるので、やるなら演出にかこつけます。よぶんな情報を加えて見かけの情報量を補うのも効果的。じつは本件のテレビ風演出にもそういう側面があります。

ColorCorrection Filter

【右】単色ビカビカエフェクトとなじむよう色の情報量(彩度)を下げコントラストをやや強めた