mirror of
https://github.com/storytold/LiveScan3D.git
synced 2026-10-09 00:09:58 +00:00
+33
-4
@@ -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();
|
||||
|
||||
Reference in New Issue
Block a user