내일배움캠프 69일차 TIL - 게임수학

권태하·2024년 7월 24일
0
post-thumbnail
post-custom-banner

확인 문제

💡 질문에 답해보고 직접 확인해보는 시간을 가집시다.
  1. 오일러 각의 한계점에 대해 설명해주세요.
    내 답:
    오일러 각은 3차원 공간에서 회전을 표현하는 방법 중 하나로, 세 개의 회전 축(보통 X, Y, Z 축)을 기준으로 회전 각도를 정의합니다. 하지만 오일러 각에는 몇 가지 한계점이 있습니다:
    • 짐벌 락 (Gimbal Lock): 오일러 각을 사용하면 두 개의 회전 축이 일치하게 되어, 하나의 자유도가 사라지는 현상이 발생할 수 있습니다. 이로 인해 회전의 표현이 제한되고, 원하는 회전을 정확하게 표현하기 어려워집니다.
    • 회전 순서 의존성: 오일러 각은 회전 순서에 따라 다른 결과를 낳습니다. 즉, X, Y, Z 축의 회전 순서가 바뀌면 최종 회전 결과도 달라집니다.
    • 비연속성: 오일러 각은 특정 각도에서 불연속적인 변화를 보일 수 있습니다. 예를 들어, 360도와 0도는 같은 회전을 나타내지만, 오일러 각으로 표현하면 큰 차이가 발생할 수 있습니다.

모범 답:

  1. Unity 내에서 짐벌 락 (Gimbal Lock) 현상을 직접 유도해볼 수 있나요? 그 방법을 적어주세요.
    내 답:
  2. 새로운 3D 오브젝트 생성: Unity 에디터에서 새로운 3D 오브젝트(예: Cube)를 생성합니다.
  3. 회전 적용: 오브젝트의 Transform 컴포넌트에서 회전 값을 설정합니다. 예를 들어, X축을 90도로 회전시킵니다.
  4. 추가 회전 적용: 이제 Y축이나 Z축을 회전시키면, 두 축이 일치하게 되어 짐벌 락 현상이 발생할 수 있습니다.
// 예제 코드: 짐벌 락 유도
void Start()
{
    transform.rotation = Quaternion.Euler(90, 0, 0); // X축을 90도 회전
}

void Update()
{
    transform.Rotate(0, 1, 0); // Y축을 회전
}

모범 답:


설명 문제

💡 질문을 직접 설명해보고, 모르는 부분이 있다면 알아보는 시간을 가집시다.
  1. 월드 스페이스 (World Space) 와 로컬 스페이스 (Local Space)의 차이에 대해 설명해주세요.
    내 답:
    • 월드 스페이스 (World Space): 월드 스페이스는 전역 좌표계를 의미하며, 씬 전체에서의 절대적인 위치와 회전을 나타냅니다. 모든 오브젝트는 월드 스페이스를 기준으로 위치와 회전을 가집니다.
    • 로컬 스페이스 (Local Space): 로컬 스페이스는 특정 오브젝트의 부모 오브젝트를 기준으로 한 상대적인 위치와 회전을 나타냅니다. 즉, 부모 오브젝트의 변환에 따라 자식 오브젝트의 변환도 영향을 받습니다.

모범 답:

  1. 벡터의 내적과 외적을 어느 상황에 사용할 수 있는지 설명해주세요.
    내 답:
    내적 (Dot Product):
    • 두 벡터의 방향이 얼마나 일치하는지 측정할 때 사용합니다.
    • 두 벡터가 이루는 각도를 계산할 때 사용합니다.
    • 예: 조명 계산, 두 벡터가 수직인지 확인, 투영 벡터 계산.
    외적 (Cross Product):
    • 두 벡터에 수직인 벡터를 계산할 때 사용합니다.
    • 평면의 법선 벡터를 구할 때 사용합니다.
    • 예: 삼각형의 면적 계산, 회전 축 계산, 물리 시뮬레이션에서의 토크 계산.

모범 답:

  1. 쿼터니언을 사용하는 이유에 대해 설명해주세요.
    내 답:
    쿼터니언은 3D 회전을 표현하는 데 사용되는 수학적 구조로, 오일러 각의 한계점을 극복하기 위해 사용됩니다. 쿼터니언을 사용하는 이유는 다음과 같습니다:
    • 짐벌 락 방지: 쿼터니언은 짐벌 락 현상을 방지하여, 모든 회전을 정확하게 표현할 수 있습니다.
    • 효율적인 회전 계산: 쿼터니언은 회전 계산이 효율적이며, 연산 비용이 적습니다.
    • 부드러운 보간: 쿼터니언은 회전의 부드러운 보간(Slerp)을 지원하여, 자연스러운 회전 애니메이션을 구현할 수 있습니다.
    • 메모리 효율성: 쿼터니언은 4개의 요소로 구성되어 있어, 9개의 요소로 구성된 회전 행렬보다 메모리 효율적입니다.
    이러한 이유로, Unity와 같은 게임 엔진에서는 쿼터니언을 사용하여 회전을 표현하고 처리합니다.

모범 답:

profile
스터디 로그
post-custom-banner

0개의 댓글