示例#1
0
    // Update is called once per frame
    void Update()
    {
        if (!mARInit && LibPlacenote.Instance.Initialized())
        {
            Debug.Log("Ready To Start!");
            mARInit = true;

            return;
        }

        if (shouldRecordWaypoints)
        {
            Transform player = Camera.main.transform;
            //create waypoints if there are none around
            Collider[] hitColliders = Physics.OverlapSphere(player.position, 1f);
            int        i            = 0;
            while (i < hitColliders.Length)
            {
                if (hitColliders[i].CompareTag("waypoint"))
                {
                    return;
                }
                i++;
            }
            Vector3 pos = player.position;
            Debug.Log(player.position);
            pos.y = -.5f;
            shapeManager.AddShape(pos, Quaternion.Euler(Vector3.zero), false);
        }
    }
    // Update is called once per frame
    void Update()
    {
        if (!ARSessionReady)
        {
            return;
        }

        if (shouldRecordWaypoints)
        {
            Transform player = Camera.main.transform;
            //create waypoints if there are none around
            Collider[] hitColliders = Physics.OverlapSphere(player.position, 1f);
            int        i            = 0;
            while (i < hitColliders.Length)
            {
                if (hitColliders[i].CompareTag("waypoint"))
                {
                    return;
                }
                i++;
            }
            Vector3 pos = player.position;
            //Debug.Log(player.position);
            pos.y = -.5f;

            if (!hasSetStartingPoint)
            {
                //set start point
                hasSetStartingPoint = true;
                mShapeManager.AddShape(pos, Quaternion.Euler(Vector3.zero), true, false);
            }
            else
            {
                //set waypoints
                mShapeManager.AddShape(pos, Quaternion.Euler(Vector3.zero), false, false);
            }
        }
    }
示例#3
0
    // Update is called once per frame
    void Update()
    {
        if (mFrameUpdated)
        {
            mFrameUpdated = false;
            if (mImage == null)
            {
                InitARFrameBuffer();
            }

            if (mARCamera.trackingState == ARTrackingState.ARTrackingStateNotAvailable)
            {
                // ARKit pose is not yet initialized
                return;
            }
            else if (!mARKitInit && LibPlacenote.Instance.Initialized())
            {
                mARKitInit = true;
                Debug.Log("ARKit + placenote Initialized");
                StartSavingMap();
            }

            Matrix4x4 matrix = mSession.GetCameraPose();

            Vector3    arkitPosition = PNUtility.MatrixOps.GetPosition(matrix);
            Quaternion arkitQuat     = PNUtility.MatrixOps.GetRotation(matrix);

            LibPlacenote.Instance.SendARFrame(mImage, arkitPosition, arkitQuat, mARCamera.videoParams.screenOrientation);

            if (shouldRecordWaypoints)
            {
                Transform player = Camera.main.transform;
                //create waypoints if there are none around
                Collider[] hitColliders = Physics.OverlapSphere(player.position, 1f);
                int        i            = 0;
                while (i < hitColliders.Length)   // a loop to check if there's any waypoint around in the radius of 1 meter, if there is return, doing nothing
                {
                    if (hitColliders[i].CompareTag("waypoint"))
                    {
                        return;
                    }
                    i++;
                }
                Vector3 pos = player.position; //if there are no way point add shape
                Debug.Log(player.position);
                pos.y = -.5f;
                shapeManager.AddShape(pos, Quaternion.Euler(Vector3.zero), false);
            }
        }
    }