Blender 2.8、2.9 の使い方 (18) カメラ

前 (ジオメトリーノード2) www.mztn.org 次 (?)


カメラとレンダリング

今回は記事全体が Blender のカメラの話です。 Blender のモデリングに慣れてきて、「このシーンはきれいに残しておきたい」と思ってレンダリングしても、被写体がうまくカメラのフレームに収まってくれないということがあります。

Blenderのカメラは、普通の (実在する) カメラと同じように、撮影する方向、被写体の映る範囲 (視野、焦点距離) やボケ具合 (被写界深度) までコントロールできます。

camera_naomi20210904_50_450.png

次の図 では 「Ctrl + Alt + [Q]」3面図を表示して、右上の領域は テンキーの [0] を押してカメラ視点(カメラのフレーム、ファインダ)を表示しています。 このカメラ視点を自由にコントロールすることがこの記事の目的です。 スクリーンショットには Blender 2.93 を使用していますが、Blender 2.83でも翻訳や位置に微妙な違いはありますが迷うことはないと思います。

imgb28_18_camera.png

Blenderのデフォルト画面では、カメラ自身もオブジェクトとして空間内に存在しています。 3Dビューポートに表示される空間は、カメラ以外の「神の目」からの見た空間が表示されています。 レンダリングする場合は、カメラから見た映像が作成されることになります。 カメラのファインダーを覗いているように3Dビューポートを操作して、映像を記録できるようにしましょう。

撮影対象が動く場合と、それを撮影しているカメラが動く場合があります。 まず最初に、撮影する対象は静止していて、カメラの設定や撮影する方向だけを変化させて、画面に表示されているものが動くように見せるところから始めます。

カメラの設定と操作方法は基本的なテクニックです。


Blender のカメラについて

これまでカメラの操作について解説していませんでしたが、アニメーションの動画を作成するためには、カメラで撮影(レンダリング)する必要があります。 動画を撮影する対象はカメラが向いている方向にあるものなので、アニメーションにはカメラの操作が重要です。

カメラオブジェクトは四角錐の形で視点は四角錐の頂点で、四角錐の底の四角形がカメラの向いている方向を示します。 上部の三角形はカメラの上方向を示しています。

底面にあたる黄色い四角の枠をドラッグすると焦点距離(Forcal Length)を変更することができます。

カメラのローカル座標系で前方向は -Z で、上方向は +Y となります。

b2934_camera.png

モデリングのときのビューポートに表示されているオブジェクトを、画像や動画に思ったとおりレンダリング結果として記録するには、カメラの操作をよく知っておくことが必要です。

撮影

カメラで撮影するには、メニューのレンダー(Render)から静止画(Rnder Image)か動画(Render Animation)を選択します。 ここでは、アウトプットプロパティでサイズを640x480ピクセルに設定して、フレーム番号1から250、1秒間に24フレームの設定にしています。

anim20210829_camera00.png


撮影結果

ここでは何も設定せずに「Render Animation」をしたので、レンダー結果を表示するウィンドウに以下の画像が表示されます。

anim20210829_camera01.png

モデルのマテリアル

デフォルトキューブ (立方体) では向きがわからないのと地味すぎるので、主人公のスザンヌ (サル?) には見映重視でボロノイテクスチャを設定しました。

anim20210829_material.png

カメラとスザンヌだけだと、カメラと撮影対象のスザンヌのどちらが動いても同じ画面とすることができます。

第3者として動かない床 (地面) オブジェクトも配置すると、カメラかスザンヌのどちらが動いているか明確になります。 床となる平面 (頂点は4個) には、次のように市松模様のマテリアルを設定しました。

anim20210829_material2.png

動画ファイル

さて、撮影した動画ファイルはどこにあるのでしょうか。アウトプットプロパティの下の方を見ていくと、Outoutパネルにファイルの保存先のフォルダを設定する欄があります。 Windows のデフォルトでは「/tmp\」 は 「C:\tmp\」となります。ファイルフォーマットが「PNG」になっているので、250フレームが 0001.png から 0250.png という連続した PNG画像として保存されます。

anim20210829_camera02.png

ファイルフォーマットをクリックすると以下のように多くのフォーマットが表示されます。 「FFmpeg Video」を選択すると 0001-0250.mkv という H.264 という動画のファイルフォーマットと FLAC という音声ファイルフォーマットの動画ファイルができます。

anim20210829_camera03.png

後から詳しく解説しますが、まずカメラの位置や角度を約50フレームごとに適当に変化させて、キーフレームを挿入して、メニューから「Render / Rnder Animation」を選択して動画ファイルを作成しました。

anim20210829_camera04.png

Windows で実行すると 「C:\tmp\0001-0250.mkv」というファイルができます。 ffmpeg がインストールされていれば次のコマンドで mp4 に変換できます。

     ffmpeg -i 0001-0250.mkv -vcodec copy 0001-0250.mp4

0001-0250.mp4 (533KB) の動画ファイルができました。適当に5回ほどカメラの位置や角度を変えただけで作成した動画です。 そこそこのアニメーションになっていると思いますが、どうでしょうか。 画面の大きな動きはカメラマンの仕事であって、俳優の役割は細かい演技 (個別のオブジェクトの細かい動き) です。

背景がなければ物体を動かすだけでもいいのですが、背景があるとカメラの操作をよく理解して置かないと苦労します。

とにかく、これだけでも「オレが作った動画!」といって友だちに自慢できるかもしれません。

やったことは以下の内容です。 この記事を理解していれば、10分程度でできる作業と思います。


レンズの設定

カメラのレンズは、「焦点距離」と「絞り」の設定が重要です。 撮影する範囲と遠景や近景のボケ具合を調節できます。 Blender のカメラも実在のカメラと同じ設定を持っています。

レンズの焦点距離

カメラのレンズの設定で最も重要な設定項目はレンズの焦点距離です。 カメラオブジェクトのプロパティの 焦点距離 (Focal Length) の値です。

焦点距離 50mm (標準)

標準では50mm の焦点距離のレンズとなっています。 被写体に近づいて画面全体に大きく移すような場合には、画面中央付近が拡大されるように歪んだ感じになります。 さらに焦点距離を小さくすると、どんどん広い範囲が撮影できますが、周辺はより歪むようになります。

anim20210829_camera_50mm.png


焦点距離 150mm (望遠)

焦点距離が 150mm のレンズでは、少し望遠レンズでズームしたように表示されます。 焦点距離を大きくすると、どんどんズームアップ(拡大)されます。

anim20210829_camera_150mm.png


焦点距離による効果の違い

顔を画面いっぱいに撮影すると、焦点距離が50mm では顔の中央部が拡大されたように(鼻が大きく)なります。 少し後ろの耳は反対に小さくなっているのがわかります。

焦点距離が 150mm では中央部の拡大は緩和され、被写界深度 (Depth of Field) にチェックを入れておくと、遠景が少しボケて撮れます。

説明されなければ分らない程度の違いかもしれませんが、撮影対象によって印象は大きく違ってきます。

anim20210829_camera_50_150.png

450mmの望遠レンズにすると遠景はボケる代わりに、遠景のサイズも小さくなりにくくなります。 つまり、近くも遠くも大きさがあまり変わらないため、前後の距離が詰まったように写ります。

人がいる風景を「密」な感じに撮影する手法です (笑)。

anim20210829_camera_450mm2.png

スザンヌをリアルな人の顔に変えた場合の焦点距離の効果を比較してみました。 人の顔を対象とした場合は、焦点距離が 50mm と 450 mm では印象が全く異なっていて、同じモデルであっても別人のように感じます。

人間は、人の表情を細かく認識できるため、顔を対象とする場合はレンズの焦点距離は重要です。

camera_naomi20210904_50_450.png

アップにするためにカメラを近づけるのと、レンズの焦点距離を伸ばしてズームするのでは、効果が異なります。 3次元グラフィックスの難しいところです。


焦点距離とフィルムサイズ

レンズの焦点距離とともに記録に使うフィルムの大きさとの関係は重要です。 デジタルカメラの場合はセンサーサイズに相当します。 銀塩カメラ使うフィルムの代表的な大きさは、35mmフィルム(36×24mm)です。 Blender の標準のフィルムサイズは 36mm です。 つまり横方向のサイズを 35mmフィルムに合わせた大きさとなっています。 フィルムサイズを変更する必要はないと思います。

  視野角(画角) = 2 x atan((フィルムサイズ / 2) / 焦点距離)

標準レンズ(50mm) で35mmフィルム(36×24mm) の場合は、水平方向の視野角が39.6度、垂直方向が27.0度になります。

36mm

35mmフィルム(36×24mm)のサイズで焦点距離はこのセンサーサイズに換算した値を使用します。

anim20210904_film36mm.png

18mm

フォーサーズシステムのセンサーに近い大きさです。 焦点距離が2倍相当になります。

anim20210904_film18mm.png

レンズの絞り (Aperture) の効果

レンズの絞り (Aperture)とは、レンズを通る光の量を調整するために、光が通る孔の大きさを変化させる仕組みです。 光が通る孔の大きさを小さく(F値が大きい)すると、焦点が合う範囲 (被写界深度:Depth of Field) は大きくなります。 F値を大きく (絞りを小さく) すると、前後の広い範囲でくっきりした画像が撮影できます。

焦点距離を大きくして距離の違いによるボケが大きくなった状況は、レンズの絞りを小さくすることで解決できます。 実際のカメラのレンズでは、レンズの絞りを小さくすると画面は暗くなってしまいますが、Blender などの3DCGでは気にしなくても大丈夫です。


F値が小さい(開放、明るい)

実在のカメラのレンズのF値は、小さいほど明るいレンズを意味します。 絞りを変化させることで、被写界深度 (Depth of Field) を小さくしたり、大きくしたり広い範囲で調整できます。 明るいレンズほど大きくて高価なレンズとなります (Blender では関係ないですが)。 この例では、F値を1.6に設定しています。 ターゲットに指定したものはクッキリ写りますが、前後に離れたものはボケて写ります。

anim20210829_camera_F1.6.png

Fが大きい(絞る、暗い)

絞りを小さくする (Aperture の F値を大きくする) と遠景もクッキリ写ります。 ターゲットに指定したオブジェクトと前後に離れてもボケ具合が小さくなります。

anim20210829_camera_F16.png


レンダリング出力とフォーマット

解像度と動画の出力先

レンダリング結果の画像やアニメーションの画素数を設定します。 「画素」も「ドット」も「ピクセル」も同じものを意味し、デジタルな画像を構成する最小の要素です。

動画をレンダリングする先のフォルダ (デフォルトでは /tmp/ ) に指定したフォーマットでファイルが出力されます。jpg や PNG の場合にはフレームごとの連番になった多くのファイルが出力されます。

b2934_output.png

日本語の場合の表示

b2934_output.png


レンダリング

メニューから「Render Image (画像をレンダリング)」でレンダリング結果の画像が別ウィンドウに表示されます。保存する場合はメニューの「画像 (Image)」から保存します。

「Render Animation (アニメーションレンダリング)」では出力先を指定したフォルダーに動画ファイルが出力されます。 b2934_render.png

「FFmpeg Video」を選択すると 0001-0250.mkv という H.264 という動画のファイルフォーマットと FLAC という音声ファイルフォーマットの動画ファイルができます。 jpg や PNG といったファイル形式ではフレームごとに連番となった静止画像ファイルがフレーム数だけ作成されます。

ffmpeg がインストールされていれば、FFmpeg Video は次のコマンドで mp4 に変換できます。

    ffmpeg -i 0001-0250.mkv -vcodec copy 0001-0250.mp4

カメラで撮影方向のコントロール

カメラを動かして撮影する方向をコントロールする方法です。 物を動かしてアニメーションを作成する前に、カメラを自由に扱えるようになっている必要があると思います。 画面の思った位置に撮影する(動画に記録する)対象を配置できるようになります。

3DViewport で表示される画面とカメラの視点の関係

3DViewport で表示される画面 (カメラ視点以外) とカメラが撮影する画面は独立しているため、モデリングで使っている 3DViewport の画面では問題ないのに、レンダリング結果が気に入らないということが起こります。

静止画も動画もレンダリングすると、カメラが撮影する範囲が記録されます。 したがって、カメラの設定や撮影する方向や範囲を自由にコントロールできると、思った通りの結果を得ることができます。

3DViewport の表示とカメラの視点を一致させる

モデリングなどを行っている 3DViewport 上の視点をカメラに適用する (視点に合わせてカメラを移動回転する) には以下のメニューから選択します。 静止画だけが必要な場合は、この方法でも十分かもしれません。

撮影対象とともにカメラも動くような動画を作成するためにはもっと便利な方法が必要です。

camera20210831_Viewpoint2Camera.png

常に 3DViewport の表示とカメラの視点を一致させる

いつもカメラ視点で作業するには、3DViewport での操作を常にカメラの位置や姿勢に自動的に適用できると作業がはかどります。 普通にカメラを構えて撮影する感じと同じです。 通常はカメラ視点に切り替えても、ビューポートを操作するとカメラ視点から通常の視点に切り替わってしまいます。

カメラ視点のまま、見ている方向を変えたり、カメラ自身を平行移動したりするには、3Dビューポート内で [N] を押すと表示されるサイドバーの 「ビュー/ビューのロック/カメラをビューに(View/View Lock/Camera to View)」をチェックする とカメラ視点のまま、オブジェクトの移動や回転、視点の移動や回転ができます。 つまり、マウスの中ボタンドラッグ(視点の回転)や、シフトを押しながらのマウスの中ボタンドラッグ(平行移動) でカメラの位置や姿勢が変化します。

一方、カメラの位置を変えたくない場合、ビューポート内でカメラ視点の表示領域のサイズ変更をする場合や、カメラ視点の表示領域の移動は「Camera to View」のチェックを解除して行う必要があります。


camera20210831_Camera2View.png

頻繁に使う場合には、サイドバーの Camera to View で右クリックするとクイックメニューに登録できます。 ショートカットキーとしても登録できますが、空いたキーを探すのも大変です。

b2934_AddQuickFavorites.png

クイックメニューは「Q」キーを押すだけで簡単に選択できるので使いやすくなります。

b2934_AddQuickFavorites2.png

カメラの平行移動

「Camera to View」のチェックを外した状態で、カメラ視点でカメラ自身の位置や姿勢を変更する場合は、カメラの枠をクリックしてカメラを選択した状態で、ローカル座標系での移動、回転コマンドを使います。

カメラ自身を移動させる方法として、グローバル座標系で移動方向を指定する方法と、ローカル座標系で移動方向を指定する方法があります。 移動コマンドを使うと、カメラの位置を変えるため、結果として表示されている物を画面上で移動することができます。

カメラで思ったとおりの映像を撮影するためには、ファインダーのようにカメラ視点で映像を確認する事が必要です。 下のオレンジの枠で示した「Navigate」をチェックすると表示されるビューポートギズモのカメラアイコン(右のオレンジ枠)をクリックするとカメラ視点に切り替えることができます。 カメラフレームの枠をクリックするとカメラを選択できます。 赤枠のオブジェクトギズモは、アクティブなオブジェクトに矢印などで表示される移動や回転に使うツールです。

camera20210903_Gismos.png

カメラアイコンをクリックする以外にも、カメラ視点への切り替えにはメニューから「ビュー/視点/カメラ」を選択するか、テンキーの[0]を押す方法もあります。 テンキーのないキーボードでは「編集/プリファレンス/入力」で「テンキーを模倣(Emulate Numpad)」をチェックしている場合は、[P]の上の普通の[0]を押します。

camera20210831_G.png

カメラのローカル座標系での移動コマンドでは、カメラのグローバル座標系での位置や角度を意識することなく、カメラ自身の上下(GYY)、左右(GXX)、前後(GZZ)に移動できます。 マウスを移動するときにシフトキーを押すと移動量が小さくなります。

画面の左右の移動

camera20210831_GXX.png

画面の上下の移動

camera20210831_GYY.png

グローバル座標系でカメラを移動するためには、カメラオブジェクトを選択して、モデリングでオブジェクトを移動するのと同じように操作します。

camera20210831_GY.png

カメラの回転

便利な RR + Shift + MMB

[R][R] を押すと、カメラの位置はそのままに、カメラの向いている方向を変化させます。 [R][R] を押した後で、マウスを移動するときにシフトキーを押すと回転量が小さくなります。

この[R][R] を押した後でマウス中ボタンドラッグにシフトキーの組み合わせは便利です。

カメラを回転させると表示されている物は画面上で大きく移動します。 見逃さないようにマウスをゆっくり操作しましょう。

camera20210831_RR.png

座標軸回りの回転

カメラのローカル座標系での回転コマンドを使うと、カメラの位置はそのままに、見上げ/見下ろしたり (RXX)、右/左を見る (RYY) のように自然に見る方向を変えることができます。

首を傾げて見る (RZZ) は見る方向が決まってからの最後の微調整で使う感じでしょうか。

camera20210831_RR.png

カメラの回転軸をグローバル座標系とするのは、地面に水平に方向を変えたり、空を見上げたりといった、見えている画面の方向とは関係ない向きの動きになります。


複数のカメラを配置

カメラオブジェクトを追加することで、複数のカメラを配置することができます。 カメラごとに位置や角度、焦点距離、絞りを別々に設定できます。

新しいカメラの作成

新しいカメラの追加は、オブジェクトモードでメニューから「Add / Camera」で行います。 3Dカーソルのある位置に追加されます。

camera20210904_AddCamera1.png

3Dカーソルのある位置に現在の視線方向で標準設定のカメラが追加されました。

camera20210904_AddCamera2.png

カメラの切り替え

ここでカメラ視点に切り替える (テンキーの[0]) と、最初のカメラの視点のままです。

camera20210904_AddCamera3.png

切り替えたいカメラを選択して、メニューから 「View / Cameras / Set Active Object as Camera」(アクティブオブジェクトをカメラに) で、選択したカメラをアクティブカメラに設定できます。

camera20210904_AddCamera4.png

日本語設定のスクリーンショットです。

camera20210904_AddCamera4J.png

カメラ視点に切り替える (テンキーの[0])ると、新しいカメラの視点に切り替わっていることが確認できます。 赤枠は最初のカメラを示しています。

camera20210904_AddCamera5.png

最初のカメラを選択して、メニューから 「View / Cameras / Set Active Object as Camera」を実行します。

camera20210904_AddCamera6.png

最初のカメラ視点に戻っています。 以上のようにカメラを複数配置して、位置や角度、焦点距離、絞りを別々に設定したカメラを切り替えて使用できます。

camera20210904_AddCamera7.png

動画中でカメラの切り替え

アニメーションの最中でカメラを切り替えるためには、タイムラインエディタ上でマーカーを追加して、アクティブカメラをマーカーとバインドします。 マーカーと一致する時間に設定されたカメラと切り替わります。

camera20210904_MarkerCamera3.png

マーカーの追加とカメラとのバインディング

すでにマーカが設置されている場合は、そのマーカーはアクティブなカメラとバインドされます。 マーカーが設置されていなければ、マーカーが追加されてアクティブなカメラとバインドされます。 カメラを選択した状態で、タイムラインエディタ上で「Ctrl + B」を押すだけです。

camera20210904_MarkerCamera1.png

日本語の場合の表示。

camera20210904_MarkerCamera1j.png

カメラマーカーの表示

カメラとバインドされたマーカーはアイコンがカメラに変わります。

camera20210904_MarkerCamera2.png

日本語の場合の表示。

camera20210904_MarkerCamera2j.png

動画をレンダリングすると、指定した期間ごとにアクティブなカメラが切り替わります。


ページ先頭へ


Blender 2.8, Blender 2.9 の使い方 [目次]

copyright (C) 2019-2021 Jun Mizutani