이슈:
1. CPR 할 때 가슴 압박 지점과 머리가 일직선이 되야 함
2. 이를 구하기 위해 Layperson에 있는 HeadAngleSpot과 머리(Camera) 사이의 각도를 구함
3. 내가 처음 구현한 방법은 누워있는 사람의 가슴에 붙어있는 파랑색 스팟의 upVector와 머리(Camera)의 위치를 받아와서 두 벡터를 내적 → ACOS → R2D 하는 방식으로 구현하고 있음
계산 과정을 살펴보자
* 내적 공식
여기서 두 벡터는 단위벡터이고, 그럼 cos만 남는다!
cos(세타) 값의 범위는 -1에서 1 사이이고, 내가 알고 싶은 것은 각도!
따라서 acos를 해준다.
여기서 주의할 것!
acos의 범위는 0<= <=180
이 프로젝트에서는 고려할 필요 없음
다시 본론으로 돌아와서,
4. 나는 가슴 패치의 up vector를 썼었고 이 벡터로 내적했을 때 나오는 범위는 다음과 같다
기준이 되는 벡터(이 표현이 맞는지는 모르겠음)가 upvector이고 이걸 가지고 움직이는 head 벡터는 위의 그림과 같은 사이각을 내놓는다.
근데 우리가 하고 싶은 건 머리 각도 표현이 예를 들어 85도에서 95도를 판단하고 싶은데, 저런식으로 하면 좀 직관적이지가 않다.
이런 방식이 보기 좋다는 것! 그래서 upVector 말고 forward 혹은 상황에 따라 rightVector를 기준으로 써주는 것이 더 직관적이다.
내가 놓친 것:
처음엔 90도에서 얼마나 벗어났는지를 판단해야 해서 upVector로 구했는데, 기획이 조금 바뀌었고, 이때 그럼 85-95도 사이 계산해야 한다고 했을 때 바로 upVector 말고 다른 걸 기준으로 해야한다는 것을 생각하지 못했다.
예전에도 외적, 내적 가지고 나름 깊게 들어갔지만, 이해된 영역은 아닌듯하다. 찾아보면 그때서야 '아 이렇게 했었지~'정도?외워서 기억하고 싶진 않고 나도 이해를 하고 싶은데 먼저 외워버린 느낌이다.앞으로 비슷한 문제가 나올 때 그림 그려보고 생각해보면 되지 않을까?
거기에 정말 수학 문제를 좀 풀어야 할듯!
'회사 TIL' 카테고리의 다른 글
[Unreal] Delay vs Retriggerable Delay (0) | 2024.06.21 |
---|---|
[Unreal] Widget과 Widget Component (0) | 2024.06.20 |
게임 리서치 (0) | 2023.03.27 |
[TIL] 23.03.14 / 석궁 1차 완료, 권총 블루프린트 연구 시작 (0) | 2023.03.15 |
[TIL] 23.03.08 / 석궁 구현 - 애니메이션 시도 중 (0) | 2023.03.09 |
댓글