[UE5][VR] Unreal Engine 5 VR Study (8)

suhan0304·2023년 12월 3일
0

Unreal Engine 5

목록 보기
8/10
post-thumbnail

월드 좌표 : 글로벌 좌표(절대 좌표)의 0, 0, 0를 기준으로 위치, 회전 설정
상대 좌표 : 내 직속 상관(= 부모 오브젝트)를 기준으로 위치, 회전, 스케일이 설정된다.

BP Gun

BP_Gun의 Grab Component의 위치를 조정해준다. Grab Component의 자식으로 FakeHand Scene과 FakeHandMesh라는 SkeletalMesh를 만들어서 손의 위치를 확인하면서 위치를 설정한다.

FakeHandMesh의 Rotation은 90, 90, 0으로 설정해야한다. ( 기존 모션 컨트롤러에 SkeletalMesh를 추가할 때 90, 90, 0으로 Hand Mesh를 추가했기 때문에)

아래 사진과 같이 자연스러운 위치에 Hand Mesh가 위치되도록 Grab Component의 위치를 옮겨주었다.


Obj To Hand 구현

Try Grab


Obj To Hand

이 부분은 기존 Free Type일 때와 동일하다. 이전 문서를 참고하자.

이 부분을 정확히 이해하는 것이 중요하다.

우리가 원하는 작업을 미리 정의하자면 현재 그랩 컴포넌트의 위치가 우리가 원하는 손 위치라고 할 수 있다. 기존에는 Attach Parent로 BP_Gun을 그냥 모션 컨트롤러에 가져다가 붙이기만 했다면 이제는 실제 컴포넌트의 Parent의 위치를 적절한 위치로 움직여 Grab Component의 위치에 내 손이 가 있도록 하고 싶다.

각도

  1. 그랩 컴포넌트의 상대 회전 각도를 구해서 반대로 뒤집어준다.(invert)
  2. 부모 오브젝트(BP_Gun)을 해당하는 반대 각도만큼 회전시켜준다.

위치

  1. 그랩 컴포넌트와 부모 오브젝트(BP_Gun) 간의 벡터 차이를 구한다.
  2. 해당 벡터에 -1을 곱해서 반대 방향으로 바꾸어준다.
    그러면 이 벡터는 그랩 컴포넌트 -> 부모 오브젝트(BP_Gun)에 해당하는 벡터이다.
  3. 모션 컨트롤러의 월드 좌표에 위에서 구한 벡터만큼 이동한 위치에 부모 오브젝트(BP_Gun)을 위치시킨다.

위 과정은 결국 BP_Gun과 GrabComponent 간의 벡터, 회전을 구하고, 모션 컨트롤러를 기준으로 아까 구한 벡터 반대 방향, 반대 회전으로 진행시킨 위치에 BP_Gun을 다시 위치시킨 것과 동일한 과정이다.

즉, BP_Gun의 위치를 강제로 끌고와서 오브젝트가 내 손에 달라붙어서 특정한 위치를 잡은것 같은 효과를 연출한다고 할 수 있다.


Try Release

Release의 경우에는 물체의 위치나 각도에 보정이 필요없이 그냥 물체를 놓아주면 되므로 FreeType과 동일한 과정이 진행되도록 한다.


테스트

profile
Be Honest, Be Harder, Be Stronger

0개의 댓글