Пример #1
0
 private void button3_Click(object sender, EventArgs e)
 {
     _triangleSearcher.Search(_layers.GetLayer(ind));
     _triangleTable           = _triangleSearcher.GetTriangleTable();
     dataGridView2.DataSource = _triangleTable.GetTriangles();
     checkBox1.Enabled        = true;
 }
Пример #2
0
    public MeshData MarchCubes(int[,,] noiseGrid)
    {
        int gridX = noiseGrid.GetLength(0);
        int gridY = noiseGrid.GetLength(1);
        int gridZ = noiseGrid.GetLength(2);

        MeshData meshData = new MeshData(gridX, gridY, gridZ);

        for (int x = 0; x < gridX - 1; x++)
        {
            for (int y = 0; y < gridY - 1; y++)
            {
                for (int z = 0; z < gridZ - 1; z++)
                {
                    int   cubeIndex  = 0;
                    int[] vertValues =
                    {
                        noiseGrid[x,     y,     z],
                        noiseGrid[x,     y,     z + 1],
                        noiseGrid[x + 1, y,     z + 1],
                        noiseGrid[x + 1, y,     z],
                        noiseGrid[x,     y + 1, z],
                        noiseGrid[x,     y + 1, z + 1],
                        noiseGrid[x + 1, y + 1, z + 1],
                        noiseGrid[x + 1, y + 1, z],
                    };

                    for (int i = 0; i < 8; i++)
                    {
                        if (vertValues[i] == 1)
                        {
                            cubeIndex |= 1 << i;
                        }
                    }

                    int[] triangulation = TriangleTable.triTable[cubeIndex];
                    //Debug.Log(string.Join(",", triangulation));
                    for (int i = 0; i < 12; i += 3)
                    {
                        if (triangulation[i] != -1)
                        {
                            Vector3 offset = new Vector3(x - gridX / 2, y - gridY / 2, z - gridZ / 2);

                            Vector3 vertex1 = TriangleTable.midPointFromIndex(triangulation[i]);
                            Vector3 vertex2 = TriangleTable.midPointFromIndex(triangulation[i + 1]);
                            Vector3 vertex3 = TriangleTable.midPointFromIndex(triangulation[i + 2]);

                            vertex1 += offset;
                            vertex2 += offset;
                            vertex3 += offset;

                            meshData.AddVertices(vertex1, vertex2, vertex3);
                            meshData.AddTriangle();
                        }
                    }
                }
            }
        }
        return(meshData);
    }
Пример #3
0
        public Points3dMain(List <Node> nodes, LayersList layersList, TriangleTable triangleTable)
        {
            InitializeComponent();

            RotateSetup();

            Init(nodes, layersList);

            _triangleTable  = triangleTable;
            button2.Enabled = true;
        }
Пример #4
0
    private static void InitializeNativeTriangleTable()
    {
        NativeTriangleTable = new NativeArray <int>(TriangleTable.Length, Allocator.Persistent);
        int rows = TriangleTable.GetLength(0);
        int cols = TriangleTable.GetLength(1);

        for (int row = 0; row < rows; row++)
        {
            for (int col = 0; col < cols; col++)
            {
                NativeTriangleTable[row * cols + col] = TriangleTable[row, col];
            }
        }
    }
Пример #5
0
 public TriangleSearcher()
 {
     triangleTable = new TriangleTable();
 }
Пример #6
0
        public TriangleView(TriangleTable triangleTable)
        {
            InitializeComponent();

            dataGridView1.DataSource = triangleTable.GetTriangles();
        }