2016-10-18 25 views
0

私のプロジェクトでは、intel realsense sdkとEasyAR sdkを同時に使用してこのエラーが発生しています。私の考えは、3Dオブジェクトを補強し、インテリジェントなレアセンスカメラハンドジェスチャートラッキングを使用して移動させることです。助けてください。Intel Realsense SDKを使用したEasyAR sdk

とNullReferenceException:オブジェクトUnityEditor.DockArea.OnGUI(のインスタンスに設定されていないオブジェクト参照)(Cで:/buildslave/unity/build/Editor/Mono/GUI/DockArea.cs:272) PXCMSenseManager:PXCMSenseManager_Init(のIntPtr、のIntPtr)PXCMSenseManagerます。Init(ハンドラ)PXCMSenseManagerます。Init()EasyAR.RealityPlaneBehaviour:スタート()(資産/ EasyAR /スクリプト/ RealityPlaneBehaviour.csで:51)**

私は両方のSDKSが提供するサンプルコードを使用しています。それらを1つの プロジェクトに統合しました。私は3Dオブジェクトの拡張に成功しましたが、 ハンドジェスチャートラッキングで3Dオブジェクトを移動することはできません。

これは私が使用していたコードです:

using UnityEngine; 
using System.Collections; 

namespace EasyAR 
{ 
    public class RealityPlaneBehaviour : RealityPlaneBaseBehaviour 
    { 

     public GameObject Paddle1; 
     public GameObject Paddle2; 
     private PXCMSenseManager _pxcmSenseManager; 
     private PXCMHandModule _pxcmHandModule; 
     private PXCMHandData handData; 
     private pxcmStatus status; 

     // Use this for initialization 
     private void Start() 
     { 
      _pxcmSenseManager = PXCMSenseManager.CreateInstance(); 


      if (_pxcmSenseManager == null) 
      { 
       Debug.LogError("SenseManager Initialization Failed"); 
      } 
      else 
      { 
       //pxcmStatus pxcmResult = _pxcmSenseManager.EnableHand(); 
       pxcmStatus pxcmResult = _pxcmSenseManager.EnableHand(); 
       if (pxcmResult != pxcmStatus.PXCM_STATUS_NO_ERROR) 
       { 
        Debug.LogError("EnableHand: " + pxcmResult); 
       } 
       else 
       { 
        Debug.LogError("Reached Here:1 " + pxcmResult); 
        _pxcmHandModule = _pxcmSenseManager.QueryHand(); 
        Debug.LogError("Reached Here:1 " + _pxcmHandModule.ToString()); 
        handData = _pxcmHandModule.CreateOutput(); 
        Debug.LogError("Reached Here:1 " + handData.ToString()); 
        if(_pxcmHandModule == null) 
        { 
         Debug.LogError("PxcmHandModule is null during Setup"); 
         return; 
        } 
        _pxcmSenseManager.Init(); 

        PXCMHandConfiguration configuration = _pxcmHandModule.CreateActiveConfiguration(); 
        configuration.EnableAllGestures(); 
        configuration.ApplyChanges(); 
        configuration.Dispose(); 



       } 
      } 
     } 


     // Update is called once per frame 
     private void Update() 
     { 
      if (_pxcmSenseManager == null) 
      { 
       Debug.LogError("PxcmSenseManager is null"); 
       return; 
      } 

      _pxcmSenseManager.AcquireFrame(false, 0); 

      status = _pxcmSenseManager.AcquireFrame(true); 
      if (status != pxcmStatus.PXCM_STATUS_NO_ERROR) 
       return; 

      _pxcmHandModule = _pxcmSenseManager.QueryHand(); 
      if(_pxcmHandModule == null) 
      { 
       Debug.LogError("PxcmHandModule is null"); 
       return; 
      } 

      PXCMHandData handData = _pxcmHandModule.CreateOutput(); 
      handData.Update(); 

      MoveBall(handData, PXCMHandData.AccessOrderType.ACCESS_ORDER_LEFT_HANDS, Paddle1); 
      MoveBall(handData, PXCMHandData.AccessOrderType.ACCESS_ORDER_RIGHT_HANDS, Paddle2); 

      _pxcmSenseManager.ReleaseFrame(); 
     } 

     private void MoveBall(PXCMHandData handData, PXCMHandData.AccessOrderType accessOrderType, GameObject gameObject) 
     { 
      // Get first hand data (index 0), 
      PXCMHandData.IHand pxcmHandData; 


      if (handData.QueryHandData(accessOrderType, 0, out pxcmHandData) == pxcmStatus.PXCM_STATUS_NO_ERROR) 
      { 
       PXCMHandData.JointData jointData; 
       if (pxcmHandData.QueryTrackedJoint(PXCMHandData.JointType.JOINT_CENTER, out jointData) == 
        pxcmStatus.PXCM_STATUS_NO_ERROR) 
       { 
        gameObject.GetComponent<Rigidbody>().velocity = new Vector3(-9, jointData.positionWorld.y*100f, 0); 
       } 
      } 
     } 

     private void OnDisable() 
     { 
      _pxcmHandModule.Dispose(); 
      _pxcmSenseManager.Dispose(); 
     } 







    } 
} 
+0

私は '_pxcmHandModule'を使って' null'かどうかを確認していますが、これは問題である可能性があります。今は 'QueryHand()'と 'CreateOutput( ) '' Init() 'の前にも疑わしいようです。 –

+0

_pxcmSenseManager.Init();これは行51 – HPV121

答えて

0

Realsense SDKがインストールされている場合、それは保護されたディレクトリ(C:/Program Files)にインストールされているので、これは、読み取り/書き込みの問題であるあなたは、通常は権限がありませんに書き込む。

Realsense SDKを再インストールしますが、今度はインストールディレクトリをC:/RealsenseSDKに変更してください。権限の問題はなくなり、オブジェクト参照例外はもう発生しません。

+0

です。このエラーが発生しました:SenseManagerの初期化に失敗しました UnityEngine.Debug:LogError(オブジェクト) EasyAR.RealityPlaneBehaviour:Start()(Assets/EasyAR/Scripts/RealityPlaneBehaviour.cs:29) – HPV121

+0

これは解決策は 'NullReferenceException'エラーを解決することを意図していました。あなたが今現在取得している現在のエラーはまったく異なり、私はこれ以上の助けにならないかもしれません...別のUSBハブにカメラを接続してプラグを差し込んでみませんか? – Programmer

+0

help @ Programmerに感謝します。もう1つは解決しました。 – HPV121

関連する問題