Create Snap Interactions
VR/Oculus Integration 2023. 12. 12. 17:20https://youtube.com/playlist?list=PLTFRwWXfOIYB9hru6EjeVS0E-4jNiOuQQ&si=zoJ3NoYX6YrGnpg1
Unity VR with Oculus Integration 57.0
Unity VR with Oculus Integration
www.youtube.com
스냅 상호 작용을 통해 개체를 손, 컨트롤러 및 위치에 스냅할 수 있습니다. 스냅 상호 작용을 생성하려면 스냅 가능한 개체와 개체가 스냅될 수 있는 위치를 만듭니다. 사전 구축된 장면에서 스냅 상호 작용을 시도하려면 SnapExamples 장면을 참조하세요.
![](https://blog.kakaocdn.net/dn/07jHG/btsBR9lOkrW/X18i62hejvdt6Q218J0dcK/img.png)
Before you Begin
- Complete Create Grab Interactions.
![](https://blog.kakaocdn.net/dn/dfSCK5/btsBQUP9yf1/ktuVLKHmCRuZfIH1dkXcg1/img.png)
Add Snappable Object
This snappable object responds to hands, controllers as hands, and controllers.
- Open the Unity scene where you completed the Create Grab Interactions tutorial.
- Under Hierarchy, select your Cube GameObject from the tutorial.
- Under Hierarchy, select Cube and create an empty child named SnapInteractor by right-clicking in the Hierarchy panel and then clicking Create Empty.
- Your hierarchy should look like this.
그랩되는 큐브 하나 만들기
![](https://blog.kakaocdn.net/dn/ToBv5/btsBQtLQmMd/iEPyIH5katI8ORgldoAKkK/img.png)
큐브를 선택 하고 SnapInteractor 빈오브젝트를 생성
![](https://blog.kakaocdn.net/dn/d4l0FO/btsBUA4hee2/Al4R7kRvF1wSZD1wEdw4qk/img.png)
- Select the SnapInteractor GameObject.
- Under Inspector, add a Snap Interactor component.
![](https://blog.kakaocdn.net/dn/dVwH8E/btsBQxnlyCk/VAiv8XUWNmDT3FCmL3TsC0/img.png)
이제 개체 근처를 잡으면 개체가 손이나 컨트롤러에 맞춰질 수 있습니다.
문서대로 하면 동작 안함
예제를 까봄
![](https://blog.kakaocdn.net/dn/dP9ifU/btsBOiD0Kfr/BmTuCxoQRQWoGFBtbK6THk/img.png)
특이사항 : 최상위에 Box Collider가 있음 (이게 스냅 영역임)
![](https://blog.kakaocdn.net/dn/byOMRt/btsBOgTJP2B/H3kEIyBkE0EbYNVFtLpkxk/img.png)
예제처럼 최상위에 Box Collider를 추가
![](https://blog.kakaocdn.net/dn/c7Rzml/btsBQRFJiHO/Arifi6Pd0s0BNd5WNf8rkK/img.png)
![](https://blog.kakaocdn.net/dn/4Qqa2/btsBT27OgkY/yiezAq6tEi6lAItbAWlqB1/img.png)
![](https://blog.kakaocdn.net/dn/pERgr/btsBMSyot49/MAn4dBpgx4vkVcLHSRbl51/img.png)
몬가 느낌이 약간 다름
핸드 포즈 때문에 그렇게 느껴지는듯
![](https://blog.kakaocdn.net/dn/deaIJY/btsBUJ1aVjP/dh2274rkZpJUGlzzZHTWJK/img.png)
핸드 포즈를 넣어보기로함
![](https://blog.kakaocdn.net/dn/46chx/btsBJiRI6bZ/OHcQUjbsuLRH9Ccymb6ij1/img.png)
![](https://blog.kakaocdn.net/dn/dwsdCn/btsBKeaWxLd/tZipOemAVLt1rldBDFlkv1/img.png)
영역을 좀 키우고
![](https://blog.kakaocdn.net/dn/RtRQj/btsBGYMWbHk/4oNzBsA5fwOQXWrsXUqsm1/img.png)
다시 테스트
포즈 때문에 그렇게 보이는거였음
문제점 : 한손으로 잡고 있는 상태에서 다른 손으로 잡으면 겹쳐서 보여짐
![](https://blog.kakaocdn.net/dn/bFq0bp/btsBTZDsGrG/b0qm60gRatVcDkiRWEYuF0/img.png)
예제도 그런가 테스트
예제는 정상 동작함
내껀 왜 문제임?
영역이 커서?
그럼 예제의 모델을 사용하고 크기고 똑같이 하고 테스트
![](https://blog.kakaocdn.net/dn/bNPgLi/btsBHP3xAPk/QIKMjRamdDfXtqR86wGCFk/img.png)
재 어디가냐
그냥 처음부터 다시 만들어 봄
빈오브젝트를 만들고
![](https://blog.kakaocdn.net/dn/buNRKn/btsBKeu9QrR/CiuSuO8mom9aK6uXQMq8Lk/img.png)
![](https://blog.kakaocdn.net/dn/bXVuYW/btsBR8UOB4X/rWoOOM48k1KJDkwUk2TcK0/img.png)
Grabbable
Rigidbody (Is Kinematic 체크)
BoxCollider (스냅영역)
컴포넌트를 추가
아 찾은듯
이전에 만든 Cube
![](https://blog.kakaocdn.net/dn/bfQXkB/btsBHQOQWMx/ctAhY4bEGcQXffm6kG3370/img.png)
예제 Moon
![](https://blog.kakaocdn.net/dn/ch0D1I/btsBHteTDdu/kw1ApYWM3GTHn8kwea2XTk/img.png)
이게 맞는지 검증 (아니였음...)
![](https://blog.kakaocdn.net/dn/9c72h/btsBG6j8In5/NbZF13Kw8srCekmxw83JSK/img.png)
잡으면 멀리 날라가버림
![](https://blog.kakaocdn.net/dn/nVB9l/btsBT119Rty/HcLffZaMCuU8OXIYFxKvY1/img.png)
다시 아까 컴포넌트 붙이던거 이어서
![](https://blog.kakaocdn.net/dn/cARuHr/btsBQxHIY4r/DXKzRP3iruEtcPXoyKcyhK/img.png)
Transfer On Second Selection을 선택 (아마 이거 때문에 아까 두손으로 잡았을때 이상하게 보였던거일듯)
![](https://blog.kakaocdn.net/dn/84cgU/btsBUcCzN4a/RqBqM0hh6lixHYpuwJv0b0/img.png)
Moon을 선택하고 SnapInteractor 빈오브젝트를 만들고 Snap Interactor 컴포넌트를 부착함
![](https://blog.kakaocdn.net/dn/bDsGHe/btsBT2fHvYk/EoFjBOgqhAAlyFptKs04d1/img.png)
프로젝트 창에서 HandGrabInteractable를 찾아서 Moon 자식으로 넣음
![](https://blog.kakaocdn.net/dn/GCuBD/btsBUKlvJsX/Oa8DKJsnpMYV5XZaLPMrbK/img.png)
그랩 타입을 Pinch만 허용
![](https://blog.kakaocdn.net/dn/bT0Dtt/btsBT0oRxZr/0QXJ8i9xtSVrI2WVGTqU2k/img.png)
Visuals 빈오브젝트에 Cube를 만들고 스케일을 0.1로 조절
![](https://blog.kakaocdn.net/dn/daTszS/btsBMTxnn5i/DQIvnckhl6uXZOzfHGPhyK/img.png)
포즈 레코드 하고
![](https://blog.kakaocdn.net/dn/coRen2/btsBQVBBd0m/QYeRoKXVwURVlZL9u5ckH1/img.png)
불러와서 설정한다
![](https://blog.kakaocdn.net/dn/sjcPG/btsBR8mYweG/k0FzELIm9AmcOOpwf39zNk/img.png)
결과는 잘동작함
근데 이건 그냥 스냅이 아니라 뭐랄까 핸드 포즈 그랩 느낌인데
스냅 컴포넌트가 궂이 필요한가?
다시 테스트 (스냅 컴포넌트 제거 하고)
![](https://blog.kakaocdn.net/dn/HwvlR/btsBMVaRON0/f5FrYqHkQrldkUYmjhD1N0/img.png)
아니 잘 동작 하잖아 -_-;; 뭐가 다른겨
사실 이부분을 빼먹음
![](https://blog.kakaocdn.net/dn/VVDXR/btsBQr8oGCF/JXXPt81doDa3q4qvAYh7C0/img.png)
다시 Snap Interactor 키고 실행
아니 뭐가 다른지 모르겠음
그냥 핸드 포즈 그랩이랑 똑같이 동작함 -_-;;;;
일단 패스
이번에는 Snap Interactor 제거 하고 다시 시도
![](https://blog.kakaocdn.net/dn/BsUrP/btsBGWhkeed/NKbhgEfVm4ezALsg708FP0/img.png)
똑같음 이건 스냅처럼 보이지만 사실 아님 예제에 보면 집어서 놓았을경우 제자리로 가거나 동그란 원에 달라 붙는 용도로 쓰는게 맞는듯
하지만 잡는 부분을 스냅이라고 하기에는.....음
암튼 집어서 넣는 부분을 해부 한다
![](https://blog.kakaocdn.net/dn/A4HaD/btsBQoYbqWr/MiW0cBQDtxuB8RjTozbtI0/img.png)
![](https://blog.kakaocdn.net/dn/dlfDbl/btsBHSzb40j/lKHu9hdDNPTJdjbIgRbtmk/img.png)
요 Ring은 그냥 비주얼적인 요소인듯
![](https://blog.kakaocdn.net/dn/Gfn2N/btsBQxnq6ni/rKNZTIKUxKuJu5XsPwm6h1/img.png)
![](https://blog.kakaocdn.net/dn/5JKYp/btsBQmsx3AD/0GbkEIpBMlcjIAxJ0xOipk/img.png)
SnapInteractable 오브젝트에서 MoveToward 컴포넌트가 이동 시키고 있음
![](https://blog.kakaocdn.net/dn/kQljU/btsBT0oTknN/7bKNzyqKlkGmQqIyO8ZAmK/img.png)
![](https://blog.kakaocdn.net/dn/QDHYd/btsBKhFtZBi/bFFPS15wHoEiF9RffhKIp1/img.png)
돌아가는 애는
![](https://blog.kakaocdn.net/dn/Orbtd/btsBJiqFW7L/eHsVnlvzCAJafJ1qvDOkVk/img.png)
그냥 돌리는 컴포넌트가 붙어 있음 다른거 동일함
![](https://blog.kakaocdn.net/dn/dqCqvJ/btsBHsG9dr2/8uuVjnipkzBH7SUkb7MT4K/img.png)
정리
Snap Interactable, Move Towards Target Provider 가 있으면 댐
![](https://blog.kakaocdn.net/dn/n20o8/btsBQnkFYFE/l2PF7nCzCtzuY74mFDG0lk/img.png)
그럼 이제 만들어 보자
빈오브젝트를 만들고 (Orbits)
![](https://blog.kakaocdn.net/dn/uM9mR/btsBQvDa3Tf/32HzQ0anKLg5BIBJx98Wa1/img.png)
![](https://blog.kakaocdn.net/dn/k1yWH/btsBHPibxpp/tjDRv1XIwCryh2fP7QxxIk/img.png)
![](https://blog.kakaocdn.net/dn/b7TMo2/btsBKl8XOti/QhekhkSLyPzEPKwZ1ezBb0/img.png)
![](https://blog.kakaocdn.net/dn/bxQKR3/btsBQlAlVMr/eYkVGnhIiIswYdfCvlK5F0/img.png)
여기까지만 해도 되는데 링 모양으로 그릴라면 아래 2개가 필요함
![](https://blog.kakaocdn.net/dn/FfLm8/btsBKkhWp3t/YHGB3ulQ8hsFiwKe70uR31/img.png)
![](https://blog.kakaocdn.net/dn/bZvNmn/btsBQUib2qX/qpsJ8JYxXHhPUQRS7H1hy0/img.png)
빈 오브젝트를 생성하고 (SnapInteractable)
![](https://blog.kakaocdn.net/dn/bJtvob/btsBQUW2zv1/mmgg5WFkfbBrRPHGJWnvK1/img.png)
Snap Interactable과
Move Toward Target Provider 컴포넌트를 붙여 준다
![](https://blog.kakaocdn.net/dn/nYmFq/btsBRS5IKkU/g9vIpPVdLY2Q9G7clhZcnK/img.png)
영역에 해당하는 큰 박스 콜러이더를 가진 게임 오브젝트를 하나 만들고
![](https://blog.kakaocdn.net/dn/cZSYd2/btsBKkbaQw0/WMH3wgHHw9lgmkk0IoVEj1/img.png)
![](https://blog.kakaocdn.net/dn/cFAayt/btsBT90cm95/EpLRGsZRguh72zjdpEjc8K/img.png)
Snap Interactable 컴포넌트의 Rigidbody프로퍼티에 넣어준다
![](https://blog.kakaocdn.net/dn/Yx2Ar/btsBQWHiMbF/89pw05LPAKGz6N0NTHnnR0/img.png)
Options를 열어서 Movement Provider에 Move Towards Target Provider컴포넌트를 넣어준다
![](https://blog.kakaocdn.net/dn/dlHk2y/btsBT90ctpg/FkZdXwYDC1k5csxgozvb81/img.png)
테스트
잘 동작은 하나 위치가 원의 중앙에 안붙음
예제와 비교 해보기
원본에 Snap Interactable 게임 오브젝트의 Rotation X가 왜 90이징
![](https://blog.kakaocdn.net/dn/Oo37x/btsBR90uDCl/9J8uHDNBwK5FMy0K64sbM0/img.png)
나도 바꿔본다
![](https://blog.kakaocdn.net/dn/ciIPMN/btsBQVVZ29L/dka2IkUs5osChfQeDOdSm1/img.png)
![](https://blog.kakaocdn.net/dn/bdkaFH/btsBGUKBQMs/c7jkbJKgxBeYWvcmjIIT20/img.png)
![](https://blog.kakaocdn.net/dn/uOIBY/btsBQk2zoGJ/oWwHwDFDWF2Ktk1QrptJBK/img.png)
잘동작 한다
또 문제
예제에서는 링에 하나만 들어감
나는 여러개 들어가짐
어떻게 한개만 들어가게 막고 있는가?
예제
![](https://blog.kakaocdn.net/dn/ByHpN/btsBQUW3wxV/4Pr84kAheYLNk6xfxaGjtk/img.png)
내꺼
![](https://blog.kakaocdn.net/dn/GUiGn/btsBMRGjw5N/SW1Ka0HFhVVoX5ZRPUCw0K/img.png)
설정해본다
![](https://blog.kakaocdn.net/dn/cI37tD/btsBQWN6H1W/X5Unz1EG6dDKyeyIggNgK0/img.png)
잘동작함
요녀석이였음
![](https://blog.kakaocdn.net/dn/4JXYi/btsBJehyTxA/VsXkFF0aYrOSGKUevmpLak/img.png)
끗
참고
https://developer.oculus.com/documentation/unity/unity-isdk-create-snap-interactions/
'VR > Oculus Integration' 카테고리의 다른 글
FingerFeatureStateThresholds (0) | 2023.12.14 |
---|---|
Unity VR Build a Custom Hand Pose (Oculus Integration SDK) (0) | 2023.12.14 |
One/Two Grab Free Transformer (0) | 2023.12.11 |
Oculus Integration SDK (R&D 리스트) (0) | 2023.12.11 |
Use Active State (0) | 2023.12.11 |