Make Unreal REAL.
article thumbnail

책을 보며 따라하다가 FRotationMatrix::MakeFromX()라는 함수를 보게 되었다.

 

이 함수가 도통 무엇을 하는 함수인지 알 수가 없어 구글, 유튜브, 언리얼 포럼 등에 찾아보았으나 정확히 알고 있는 사람이 드물었고 대략적인 설명이 있어도 이해할 수가 없었다.

 

 

어제 오후부터 오늘 오전까지 이 함수에 대해 이해하느라 시간을 날렸다.

 

찾아봐도 이해가 되지 않아 직접 실험하며 이해해야겠다는 생각에 여러 테스트도 해보았다.

 

MakeFromX(0~1, 0~1, 0)

 

 

MakeFromY(0~1, 0~1, 0)

 

 

MakeFromZ(0~1, 0~1, 0)

 

 

결과를 보고 가설을 세워 이해해보려고 했지만 각 축에 따른 일정한 패턴을 파악할 수가 없었다..

 

마지막으로 언리얼 카페에서만 찾아보고 포기해야겠다는 생각으로 찾아봤다.

 

그런데, 기적적으로 도움이 될 만한 글이 있었고 심지어 지금 보고 있는 책의 저자이신 이득우 교수님께서 달아주신 답글도 있었다.

 

 

FRotationMatrix::MakeFromX 질문있습니다

대한민국 모임의 시작, 네이버 카페

cafe.naver.com

언리얼은 소스 코드를 제공한다는 걸 깜빡하고 있다가 이 글을 보고 함수에 F12 키를 눌러 보니 함수의 구현부가 나왔다.

 

그닥 긴 코드는 아니었고 이제야 지금까지 찾아봤던 포럼, 블로그에서 사람들이 무슨 말을 했는지 대략적으로 이해할 수 있었다.

 

 

외적은 두 벡터에 모두 수직인 벡터를 구한다.

  • A, B 벡터 순서에 따라 방향이 달라진다.

 

 

MakeFromX() 함수는 외적을 활용해 입력된 벡터를 X축으로 하는 새로운 좌표계를 만드는 함수였다.

 

이득우 교수님의 말씀에 따르면, 이 함수를 이해하기 위해서는 UpVector의 예외 처리는 다른 주제라서 두고 다음을 알아야 한다고 한다.

  • 회전행렬의 성질
  • 직교행렬의 설계방법
  • 직교행렬의 특징

 

 

26. 3D 카메라 뷰 변환 행렬

안녕하세요. 2018년 (무려 4년전.. )에 연재한 상상하는 게임 수학에 설명한 내용을 모아 책으로 발간했습...

blog.naver.com

이득우 교수님의 다른 책인 게임 수학 책에 나오는 내용인 것 같다.

 

MakeFromX() 함수가 새로운 좌표계를 만드는 함수인 것은 알겠는데 반환된 FMatrix를 FRotator로 변환하면 왜 이런 방향이 나오는지는 아직 내가 이해할 수 있는 범위 밖인 것 같다..

 

이득우 교수님의 게임 수학 책도 알고리즘 책을 다 본 이후로 볼 예정인데 그때 보면서 다시 한 번 생각해봐야겠다.

 

이득우의 언리얼 C++ 게임 개발의 정석 301p를 보다가 드디어 감을 잠았다.

 

 

  • 캡슐의 배에 칼을(캡슐의 X 방향) 꽂고 vec 방향과 맞추고 싶을 때 MakeFromX 함수를 사용한다.
  • 캡슐의 옆구리에 칼을(캡슐의 Y 방향) 꽂고 vec 방향과 맞추고 싶을 때 MakeFromY 함수를 사용한다.
  • 캡슐의 머리에 꼬챙이를(캡슐의 Z 방향) 끼워서 vec 방향과 맞추고 싶을 때 MakeFromZ 함수를 사용한다.

 

드디어 이 함수가 무엇을 하는 녀석인지 알게 된 것 같다.

 

MakeFromX(vec)는 vec 벡터를 X축으로 하여 회전을 만드는 함수였던 것이다.

profile

Make Unreal REAL.

@diesuki4

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!

검색 태그