Merge pull request #38 from Hexx2bin/master

.ply format fixed
This commit is contained in:
Marek
2020-08-23 11:55:07 +01:00
committed by GitHub
+33 -4
View File
@@ -165,6 +165,7 @@ namespace KinectServer
public static void saveToPly(string filename, List<Single> vertices, List<byte> colors, bool binary)
{
int nVertices = vertices.Count / 3;
int faces = nVertices / 3;
FileStream fileStream = File.Open(filename, FileMode.Create);
@@ -172,12 +173,29 @@ namespace KinectServer
System.IO.BinaryWriter binaryWriter = new System.IO.BinaryWriter(fileStream);
//PLY file header is written here.
streamWriter.WriteLine("ply");
if (binary)
streamWriter.WriteLine("ply\nformat binary_little_endian 1.0");
{
streamWriter.WriteLine("format binary_little_endian 1.0");
}
else
streamWriter.WriteLine("ply\nformat ascii 1.0\n");
streamWriter.Write("element vertex " + nVertices.ToString() + "\n");
streamWriter.Write("property float x\nproperty float y\nproperty float z\nproperty uchar red\nproperty uchar green\nproperty uchar blue\nend_header\n");
{
streamWriter.WriteLine("format ascii 1.0");
}
streamWriter.WriteLine("element vertex " + nVertices.ToString());
streamWriter.WriteLine("property float x");
streamWriter.WriteLine("property float y");
streamWriter.WriteLine("property float z");
streamWriter.WriteLine("property uchar red");
streamWriter.WriteLine("property uchar green");
streamWriter.WriteLine("property uchar blue");
//streamWriter.WriteLine("element face " + faces.ToString(CultureInfo.InvariantCulture));
//streamWriter.WriteLine("property list uchar int vertex_index");
streamWriter.WriteLine("end_header");
streamWriter.Flush();
//Vertex and color data are written here.
@@ -206,6 +224,17 @@ namespace KinectServer
streamWriter.WriteLine(s);
}
}
// Sequentially write the 3 vertex indices of the triangle face, for each triangle, 0-referenced in PLY files
/*for (int i = 0; i < faces; i++)
{
string baseIndex0 = (i * 3).ToString(CultureInfo.InvariantCulture);
string baseIndex1 = ((i * 3) + 1).ToString(CultureInfo.InvariantCulture);
string baseIndex2 = ((i * 3) + 2).ToString(CultureInfo.InvariantCulture);
string faceString = "3 " + baseIndex0 + " " + baseIndex1 + " " + baseIndex2;
streamWriter.WriteLine(faceString);
}*/
streamWriter.Flush();
binaryWriter.Flush();
fileStream.Close();