/// <summary> /// ID's all of SpatialMappingObserver's store meshes as visible or not, updates class metadata. /// Renders mesh bounds if VisualizeBounds. /// </summary> public List <bool> UpdateVertices(Intersector.Frustum SensorView) { Density = observer.Density; // Adjust Sensor.FOV by specified factor... FOV = new Intersector.ViewVector(FOVFactor * SensorView.FOV.Phi, FOVFactor * SensorView.FOV.Phi); SensorView.FOV = FOV; // create fresh lists, metadata List <bool> visiblilty = new List <bool>(); List <Visualizer.Content> toRender = new List <Visualizer.Content>(); TotalMeshCount = 0; TotalTriangleCount = 0; TotalVertexCount = 0; MeshesInView = 0; TrianglesInView = 0; VerticesInView = 0; // add colors if necessary while (VB && BoundColors.Count < observer.SurfaceObjects.Count) { BoundColors.Add(Visualizer.RandomColor(BoundsColor1, BoundsColor2)); } // check meshes for visiblity for (int i = 0; i < observer.ExtraData.Count; i++) { SurfacePoints extras = observer.ExtraData[i]; bool isVisible = MeshInter.AnyInView(extras.IntersectPts, SensorView); visiblilty.Add(isVisible); if (isVisible) { // update metadata MeshesInView++; TrianglesInView += extras.TriangleCount; VerticesInView += extras.Wvertices.Count; // setup bounding box visualization if (VB) { toRender.AddRange(Visualizer.CreateMarkers(extras.IntersectPts, MarkerSize, BoundColors[i])); toRender.AddRange(Visualizer.CreateBoundingLines(extras.BoundsBox, LineSize, BoundColors[i])); } } // update metadata totals TotalMeshCount++; TotalTriangleCount += extras.TriangleCount; TotalVertexCount += extras.Wvertices.Count; } if (VB) { BoundsVis.Visualize(toRender); } return(visiblilty); }
/// <summary> /// ID's all of SpatialMappingObserver's store meshes as visible or not, updates class metadata. /// Renders mesh bounds if VisualizeBounds. /// </summary> public List <bool> UpdateVertices(Intersector.Frustum SensorView) { Density = observer.Density; // Adjust Sensor.FOV by specified factor... FOV = new Intersector.ViewVector(FOVFactor * SensorView.FOV.Phi, FOVFactor * SensorView.FOV.Phi); SensorView.FOV = FOV; // create fresh lists, metadata List <bool> visiblilty = new List <bool>(); TotalMeshCount = 0; TotalTriangleCount = 0; TotalVertexCount = 0; MeshesInView = 0; TrianglesInView = 0; VerticesInView = 0; // check meshes for visiblity for (int i = 0; i < observer.ExtraData.Count; i++) { SurfacePoints extras = observer.ExtraData[i]; bool isVisible = MeshInter.AnyInView(extras.IntersectPts, SensorView); visiblilty.Add(isVisible); if (isVisible) { // update metadata MeshesInView++; TrianglesInView += extras.TriangleCount; VerticesInView += extras.Wvertices.Count; } // update metadata totals TotalMeshCount++; TotalTriangleCount += extras.TriangleCount; TotalVertexCount += extras.Wvertices.Count; } return(visiblilty); }