카테고리 없음

20250512 TIL 월드 스페이스와 로컬스페이스 내적과 외적, 쿼터니언

note4973 2025. 5. 12. 20:18

월드 스페이스(World Space)와 로컬 스페이스(Local Space)의 차이

  • 월드 스페이스
    • 씬 전체의 절대 좌표계
    • (0,0,0)은 씬의 원점
    • 게임 오브젝트가 월드에서 어디에 있는지를 나타냄
    • 예) transform.position은 월드 기준 위치를 반환
  • 로컬 스페이스
    • 부모 오브젝트를 기준으로 한 상대 좌표계
    • (0,0,0)은 부모의 위치
    • 예) transform.localPosition은 부모 기준 위치를 반환

 차이점 요약

구분기준설명
월드 스페이스 씬(세계) 전체 절대 위치, 회전, 크기
로컬 스페이스 부모 오브젝트 부모 기준 상대 위치, 회전, 크기
 

벡터의 내적(Dot Product)과 외적(Cross Product) 활용 상황

내적 (Dot Product)

  • 두 벡터의 방향 유사도(각도)를 구할 때 사용
  • 두 벡터가 얼마나 같은 방향을 보는지 확인할 때 유용
  • 예시 상황:
    • 시야각 판별 (적이 앞에 있는지 뒤에 있는지)
    • 빛과 표면의 각도 계산 (조명 효과)

외적 (Cross Product)

  • 두 벡터에 수직인 벡터를 구할 때 사용
  • 주로 면의 법선(Normal) 계산이나 회전 방향 판별에 사용
  • 예시 상황:
    • 3D 오브젝트의 법선 벡터 계산
    • 왼쪽/오른쪽 회전 판별 (예: 조이스틱 방향 처리)

 쿼터니언(Quaternion)을 사용하는 이유

오일러 각도의 한계 극복

  • 오일러 각도(roll, pitch, yaw)는 회전 표현이 직관적이지만
    Gimbal Lock(짐벌락) 현상이 발생해 회전 자유도가 제한될 수 있음.

부드러운 회전(Slerp) 지원

  • 쿼터니언은 회전을 부드럽고 연속적으로 보간(Slerp) 가능

연산 효율성과 안정성

  • 회전 행렬보다 메모리 효율이 높고
    복잡한 연산 없이 회전 누적이 가능

실제 사용 예시

  • Unity에서 transform.rotation
  • Quaternion.Slerp, Quaternion.LookRotation 같은 API 사용