private void HideSpatialMappingMeshes() { var meshFilters = m_spatialMappingManager.GetMeshFilters(); foreach (MeshFilter meshFilter in meshFilters) { meshFilter.gameObject.SetActive(false); } }
/// <summary> /// Scan the room and return the scaned room as a RoomMesh (serialized as a byte array) /// This method can ONLY be used by HoloLens /// </summary> /// <returns>Serialized Room Mesh</returns> public byte[] LoadMesh() { SpatialMappingManager mappingManager = GetComponent <SpatialMappingManager>(); List <MeshFilter> meshFilters = mappingManager.GetMeshFilters(); List <Mesh> meshes = new List <Mesh>(); foreach (var meshFilter in meshFilters) { Mesh mesh = meshFilter.sharedMesh; Mesh clone = new Mesh(); List <Vector3> verts = new List <Vector3>(); verts.AddRange(mesh.vertices); for (int i = 0; i < verts.Count; i++) { verts[i] = meshFilter.transform.TransformPoint(verts[i]); } clone.SetVertices(verts); clone.SetTriangles(mesh.triangles, 0); meshes.Add(clone); } return(SimpleMeshSerializer.Serialize(meshes)); }
public static void LoadMesh() { // Master client will load mesh from disk if (Type == DeviceType.MasterClient) { _mesh = SimpleMeshSerializer.Serialize(MeshSaver.Load("RoomMesh")); } // HoloLens will scan the room and creates mesh else if (Type == DeviceType.HoloLens) { // The following code is copying from UWB-ARSandbox/Assets/Scripts/netWorkManager.cs:sendMeshToUnity() List <MeshFilter> meshFilters = MappingManager.GetMeshFilters(); List <Mesh> meshes = new List <Mesh>(); foreach (var meshFilter in meshFilters) { Mesh mesh = meshFilter.sharedMesh; Mesh clone = new Mesh(); List <Vector3> verts = new List <Vector3>(); verts.AddRange(mesh.vertices); for (int i = 0; i < verts.Count; i++) { verts[i] = meshFilter.transform.TransformPoint(verts[i]); } clone.SetVertices(verts); clone.SetTriangles(mesh.triangles, 0); meshes.Add(clone); } _mesh = SimpleMeshSerializer.Serialize(meshes); } }
public void Collect() { vertices.Clear(); normals.Clear(); List <MeshFilter> meshes = manager.GetMeshFilters(); foreach (MeshFilter meshFilter in meshes) { var mesh = meshFilter.sharedMesh; var transform = meshFilter.transform; mesh.RecalculateNormals(); foreach (Vector3 vertex in mesh.vertices) { vertices.Add(transform.TransformPoint(vertex)); } foreach (Vector3 normal in mesh.normals) { normals.Add(transform.TransformDirection(normal).normalized); } } //Traverse(spatialMappingParent); string toLog = string.Empty; if (OnVerticesCollected != null) { OnVerticesCollected.Invoke(string.Format("Number of vertices: {0}\nNumber of normals: {1}", vertices.Count, normals.Count)); } }
public void TryPublishing(TimeSpan currentTime, double elapsedTimeInSeconds) { if (elapsedTimeInSeconds >= nextPublishTime) { // make meshes ready to be combined by the thread List <MeshFilter> meshFilters = spatialMappingManager.GetMeshFilters(); if (meshFilters != null && meshFilters.Count != 0) { nextPublishTime = nextPublishTime + publishPeriod; List <Matrix4x4> transforms = new List <Matrix4x4>(); List <Vector3[]> vertices = new List <Vector3[]>(); for (int i = 0; i < meshFilters.Count; i++) { vertices.Add(meshFilters[i].sharedMesh.vertices); transforms.Add(meshFilters[i].transform.localToWorldMatrix); } #if NETFX_CORE ThreadPool.RunAsync((PointCloudSendWork) => { SendPointCloud(currentTime.Add(Timer.GetOffsetUTC()), transforms, vertices); }); #endif } else { System.Diagnostics.Debug.WriteLine("COULD NOT FIND ANY MESH"); } } }
private void HideSpatialMesh() { if (m_spatialMappingManager.IsObserverRunning()) { m_spatialMappingManager.StopObserver(); } var meshFilters = m_spatialMappingManager.GetMeshFilters(); foreach (MeshFilter meshFilter in meshFilters) { meshFilter.gameObject.SetActive(false); } }
private void OnPlanesComplete(object source, System.EventArgs args) { SpatialMappingManager mapper = SpatialMappingManager.Instance; if (!visualizeSpatialMeshes) { mapper.SetSurfaceMaterial(spatialMeshOcclusionMaterial); } SurfacePlaneDeformationManager.Instance.SetSpatialMeshFilters(mapper.GetMeshFilters()); if (visualizeSurfacePlanes) { SetPlanesVisible(true); } }