void loadPixelData(boolean iHaveContourVertexesAlready) {
		pixelData = new float[pixelCounts[0]][pixelCounts[1]];
		int x, y;
		Logger.info("loadPixelData haveContourVertices? " + iHaveContourVertexesAlready);
		contourPlaneMinimumValue = Float.MAX_VALUE;
		contourPlaneMaximumValue = -Float.MAX_VALUE;
		for (int i = 0; i < contourVertexCount; i++) {
			ContourVertex c = contourVertexes[i];
			Point3i pt = locatePixel(c.vertexXYZ);
			c.setPixelLocation(pt);
			float value;
			if (iHaveContourVertexesAlready) {
				value = c.value;
			}
			else {
				value = lookupInterpolatedVoxelValue(c.vertexXYZ);
				c.setValue(value);
			}
			if (value < contourPlaneMinimumValue)
				contourPlaneMinimumValue = value;
			if (value > contourPlaneMaximumValue)
				contourPlaneMaximumValue = value;
			if (logMessages)
				Logger.info("loadPixelData " + c.vertexXYZ + value + pt);
			if ((x = pt.x) >= 0 && x < pixelCounts[0] && (y = pt.y) >= 0 && y < pixelCounts[1]) {
				pixelData[x][y] = value;
				if (x != squareCountX && y != squareCountY)
					planarSquares[x * squareCountY + y].setVertex(0, c.vertexIndex);
				if (x != 0 && y != squareCountY)
					planarSquares[(x - 1) * squareCountY + y].setVertex(1, c.vertexIndex);
				if (y != 0 && x != squareCountX)
					planarSquares[x * squareCountY + y - 1].setVertex(3, c.vertexIndex);
				if (y != 0 && x != 0)
					planarSquares[(x - 1) * squareCountY + y - 1].setVertex(2, c.vertexIndex);
			}
			else {
				Logger.error("loadPixelData out of bounds: " + pt.x + " " + pt.y + "?");
			}
		}
	}