2017-11-08 7 views
0

私は、飛躍モーションインタラクションエンジンを使用してオブジェクトを3次元で動かすことを含むアプリケーションを作成しようとしています。しかし、私はまた、どの指が物体と接触しているのかを知る必要があります。とにかく私はそれをすることができますか?前もって感謝します!!とにかく、インタラクションエンジン(Leap Motion&Unity3D)でオブジェクトの一部に触れている部分を検出することができます。

+0

私は推測しますこれらの名前を直接得ることができない場合は、空のgameObjectに指先や手の子としてのコライダーを追加し、 'OnTriggerEnter'を使用してあなたの指や手の名前を取得する – Thalthanas

+0

返信ありがとう、しかし、インタラクションエンジンは剛性の手の代わりにブラシの手が必要と私はブラシの手で指を見つけることができませんでした。私が間違っているなら、私を修正してください。ありがとう! –

+0

私はうるう動作をしてからしばらくしています。私が思い出したのは、私は磁気ピンチを使ってオブジェクトをつかんでいます。また、私は手のひらの中にある物を、川の水を手に取って、手の後ろに当てるように握ることができました。 Unityのデモシーンはありますか? 「たくさんの立方体」のようなシーンの例は、私が推測するシーンの名前だったはずです。その場面で使用された手を確認してください。彼らはあなたにリードを与えるかもしれません。私はインタラクションエンジンを使用しているかどうかはわかりません。申し訳ありません。 – Thalthanas

答えて

1

厳密に言えば、インタラクションエンジンの把握ロジックは把握を開始したり解放したりするために非常に重要なことですが、この情報にアクセスするためのフレンドリーなAPIはありません。

最も効率的な方法ではないが、これを表現するより便利な方法は、手がインタラクションオブジェクトと交差しているときを検出し、各指先とオブジェクトの間の距離をチェックすることです。

InteractionBehaviourと交差するすべてのInteractionControllerは、contactingControllersプロパティを使用してアクセスできます。 Unity向けリープツールに含まQueryライブラリを使用して、あなたはあまりにも多くの努力なしにリープ手の束に相互作用コントローラの参照の束を変換することができ、その後、チェックを実行:あなたはからチェックしたときに、

using Leap.Unity; 
using Leap.Unity.Interaction; 
using Leap.Unity.Query; 
using UnityEngine; 

public class QueryFingertips : MonoBehaviour { 

    public InteractionBehaviour intObj; 

    private Collider[] _collidersBuffer = new Collider[16]; 
    private float _fingertipRadius = 0.01f; // 1 cm 

    void FixedUpdate() { 
    foreach (var contactingHand in intObj.contactingControllers 
             .Query() 
             .Select(controller => controller.intHand) 
             .Where(intHand => intHand != null) 
             .Select(intHand => intHand.leapHand)) { 

     foreach (var finger in contactingHand.Fingers) { 
     var fingertipPosition = finger.TipPosition.ToVector3(); 

     // If the distance from the fingertip and the object is less 
     // than the 'fingertip radius', the fingertip is touching the object. 
     if (intObj.GetHoverDistance(fingertipPosition) < _fingertipRadius) { 
      Debug.Log("Found collision for fingertip: " + finger.Type); 
     } 
     } 
    } 
    } 

} 
関連する問題