[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개의 댓글

관련 채용 정보