[UE5] πŸ”’ 짐벌 락 (Gimbal Lock)

Singery00Β·2024λ…„ 5μ›” 15일
0

UE5

λͺ©λ‘ 보기
8/37
post-thumbnail

κ°œμš”

πŸ”’ 였일러 각의 ν•œκ³„λ‘œ 인해 λ°œμƒν•˜λŠ” 짐벌 락 (Gimbal Lock)에 λŒ€ν•΄μ„œ μ•Œμ•„ 보자.

이전, c++둜 μ•‘ν„°μ˜ νšŒμ „μ„ κ΅¬ν˜„ν•˜λŠ” 쀑에 roll이 -90Β° ~ 90Β°λ₯Ό κΈ°μ€€μœΌλ‘œ 더 이상 νšŒμ „ν•˜μ§€ λͺ»ν•˜λŠ” λ¬Έμ œκ°€ μžˆμ—ˆμŠ΅λ‹ˆλ‹€.

μ΄λŠ” 였일러 각도λ₯Ό μ‚¬μš©ν•  λ•Œ λ°œμƒν•˜λŠ” 짐벌 락 (Gimbal Lock)이 μ›μΈμž…λ‹ˆλ‹€.

짐벌 락 (Gimbal Lock)κ³Ό ν•΄κ²° 방법에 λŒ€ν•΄μ„œ μ•Œμ•„ λ³΄κ² μŠ΅λ‹ˆλ‹€.

μœ„ν‚€ν”Όλ””μ•„ 짐벌 락 μ„€λͺ…κΈ€


λ³Έλ‘ 


πŸ“ 였일러 각 (Euler Angle)

짐벌 락에 λŒ€ν•΄μ„œ 이야기λ₯Ό μ‹œμž‘ν•˜κΈ° 전에 μš°μ„  였일러 각 (Euler Angle)에 λŒ€ν•΄μ„œ λ¨Όμ € μ•Œμ•„μ•Ό ν•©λ‹ˆλ‹€.

κ·Έ 유λͺ…ν•œ 였일러 λ§žμŠ΅λ‹ˆλ‹€.

강체가 놓인 λ°©ν–₯을 3차원 곡간에 ν‘œμ‹œν•˜κΈ° μœ„ν•΄ λ ˆμ˜¨ν•˜λ₯΄νŠΈ μ˜€μΌλŸ¬κ°€ λ„μž…ν•œ μ„Έ 개의 각도이닀.[1] 즉, 3차원 νšŒμ „κ΅° SO(3)의 ν•œ μ’Œν‘œκ³„λ‹€. 3차원 곡간에 놓인 κ°•μ²΄μ˜ λ°©ν–₯은 였일러 각도λ₯Ό μ‚¬μš©ν•˜μ—¬ μ„Έ 번의 νšŒμ „μ„ 톡해 얻을 수 μžˆλ‹€.

였일러 각(Euler Angle)μ΄λž€ "강체가 놓은 λ°©ν–₯을 3차원 곡간에 ν‘œμ‹œν•˜κΈ° μœ„ν•΄ λ„μž…ν•œ 3개의 각도" μž…λ‹ˆλ‹€.


ν•˜λ‚˜μ”© μ •λ¦¬ν•˜κ² μŠ΅λ‹ˆλ‹€.πŸ‘

κ°•μ²΄λŠ” λ¬Όλ¦¬ν•™μ—μ„œ ν˜•νƒœκ°€ κ³ μ •λ˜μ–΄ λ³€ν•˜μ§€ μ•ŠλŠ” 물체λ₯Ό λœ»ν•©λ‹ˆλ‹€. Static Mesh둜 λŒ€μž…ν•˜μ—¬ μƒκ°ν•˜μ‹œλ©΄ 될 것 κ°™μŠ΅λ‹ˆλ‹€.

3차원 곡간은 μš°λ¦¬κ°€ μ‚΄κ³  μžˆλŠ” μ„Έκ³„λ‘œ 즉, X,Y,Z 3개의 μΆ•μœΌλ‘œ λ‚˜νƒ€λ‚Ό 수 μžˆμŠ΅λ‹ˆλ‹€. 3D λͺ¨λΈλ§μ„ ν•  수 μžˆλŠ” ν™˜κ²½λ„ 포함할 수 있겠죠.

πŸ”’ 짐벌 락 (Gimbal Lock)

μ΄λ•Œ 언리얼 μ—”μ§„μ—μ„œμ˜ κ°•μ²΄μ˜ νšŒμ „ 좕은 μ•„λž˜ 사진과 같이 λ‚˜νƒ€λ‚Ό 수 μžˆμŠ΅λ‹ˆλ‹€.

α에 λŒ€ν•œ νšŒμ „μ€ Z좕을 μ€‘μ‹¬μœΌλ‘œ Yaw νšŒμ „μ΄,
γ에 λŒ€ν•œ νšŒμ „μ€ Y좕을 μ€‘μ‹¬μœΌλ‘œ Pitch νšŒμ „μ΄,
β에 λŒ€ν•œ νšŒμ „μ€ X좕을 μ€‘μ‹¬μœΌλ‘œ Roll νšŒμ „μ΄ μ—°μ‚°λ©λ‹ˆλ‹€.

α와 γ의 경우 이상적인 μƒν™©μ—μ„œ 2Ο€ λΌλ””μ•ˆ(360Β°)κΉŒμ§€μ΄λ©°
β의 경우 -Ο€/2 ~ Ο€/2(-90Β° ~ 90Β°)κΉŒμ§€κ°€ λœλ‹€.

μ—¬κΈ°μ„œ Ξ² λ²”μœ„κ°€ μ œν•œμ μΈ 것을 짐벌 락 (Gimbal Lock)이라 ν•©λ‹ˆλ‹€.

이유

νšŒμ „μ„ 계산할 λ•Œ 정해진 Z->Y->X μˆœμ„œλŒ€λ‘œ 연산을 μ§„ν–‰ν•©λ‹ˆλ‹€.

μ΄λ•ŒλŠ” μ•žμ„œ νšŒμ „ν•œ 두 μΆ•μ˜ 영ν–₯으둜 μ„Έ 번째 νšŒμ „μΆ•μ΄ λ‹€λ₯Έ μΆ•κ³Ό μ •λ ¬λ˜λ©° ν•˜λ‚˜μ˜ μΆ•μ²˜λŸΌ λ˜μ–΄λ²„λ¦¬λŠ” κ²ƒμž…λ‹ˆλ‹€.

μ˜ˆμ‹œλ₯Ό 사진을 보며 μ„€λͺ…ν•˜κ² μŠ΅λ‹ˆλ‹€.

μ•„λž˜μ™€ 같이 λΉ„ν–‰κΈ°κ°€ μ„œ μžˆλ‹€κ³  ν•˜κ² μŠ΅λ‹ˆλ‹€.

μ΄λ•Œ Pitch을 90°만큼 νšŒμ „ν•΄λ³΄κ² μŠ΅λ‹ˆλ‹€.

그럼 μ•„λž˜ μ‚¬μ§„μ²˜λŸΌ λΉ„ν–‰κΈ°κ°€ μΌμ–΄λ‚˜κ²Œ λ©λ‹ˆλ‹€.
μ—¬κΈ°μ„œ X,Z좕이 μ •λ ¬λ˜μ–΄ Yaw, Roll νšŒμ „μ΄ λ™μΌν•œ 결과값을 κ°€μ Έμ˜€κ²Œ λ©λ‹ˆλ‹€.
더 이상 Roll νšŒμ „μ„ ν•  수 μ—†κ²Œ λ˜λŠ” κ²ƒμž…λ‹ˆλ‹€.

3개의 좕이 μ˜μ‘΄μ μ΄λΌλŠ” 뜻이죠.

μΏΌν„°λ‹ˆμ–Έ(Quaternion)

μ΄λŸ¬ν•œ 문제λ₯Ό ν•΄κ²°ν•˜κΈ° μœ„ν•΄μ„œ μΏΌν„°λ‹ˆμ–Έ(Quaternion)이 λ„μž…λ˜μ—ˆμŠ΅λ‹ˆλ‹€. 4μ›μˆ˜λΌκ³ λ„ λΆˆλ¦½λ‹ˆλ‹€.

κ°„λ‹¨ν•˜κ²Œ 1개의 좕을 μΆ”κ°€λ‘œ 꽂아 버린 κ²ƒμž…λ‹ˆλ‹€.

3차원 κ·Έλž˜ν”½μ—μ„œ νšŒμ „μ„ ν‘œν˜„ν•  λ•Œ, ν–‰λ ¬ λŒ€μ‹  μ‚¬μš©ν•˜λŠ” μˆ˜ν•™μ  κ°œλ…μœΌλ‘œ 4개의 κ°’μœΌλ‘œ 이루어진 λ³΅μ†Œμˆ˜ μ²΄κ³„μž…λ‹ˆλ‹€.

짐벌 락 (Gimbal Lock)을 ν•΄κ²°ν•˜κΈ° μœ„ν•œ 이유 외에도 λ‹€λ₯Έ μž₯점도 μžˆμŠ΅λ‹ˆλ‹€.

  1. 행렬에 λΉ„ν•΄ μ—°μ‚° 속도가 λΉ λ¦…λ‹ˆλ‹€.
  2. μ°¨μ§€ν•˜λŠ” λ©”λͺ¨λ¦¬ λ˜ν•œ μ μŠ΅λ‹ˆλ‹€.
  3. 였λ₯˜κ°€ λ‚  ν™•λ₯ μ΄ μ μŠ΅λ‹ˆλ‹€.

마무리

사싀 일반적으둜 짐벌 락(Gimbal Lock)이 λ°œμƒν•˜κΈ°λŠ” 생각보닀 μ–΄λ ΅λ‹€κ³  ν•©λ‹ˆλ‹€.

그리고 무엇보닀 였일러 각을 μ‚¬μš©ν•œ νšŒμ „μ΄ μ‚¬μš©ν•˜κΈ° 무척 νŽΈν•©λ‹ˆλ‹€...

μ—¬κΈ°κΉŒμ§€ 짐벌 락 (Gimbal Lock)에 λŒ€ν•΄μ„œ μ•Œμ•„ λ³΄μ•˜μŠ΅λ‹ˆλ‹€.

profile
κ²Œμž„ κ°œλ°œμžκ°€ λ˜μ–΄λ³΄μž

0개의 λŒ“κΈ€