public static GameObject UpdatePlaneWithAnchorTransform(GameObject plane, ARPlaneAnchor arPlaneAnchor)
        {
            //do coordinate conversion from ARKit to Unity
            plane.transform.position = UnityARMatrixOps.GetPosition(arPlaneAnchor.transform);
            plane.transform.rotation = UnityARMatrixOps.GetRotation(arPlaneAnchor.transform);

            ARKitPlaneMeshRender apmr = plane.GetComponent <ARKitPlaneMeshRender> ();

            if (apmr != null)
            {
                apmr.UpdateMesh(arPlaneAnchor);
            }


            MeshFilter mf = plane.GetComponentInChildren <MeshFilter> ();

            if (mf != null)
            {
                if (apmr == null)
                {
                    //since our plane mesh is actually 10mx10m in the world, we scale it here by 0.1f
                    //mf.gameObject.transform.localScale = new Vector3 (arPlaneAnchor.extent.x * 0.1f, arPlaneAnchor.extent.y * 0.1f, arPlaneAnchor.extent.z * 0.1f);

                    //convert our center position to unity coords
                    mf.gameObject.transform.localPosition = new Vector3(arPlaneAnchor.center.x, arPlaneAnchor.center.y, -arPlaneAnchor.center.z);
                }
            }

            return(plane);
        }
Esempio n. 2
0
        public static GameObject CreatePlaneInScene(ARPlaneAnchor arPlaneAnchor)
        {
            GameObject plane;

            if (planePrefab != null)
            {
                plane = GameObject.Instantiate(planePrefab);
            }
            else
            {
                //return null;
                plane = new GameObject(); //put in a blank gameObject to get at least a transform to manipulate
            }

            plane.name = arPlaneAnchor.identifier;

            ARKitPlaneMeshRender apmr = plane.GetComponent <ARKitPlaneMeshRender>();

            if (apmr != null)
            {
                apmr.InitiliazeMesh(arPlaneAnchor);
            }

            return(UpdatePlaneWithAnchorTransform(plane, arPlaneAnchor));
        }