일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- 오큘러스
- ChatGPT
- 유니티 Json 데이터 연동
- 유니티 UI
- HAPTIC
- OVR
- 모작
- meta
- 드래곤 플라이트 모작
- CGV
- VR
- 앱 배포
- 가상현실
- 개발
- 개발일지
- Photon Fusion
- Oculus
- 포트폴리오
- meta xr
- 드래곤 플라이트
- 유니티 GUI
- 길건너 친구들
- 멀티플레이
- 오브젝트 풀링
- input system
- 팀프로젝트
- 유니티
- 팀 프로젝트
- XR
- 연습
- Today
- Total
EasyCastleUNITY
OVR 유니티 Hand Pose 탐구 (Hand Grab Pose PC 버전) 본문
https://developer.oculus.com/documentation/unity/unity-isdk-creating-handgrab-poses/
Create a Hand Grab Pose (PC) | Oculus Developers
developer.oculus.com
위 링크의 문서를 기준으로 작성합니다.
Oculus Integration SDK 57.0버전을 기준으로 작성되었습니다. 참고하여 주시기 바랍니다.
여러분이 오브젝트를 잡았을때, 기본적인 손 위치(default hand grab pose)가 옳바른 위치로 보이지 않는다면, 여러분은 적절하게 오브젝트를 잡은것처럼 보이게 하는 커스텀 손 위치 (custom hand grab pose)를 만들 수 있습니다.
커스텀 손 위치를 만들기 위해, 여러분은 그 세팅들과 위치(pose)를 구성하고 기록해야 합니다.
위치(pose)를 기록하고 나면, 여러분은 손가락과 크기, 미러링(다양한 평면에서 적용되도록 하는 것)를 조정할 수 있습니다.
이 글들에서는 Oculus Link가 필요하기 때문에 오직 Android 기기들에만 적용됩니다.
Configure the Settings (세팅 구성)
1. hand grab poses를 저장하기 원하는 Unity Scene을 여세요
2. Window에서 Oculus > Interaction >Hand Grab Pose Recorder를 찾아 여세요
열면 아래와 같은 window가 나타납니다.
3. 이 윈도우에서, 아래 나열된 필수 속성을 설정합니다.
속성 | 설명 |
Hand used for recording poses |
녹음하는 손, 이것은 hierarchy 안에 OVRInteraction > OVRHands 아래에 왼손이나 오른손입니다. |
GameObject to record the hand grab poses for |
포즈를 기록한 GameObject 입니다. |
Prefabs provider for the hands to visualize the recorded poses |
생성된 포즈를 즉시 시각화하는 Ghost Provider 입니다. 이 필드는 프로젝트에서 처음 발견된 asset으로 자동으로 채워집니다. (패키지에 기본 asset이 포함되어 있습니다.) |
HandGrab Interactable Data Collection (optional) |
재생/편집 모드 전환 후에도 pose가 유지될 수 있도록 pose를 저장하거나 load할 수 있는 asset입니다. asset이 제공되지 않으면 저장할 때 새로운 asset이 자동으로 생성됩니다. |
Record HandGrabPoses (손 잡는 위치들 녹화)
1. Play 모드로 들어갑니다. (이렇게 하기 때문에, Oculus Link가 필연적으로 필요하다.)
2. 이전 section에서 선택한 손을 사용하여 대상으로 선택한 GameObject를 감싸세요
3. 손이 녹화를 원하는 pose에 있으면 Record key(기본적으로 스페이스바를 누르려면 HandGrabPoseRecorder 창에 초점이 필요함)를 누르거나 자유로운 손으로 편집기의 RecordHandGrabPose 버튼을 누르십시오.
씬 안에서 HandGhost가 기록된 pose를 수행하는 손으로 나타납니다.
4. 필요한 만큼 위의 과정을 반복하세요, 나중에 미러링을 할 수 있으므로 왼쪽 및 오른쪽 손 포즈를 기록할 필요가 없습니다.
5. Play 모드를 나가기 전에, Save To Collection 버튼을 누르세요.
이러면, Edit 모드에서 사용할 수 있는 asset에 Hand Poses를 저장합니다. 컬렉션 asset을 제공하지 않은 경우, 컬렉션 asset이 자동으로 생성됩니다.
위 동영상은 저장하는 과정을 녹화한 영상입니다.
Tweak HandGrabPoses (손 잡는 위치들 조정)
여러분이 pose를 저장한 후, 편집 모드에서 pose를 조정하고 미러링하고 복제하여 더욱 세련된 결과를 얻을 수 있습니다.
1. Edit 모드에서, Load From Collection을 클릭합니다.
그 저장된 HandPoses가 복원됩니다. 각각 복원된 pose는 HandGrabInteractable 과 HandGrabPose 를 포함하고 있는 GameObject를 가지고 있습니다.
2. 다음 section을 사용하여 필요에 따라 생성된 Hand Poses를 조정합니다.
Adjust Fingers(손가락들 조정)
여러분이 HandGrabPose를 선택하면, Scene 창에 해당 포즈를 나타내는 Ghost Hand가 표시됩니다.
Editor에서 기즈모(Gizmos)가 활성화 된 경우, Ghost Hand의 관절 주위에 여러 개의 원형 핸들이 있습니다.
이러한 핸들들은 각 관절의 굴곡 및 외전(abduction)각도를 조정합니다. (외전은 손가락 뿌리에서만 가능함)
HandPose.FingersFreedom 필드에서 Free로 설정된 손가락에 대해서는 핸들이 표시되지 않습니다.
1. HandGrabPose를 선택합니다.
만약 Editor에서 기즈모가 활성화 된 경우, GhostHand의 관절 주위에 여러 개의 원형 핸들이 나타납니다.
2. 핸들들을 사용하여, 손가락이 올바른 위치에 놓일때 까지 관절을 조정합니다.
Specify Grab Surfaces (손잡이 표면을 지정)
HandGrabPose 자체는 개체와 관련된 손목의 pose만 지정합니다.
하지만 이 pose가 표면을 따라 사용될 수 있음을 나타낼 수 도 있습니다.
예를 들어, 책 가장자리 주변의 어느 지점이나 원주 주변의 구동 휠을 잡는 것등이 있습니다.
HandGrabPose가 유효한 표면을 지정하려면 제공된 IGrabSurface 구현 중 하나를 사용하면 됩니다.
# CylinderGrabSurface: 길이, 방향 및 최대 각도를 조정할 수 있는 Cylinder입니다. 이를 사용하여, HandGrabExamples 장면에서 컵 가장자리나 횃불과 같은 원형 또는 원통형 개체를 잡을 수 있습니다.
#SphereGrabSurface: 구, 회전 할 때마다 HandPose를 사용하여 잡을 수 있도록 구형 개체의 중앙에 배치합니다.
#BoxGrabSurface: 조정 가능한 가장자리가 있는 직사각형입니다. 책, 전화기, 테이블과 같이 가장자리에 있는 직사각형 물체를 잡는 데 사용합니다.
IGrabSurface를 추가하기 위해, 아래에 step을 따르세요.
1. 위의 3가지 GrabSurface 구현 중 하나를 HandGrabPose GameObject 에 추가합니다.
2. 인스펙터에서 HandGrabPose의 [Optional] 필드를 IGrabSurface 구현으로 설정합니다.
3. Scene window에서, 표면 기즈모 (surface gizmo) 주위로 마우스를 움직여, 손과 손목이 객체에 어떻게 맞춰지는 지 시각화 합니다.
4. GrabSurface 검사기에서 제공된 핸들이나 필드를 사용하여 손이 원하는 범위 내에 유지되도록 표면 모양을 조정합니다.
실제로 구현해 본 HandPose 입니다. 주의할 점으로는 Surface를 어떻게 지정하느냐에 따라
지정한 위치에 pose로 가는것이 아니라 중간에 가기도 하고 아래로 가기도 합니다.
따라서, 미세하게 Surface를 조정할 필요가 있습니다.
GrabHandPose를 조정하고 제대로 잡히는 영상입니다.
Scale HandGrabPoses (손잡기 위치들 크기 조정)
만약 당신의 application에서 기본 동작을 하는사용자 지정 손(custom scaled hands)을 허용하는 경우,
기본 크기(1x scale)의 HandGrabPose의 일부 수정된 복사본을 HandGrabInteractable에 세팅해야 합니다.
이러한 수정된 사본은 사용자 지정 손 크기를 사용해야 하기에, 시스템이 손 크기와 기본 크기 사이를 보간하여 손잡기가 항상 잘 정렬된 것처럼 보이도록 해야 합니다.
수정된 복사본을 만들려면 다음 중 하나를 수행하세요.
# Duplicate the GameObject
# Use the scale slider
Duplicate the GameObject (게임 오브젝트 복제)
1.HandGrabPose 게임 오브젝트를 복제합니다. (GrabSurface가 있는 경우 함께)
2. 복제한 게임 오브젝트의 localScale을 조정합니다.
3. (선택사항) 손가락 회전 및 표면 제한 조정
4. 그 게임오브젝트를 다시 HandGrabInteractable에 할당합니다.
Use the scale slider (배율 조정 슬라이더 사용)
1. HandGrabInteractable 구성 요소에서 ScaledHandGrabPosesKeys 슬라이더를 0.8x 및 1.2x 위치로 이동합니다.
2. X scale에 HandGrabPose 키 추가 버튼을 클릭하여 키를 생성합니다.
3. (선택사항) HandGrabInteractable 아래에 새로 생성된 HandGrabPoint 게임오브젝트의 손가락과 표면을 조정합니다.
4. 인스펙터에서, 씬 뷰를 보면서 ScaledHandGrabPosesKeys 슬라이더를 움직여 다양한 손 크기 간의 전환이 원활하게 이루어지도록 하세요.
Mirror a HandGrabPose (미러링 HandGrabPose)
HandGrabPose를 수동 이나 자동으로 미러링 할 수 있습니다.
Mirror Manually (미러링 수동)
1. HandGrabInteractable을 복제합니다.
2. 인스펙터에서, 각각의 HandGrabPosae 게임 오브젝트의 Hadeness 속성을 변경합니다.
3. 각 HandGrabPose의 위치를 수동으로 조정하여 잘 정렬되도록 합니다.
Mirror Automatically ( 미러링 자동)
1. 손 중 하나에 대한 HandGrabPoses가 준비되고, HandGrabInteractable에 연결되면 Create Mirrored HandGrabInteractable 버튼을 클릭합니다.
HandGrabInteractable은 모든 HandGrabPoses를 새 HandGrabInteractable로 미러링하는 동안 복제됩니다.
2. (선택사항) 생성된 pose에 대한 미러링이 잘못된 축에서 발생한 경우, HandGrabPose의 변환을 원하는 위치로 이동합니다.
자동 미러링을 사용하여, 반대편 Grab Hand Pose도 만들어서 시연한 영상입니다.
이렇게 Hand Grab Pose 탐구가 끝났습니다.
주의점: 혹시 제대로 만든 것 같은데, Hand Pose가 안 나오는 경우가 있을 수 있습니다.
그렇다면, 그런 경우 거의 OVRCameraRig의 문제일 가능성이 큽니다.
간단하게 Test하기 위해서라면, PoseExample 씬에 존재하는 CameraRig를 프리팹화하여 Test하던 씬으로 가져온 다음
이 CameraRig를 사용하여 Test 해보시기 바랍니다.
위 사진처럼 찾으시거나, 검색해서 PoseExamples 씬을 찾아보세요
'Oculus VR 탐구' 카테고리의 다른 글
OVR 유니티 Ghost Reticles 탐구 (0) | 2023.10.25 |
---|---|
OVR 유니티 Distance Grab Interaction (멀리 있는 물체 집기 상호작용 탐구) (0) | 2023.10.25 |
OVR 유니티 물체 던지기(Throw an Object) 탐구 (0) | 2023.10.23 |
OVR 유니티 Grab Interaction (물체 잡기) (1) | 2023.10.23 |
OVR 유니티 기본 세팅 및, 손동작 테스트 (1) | 2023.10.22 |