/// <summary> /// Render the ARmarkers store in the binay file /// </summary> /// <param name="ARDataByte">Downloaded serialized AR data </param> public void locateARmarkers(ARmarkersContainer ARData) { for (int i = 0; i < ARData.ARmarkerStored + 1; i++) { if (ARData.type[i] == 1) { GameObject alert = Instantiate <GameObject>(alertPrefab, new Vector3(0, 0, 2), Quaternion.identity); alert.transform.localScale = new Vector3(0.02f, 0.02f, 0.02f); alert.transform.parent = GameObject.Find("CloudDataManager").transform; alert.transform.localPosition = new Vector3(ARData.ARposX[i], ARData.ARposY[i], ARData.ARposZ[i]); alert.transform.localRotation = Quaternion.Euler(ARData.ARrotX[i], ARData.ARrotY[i], ARData.ARrotZ[i]); alert.name = "alert_" + alert.transform.localPosition.x + "_" + alert.transform.localPosition.y + "_" + alert.transform.localPosition.z; alert.tag = "alert"; Debug.Log("Place AR marker named: " + alert.name); } } Debug.Log("AR markers placed"); }
/// <summary> /// Render the map and all ARmarkers relative to the passed anchor /// </summary> /// <param name="ARDataByte"> AR data downloaded from the BLOB container </param> /// <param name="meshByte"> downloaded binary map mesh </param> /// <param name="anchor"> refernce anchor </param> public void LocateSubMap(byte[] ARDataByte, byte[] meshByte, GameObject anchor) { Debug.Log("Start joining map "); if (ARDataByte != null && meshByte != null) { LoadedMap = new GameObject("LoadedMap"); if (LoadedMap.GetComponent <MeshFilter>() == false) { LoadedMap.AddComponent <MeshFilter>(); Debug.Log("MeshFilter added"); } if (LoadedMap.GetComponent <MeshRenderer>() == false) { LoadedMap.AddComponent <MeshRenderer>(); Debug.Log("MeshRender added"); } material.SetColor("_Color", Color.red); LoadedMap.transform.GetComponent <MeshRenderer>().material = material; LoadedMap.transform.GetComponent <MeshFilter>().mesh = MeshSerializer.DeserializeMesh(meshByte); LoadedMap.transform.parent = anchor.transform; LoadedMap.transform.localPosition = Vector3.zero; LoadedMap.transform.localRotation = Quaternion.identity; ARmarkersContainer ARData = (ARmarkersContainer)ARmanager.ARDataBinaryDeserialize(ARDataByte); Debug.Log("ARData deserialized properly"); LoadedMap.transform.localPosition = ARData.GetMapPosition(); LoadedMap.transform.localRotation = ARData.GetMapOrientation(); Debug.Log("Start AR markers placing "); locateARmarkers(ARData); } else { Debug.LogError("Error joining submaps"); } }
//string url = "C:/Users/francesco testa/Desktop/tesi/mesh/map.bin"; private void Start() { ARmanager = new ARmarkersContainer(); ARData = new ARmarkersContainer(); }