示例#1
0
    private void UpdateARObjectTransform_2(Mat rvec, Mat tvec)
    {
        // Convert to unity pose data.
        double[] rvecArr = new double[3];
        rvec.get(0, 0, rvecArr);
        double[] tvecArr = new double[3];
        tvec.get(0, 0, tvecArr);
        PoseData poseData = ARUtils.ConvertRvecTvecToPoseData(rvecArr, tvecArr);

        // Changes in pos/rot below these thresholds are ignored.
        if (enableLowPassFilter)
        {
            ARUtils.LowpassPoseData(ref oldPoseData, ref poseData, positionLowPass, rotationLowPass);
        }
        oldPoseData = poseData;

        // Convert to transform matrix.
        ARM = ARUtils.ConvertPoseDataToMatrix(ref poseData, true, true);

        //if (shouldMoveARCamera) {

        //  ARM = arGameObject.transform.localToWorldMatrix * ARM.inverse;

        //  ARUtils.SetTransformFromMatrix(arCamera.transform, ref ARM);

        //} else {

        ARM = arCamera.transform.localToWorldMatrix * ARM;

        ARUtils.SetTransformFromMatrix(arGameObject.transform, ref ARM);
        //}
    }
示例#2
0
    private void UpdateARObjectTransform(Mat rvec, Mat tvec, int id)
    {
        // Find the object of this id
        if (idDict.ContainsKey(id))
        {
            arGameObject = GameObject.Find(idDict[id]);
        }
        // Convert to unity pose data.
        double[] rvecArr = new double[3];
        rvec.get(0, 0, rvecArr);
        double[] tvecArr = new double[3];
        tvec.get(0, 0, tvecArr);
        PoseData poseData = ARUtils.ConvertRvecTvecToPoseData(rvecArr, tvecArr);


        // Changes in pos/rot below these thresholds are ignored.
        if (enableLowPassFilter)
        {
            ARUtils.LowpassPoseData(ref oldPoseData, ref poseData, positionLowPass, rotationLowPass);
        }
        oldPoseData = poseData;

        // Convert to transform matrix.
        ARM = ARUtils.ConvertPoseDataToMatrix(ref poseData, true, true);


        ARM = arCamera.transform.localToWorldMatrix * ARM;
        ARUtils.SetTransformFromMatrix(arGameObject.transform, ref ARM);


        //Only move and do not rotate
        Vector3 rawRotation = arGameObject.transform.rotation.eulerAngles;

        arGameObject.transform.rotation = Quaternion.Euler(new Vector3(0, adjustRotation(rawRotation[1]), 0));
    }