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

suhan0304·2023년 12월 3일
0

Unreal Engine 5

목록 보기
9/10
post-thumbnail

이제 HandToObj을 구현하자. 이번에는 오브젝트가 내 손으로 끌려오는 것이 아니라 내 손이 물체의 특정 위치로 움직여야만 한다.

그냥 단순히 모션 컨트롤러를 오브젝트의 특정 위치로 옮기게 구현하게 된다면 해당 오브젝트를 잡는 순간에 모션 트래킹의 기본 위치 또한 해당 위치로 이동하게 되고 물체를 놓는다고 해도 모션 컨트롤러의 상대 위치가 보정된 상태에서 유지되서 트래킹이 결국에는 깨지게 되는 현상이 일어나게 된다.

손을 놓는 순간에 모션 컨트롤러를 원위치? 잡고 움직이고 난 이후에 트래킹이 이미 깨져버렸기 때문에 모션 컨트롤러가 돌아와야하는 위치를 구할 수 없다.


HandToObject

모션 컨트롤러의 좌표를 내 마음대로 움직일 수 없다.
Q. 그렇다면 내 마은대로 움직일 수 있는것은?
A. HandMesh!

HandMesh(SkeletalMesh)만 움직여서 잡은 것처럼 보이도록 하고 손을 놓으면 Mesh가 다시 모션 컨트롤러 돌아오도록 구현한다.

TryGrab

핸드 메쉬를 GrabCompnent에 가져다가 부착시킨다.

핸드 메쉬를 원하는 컴포넌트에 부착시키게 되면 기존에 핸드 메쉬에 각도를 90, 90, 0을 해줬으므로 해당 과정을 동일하게 진행한다.


이제 손을 놓았을때를 구현해보자.

BP_Hand

애초에 손을 그랩하기 전에, 즉 핸드 메쉬를 옮겨 주기 전에 다시 원래 자리로 돌아올 때를 위해 핸드 메쉬의 상대 위치와 각도를 변수에 저장해서 기억해놓도록 한다.

ResetHandMesh

기억해놓은 트랜스폼 위치에 핸드메쉬에 다시 부착시켜준다. (현재 Grab Component가 있는 물체에 가서 부착했었기 때문에 다시 모션 컨트롤러에 부착해줘야 한다.)

TryRelease

손을 놓으면 위에서 Hand가 BP_Hand에 선언해둔 ResetHandMesh를 실행하도록 한다.


테스트

이제 핸드 메쉬만 물체의 Grap Component에게 부착된다. 모션 컨트롤러는 그대로 자연스럽게 트래킹이 진행중이다. 이제 손을 놓으면 핸드 메쉬가 다시 기존의 위치로 돌아오는 것을 확인할 수 있다.

profile
Be Honest, Be Harder, Be Stronger

0개의 댓글