Unity 2022.3.5f1 + Oculus Integration 56.0 (OVRControllerHands)

VR/Oculus Integration 2023. 9. 25. 13:45
반응형

컨트롤러를 사용해 손으로 조작 하고 싶을때 

 

새 scene을 만들고 MainCamera를 제거 한다 

 

 

 

OVRCameraRig 프리팹을 하이어라키에 드레그 한뒤 Tracking Origin Type을 Floor Level로 변경 한다 

 

 

Hand Tracking Support 부분과 Frequency, Version을 각각 Controller And Hands, HIGH, V2로변경 한다 

 

 

OVRHandPrefab을 찾아 LeftHandAnchor와 RightHandAnchor 각각 넣는다 

 

LeftOVRHand와 RightOVRHand를 선택해 OVRHand, OVRSkeleton을 제외한 모든 컴포넌트를 제거 한다 

 

 

RightOVRHand를 선택해 Hand Type을 Hand Right로 변경 한다 

 

 

OVRInteraction프리팹을 찾아 OVRCameraRig에 드레그 한다 

 

OVRControllerHands프리팹을 찾아 OVRInteraction자식으로 드레그 한다 

여기 까지 하고 빌드 하면 컨트롤러를 쥐면 손이 보일것이다 

 

 

 

 


Grab 오브젝트 설정하기 

 

큐브를 하나 만들고 적당한 위치로 설정 하고 크기를 조절 한다 

 

Rigidbody를 추가 하고 Use Gravity를 체크 해제 하고 Is Kinematic을 체크 한다 

 

Grabbable컴포넌트를 추가 한다 

 

HandGrabInteractable을 추가 한다 

 

여기 까지 하면 큐브를 컨트롤러를 사요해 잡을수 있다 

 


이벤트 수신 

 

큐브에 PointableUnityEventWrapper 컴포넌트를 부착 한다 

 

Pointable 필드에 Cube를 할당 한다 

다음과 같이 팝업이 뜨면 Grabbable을 선택 한다 

 

 

MyCube스크립트를 만들어 큐브에 부착 한다 

스크립트를 열어 다음과 같이 수정 하고 

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class MyCube : MonoBehaviour
{
    [SerializeField] private Material matGreen;
    [SerializeField] private Material matWhite;

    private MeshRenderer meshRenderer;
    
    void Start()
    {
        this.meshRenderer = this.GetComponent<MeshRenderer>();
    }

    public void Select()
    {
        this.meshRenderer.material = this.matGreen;
    }

    public void UnSelect()
    {
        this.meshRenderer.material = this.matWhite;
    }
}

 

메터리얼도 만들어 준다 

 

 

큐브의 메터리얼 필드에 넣어 주자 

 

When Select 와 When Unselect에 + 버튼을 눌러 필드를 만들고 Cube를넣어 준다 

No Function을 선택해 MyCube컴포넌트의 Select, UnSelect메서드를 선택 한다 

큐브를 집으면 색이 변하는것을 확인해보자 

 

 

반응형
: