Isosurface.DualMarchingSquares.QuadtreeNode.ProcessFace C# (CSharp) Method

ProcessFace() public static method

public static ProcessFace ( QuadtreeNode q1, List indices, List cells ) : void
q1 QuadtreeNode
indices List
cells List
return void
        public static void ProcessFace(QuadtreeNode q1, List<int> indices, List<Cell> cells)
        {
            if (q1 == null || q1.leaf)
                return;

            for (int i = 0; i < 4; i++)
            {
                ProcessFace(q1.children[i], indices, cells);
            }

            for (int i = 0; i < 4; i++)
            {
                QuadtreeNode c1 = q1.children[edges[i, 0]];
                QuadtreeNode c2 = q1.children[edges[i, 1]];

                ProcessEdge(c1, c2, i / 2, indices, cells);
            }

            ProcessVertices(q1.children[0], q1.children[1], q1.children[2], q1.children[3], indices, cells);
        }

Usage Example

コード例 #1
0
        public void CalculateIndexes()
        {
            List <int> indexes = new List <int>();

            Cells.Clear();
            QuadtreeNode.ProcessFace(Tree, indexes, Cells);
            IndexCount = indexes.Count;
            if (indexes.Count != 0)
            {
                IndexBuffer.SetData <int>(indexes.ToArray());
            }

            Vertices.Clear();
            foreach (Cell c in Cells)
            {
                c.Polygonize(Vertices, Size);
            }

            VertexCount = Vertices.Count;
            if (VertexCount > 0)
            {
                VertexBuffer.SetData <VertexPositionColorNormal>(Vertices.ToArray());
            }
        }