私のプロジェクトでは、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();
}
}
}
私は '_pxcmHandModule'を使って' null'かどうかを確認していますが、これは問題である可能性があります。今は 'QueryHand()'と 'CreateOutput( ) '' Init() 'の前にも疑わしいようです。 –
_pxcmSenseManager.Init();これは行51 – HPV121