갬장장이
[Mathematics] 28. 회전목마
갬장장이
갬장장이의 코드 대장간
갬장장이
전체
오늘
어제
  • 분류 전체보기
    • 게임 연구소
    • 게임 제작
      • Banditors (2024~)
      • Rovenhell (2023)
      • Geophyte (2020~2021)
      • 아드레날린 러시 (2021)
      • Treadmill (2019)
      • 습작들 (2019~)
      • 그 외 (~2018)
    • 개발
      • 언리얼 엔진
      • 수학
      • 네트워크
      • 그래픽스
      • OpenGL
      • DirectX
    • 일상
    • 기타 제작

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

  • [공지] 블로그 안내

인기 글

최근 댓글

최근 글

hELLO · Designed By 정상우.
개발/수학

[Mathematics] 28. 회전목마

2022. 8. 7. 19:28

바로 이전 포스트에서 우리는 회전목마와 상자의 운동을 행렬곱으로 표현해보았다.

그러나 해당 방식은 물체가 회전목마에서 닿았다 떨어졌다 하는 상황에서 동적으로 변경해줄 수 없다는 문제가 있다.

즉 게임 내의 회전하는 원판 장애물 등으로는 활용할 수 없다는 이야기다.

 

이번 포스트에서는 Move parents라는 개념을 사용해 이를 개선해보자.

사실 지난 포스트에서 다룬 회전운동을 표현하는 수학적 원리는 전부 동일하다.

단 이제부터는 각 오브젝트가 Move parents를 가질 수 있고, 만약 Move parents가 있을 경우 이 오브젝트의 transform은 Global transform 대신 Local transform을 통해 표현한다.

 

이를 회전목마 운동에 대입시켜보자.
우선 회전목마는 move parent가 없으므로(정확히는 우주 공간 자체가 Move parent이므로) 우리는 회전목마의 global transform을 사용한다.

반면 회전목마 위에 놓인 object는 현재 회전목마의 transform에 의해 자신의 transform이 영향을 받으므로 회전목마가 자신의 move parent가 되고, move parent가 존재하기 때문에 우리는 이 오브젝트의 transform을 표현할 때 global 대신 local transform을 사용한다.

 

물체의 local transform은 

(move parent의 global transform의 transpose) * (물체의 global transform)

으로 나타낼 수 있고

이를 회전목마와 상자에 대입해 생각하면 L = M^-1 * B로 나타낼 수 있다. 자세한건 이전 포스트 참고.

 

반대로 물체의 global transform은

이걸 거꾸로 해준 것, 즉

(move parent의 global transform) * (물체의 local transform)

이고

이는 B = ML 로 나타낼 수 있다.

 

사실 지난 포스트에서 다룬 내용과 동일하기 때문에 전혀 어려운 내용이 없다.

 

이걸 이제 코드단에서 다음과 같은 형태로 표현이 가능하다.

어떤 오브젝트의 Move parent가 설정되었을 경우 local transform을 업데이트해주고,

반대로 move parent가 삭제되었을 경우(nullptr) global transform을 업데이트한다.

 

그 후 매 프레임마다 회전목마에 물체가 닿아있는지를 확인하고 닿아있을 경우 Move parent로 설정해주는 코드를 추가하면 이제 물체가 접촉해 있을 때만 회전목마의 영향을 받는, 우리가 원하는 결과를 얻을 수 있다.

 

 

저작자표시 비영리 변경금지 (새창열림)

'개발 > 수학' 카테고리의 다른 글

[Mathematics] 27. 기준점을 중심으로 한 원형 회전  (0) 2022.08.07
[Mathematics] 26. Camera view transformation matrix  (0) 2022.06.23
[Mathematics] 25. Local vs Global Coordinate System(3D)  (0) 2022.06.23
[Mathematics] 24. Fast TR Matrix Inversion  (0) 2022.06.23
[Mathematics] 23. Eigenvectors, Eigenvalues  (0) 2022.06.06
'개발/수학' 카테고리의 다른 글
  • [Mathematics] 27. 기준점을 중심으로 한 원형 회전
  • [Mathematics] 26. Camera view transformation matrix
  • [Mathematics] 25. Local vs Global Coordinate System(3D)
  • [Mathematics] 24. Fast TR Matrix Inversion
갬장장이
갬장장이
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.