0124

2026년 1월 24일

0124.gif

쿼터니언 카메라까지 기껏 구현해놨는데

카메라를 특정 좌표로 바라보는 함수가 없으면 멋이 안 산다.

그래서 look_at 만들고 돌고있는 점을 바라보게 해봤는데

시네마틱같고 멋있다.

사실 ViewMatrix3D에 인터페이스 추가한거긴 하다.

구현은 별거 없다.

그냥 그 점까지의 direction얻고 lookAt행렬 -> 33으로 쿼터니언 캐스팅

하고 뒤집어 주면 된다.

Quat ViewMatrix3D::make_orientation_by_point(const Vector3f& value) const {
    auto view_dir = dp::normalize(value - m_position);
    auto up = dp::Convert3DVectorTo(m_target_coord_system, { 0, 1, 0 });
    auto rotmat = dp::look_at(m_position, m_position + view_dir, up);
    auto quat = dp::make_quat_by_rotation_matrix(rotmat);
    // 한번 뒤집어준다
    quat = dp::conjugate(quat);

    return quat;
}