OculusQeust의 핸드 추적을 따기를 시도했습니다.
                                            
                                                
                                                
                                                
                                                
                                                
                                                 9467 단어  OculusQuesthandtrackingVRUnity
                    
소감
시도한 것
 손가락으로 따기
뽑은 상태를 얻을 수 있었을 때에는 손의 색이 바뀌는 프로그램을 만들어 보았습니다.
 
 한 손가락
두 손가락
손가락과 엄지의 거리
각 손가락과 엄지 사이에 0.0~1.0(0.0이 붙은 값)의 값으로 어느 곳에서 완전히 붙는 곳까지 얻을 수 있습니다. 이 값을 바탕으로 큐브의 크기를 변경 (완전히 달라 붙으면 사라짐) 해 보았습니다.

샘플 코드
using UnityEngine;
public class Detection : MonoBehaviour
{
    [SerializeField] private OVRHand ovrHand;
    [SerializeField] private SkinnedMeshRenderer handRenderer;
    [SerializeField] private Material on;
    [SerializeField] private Material off;
    [SerializeField] private Transform cube;
    private bool _isIndexPinching;
    private bool _isMiddlePinching;
    private bool _isRingPinching;
    private bool _isPinkyPinching;
    private int _pinchingFingerNumber;
    void Update()
    {
        _isIndexPinching = ovrHand.GetFingerIsPinching(OVRHand.HandFinger.Index);
        _isMiddlePinching = ovrHand.GetFingerIsPinching(OVRHand.HandFinger.Middle);
        _isRingPinching = ovrHand.GetFingerIsPinching(OVRHand.HandFinger.Ring);
        _isPinkyPinching = ovrHand.GetFingerIsPinching(OVRHand.HandFinger.Pinky);
        _pinchingFingerNumber = 0;
        if (_isIndexPinching) _pinchingFingerNumber++;
        if (_isMiddlePinching) _pinchingFingerNumber++;
        if (_isRingPinching) _pinchingFingerNumber++;
        if (_isPinkyPinching) _pinchingFingerNumber++;
        // 一本指でピンチしているときだけ on にする
        handRenderer.materials = _pinchingFingerNumber == 1 ? new[] {on} : new[] {off};
        // 人差し指のピンチングの強さに応じて cube の scale を変更する
        var strength = ovrHand.GetFingerPinchStrength(OVRHand.HandFinger.Index);
        var scale = 0.075f * (1 - strength);
        cube.localScale = new Vector3(scale, scale, scale);
    }
}
 보충
public enum HandStatus
{
    HandTracked = (1 << 0), // if this is set the hand pose and bone rotations data is usable
    InputStateValid = (1 << 1), // if this is set the pointer pose and pinch data is usable
    SystemGestureInProgress = (1 << 6), // if this is set the hand is currently processing a system gesture
}
OVRPlugin 안을 보면 HandStatus 의 SystemGestureInProgress 의 값이 돌로 설정되어 있습니다. 이 사이에 뭔가 들어오는 것이 아닐까 생각됩니다. 또 BoneId 에 있는 코멘트도,
        // add new bones here
그리고 아직 아직 앞으로 다양한 확장이 들어올 것 같다고 느꼈습니다.
 참고
 OculusQuest의 핸드 트래킹에 대해 여러 가지를 살펴 보았습니다.
                
                    
        
    
    
    
    
    
                
                
                
                
                    
                        
                            
                            
                            Reference
                            
                            이 문제에 관하여(OculusQeust의 핸드 추적을 따기를 시도했습니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
                                
                                https://qiita.com/matchyy/items/c7e0b5ddeff04b3a1275
                            
                            
                            
                                텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
                            
                            
                                
                                
                                 우수한 개발자 콘텐츠 발견에 전념
                                (Collection and Share based on the CC Protocol.)
                                
                                
                                우수한 개발자 콘텐츠 발견에 전념
                                (Collection and Share based on the CC Protocol.)
                            
                            
                        
                    
                
                
                
            
using UnityEngine;
public class Detection : MonoBehaviour
{
    [SerializeField] private OVRHand ovrHand;
    [SerializeField] private SkinnedMeshRenderer handRenderer;
    [SerializeField] private Material on;
    [SerializeField] private Material off;
    [SerializeField] private Transform cube;
    private bool _isIndexPinching;
    private bool _isMiddlePinching;
    private bool _isRingPinching;
    private bool _isPinkyPinching;
    private int _pinchingFingerNumber;
    void Update()
    {
        _isIndexPinching = ovrHand.GetFingerIsPinching(OVRHand.HandFinger.Index);
        _isMiddlePinching = ovrHand.GetFingerIsPinching(OVRHand.HandFinger.Middle);
        _isRingPinching = ovrHand.GetFingerIsPinching(OVRHand.HandFinger.Ring);
        _isPinkyPinching = ovrHand.GetFingerIsPinching(OVRHand.HandFinger.Pinky);
        _pinchingFingerNumber = 0;
        if (_isIndexPinching) _pinchingFingerNumber++;
        if (_isMiddlePinching) _pinchingFingerNumber++;
        if (_isRingPinching) _pinchingFingerNumber++;
        if (_isPinkyPinching) _pinchingFingerNumber++;
        // 一本指でピンチしているときだけ on にする
        handRenderer.materials = _pinchingFingerNumber == 1 ? new[] {on} : new[] {off};
        // 人差し指のピンチングの強さに応じて cube の scale を変更する
        var strength = ovrHand.GetFingerPinchStrength(OVRHand.HandFinger.Index);
        var scale = 0.075f * (1 - strength);
        cube.localScale = new Vector3(scale, scale, scale);
    }
}
public enum HandStatus
{
    HandTracked = (1 << 0), // if this is set the hand pose and bone rotations data is usable
    InputStateValid = (1 << 1), // if this is set the pointer pose and pinch data is usable
    SystemGestureInProgress = (1 << 6), // if this is set the hand is currently processing a system gesture
}
OVRPlugin 안을 보면
HandStatus 의 SystemGestureInProgress 의 값이 돌로 설정되어 있습니다. 이 사이에 뭔가 들어오는 것이 아닐까 생각됩니다. 또 BoneId 에 있는 코멘트도,        // add new bones here
그리고 아직 아직 앞으로 다양한 확장이 들어올 것 같다고 느꼈습니다.
참고
 OculusQuest의 핸드 트래킹에 대해 여러 가지를 살펴 보았습니다.
                
                    
        
    
    
    
    
    
                
                
                
                
                    
                        
                            
                            
                            Reference
                            
                            이 문제에 관하여(OculusQeust의 핸드 추적을 따기를 시도했습니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
                                
                                https://qiita.com/matchyy/items/c7e0b5ddeff04b3a1275
                            
                            
                            
                                텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
                            
                            
                                
                                
                                 우수한 개발자 콘텐츠 발견에 전념
                                (Collection and Share based on the CC Protocol.)
                                
                                
                                우수한 개발자 콘텐츠 발견에 전념
                                (Collection and Share based on the CC Protocol.)
                            
                            
                        
                    
                
                
                
            
Reference
이 문제에 관하여(OculusQeust의 핸드 추적을 따기를 시도했습니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/matchyy/items/c7e0b5ddeff04b3a1275텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
                                
                                
                                
                                
                                
                                우수한 개발자 콘텐츠 발견에 전념
                                (Collection and Share based on the CC Protocol.)