Posted at

ドリーズームやってみる

この記事はOculus Rift Advent Calendar 2018の9日目です.

Unity公式マニュアルにドリーズームのやり方が載っていたので試してみました.

参照:ドリーズーム (別名「トロンボーン」エフェクト) - Unity マニュアル

まずはプロジェクトを作成してカメラとモデルを配置します.

公式マニュアルのExampleScript.csをコピペしてカメラにアタッチします.この時にエラーが発生したので,2つのメソッドの戻り値をvoidからfloatに修正しました.

$ diff -ur ExampleScript.cs.orig ExampleScript.cs

--- ExampleScript.cs.orig 2018-12-08 17:10:16.000000000 +0900
+++ ExampleScript.cs 2018-12-08 17:10:25.000000000 +0900
@@ -10,13 +10,13 @@
private bool dzEnabled;

// カメラから指定の距離にある錐台の高さを計算します
- void FrustumHeightAtDistance(float distance)
+ float FrustumHeightAtDistance(float distance)
{
return 2.0f * distance * Mathf.Tan(camera.fieldOfView * 0.5f * Mathf.Deg2Rad);
}

// 指定した距離で指定の錐台の高さを得るために必要な FOV を計算します
- void FOVForHeightAndDistance(float height, float distance)
+ float FOVForHeightAndDistance(float height, float distance)
{
return 2.0f * Mathf.Atan(height * 0.5f / distance) * Mathf.Rad2Deg;
}

このスクリプトをMain Cameraにアタッチして,適当にカメラの設定を調整するとドリーズーム効果が...

角度を変えても面白いかもしれません.

ドリーズームはヒッチコック監督の作品で有名になったカメラワークだそうです.メインの被写体はそのままに,背景の遠近感を変えることで不思議な効果が出せるのが面白いですね.

他にもバレットタイムとかケン・バーンズ効果とかカメラの動かし方を色々と遊んでみると面白そうだなと思いました.