응애맘마조
221221 강의 본문
GameObject.h의 파일이 조금 수정되었습니다. 중요한 부분은 private와 protected로 바뀌었습니다.
static void CreateStaticMember과 static void DeleteStaticMember는 static 함수인데 프로그램이 실행될 때 딱 한 번 실행됩니다.
앞으로 로컬 포지션과 월드 포지션을 사용합니다. LocalPos, WorldPos 이름의 함수로 사용합니다.
이동 시킬 때는 +=을 사용합니다. 이때 포지션 이름은 MoveLocalPos, MoveWorldPos입니다.
위치를 고정 시킬 때는 =을 사용합니다. 이때 포지션 이름은 SetLocalPos, SetWorldPos입니다.
이 상황에서 만약 부모 객체가 있다면 정규화와 Invert(역행렬)을 곱해서 부모 객체를 원점으로부터 자식의 객체 값을 얻어냅니다.
(로컬 포지션은 부모 객체가 원점일 때의 값, 만약 부모 객체가 없으면 월드 포지션과 똑같다고 이해하면 됩니다.)
메인에서 행렬의 Update를 하지 않으면 행렬값만 들어가게 되고 행렬이 생성되지 않습니다. 그래서 반드시 생성 후에 따로 업데이트 코드를 입력해야 됩니다.
이번 수업에서는 회전 값을 통해 공전시키는 방법에 대해 배웠습니다. 변수 이름은 revolution이라고 하고 행렬 이름은 R2라고 했습니다.
공식은 SRT × R2 × RT입니다.
SRT × R2는 WorldPos입니다.
여기에 부모 객체의 RT를 곱하면서 LocalPos로 변환시킵니다.
R2에서 각도대로 돌리게 되면 정점끼리의 거리가 같아야 되기 때문에 제자리에서 회전하는 자전이 되는 게 아니고 부모 객체 주변을 돌면서 거리를 똑같이 맞추게 되는 공전하는 모습이 나오게 됩니다.
행렬을 곱하는 순서는 SRT 순서대로 가야 됩니다. 다 곱셈이라고 순서를 바꾸게 되면 전혀 다른 값이 됩니다.
이제 행렬은 이걸로 끝이 났습니다. 더 이상 행렬 수업은 없다고 했습니다.
읽어주셔서 감사합니다.