Esempio n. 1
0
    /// <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);
    }
Esempio n. 2
0
    /// <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);
    }