Exemplo n.º 1
0
 public OctreeSurfaceGenerator(BitMap3d image)
 {
     this.bmp  = image;
     nodequeue = new Queue <OctreeNode <NodeParms> >();
     tempArray = new Int16Triple[8];
     tree      = new RegionOctree <NodeParms>(bmp.width, bmp.height, bmp.depth);
     mb        = new MeshBuilder_IntegerVertex(bmp.width, bmp.height, bmp.depth);
 }
Exemplo n.º 2
0
        }//get copnfig

        private void ExtractTriangles(ref Cube cube, byte value, MeshBuilder_IntegerVertex builder)
        {
            if (SMCTable.TableFat[value, 0] != -1)
            {
                int index = 0;
                while (SMCTable.TableFat[value, index] != -1)
                {
                    Int16Triple t0 = cube.cubeImageIndices[SMCTable.TableFat[value, index]];
                    Int16Triple t1 = cube.cubeImageIndices[SMCTable.TableFat[value, index + 1]];
                    Int16Triple t2 = cube.cubeImageIndices[SMCTable.TableFat[value, index + 2]];
                    builder.AddTriangle(t0, t1, t2);
                    //builder.AddTriangle(new Point3d(t0.X,t0.Y,t0.Z), new Point3d(t1.X,t1.Y,t1.Z), new Point3d(t2.X,t2.Y,t2.Z ));
                    index += 3;
                }
            }
        }//extract triangles and put them into meshbuilder
Exemplo n.º 3
0
        }//extract triangles and put them into meshbuilder

        public Mesh GenerateSurface()
        {
            MeshBuilder_IntegerVertex builder = new MeshBuilder_IntegerVertex(bmp.width + 2, bmp.height + 2, bmp.depth + 2);// this class can build mesh from independent triangles

            for (int k = 0; k < bmp.depth - 1; k++)
            {
                for (int j = 0; j < bmp.height - 1; j++)
                {
                    for (int i = 0; i < bmp.width - 1; i++)
                    {
                        Cube cell   = new Cube(i, j, k);             //builde Cube for Cell at i j k
                        byte config = GetConfig(ref cell);           // get byte config for the cell
                        ExtractTriangles(ref cell, config, builder); // extract triangles from cell and push into
                    }
                }
            }
            return(builder.GetMesh());
        }