VR 콘텐츠 제작 26

디스크 골프 [#1] - 프리스비 운동 R&D

디스크 골프는 플라스틱 원반을 던져서 바스켓에 넣는 게임이다. 규칙은 골프와 동일하며 구현할 것 자체는 많이 없지만 핵심이 되는 프리스비 운동이 곧 디스크 골프 게임의 퀄리티에 직결하므로 프리스비 운동을 신경써서 R&D하기로 했다. 가장 먼저 해본일은 프리스비가 어떻게 움직이는지 알아보는 것이었다. 유튜브에서 디스크 골프 대회 영상을 참고하였다. https://youtu.be/Ldgt7ZYxTcU?si=AK4Oq9DkA-AZsfSH 프리스비는 수평에서 살짝 각을 줘서 날리면 다음과 같이 곡선을 그리며 상승하다가 낙하한다. 이걸 보고 든 생각은 이걸 물리학을 적용해서 구현해야 할지 아니면 곡선을 그리는 방정식을 활용해서 구현해야 할지 고민이 되었다. 아무래도 물리학을 사용해서 구현하는게 좀 더 보람이 있고..

VR 콘텐츠 제작 2023.11.08

[Unity VR]애니메이션을 이용해서 커스텀 핸드포즈 만들기

오큘러스 SDK의 Interaction을 사용해서 커스텀 핸드포즈를 구현하려고 관련자료를 찾아봤는데 자료가 너무 적어서 찾을 수가 없었다. 그래서 코드를 까봤는데 애니메이션을 이용해서 핸드포즈를 만드려면 Interaction보다는 OVR Grabber를 사용하는게 구현이 더 용이하였다. 먼저 OVRCameraRig를 검색해서 하이어라키에 추가한다. MainCamera는 지워주자 LeftHandAnchor아래에 LeftControllerAnchor에 CustumHandLeft를 검색해서 추가해주자. 이 과정에서 쓰고 싶은 손 모델이 있다면 l_hand_skeletal_lowres를 비활성화하고 쓰고 싶은 핸드모델을 추가해주면 된다. GameDevHQ의 손 모델을 추가해서 사용하기로 했다. 그리고 LeftH..

VR 콘텐츠 제작 2023.11.02

[Unity VR]오큘러스 개발을 위한 초기 설정

먼저 에셋스토어에서 Oculus Intergration을 받아서 SDK를 추가해주자. 다운받은 버전은 v57.0 이다. Show Assets를 누르고 Clean Up을 선택한다. Restart누르고 Upgrade 재시작하면 Oculus가 추가된 것을 볼 수 있다. 메타 퀘스트의 타겟 플랫폼은 안드로이드이므로, Switch Platform을 눌러서 유니티의 플랫폼을 안드로이드로 바꿔주자 오큘러스를 PC와 연결했을때 Run Device에 Oculus Quest가 표시된다면 성공이다. 다 끝났다면 왼쪽 아래의 Player Settings를 클릭하자. Oculus탭에 들어가서 Fix All과 Apply All을 클릭하자, 발생할 수 있는 에러나 추천설정을 자동으로 수정해준다. 수동으로 설정을 수정하고 싶으면 다..

VR 콘텐츠 제작 2023.10.26

[Unity VR]오큘러스에서 DistanceGrab / GhostReticle 만들기

Distance Grab은 말 그대로 멀리 있는 개체를 잡기 위한 그랩이다. Distance Grab은 그랩과 마찬가지로 인터랙터와 잡을 개체에 인터랙터블을 추가함으로서 만들 수 있다. 먼저 DistanceHandGrabInteractor를 추가해보자 HandGrabInteractor와 마찬가지로 OVRHands의 양손에 HandInteractors부분에 추가해주면 된다. 그리고 HandInteractorsLeft/Right 양손에 인터렉터를 넣어준다. OVRControllerHands를 쓸 경우 마찬가지로 ControllerHandInteractors에 같은 과정을 반복하면 된다. 그 다음엔 Cube 오브젝트를 생성해서 DistanceGrab을 할 대상으로 사용하자. Cube에는 콜라이더와 리지드바디를..

VR 콘텐츠 제작 2023.10.25

[Unity VR]오큘러스에서 Grab / Throw / Input 하기

오큘러스 환경에서 유니티로 작업하기 위해서 오큘러스 SDK를 활용한다. 여기선 Integration SDK v57.0을 활용하여 작업을 하였다. 먼저 기존에 있던 메인카메라를 삭제하고 OVRCameraRig를 검색하여 가져 온다. 그 다음엔 OVRCameraRig에 LeftHandAnchor를 찾아서 OVRHandPrefab을 추가한다. 그리고 OVR Hand와 OVR Skeleton을 제외한 나머지 스크립트를 비활성화 한다. RightHand에도 똑같이 적용한다. 이때 OVR Hand의 Hand Type과 OVR Skeleton의 Skeleton타입은 각각 Left Right로 설정한다. 그리고 OVRInteraction을 검색해서 OVRCameraRig의 자식으로 추가한다. 이제 물건을 집기 위한 손..

VR 콘텐츠 제작 2023.10.23

[Unity VR]오큘러스 OVRCameraRig의 Tracking Origin Type 매개변수의 차이

오큘러스 SDK OVRCameraRig의 OVRManger스크립트의 Tracking Origin Type에는 3가지 매개변수가 있는데 Eye Level Floor Level Stage 로 구분된다. 유니티에서 오큘러스를 사용할때 오큘러스는 장치의 회전이나 위치정보를 유니티로 보내는데 이때 해당값은 유니티가 참조하는 매개변수에 따라 달라진다. Eye Level은 말 그대로 눈높이에서 위치와 회전정보를 탐색하는 매개변수로 오큘러스의 장치를 기준으로 값을 보낸다. Floor Level은 오큘러스의 바닥을 기준으로 위치와 회전정보를 전달한다. 높이는 가디언 설정을 통해 변경된다. Stage는 Floor Level과 마찬가지로 오큘러스의 지면을 참조하지만 오큘러스의 위치 재설정에 응하지 않는다. 이게 무슨 뜻이냐..

VR 콘텐츠 제작 2023.10.23