カメラ

カメラの概要

Camera (カメラ) は、プレイヤーがどのようにワールドを見ているのかなど、プレイヤーの視点を表します。そのため、 カメラは人が制御するプレイヤーのみに関連性をもちます。PlayerController は、カメラ クラスを指定し、 カメラ アクタ (ACameraActor) をインスタンス化して、プレイヤーがワールドを見る位置と向きを計算するのに 使用されます。

カメラの操作方法の基本的な例については、「カメラを使用する」を参照してください。カメラでアニメーションをレイヤー化する方法の例については、CameraAnim 機能 に関するドキュメントを参照してください。

CameraActor

カメラの動作およびプロパティはすべて CameraComponent で設定されます。CameraActor クラスは主に、カメラを他のクラス内ではなくレベルに直接配置できるように、CameraComponent のラッパーとして動作します。エディタで CameraComponent を使用する場合、[Details (詳細)] > [Camera Settings (カメラの設定)] に移動して、カメラが [Perspective (パースペクティブ)] モードか [Orthographic (正投影)] モードかを設定することができます。

camera-orthographic-perspective

パースペクティブ モードでは垂直方向の視野角 (FOV) を設定することができ、正投影モードでは幅 (ワールド単位) を設定できます。どちらのモードでもアスペクト比を指定でき、一般的なデバイスやディスプレイのタイプに応じたアスペクト比のプリセットが提供されています。

カメラに ポストプロセス エフェクト を追加でき、ポストプロセス エフェクトの強度をスケーリングすることが可能です。

CameraComponent には、エディタでの視覚的な配置をサポートする次の 2 つのコンポーネントが追加されます。ただし、これらのコンポーネントはゲームプレイ中は表示されません。FrustumComponent は、 カメラの視野角の位置を示します。これはデフォルトでは表示されないものの、ビューポート[Show (表示)] > [Advanced (詳細設定)] > [Camera Frustums (カメラ錐台)] を選択すると、表示させることができます。

CameraComponent

CameraComponent は、カメラのビューポイントと [Projection Type (投影タイプ)][Field Of View (視野角)]、および[Post-Process Overrides (ポストプロセス オーバーライド)] などの設定を表します。ViewTarget が CameraActor であるか CameraComponent を含み、bFindCameraComponentWhenViewTarget が 「true」に設定されているアクタである場合、ポーンに設定できる関連プロパティは、bTakeCameraControlWhenPossessed になります。この場合、ポーンは PlayerController が所有すると自動的に ViewTarget になります。

アクタと PlayerControllers

PlayerControllersアクタ には CalcCamera 関数が格納されています。アクタの CalcCamera 関数は、bFindCameraComponentWhenViewTarget が「true」に設定されており CameraComponent がある場合は、アクタの最初の CameraComponent のカメラ ビューを返し、その他の場合はアクタの位置と回転を取得します。PlayerController クラスでは、CalcCamera 関数も同様に動作し、所有するポーンがある場合はその位置を返し、 ない場合は PlayerController のコントロール回転を返します。

PlayerCameraManager

PlayerCameraManager は特定のプレイヤーのカメラの管理を担います。また、レンダラなどの他のシステムで使用される最終的なビューのプロパティを定義します。PlayerCameraManager は、ワールドを視認するための「バーチャルの眼」として機能します。 最終的なカメラ プロパティを直接計算したり、カメラに影響するその他のオブジェクトやアクタとの間でブレンドすることもできます (CameraActor 間でのブレンド)。

PlayerCameraManager の主なこのコンポーネントの外部に対する役割は、GetCameraViewPoint などの各種 Get() 関数に確実に応答することです。 デフォルトでは、PlayerCameraManager はビュー ターゲットを保持します。つまり、PlayerCameraManager が、カメラが関連付けられるプライマリ アクタとなります。カメラ アニメーション、ポストプロセス エフェクト、カメラ レンズの汚れなどの特殊効果など、さまざまなポスト エフェクトを最終的なビュー ステートに適用することができます。

PlayerCameraManager を継承する必要があり、C++ ではなく親クラスのブループリントを作成する場合、PlayerCameraManager には BlueprintUpdateCamera 関数が格納されており、独自のカスタム カメラ実装を提供することができます。

この関数を使用する場合、返された値を使用するには「true」を、それらの値を無視する場合は「false」を返します。

PlayerCameraManager の UpdateViewTarget 関数は、ViewTarget をクエリし、その ViewTarget の視点を返します。この関数は、APlayerCameraManager をサブクラス化し、CameraComponent を介して視認しない場合は、 BlueprintUpdateCamera 関数を呼び出します。

ViewTarget

ViewTarget 構造体は、PlayerCameraManager で定義され、PlayerCameraManager に最適な視点 (POV) を提供する役割を担っています。ViewTarget には、ターゲット アクタ、ターゲット アクタのコントローラー (非ローカルで制御されるポーンの場合)、 および PlayerState に関する情報が格納されています。この情報は、観戦中に同じプレイヤーの ポーン の遷移やその他の変化を追跡するために使用されます。

POV プロパティにより PlayerCameraManager に渡されるカメラ情報は、FMinimalViewInfo 構造体の形式を取ります。この構造体には、Location (位置)Rotation (回転)Projection Mode (投影モード) (Perspective (パースペクティブ) または Orthographic (正投影))、FOVOrthographic Width (正投影幅)Aspect Ratio (アスペクト比)、および Post Process Effects (ポストプロセス エフェクト) を含む、CameraComponent の基本的なカメラ情報が格納されています。PlayerCameraManager にこれらの値へのアクセスを提供することで、 カメラの管理中に PlayerCameraManager が 2 つのカメラ モード間をブレンドすることができます。

カメラの責任の連鎖

ゲーム固有のカメラの動作は、カメラの「Responsibility Chain (責任の連鎖)」の任意のポイントで提供できます。この連鎖で、責任は次のクラスを経由して上から下へと渡されます。その後、ALocalPlayer に渡され、レンダリングシーン ビュー (FSceneView)、およびその他の関連システムで終了します。

カメラのトピック

Unreal Engine のドキュメントを改善するために協力をお願いします!どのような改善を望んでいるかご意見をお聞かせください。
調査に参加する
キャンセル