[언리얼 엔진] 벡터의 축 회전, 두 벡터 사이의 각

    시작하며

    게임을 개발하다보면 특정 방향을 기준으로 회전된 벡터값을 구하거나 두 개의 방향벡터 사이의 각을 구해야 할 경우가 있다. 예제 코드를 기록하여 기억해 두고자 한다.

    예시

    캐릭터가 바라보는 방향을 기준으로 Z축 기준 +-30 각도의 방향 벡터를 구해보자.

    코드

        //회전된 방향 계산
        FVector Forward = GetActorForwardVector();
        Forward.Normalize();
        FVector LeftDirection = Forward.RotateAngleAxis(-30.0f, FVector::UpVector);
        FVector RightDirection = Forward.RotateAngleAxis(30.0f, FVector::UpVector);
    
        //두 벡터 사이의 각도
        float Dot = FVector::DotProduct(Forward, LeftDirection);
        float AcosAngle = FMath::Acos(dot);
        float AngleDegree = FMath::RadiansToDegrees(AcosAngle);
        // AngleDegree = 30.0f

    요약

    • 벡터를 회전하고자 할때 회전할 축을 알고 있다면 RotateAngleAxis 함수로 회전 벡터를 구할 수 있다.
    • 두 벡터 사이의 각도를 구할땐 DotProduct를 한 값을 아크 코사인 하여 FMath::RadianToDegrees 함수로 각도를 구할 수 있다
    반응형

    댓글

    Designed by JB FACTORY