8#ifndef DESIGNLAB_DXLIB_CAMERA_H_
9#define DESIGNLAB_DXLIB_CAMERA_H_
77 return camera_view_mode_;
85 goal_camera_state_.target_pos = pos;
92 return goal_camera_state_.camera_quat.GetNormalized();
106 free_controlled_target_pos_ = pos;
113 return free_controlled_target_pos_;
118 return now_camera_state_.camera_quat;
123 return now_camera_state_.target_pos;
128 return now_camera_state_.length_camera_to_target;
134 RotateVector3(kDefaultCameraFrontVec, now_camera_state_.camera_quat) *
135 now_camera_state_.length_camera_to_target;
137 return camera_target_dif + now_camera_state_.target_pos;
141 static constexpr float kDefaultCameraZoom{ 1500.f };
143 struct CameraState final
145 CameraState() : camera_quat{}, target_pos{}, length_camera_to_target(0) {}
147 Quaternion camera_quat;
149 float length_camera_to_target;
154 void SetCameraPosAndRot();
157 constexpr static bool kOutputDebugLog =
false;
159 const Vector3 kDefaultCameraFrontVec;
161 const Vector3 kDefaultCameraUpVec;
166 Vector3 free_controlled_target_pos_;
168 CameraState now_camera_state_;
170 CameraState goal_camera_state_;
Dxlib の3Dのカメラの状態を管理するクラス.
Vector3 GetFreeTargetPos() const
注視点を操作する際の,カメラの注視する座標を取得する.
constexpr Vector3 GetNowCameraPos() const
enums::CameraViewMode GetCameraViewMode() const
カメラのモードを取得する
void AddCameraToTargetLength(float length_dif)
カメラの注視する目標の座標からカメラまでの距離を増やす.
void InitCameraTargetLength()
カメラと注視点との距離を初期化する.
constexpr Quaternion GetNowCameraQuat() const
void Update()
カメラの位置などの更新を行う.毎フレーム実行すること.
constexpr Vector3 GetNowTargetPos() const
void SetTargetPos(const Vector3 &pos)
カメラの注視する目標の座標をセットする. camera の mode が kFreeControlledAndMovableTarget の時はセットできない.
Quaternion GetCameraQuat() const
カメラの回転を表すクォータニオンを取得する.
void SetCameraViewMode(enums::CameraViewMode mode)
カメラのモードをセットする.同時にカメラの目標回転角度などを設定する.
constexpr float GetNowCameraToTargetLength() const
void SetFreeTargetPos(const Vector3 &pos)
注視点を操作する際の,カメラの注視する座標をセットする.
void SetCameraQuat(const Quaternion &quat)
カメラのクォータニオンをセットする.
CameraViewMode
カメラの視点を表す列挙体.
@ kFreeControlledAndMovableTarget
自由に操作可能かつ注視点を設定可能.
@ kRightSideView
右から真横の視点.
@ kFreeControlled
自由に操作可能.
Vector3 RotateVector3(const Vector3 &vec, const EulerXYZ &rot)
回転させたベクトルを返す.三角関数の処理が多く重たいので注意.
Quaternion GetNormalized() const noexcept
正規化したクォータニオンを返す. クォータニオンの正規化とは,ノルムを1にすることを表す. クォータニオンqの正規化は,q / |q| で求められる.