my Java code for removing voxels:


Code:
private void removeInvisible()
	{

////here just make a temporary copy of the voxelarray for marking invisible voxels
		int[][][] vtest = new int[voxH][voxX][voxY];
		
		for (int z = 0; z < voxH; z++)
		{
			for (int x = 0; x < voxX; x++)
			{
				for (int y = 0; y < voxY; y++)
				{
					vtest[z][x][y] = voxels[z][x][y];
				}
			}
		}

		// mark voxels wich can not be seen
		for (int z = 1; z < voxH - 1; z++)
		{
			for (int x = 1; x < voxX - 1; x++)
			{
				for (int y = 1; y < voxY - 1; y++)
				{
					vtest[z][x][y] = voxels[z][x][y];
					if (vtest[z][x][y] > 0
							&& (vtest[z][x + 1][y] > 0 && vtest[z][x - 1][y] > 0 && vtest[z][x][y + 1] > 0 && vtest[z][x][y - 1] > 0 && vtest[z + 1][x][y] > 0 && vtest[z - 1][x][y] > 0))

					{
						voxels[z][x][y] = 0;  //this voxel is invisible, as all neighbors are solid
					}

				}
			}
		}
	}